From 608ab7549bfcd6c351388d8fb33a612e17f9f554 Mon Sep 17 00:00:00 2001 From: cvs Date: Mon, 6 Nov 2000 13:05:17 +0000 Subject: [PATCH] Global definitions for sinqhm_srv --- sinqhm/SinqHM_gbl.h | 318 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 318 insertions(+) create mode 100755 sinqhm/SinqHM_gbl.h diff --git a/sinqhm/SinqHM_gbl.h b/sinqhm/SinqHM_gbl.h new file mode 100755 index 00000000..9e53d9f9 --- /dev/null +++ b/sinqhm/SinqHM_gbl.h @@ -0,0 +1,318 @@ +/*======================================= [...SinqHM]SinqHM_gbl.h - Ident V01N +** +** Include file of Gbl Variables for SinqHM_srv and its children. +*/ + +#ifndef uint +#define uint unsigned int +#endif + +#ifndef usint +#define usint unsigned short int +#endif + +#ifndef uchar +#define uchar unsigned char +#endif +/* +**==================== Global Variables ====================================== +** Note: +** On VxWorks, all these global variables are visible by all tasks. +** Any changes to them should therefore only be done if protected +** by a semaphore. +** +** At present, only the parent process changes these variables in a +** 'significant' way (I don't count updating diagnostic counters such +** as Rw_bytes_got!). +*/ + int My_errno; + int Cnt_SIGUSR1; + char Inet_host[32]; + char Inet_addr[20]; + + int Dbg_mask; /* This is the log'l or of Dbg_lev0, etc */ + int Dbg_lev0, Dbg_lev1, Dbg_lev2, Dbg_lev3; + + int Cfgn_done; /* == 0 if SinqHM_srv not configured */ + /* + ** The buffer for holding Hist Mem data is pointed to + ** by Hist_base_addr. + */ + void *Hist_base_addr; + /* + ** The buffer for holding a frame of data for CERCA type + ** interfaces (e.g. HRPT) is pointed to by Frame_base_addr. + */ + void *Frame_base_addr; + + uint Hm_mode_ALL; /* The "total" mode of the histogram memory */ + uint Hm_mode; /* The basic mode of the histogram memory */ + uint Hm_mode_DEBUG; /* The SQHM__DEBUG bit of Hm_mode_ALL */ + uint Hm_mode_UD; /* The SQHM__UD bit of Hm_mode_ALL */ + uint Hm_mode_BO; /* The SQHM__BO bits of Hm_mode_ALL */ + uint Hm_mode_STROBO; /* The SQHM__STROBO bit of Hm_mode_ALL */ + uint Hm_mode_REFLECT; /* The SQHM__REFLECT bit of Hm_mode_ALL */ + uint Hm_mode_NO_STAT; /* The SQHM__NO_STAT bit of Hm_mode_ALL */ + + uint N_hists; /* The number of histograms */ + uint N_bins; /* The number of bins per histogram */ + uint Lo_cntr; /* The first counter in TOF mode */ + uint Lo_bin; /* The first bin of the histogram */ + uint Hi_bin; /* The top bin of the histogram */ + uint Bytes_per_bin; /* The number of bytes per bin */ + uint Compress; /* The bin compression factor */ + uint Curr_hist; /* The currently selected histogram */ + uint Total_bytes; /* The total number of bytes of histogram mem */ + uint Cnts_lo; /* Count of hits below histogram(s) */ + uint Cnts_hi; /* Count of hits above histogram(s) */ + uchar *Tran_buff_base; /* Pointer to start of curr buff in TRANS mode */ + uchar *Next_char; /* Pointer to next free byte in TRANS mode */ + uint Bytes_free; /* Space left in current buffer in TRANS mode */ + uint MDI_mode; /* Mode of Multi-detector interface as obtained + ** from the Extended Time-Stamp-Info packets */ + uint Frame_hdr; /* The frame header (in HRPT mode) */ + uint Frame_num; /* The frame number (in HRPT mode) */ + + usint SinqHM_Dsbl_Mask; /* The data-acq disable mask */ + usint Server_masks[MAX_CLIENTS+1]; /* The daq masks for .. + ** ..servers (0 is Filler) */ + /*--------------------------------------*/ + time_t Sqhm_start_time; /* The time that SinqHM-main started */ + uint Port_base; + pid_t Parent_pid; + pid_t Child_pid[MAX_CLIENTS+1]; + int Child_exit_status[MAX_CLIENTS]; + int Child_cnct_skt[MAX_CLIENTS+1]; + int Child_rw_skt[MAX_CLIENTS+1]; + pid_t Filler_pid; /* The process ID of the SinqHM-filler */ + char Filler_name[20]; /* The name of the SinqHM-filler */ + char Tsk_name[MAX_CLIENTS+1][20]; /* The name of the SinqHM-servers */ + + char Instr_name[16]; /* This identifies the instrument */ + char Def_ident[8]; /* This is Ident of SinqHM_def.h */ + char Sqhm_main_ident[8]; /* This is Ident of main program */ + char Sqhm_main_date[32]; /* This is compil date of main program */ + char Sqhm_serv_ident[8]; /* This is Ident of server program */ + char Sqhm_serv_date[32]; /* This is compil date of server program */ + char Sqhm_fill_ident[8]; /* This is Ident of filler program */ + char Sqhm_fill_date[32]; /* This is compil date of filler program */ + char Sqhm_rout_ident[8]; /* This is Ident of routines */ + char Sqhm_rout_date[32]; /* This is compil date of routines */ + + uint Lwl_hdr_daq_mask; /* Mask of header bits to be tested before + ** histogramming a packet */ + uint Lwl_hdr_daq_soll; /* Required value of masked hdr bits */ + + + uint Rw_bytes_got, Rw_bytes_put; + uint Nrl_active; /* True if Neutron Rate Low bit set */ + uint Daq_active; /* True if Hdr Mask Bits are correct so that + ** data acquisition is active */ + int Print_hdr; /* Set to True to get header printed in Filler */ + uint N_events; /* # of events collected */ + uint N_skipped; /* # of events skipped */ + uint N_no_coin_tsi; /* # of "normal" TSI packets */ + uint N_coin_tsi; /* # of "coincidence-mode" TSI packets */ + uint Tof_dts_soll; /* Delay-Time-to-Start (soll-wert) */ + uint Tof_count_bad_counter_number; /* Counter of number + ** of TOF packets received in which + ** the counter number is bad. + */ + uint Num_bad_events; /* Number of bad events (from last "coinc" + ** type TSI */ + union { + uint dead_time; + uint dts; + uint both; + } Dt_or_dts; /* Dead-time or Delay-Time-to-Start from TSI packets */ + usint Tsi_status_info; /* Status info from last TSI */ + usint Tsi_flags; /* Various flags from last TSI */ + + uint *Lwl_fifo; /* This gets set to 0x80810080. .. + ** .. It is the address via which .. + ** .. one reads data from the fibre .. + ** .. optic link (Licht-Wellen-Leiter) + */ + uint *Lwl_csr; /* When we have one, this will get .. + ** .. set to the addr of the optic .. + ** .. link CSR. In the mean time, it .. + ** .. is dummy (Lwl_dummy_csr). + */ + uint Lwl_dummy_csr; /* This is the dummy CSR till we have .. + ** .. a real one. + */ + uint Filler_flag; + SEM_ID Sem_Filler; + SEM_ID Sem_Server; + MSG_Q_ID MsgQ_to_filler; + MSG_Q_ID MsgQ_to_server[MAX_CLIENTS+1]; /* Index 0 is for messages .. + ** .. to SinqHM-master. The .. + ** others are to the various .. + ** servers. + */ + uint Sem_tmo; + uint Use_sem_tmo; /* If zero, disable sem timeouts */ + /*--------------------------------------*/ + struct tof_histog *Tof_descr[MAX_TOF_CNTR]; /* An array of pointers to + ** the data structures for the + ** histos in TOF mode. + */ + uint N_tof_edges; /* The number of edge arrays */ + struct tof_edge_info *Tof_edges[MAX_TOF_EDGE]; /* An array of pointers to + ** data structures for the bin + ** boundary information. + */ + /*--------------------------------------*/ + int FillTimer_active; /* Set True if FillTimer active */ + int FillTimer_expired; /* Set True in handler */ + timer_t FillTimerId; /* Identifier for Filler timer */ + struct itimerspec FillerTime; /* Set to Filler timer interval */ + /*--------------------------------------*/ + uchar *VmioBase; /* Base address of VMIO10 module, if present */ + uchar Vmio_Dummy[64]; /* Dummy VMIO10 addr space, in case absent */ + + jmp_buf Vmio_trap_env; +/*========================== Define the function prototypes ================*/ + + void catch_int_signal ( + int signo); + void catch_machine_check ( + int signo); + void catch_signal ( + int signo); + int chk_config_alloc ( + int skt, + struct req_buff_struct *request, + struct rply_buff_struct *reply); + void cleanup_children (); + int close_down_offspring ( + struct req_buff_struct *request, + struct rply_buff_struct *reply); + void do_daq ( + struct rply_buff_struct *reply, + int index, + int sub_cmnd); + int do_command ( + int index, + int skt, + int pkt_size, + struct req_buff_struct *rqst, + struct rply_buff_struct *reply); + int do_project ( + int index, + struct rply_buff_struct *rply_bf, + int rw_skt, + int pkt_size, + uint sub_code, + uint x_lo, + uint nx, + uint y_lo, + uint ny, + uint xdim, + uint h_slct); + int do_read ( + int index, + struct rply_buff_struct *rply_bf, + int rw_skt, + int pkt_size, + uint nbins, + uint first, + uint hist_no); + int do_SQHM__HM_DIG_alloc ( + struct req_buff_struct *request, + struct rply_buff_struct *reply); + int do_SQHM__HRPT_alloc ( + struct req_buff_struct *request, + struct rply_buff_struct *reply); + int do_SQHM__TOF_alloc ( + int skt, + struct req_buff_struct *request, + struct rply_buff_struct *reply); + int do_SQHM__TRANS_alloc ( + struct req_buff_struct *request, + struct rply_buff_struct *reply); + int do_write ( + int index, + struct req_buff_struct *req_bf, + struct rply_buff_struct *rply_bf, + int rw_skt, + int pkt_size, + int nbins, + int first, + int bytes_per_bin, + int hist_no); + void do_zero ( + struct rply_buff_struct *reply, + int index, + int nbins, + int fst_bin, + int hist_no); + void failInet ( + char *text); + void failInet_port ( + char *text, int port); + void free_HM_memory (void *extras); + void getErrno ( + int *his_errno); + pid_t get_pid (); + int hm_zero ( + int index, int nbins, int first, int hist_no); + void kill_children (); + void lwl_Fifo_Flush (); + int lwl_Packet_Read ( + uint hdr, + uchar *buff); + int make_child ( + int proc (), + int flag, + int pkt_size); + int make_filler ( + int suspendMode); + int net_flush ( + int skt, + int nbytes); + void process_coinc_tsi ( + uint hdr); + void process_no_coinc_tsi ( + uint hdr); + int rply_status_send ( + int skt, + struct rply_buff_struct *rply_bf); + void rply_status_setup ( + struct rply_buff_struct *rply_bf, + int status, + int sub_status, + char *msg); + int rply_status_setup_and_send ( + int skt, + struct rply_buff_struct *rply_bf, + int status, + int sub_status, + char *msg); + uchar *selectNewBuffer (uchar *nxt); + void setupLevelGenerator ( + int use_level_gen, + char *base_addr); + void setup_inet_info ( + char *host, + int host_size, + char *addr, + int addr_size); + int sleep ( + int xx); + char *StrJoin ( + char *result, + int result_size, + char *str_a, + char *str_b); + int SinqHM_filler ( + int suspend_flag); + void SinqHM_filler_setup_id (); + void SinqHM_routines_setup_id (); + void SinqHM_server_setup_id (); + int SinqHM_server ( + int suspend_flag, + int index, + int pkt_size); + +/*===================================================== End of SinqHM_gbl.h */