メインページ   モジュール   名前空間一覧   クラス階層   アルファベット順一覧   構成   ファイル一覧   構成メンバ   ファイルメンバ   関連ページ    

TSignalHandler.cc

解説を見る。
00001 // =====================================================================
00002 //  $Id: TSignalHandler.cc,v 1.4 2004/03/07 10:30:34 goiwai Exp $
00003 //  $Name: CLDAQ-1-14-03 $
00004 //  $Log: TSignalHandler.cc,v $
00005 //  Revision 1.4  2004/03/07 10:30:34  goiwai
00006 //  ROOTに組みこむためのおまじないマクロを埋めこみました。
00007 //  全てにおいて完全に動作するわけではありません。
00008 //
00009 //  Revision 1.3  2003/10/06 16:38:26  goiwai
00010 //  *** empty log message ***
00011 //
00012 //  Revision 1.2  2003/07/30 16:21:21  goiwai
00013 //  ファイルにコミットログをつけることにしました.
00014 //
00015 // =====================================================================
00016 #include "TSignalHandler.hh"
00017 #include "TSignalClient.hh"
00018 
00019 typedef Tvoid SIG_FUNC_TYP(Tint);
00020 typedef SIG_FUNC_TYP* SIG_PF;
00021 
00022 TSignalHandler::TSignalHandler( Tint psignalid, TSignalClient* pclient )
00023 {
00024   signal_id = psignalid;
00025   if ( psignalid < MAX_SIGNAL_ENTRY && psignalid >= 0 )
00026     handler_list[ psignalid ] = this;
00027   client = pclient;
00028 }
00029 
00030 Tvoid TSignalHandler::Enable()
00031 {
00032   signal( signal_id, ( SIG_PF ) TSignalHandler::signal_handler );
00033   return;
00034 }
00035 
00036 Tvoid TSignalHandler::Disable()
00037 {
00038   signal( signal_id, SIG_DFL );
00039   return;
00040 }
00041 
00042 Tvoid TSignalHandler::signal_handler( Tint sig, Tint code, struct sigcontext* scp, Tchar* addr )
00043 {
00044   if ( handler_list[ sig ] ) {
00045     handler_list[ sig ] -> signal_ucr( sig );
00046   }
00047   signal( sig, ( SIG_PF )signal_handler );
00048   return;
00049 }
00050 
00051 TSignalHandler* TSignalHandler::handler_list[ TSignalHandler::MAX_SIGNAL_ENTRY ];
00052 
00053 Tvoid TSignalHandler::Initialize()
00054 {
00055   for ( Tint i = 0; i < MAX_SIGNAL_ENTRY; i ++ )
00056     handler_list[ i ] = 0;
00057   return;
00058 }
00059 
00060 Tvoid TSignalHandler::signal_ucr( Tint sig )
00061 {
00062   if ( client )
00063     client -> CatchSignal( sig );
00064   return;
00065 }
00066 
00067 Tint TSignalHandler::Wait()
00068 {
00069   return pause();
00070 }
00071 
00072 #ifdef __CLDAQ_ROOT_DLL
00073     ClassImp(TSignalHandler)
00074 #endif


CLDAQ - a Class Library for DataAcQuisition (Version 1.14.3)
Go IWAI -- goiwai at users.sourceforge.jp