Global definitions for sinqhm_srv
This commit is contained in:
318
sinqhm/SinqHM_gbl.h
Executable file
318
sinqhm/SinqHM_gbl.h
Executable file
@ -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 */
|
Reference in New Issue
Block a user