MIDAS
Loading...
Searching...
No Matches
msystem.h
Go to the documentation of this file.
1/********************************************************************\
2
3 Name: MSYSTEM.H
4 Created by: Stefan Ritt
5
6 Contents: Function declarations and constants for internal
7 routines
8
9 $Id$
10
11\********************************************************************/
12
13#ifndef _MSYSTEM_H
14#define _MSYSTEM_H
15
29#ifndef DOXYGEN_SHOULD_SKIP_THIS
30
31#include "midasinc.h"
32#include <string> // std::string
33#include <mutex> // std::mutex
34
36#endif /* DOXYGEN_SHOULD_SKIP_THIS */
37
45#define DRI_16 (1<<0)
46#define DRI_32 (1<<1)
47#define DRI_64 (1<<2)
48#define DRI_LITTLE_ENDIAN (1<<3)
49#define DRI_BIG_ENDIAN (1<<4)
50#define DRF_IEEE (1<<5)
51#define DRF_G_FLOAT (1<<6)
52//#define DR_ASCII (1<<7) /**< - */
53
/* end of msdefineh */
56
61/* Byte and Word swapping big endian <-> little endian */
64#ifndef WORD_SWAP
65#define WORD_SWAP(x) { BYTE _tmp; \
66 _tmp= *((BYTE *)(x)); \
67 *((BYTE *)(x)) = *(((BYTE *)(x))+1); \
68 *(((BYTE *)(x))+1) = _tmp; }
69#endif
70
73#ifndef DWORD_SWAP
74#define DWORD_SWAP(x) { BYTE _tmp; \
75 _tmp= *((BYTE *)(x)); \
76 *((BYTE *)(x)) = *(((BYTE *)(x))+3); \
77 *(((BYTE *)(x))+3) = _tmp; \
78 _tmp= *(((BYTE *)(x))+1); \
79 *(((BYTE *)(x))+1) = *(((BYTE *)(x))+2); \
80 *(((BYTE *)(x))+2) = _tmp; }
81#endif
82
85#ifndef QWORD_SWAP
86#define QWORD_SWAP(x) { BYTE _tmp; \
87 _tmp= *((BYTE *)(x)); \
88 *((BYTE *)(x)) = *(((BYTE *)(x))+7); \
89 *(((BYTE *)(x))+7) = _tmp; \
90 _tmp= *(((BYTE *)(x))+1); \
91 *(((BYTE *)(x))+1) = *(((BYTE *)(x))+6); \
92 *(((BYTE *)(x))+6) = _tmp; \
93 _tmp= *(((BYTE *)(x))+2); \
94 *(((BYTE *)(x))+2) = *(((BYTE *)(x))+5); \
95 *(((BYTE *)(x))+5) = _tmp; \
96 _tmp= *(((BYTE *)(x))+3); \
97 *(((BYTE *)(x))+3) = *(((BYTE *)(x))+4); \
98 *(((BYTE *)(x))+4) = _tmp; }
99#endif
100
/* end of msmacroh */
103
110#define MESSAGE_BUFFER_SIZE 100000
111#define MESSAGE_BUFFER_NAME "SYSMSG"
112//#define MAX_RPC_CONNECTION 64 /**< server/client connections */
113#define MAX_STRING_LENGTH 256
114#define NET_BUFFER_SIZE (8*1024*1024)
116/*------------------------------------------------------------------*/
117/* flag for conditional compilation of debug messages */
118#undef DEBUG_MSG
119
120/* flag for local routines (not for pure network clients) */
121#if !defined ( OS_MSDOS ) && !defined ( OS_VXWORKS )
122#define LOCAL_ROUTINES
123#endif
124
125#if defined(NO_LOCAL_ROUTINES)
126#undef LOCAL_ROUTINES
127#endif
128
129/* YBOS support not in MSDOS */
130#if !defined ( OS_MSDOS )
131#define YBOS_SUPPORT
132#endif
133
136/*------------------------------------------------------------------*/
137
138/* Mapping of function names for socket operations */
139
140#ifdef OS_MSDOS
141
142#define closesocket(s) ::close(s)
143#define ioctlsocket(s,c,d) ::ioctl(s,c,d)
144#define malloc(i) farmalloc(i)
145
146#undef NET_TCP_SIZE
147#define NET_TCP_SIZE 0x7FFF
148
149#endif /* OS_MSDOS */
150
151#ifdef OS_VMS
152
153#define closesocket(s) ::close(s)
154#define ioctlsocket(s,c,d)
155
156#ifndef FD_SET
157typedef struct {
159} fd_set;
160
161#define FD_SET(n, p) ((p)->fds_bits |= (1 << (n)))
162#define FD_CLR(n, p) ((p)->fds_bits &= ~(1 << (n)))
163#define FD_ISSET(n, p) ((p)->fds_bits & (1 << (n)))
164#define FD_ZERO(p) ((p)->fds_bits = 0)
165#endif /* FD_SET */
166
167#endif /* OS_VMS */
168
169/* Missing #defines in VMS */
170
171#ifdef OS_VMS
172
173#define P_WAIT 0
174#define P_NOWAIT 1
175#define P_DETACH 4
176
177#endif
178
179/* and for UNIX */
180
181#ifdef OS_UNIX
182
183#define closesocket(s) ::close(s)
184#define ioctlsocket(s,c,d) ::ioctl(s,c,d)
185#ifndef stricmp
186#define stricmp(s1, s2) strcasecmp(s1, s2)
187#endif
188
189#define P_WAIT 0
190#define P_NOWAIT 1
191#define P_DETACH 4
192
193#endif
194
198#ifndef FD_SETSIZE
199#define FD_SETSIZE 32
200#endif
201
204/* and VXWORKS */
205
206#ifdef OS_VXWORKS
207
208#define P_NOWAIT 1
209#define closesocket(s) ::close(s)
210#define ioctlsocket(s,c,d) ::ioctl(s,c,d)
211
212#endif
213
217/* missing O_BINARY for non-PC */
218#ifndef O_BINARY
219#define O_BINARY 0
220#define O_TEXT 0
221#endif
222
229/* min/max/abs macros */
230#ifndef MAX
231#define MAX(a,b) (((a) > (b)) ? (a) : (b))
232#endif
233
234#ifndef MIN
235#define MIN(a,b) (((a) < (b)) ? (a) : (b))
236#endif
237
238#ifndef ABS
239#define ABS(a) (((a) < 0) ? -(a) : (a))
240#endif
241
242/* missing tell() for some operating systems */
243#define TELL(fh) lseek(fh, 0, SEEK_CUR)
244
245/* define file truncation */
246#ifdef OS_WINNT
247#define TRUNCATE(fh) chsize(fh, TELL(fh))
248#else
249#define TRUNCATE(fh) ftruncate(fh, TELL(fh))
250#endif
251
254/* missing isnan() & co under Windows */
255#ifdef OS_WINNT
256#include <float.h>
257#define isnan(x) _isnan(x)
258#define isinf(x) (!_finite(x))
259#define strcasecmp _stricmp
260#define strncasecmp _strnicmp
261#define ftruncate(x,y) _chsize(x,y)
262#endif
263
264#define ctime #error ctime() is not thread safe and should not be used in midas programs
265#define localtime #error localtime() is not thread safe and should not be used in midas programs, use localtime_r() instead, do not forget to add a call to tzset()
266#define gmtime #error gmtime() is not thread safe and should not be used in midas programs, use gmtime_r() instead
267#define asctime #error asctime() is not thread safe and should not be used in midas programs, use asctime_r() instead
268
269//#define tzset #error tzset() is not thread safe, please use ss_tzset() instead
270//#define mktime #error mktime() is not thread safe, please use ss_mktime() instead
271
272/*------------------------------------------------------------------*/
273
278/* Network structures */
279
280typedef struct {
281 DWORD routine_id; /* routine ID like ID_BM_xxx */
282 DWORD param_size; /* size in Bytes of parameter */
284
285typedef struct {
287 char param[32]; /* parameter array */
289
/* end of mssectionh */
291
295#define MSG_BM 1
296#define MSG_ODB 2
297#define MSG_CLIENT 3
298#define MSG_SERVER 4
299#define MSG_LISTEN 5
300#define MSG_WATCHDOG 6
301
308/* RPC structures */
309
311 std::string host_name;
312 unsigned short host_port1;
313 unsigned short host_port2;
314 unsigned short host_port3;
315 int debug;
316 std::string experiment;
317 std::string directory;
318 std::string user;
319
320 void clear() {
321 host_name = "";
322 host_port1 = 0;
323 host_port2 = 0;
324 host_port3 = 0;
325 debug = 0;
326 experiment = "";
327 directory = "";
328 user = "";
329 }
330};
331
333 std::string host_name; /* server name */
334 INT port; /* ip port */
335 std::string exp_name; /* experiment to connect */
336 int send_sock; /* tcp send socket */
337 int recv_sock; /* tcp receive socket */
338 int event_sock; /* event socket */
339 std::mutex event_sock_mutex; /* protect event socket against multithreaded access */
340 INT remote_hw_type; /* remote hardware type */
341 INT rpc_timeout; /* in milliseconds */
342
343 void clear() {
344 host_name = "";
345 port = 0;
346 exp_name = "";
347 send_sock = 0;
348 recv_sock = 0;
349 event_sock = 0;
350 remote_hw_type = 0;
351 rpc_timeout = 0;
352 }
354
356 std::string prog_name; /* client program name */
357 std::string host_name; /* client name */
358 BOOL is_mserver = 0; /* this is an mserver server-side connection */
359 int send_sock = 0; /* tcp send socket */
360 int recv_sock = 0; /* tcp receive socket */
361 int event_sock = 0; /* tcp event socket */
362 INT remote_hw_type = 0; /* hardware type */
363 INT watchdog_timeout = 0; /* in milliseconds */
364 DWORD last_activity = 0; /* time of last recv */
365 INT convert_flags = 0; /* convertion flags */
366 char *net_buffer = NULL; /* TCP cache buffer */
367 INT net_buffer_size = 0; /* size of TCP cache */
368 INT write_ptr=0, read_ptr=0, misalign=0; /* pointers for cache */
369 HNDLE odb_handle = 0; /* handle to online datab. */
370 HNDLE client_handle = 0; /* client key handle . */
371
372 void clear() {
373 prog_name = "";
374 host_name = "";
376 send_sock = 0;
377 recv_sock = 0;
378 event_sock = 0;
379 remote_hw_type = 0;
381 last_activity = 0;
382 convert_flags = 0;
384 net_buffer_size = 0;
385 write_ptr = 0;
386 read_ptr = 0;
387 misalign = 0;
388 odb_handle = 0;
389 client_handle = 0;
390 }
391
392 void close();
394
395typedef std::vector<RPC_SERVER_ACCEPTION*> RPC_SERVER_ACCEPTION_LIST;
396
397
398typedef struct {
402
409
410typedef struct {
411 char name[NAME_LENGTH]; /* name of client */
412 INT pid; /* process ID */
413 INT unused0; /* was thread ID */
414 INT unused; /* was thread handle */
415 INT port; /* UDP port for wake up */
416 INT num_open_records; /* number of open records */
417 DWORD last_activity; /* time of last activity */
418 DWORD watchdog_timeout; /* timeout in ms */
419 INT max_index; /* index of last opren record */
420
422
424
425typedef struct {
426 char name[NAME_LENGTH]; /* name of database */
427 INT version; /* database version */
428 INT num_clients; /* no of active clients */
429 INT max_client_index; /* index of last client + 1 */
430 INT key_size; /* size of key area in bytes */
431 INT data_size; /* size of data area in bytes */
432 INT root_key; /* root key offset */
433 INT first_free_key; /* first free key memory */
434 INT first_free_data; /* first free data memory */
435
436 DATABASE_CLIENT client[MAX_CLIENTS]; /* entries for clients */
437
439
440/* Per-process buffer access structure (descriptor) */
441
442typedef struct {
443 char name[NAME_LENGTH]; /* Name of database */
444 BOOL attached; /* TRUE if database is attached */
445 INT client_index; /* index to CLIENT str. in buf. */
446 DATABASE_HEADER *database_header; /* pointer to database header */
447 void *database_data; /* pointer to database data */
448 HNDLE semaphore; /* semaphore handle */
449 INT lock_cnt; /* flag to avoid multiple locks */
450 void* shm_adr; /* address of shared memory */
451 HNDLE shm_size; /* size of shared memory */
452 HNDLE shm_handle; /* handle (id) to shared memory */
453 BOOL protect; /* read/write protection */
454 BOOL protect_read; /* read is permitted */
455 BOOL protect_write; /* write is permitted */
456 MUTEX_T *mutex; /* mutex for multi-thread access */
457 INT timeout; /* timeout for mutex and semaphore */
458 BOOL inside_lock_unlock; /* protection against recursive call to db_lock/unlock */
459
460} DATABASE;
461
462/* Open record descriptor */
463
464typedef struct {
465 HNDLE handle; /* Handle of record base key */
466 HNDLE hDB; /* Handle of record's database */
467 WORD access_mode; /* R/W flags */
468 void *data; /* Pointer to local data */
469 void *copy; /* Pointer of copy to data */
470 INT buf_size; /* Record size in bytes */
471 void (*dispatcher) (INT, INT, void *); /* Pointer to dispatcher func. */
472 void *info; /* addtl. info for dispatcher */
473
475
476/* Watch record descriptor */
477
478typedef struct {
479 HNDLE handle; /* Handle of watched base key */
480 HNDLE hDB; /* Handle of watched database */
481 void (*dispatcher) (INT, INT, INT, void* info); /* Pointer to dispatcher func. */
482 void* info; /* addtl. info for dispatcher */
483} WATCH_LIST;
484
/* end of mssectionh */
487
491/*---- Logging channel information ---------------------------------*/
492
493#define LOG_TYPE_DISK 1
494#define LOG_TYPE_TAPE 2
495#define LOG_TYPE_FTP 3
496#define LOG_TYPE_SFTP 4
497
500#if defined(OS_VXWORKS)
501
502/*---- VxWorks specific taskSpawn arguments ----------------------*/
503
504typedef struct {
505 char name[32];
506 int priority;
507 int options;
508 int stackSize;
509 int arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10;
511
512#endif
513
514/*---- Function declarations ---------------------------------------*/
515
516 /*---- common function ----*/
517 INT EXPRT cm_set_path(const char *path);
518 [[deprecated("Please use the std::string version of this function")]]
519 INT EXPRT cm_get_path(char *path, int path_size);
520 std::string EXPRT cm_get_path();
521 INT EXPRT cm_get_path_string(std::string* path);
524 INT EXPRT cm_msg_log(INT message_type, const char *facility, const char *message);
525 void EXPRT name2c(char *str);
527 std::string EXPRT cm_get_history_path(const char* history_channel);
528
529 /*---- online database ----*/
532 //INT EXPRT db_get_lock_cnt(HNDLE database_handle);
539 INT EXPRT db_set_client_name(HNDLE hDB, const char *client_name);
541 INT EXPRT db_show_mem(HNDLE hDB, char **result, BOOL verbose);
542 INT EXPRT db_get_free_mem(HNDLE hDB, INT *key_size, INT *data_size);
544 //void db_update_last_activity(DWORD actual_time);
546 void db_cleanup2(const char* client_name, int ignore_timeout, DWORD actual_time, const char *who);
547 void db_set_watchdog_params(DWORD timeout);
549
550 /*---- rpc functions -----*/
551 INT rpc_register_listener(int port, RPC_HANDLER func, int *plsock, int *pport);
556 INT EXPRT rpc_server_accept(int sock);
557 INT rpc_client_accept(int sock);
558 INT rpc_client_dispatch(int sock);
560 INT recv_tcp_check(int sock);
563 void EXPRT rpc_client_check(void);
568 const char* EXPRT rpc_get_mserver_path(void);
570
574 /*---- system services ----*/
575 INT ss_shm_open(const char *name, INT size, void **shm_adr, size_t *shm_size, HNDLE *handle, BOOL get_size);
576 INT ss_shm_close(const char *name, void *shm_adr, size_t shm_size, HNDLE handle, INT destroy_flag);
577 INT ss_shm_flush(const char *name, const void *shm_adr, size_t shm_size, HNDLE handle, bool wait_for_thread);
578 INT EXPRT ss_shm_delete(const char *name);
579 INT ss_shm_protect(HNDLE handle, void *shm_adr, size_t shm_size);
580 INT ss_shm_unprotect(HNDLE handle, void **shm_adr, size_t shm_size, BOOL read, BOOL write, const char* caller_name);
581 INT ss_spawnv(INT mode, const char *cmdname, const char* const argv[]);
582 INT ss_shell(int sock);
584 INT EXPRT ss_system(const char *command);
585 INT EXPRT ss_exec(const char *cmd, INT * child_pid);
586 std::string EXPRT ss_replace_env_variables(const std::string& inputPath);
587 std::string EXPRT ss_execs(const char *cmd);
589 INT EXPRT ss_getpid(void);
591 std::string ss_tid_to_string(midas_thread_t thread_id);
597 INT EXPRT ss_mutex_wait_for(MUTEX_T *mutex, INT timeout);
600 bool EXPRT ss_timed_mutex_wait_for_sec(std::timed_mutex& mutex, const char* mutex_name, double timeout_sec);
601 INT ss_alarm(INT millitime, void (*func) (int));
610 INT ss_resume(INT port, const char *message);
611 INT ss_suspend_exit(void);
612 INT ss_exception_handler(void (*func) (void));
614 midas_thread_t EXPRT ss_thread_create(INT(*func) (void *), void *param);
616 INT EXPRT ss_thread_set_name(std::string name);
617 std::string ss_thread_get_name();
620 INT EXPRT ss_timezone(void);
621 INT EXPRT ss_stack_get(char ***string);
622 void EXPRT ss_stack_print(void);
623 void EXPRT ss_stack_history_entry(char *tag);
624 void EXPRT ss_stack_history_dump(char *filename);
625 [[deprecated("Please use the std::string version of this function")]]
626 INT ss_gethostname(char* buffer, int buffer_size);
627 std::string ss_gethostname();
628 BOOL ss_pid_exists(int pid);
629 void ss_kill(int pid);
630 std::string ss_get_executable(void);
631
632 /*---- socket routines ----*/
633 INT EXPRT ss_socket_connect_tcp(const char* hostname, int tcp_port, int* sockp, std::string* error_msg_p);
636 INT EXPRT ss_socket_wait(int sock, int millisec);
637 INT EXPRT ss_socket_get_peer_name(int sock, std::string* host, int* port);
638 INT EXPRT send_tcp(int sock, char *buffer, DWORD buffer_size, INT flags);
639 INT EXPRT recv_tcp(int sock, char *buffer, DWORD buffer_size, INT flags);
640 INT EXPRT recv_tcp2(int sock, char *buffer, int buffer_size, int timeout_ms);
641 INT EXPRT recv_string(int sock, char *buffer, DWORD buffer_size, INT flags);
642 INT EXPRT ss_recv_net_command(int sock, DWORD* routine_id, DWORD* param_size, char **param_ptr, int timeout_ms);
643
644 /*---- mserver event socket ----*/
647
650 /*---- event buffer routines ----*/
658
659 /*---- dual memory event buffer routines ----*/
670
671 /*---- ring buffer routines ----*/
672 int EXPRT rb_set_nonblocking(void);
673 int EXPRT rb_create(int size, int max_event_size, int *ring_buffer_handle);
675 int EXPRT rb_get_wp(int handle, void **p, int millisec);
676 int EXPRT rb_increment_wp(int handle, int size);
677 int EXPRT rb_get_rp(int handle, void **p, int millisec);
678 int EXPRT rb_increment_rp(int handle, int size);
679 int EXPRT rb_get_buffer_level(int handle, int * n_bytes);
680
681 /*---- stop watch ----*/
682 std::chrono::time_point<std::chrono::high_resolution_clock> ss_us_start();
683 unsigned int ss_us_since(std::chrono::time_point<std::chrono::high_resolution_clock> start);
684
685/*---- Include RPC identifiers -------------------------------------*/
686
687#include "mrpc.h"
688
689#endif /* _MSYSTEM_H */
690
691/* emacs
692 * Local Variables:
693 * tab-width: 8
694 * c-basic-offset: 3
695 * indent-tabs-mode: nil
696 * End:
697 */
#define FALSE
Definition cfortran.h:309
#define EXPRT
Definition esone.h:28
INT EXPRT cm_set_path(const char *path)
Definition midas.cxx:1497
INT cm_dispatch_ipc(const char *message, int message_size, int client_socket)
Definition midas.cxx:5385
INT EXPRT cm_get_path_string(std::string *path)
Definition midas.cxx:1545
std::string EXPRT cm_get_path()
Definition midas.cxx:1537
std::string EXPRT cm_get_history_path(const char *history_channel)
Definition midas.cxx:5843
INT cm_delete_client_info(HNDLE hDB, INT pid)
Definition midas.cxx:1852
INT EXPRT cm_set_experiment_name(const char *name)
Definition midas.cxx:1558
unsigned short int WORD
Definition mcstd.h:49
unsigned int DWORD
Definition mcstd.h:51
RPC_LIST EXPRT * rpc_get_internal_list(INT flag)
Definition mrpc.cxx:716
INT() RPC_HANDLER(INT index, void *prpc_param[])
Definition midas.h:922
std::string ss_gethostname()
Definition system.cxx:5706
INT ss_suspend(INT millisec, INT msg)
Definition system.cxx:4543
INT ss_suspend_set_rpc_thread(midas_thread_t thread_id)
Definition system.cxx:4002
INT ss_get_struct_align()
Definition system.cxx:1319
INT ss_suspend_get_odb_port(INT *port)
Definition system.cxx:4327
INT ss_mutex_release(MUTEX_T *mutex)
Definition system.cxx:3157
INT ss_thread_kill(midas_thread_t thread_id)
Definition system.cxx:2383
INT ss_suspend_init_odb_port()
Definition system.cxx:4305
void ss_stack_print()
Definition system.cxx:8010
INT ss_exception_handler(void(*func)(void))
Definition system.cxx:3844
bool ss_event_socket_has_data()
Definition system.cxx:4520
INT ss_shm_flush(const char *name, const void *adr, size_t size, HNDLE handle, bool wait_for_thread)
Definition system.cxx:1176
INT EXPRT ss_thread_set_name(std::string name)
Definition system.cxx:2426
INT ss_semaphore_create(const char *name, HNDLE *semaphore_handle)
Definition system.cxx:2460
INT ss_shm_delete(const char *name)
Definition system.cxx:909
INT recv_tcp2(int sock, char *net_buffer, int buffer_size, int timeout_ms)
Definition system.cxx:5556
INT ss_suspend_set_client_listener(int listen_socket)
Definition system.cxx:4284
INT ss_socket_get_peer_name(int sock, std::string *hostp, int *portp)
Definition system.cxx:5240
INT ss_mutex_delete(MUTEX_T *mutex)
Definition system.cxx:3211
int ss_socket_wait(int sock, INT millisec)
Definition system.cxx:4898
INT ss_suspend_set_server_acceptions(RPC_SERVER_ACCEPTION_LIST *acceptions)
Definition system.cxx:4298
INT ss_getpid(void)
Definition system.cxx:1377
std::chrono::time_point< std::chrono::high_resolution_clock > ss_us_start()
Definition system.cxx:8255
INT ss_suspend_set_client_connection(RPC_SERVER_CONNECTION *connection)
Definition system.cxx:4291
INT ss_mutex_create(MUTEX_T **mutex, BOOL recursive)
Definition system.cxx:2941
INT ss_shell(int sock)
Definition system.cxx:1760
unsigned int ss_us_since(std::chrono::time_point< std::chrono::high_resolution_clock > start)
Definition system.cxx:8260
INT ss_shm_open(const char *name, INT size, void **adr, size_t *shm_size, HNDLE *handle, BOOL get_size)
Definition system.cxx:324
INT recv_string(int sock, char *buffer, DWORD buffer_size, INT millisec)
Definition system.cxx:5393
bool ss_timed_mutex_wait_for_sec(std::timed_mutex &mutex, const char *mutex_name, double timeout_sec)
Definition system.cxx:3265
INT ss_semaphore_release(HNDLE semaphore_handle)
Definition system.cxx:2781
midas_thread_t ss_thread_create(INT(*thread_func)(void *), void *param)
Definition system.cxx:2310
void ss_stack_history_entry(char *tag)
Definition system.cxx:8022
std::string ss_execs(const char *cmd)
Definition system.cxx:2237
INT ss_stack_get(char ***string)
Definition system.cxx:7994
std::string ss_tid_to_string(midas_thread_t thread_id)
Definition system.cxx:1571
void ss_stack_history_dump(char *filename)
Definition system.cxx:8044
int rpc_flush_event_socket(int timeout_msec)
Definition midas.cxx:16136
std::string ss_replace_env_variables(const std::string &inputPath)
Definition system.cxx:2212
INT ss_daemon_init(BOOL keep_stdout)
Definition system.cxx:2001
INT ss_alarm(INT millitime, void(*func)(int))
Definition system.cxx:3737
INT ss_suspend_exit()
Definition system.cxx:4226
INT recv_tcp(int sock, char *net_buffer, DWORD buffer_size, INT flags)
Definition system.cxx:5448
INT ss_resume(INT port, const char *message)
Definition system.cxx:4844
midas_thread_t ss_gettid(void)
Definition system.cxx:1519
INT ss_semaphore_delete(HNDLE semaphore_handle, INT destroy_flag)
Definition system.cxx:2869
INT ss_get_struct_padding()
Definition system.cxx:1345
INT ss_socket_connect_tcp(const char *hostname, int tcp_port, int *sockp, std::string *error_msg_p)
Definition system.cxx:4967
INT ss_semaphore_wait_for(HNDLE semaphore_handle, DWORD timeout_millisec)
Definition system.cxx:2639
INT ss_socket_listen_tcp(bool listen_localhost, int tcp_port, int *sockp, int *tcp_port_p, std::string *error_msg_p)
Definition system.cxx:5062
INT ss_exec(const char *command, INT *pid)
Definition system.cxx:2132
INT ss_shm_unprotect(HNDLE handle, void **adr, size_t shm_size, BOOL read, BOOL write, const char *caller_name)
Definition system.cxx:1060
std::string EXPRT ss_thread_get_name()
Definition system.cxx:2444
void ss_kill(int pid)
Definition system.cxx:1471
BOOL ss_existpid(INT pid)
Definition system.cxx:2068
INT ss_spawnv(INT mode, const char *cmdname, const char *const argv[])
Definition system.cxx:1630
INT ss_suspend_get_buffer_port(midas_thread_t thread_id, INT *port)
Definition system.cxx:4353
INT ss_socket_close(int *sockp)
Definition system.cxx:5225
INT ss_recv_net_command(int sock, DWORD *routine_id, DWORD *param_size, char **param_ptr, int timeout_ms)
Definition system.cxx:5629
INT ss_suspend_set_server_listener(int listen_socket)
Definition system.cxx:4277
INT ss_shm_close(const char *name, void *adr, size_t shm_size, HNDLE handle, INT destroy_flag)
Definition system.cxx:755
INT send_tcp(int sock, char *buffer, DWORD buffer_size, INT flags)
Definition system.cxx:5279
BOOL ss_pid_exists(int pid)
Definition system.cxx:1440
std::string ss_get_executable(void)
Definition system.cxx:1488
INT ss_timezone()
Definition system.cxx:3580
INT ss_system(const char *command)
Definition system.cxx:2116
INT ss_shm_protect(HNDLE handle, void *adr, size_t shm_size)
Definition system.cxx:1003
INT ss_mutex_wait_for(MUTEX_T *mutex, INT timeout)
Definition system.cxx:3037
INT EXPRT cm_msg_log(INT message_type, const char *facility, const char *message)
Definition midas.cxx:664
std::vector< RPC_SERVER_ACCEPTION * > RPC_SERVER_ACCEPTION_LIST
Definition msystem.h:395
struct rpc_server_acception_struct RPC_SERVER_ACCEPTION
struct rpc_server_connection_struct RPC_SERVER_CONNECTION
INT EXPRT db_flush_database(HNDLE hDB)
Definition odb.cxx:2268
INT db_check_client(HNDLE hDB, HNDLE hKeyClient)
Definition odb.cxx:3059
void db_cleanup(const char *who, DWORD actual_time, BOOL wrong_interval)
Definition odb.cxx:2827
INT EXPRT db_show_mem(HNDLE hDB, char **result, BOOL verbose)
Definition odb.cxx:670
INT EXPRT db_lock_database(HNDLE database_handle)
Definition odb.cxx:2455
INT db_delete_key1(HNDLE hDB, HNDLE hKey, INT level, BOOL follow_links)
Definition odb.cxx:3669
INT EXPRT db_unlock_database(HNDLE database_handle)
Definition odb.cxx:2577
INT db_allow_write_locked(DATABASE *p, const char *caller_name)
Definition odb.cxx:2548
INT db_close_all_records(void)
Definition odb.cxx:13514
void EXPRT name2c(char *str)
Definition odb.cxx:9097
INT db_update_record_local(INT hDB, INT hKeyRoot, INT hKey, int index)
Definition odb.cxx:13552
void db_set_watchdog_params(DWORD timeout)
Definition odb.cxx:2976
INT db_update_record_mserver(INT hDB, INT hKeyRoot, INT hKey, int index, int client_socket)
Definition odb.cxx:13599
void db_cleanup2(const char *client_name, int ignore_timeout, DWORD actual_time, const char *who)
Definition odb.cxx:2897
INT EXPRT db_set_client_name(HNDLE hDB, const char *client_name)
Definition odb.cxx:2402
INT EXPRT db_notify_clients(HNDLE hDB, HNDLE hKey, int index, BOOL bWalk)
Definition odb.cxx:12594
INT EXPRT db_set_lock_timeout(HNDLE database_handle, int timeout_millisec)
Definition odb.cxx:2664
INT EXPRT db_get_free_mem(HNDLE hDB, INT *key_size, INT *data_size)
Definition odb.cxx:786
int EXPRT rb_get_rp(int handle, void **p, int millisec)
Definition midas.cxx:17568
int EXPRT rb_delete(int ring_buffer_handle)
Definition midas.cxx:17390
int EXPRT rb_get_wp(int handle, void **p, int millisec)
Definition midas.cxx:17427
int EXPRT rb_increment_rp(int handle, int size)
Definition midas.cxx:17630
int EXPRT rb_set_nonblocking(void)
Definition midas.cxx:17295
int EXPRT rb_increment_wp(int handle, int size)
Definition midas.cxx:17502
int EXPRT rb_create(int size, int max_event_size, int *ring_buffer_handle)
Definition midas.cxx:17336
int EXPRT rb_get_buffer_level(int handle, int *n_bytes)
Definition midas.cxx:17685
INT EXPRT rpc_get_opt_tcp_size(void)
Definition midas.cxx:13872
INT rpc_server_callback(struct callback_addr *callback)
Definition midas.cxx:15702
INT recv_tcp_check(int sock)
Definition midas.cxx:14357
INT rpc_server_receive_rpc(int idx, RPC_SERVER_ACCEPTION *sa)
Definition midas.cxx:15871
const char *EXPRT rpc_get_mserver_path(void)
Definition midas.cxx:13051
RPC_SERVER_ACCEPTION * rpc_get_mserver_acception(void)
Definition midas.cxx:11513
INT rpc_deregister_functions(void)
Definition midas.cxx:11870
INT EXPRT rpc_set_mserver_path(const char *mserver_path)
Definition midas.cxx:13064
void EXPRT rpc_client_check(void)
Definition midas.cxx:12270
INT rpc_server_disconnect(void)
Definition midas.cxx:12705
INT rpc_client_accept(int sock)
Definition midas.cxx:15598
INT EXPRT rpc_set_opt_tcp_size(INT tcp_size)
Definition midas.cxx:13864
INT rpc_register_listener(int port, RPC_HANDLER func, int *plsock, int *pport)
Definition midas.cxx:14579
INT rpc_server_receive_event(int idx, RPC_SERVER_ACCEPTION *sa, int timeout_msec)
Definition midas.cxx:15981
INT EXPRT rpc_server_accept(int sock)
Definition midas.cxx:15341
INT rpc_client_dispatch(int sock)
Definition midas.cxx:11945
INT rpc_check_channels(void)
Definition midas.cxx:16254
INT EXPRT rpc_get_convert_flags(void)
Definition midas.cxx:13030
void ** info
Definition fesimdaq.cxx:41
HNDLE hKey
INT index
Definition mana.cxx:271
char param[10][256]
Definition mana.cxx:250
HNDLE hDB
main ODB handle
Definition mana.cxx:207
BOOL verbose
Definition mana.cxx:255
DWORD actual_time
Definition mfe.cxx:37
INT max_event_size
Definition mfed.cxx:30
#define MAX_CLIENTS
Definition midas.h:274
INT HNDLE
Definition midas.h:132
INT midas_thread_t
Definition midas.h:179
DWORD BOOL
Definition midas.h:105
int INT
Definition midas.h:129
#define MAX_OPEN_RECORDS
Definition midas.h:276
INT MUTEX_T
Definition midas.h:237
#define NAME_LENGTH
Definition midas.h:272
#define message(type, str)
#define read(n, a, f)
#define write(n, a, f, d)
#define name(x)
Definition midas_macro.h:24
struct callback_addr callback
Definition mserver.cxx:22
int event_size
Definition msysmon.cxx:527
INT EXPRT eb_free_buffer(void)
INT EXPRT dm_area_send(void)
EVENT_HEADER EXPRT * dm_pointer_get(void)
INT EXPRT dm_buffer_create(INT size, INT usize)
BOOL EXPRT dm_area_full(void)
INT EXPRT eb_increment_pointer(INT buffer_handle, INT event_size)
INT EXPRT dm_buffer_release(void)
INT EXPRT dm_area_flush(void)
INT EXPRT dm_async_area_send(void *pointer)
INT EXPRT dm_task(void *pointer)
INT EXPRT eb_send_events(BOOL send_all)
EVENT_HEADER EXPRT * eb_get_pointer(void)
INT EXPRT eb_create_buffer(INT size)
BOOL EXPRT eb_buffer_full(void)
DWORD EXPRT dm_buffer_time_get(void)
INT EXPRT dm_pointer_increment(INT buffer_handle, INT event_size)
BOOL EXPRT eb_buffer_empty(void)
char str[256]
Definition odbhist.cxx:33
TH1X EXPRT * h1_book(const char *name, const char *title, int bins, double min, double max)
Definition rmidas.h:24
DWORD last_activity
Definition msystem.h:417
DWORD watchdog_timeout
Definition msystem.h:418
INT num_open_records
Definition msystem.h:416
INT first_free_data
Definition msystem.h:434
INT max_client_index
Definition msystem.h:429
BOOL protect
Definition msystem.h:453
void * database_data
Definition msystem.h:447
INT timeout
Definition msystem.h:457
HNDLE shm_size
Definition msystem.h:451
MUTEX_T * mutex
Definition msystem.h:456
BOOL protect_read
Definition msystem.h:454
INT lock_cnt
Definition msystem.h:449
INT client_index
Definition msystem.h:445
HNDLE semaphore
Definition msystem.h:448
HNDLE shm_handle
Definition msystem.h:452
DATABASE_HEADER * database_header
Definition msystem.h:446
BOOL attached
Definition msystem.h:444
BOOL protect_write
Definition msystem.h:455
BOOL inside_lock_unlock
Definition msystem.h:458
void * shm_adr
Definition msystem.h:450
INT next_free
Definition msystem.h:400
NET_COMMAND_HEADER header
Definition msystem.h:286
WORD flags
Definition msystem.h:406
WORD access_mode
Definition msystem.h:405
WORD access_mode
Definition msystem.h:467
void * info
Definition msystem.h:472
INT buf_size
Definition msystem.h:470
HNDLE handle
Definition msystem.h:465
void * data
Definition msystem.h:468
void * copy
Definition msystem.h:469
HNDLE hDB
Definition msystem.h:466
HNDLE handle
Definition msystem.h:479
HNDLE hDB
Definition msystem.h:480
void * info
Definition msystem.h:482
unsigned short host_port1
Definition msystem.h:312
std::string user
Definition msystem.h:318
void clear()
Definition msystem.h:320
unsigned short host_port2
Definition msystem.h:313
std::string experiment
Definition msystem.h:316
unsigned short host_port3
Definition msystem.h:314
std::string directory
Definition msystem.h:317
std::string host_name
Definition msystem.h:311