クラス sc_core::sc_cor_qt

#include <sc_cor_qt.h>

sc_core::sc_cor_qtに対する継承グラフ

Inheritance graph
[凡例]

すべてのメンバ一覧

Public メソッド

 sc_cor_qt ()
virtual ~sc_cor_qt ()
virtual void stack_protect (bool enable)

Public 変数

std::size_t m_stack_size
void * m_stack
qt_t * m_sp
sc_cor_pkg_qtm_pkg

Private メソッド

 sc_cor_qt (const sc_cor_qt &)
sc_cor_qtoperator= (const sc_cor_qt &)


説明

sc_cor_qt.h64 行で定義されています。


コンストラクタとデストラクタ

sc_core::sc_cor_qt::sc_cor_qt (  )  [inline]

sc_cor_qt.h70 行で定義されています。

00071         : m_stack_size( 0 ), m_stack( 0 ), m_sp( 0 ), m_pkg( 0 )
00072         {}

virtual sc_core::sc_cor_qt::~sc_cor_qt (  )  [inline, virtual]

sc_cor_qt.h75 行で定義されています。

00076         { if( m_stack != 0 ) { delete[] (char*) m_stack; } }

sc_core::sc_cor_qt::sc_cor_qt ( const sc_cor_qt  )  [private]


関数

void sc_core::sc_cor_qt::stack_protect ( bool  enable  )  [virtual]

sc_core::sc_corを再定義しています。

sc_cor_qt.cpp77 行で定義されています。

00078 {
00079     // Code needs to be tested on HP-UX and disabled if it doesn't work there
00080     // Code still needs to be ported to WIN32
00081 
00082     static std::size_t pagesize;
00083     
00084     if( pagesize == 0 ) {
00085 #       if defined(__ppc__)
00086             pagesize = getpagesize();
00087 #       else
00088             pagesize = sysconf( _SC_PAGESIZE );
00089 #       endif 
00090     }
00091 
00092     assert( pagesize != 0 );
00093     assert( m_stack_size > ( 2 * pagesize ) );
00094 
00095 #ifdef QUICKTHREADS_GROW_DOWN
00096     // Stacks grow from high address down to low address
00097     caddr_t redzone = caddr_t( ( ( std::size_t( m_stack ) + pagesize - 1 ) /
00098                                  pagesize ) * pagesize );
00099 #else
00100     // Stacks grow from low address up to high address
00101     caddr_t redzone = caddr_t( ( ( std::size_t( m_stack ) +
00102                                    m_stack_size - pagesize ) /
00103                                  pagesize ) * pagesize );
00104 #endif
00105 
00106     int ret;
00107 
00108     if( enable ) {
00109         ret = mprotect( redzone, pagesize - 1, PROT_NONE );
00110     } else {
00111         ret = mprotect( redzone, pagesize - 1, PROT_READ | PROT_WRITE );
00112     }
00113 
00114     assert( ret == 0 );
00115 }

sc_cor_qt& sc_core::sc_cor_qt::operator= ( const sc_cor_qt  )  [private]


変数

sc_cor_qt.h83 行で定義されています。

sc_cor_qt.h84 行で定義されています。

sc_cor_qt.h85 行で定義されています。

sc_cor_qt.h87 行で定義されています。


このクラスの説明は次のファイルから生成されました:

SystemCに対してFri Jun 6 20:11:58 2008に生成されました。  doxygen 1.5.6