IBM® Carrier Grade Server X3650 T
The syscond daemon provides real-time event notification to any process that registers an event query
string with the daemon. Any event matching the query will invoke a Linux RT signal which will send the
client into a function registered with the query. Within this function, a full SysCon event log API is
available to retrieve additional information on the trigger event as well as other events in the log. The
registration and query language is also implemented within the API and external lexical analyzer. The API
is made available in a shared library in the syscon RPM. The API is similar to the open source POSIX
event logging API. The SysCon event log and API, however, do not depend on any POSIX Event log
components or kernel patches.
SysCon Event Log API:
"POSIX Event Log" API calls used in SysCon implementation:
This section lists the API C-library functions. See
Specification for SysCon
int syscon_log_write(syscon_log_dev_type_t dev_type, int event_type,
syscon_log_severity_t severity, const void *buf, size_t len,
int format);
int syscon_log_printf(syscon_log_dev_type_t dev_type, int event_type,
syscon_log_severity_t severity, const char *format, ...);
int syscon_log_open(syscon_logd_t *logdes, const char *path);
int
syscon_log_read(syscon_logd_t
*entry,
void *log_buf, size_t log_len);
int syscon_log_notify_add(const syscon_log_query_t *query,
const struct sigevent *notification, int flags,
syscon_log_notify_t *nfyhandle);
int syscon_log_siginfo_recid(const siginfo_t *info, void *context,
syscon_log_recid_t *recid);
int
syscon_log_sigval_recid(union
*recid);
int syscon_log_notify_get(syscon_log_notify_t nfyhandle,
struct sigevent *notification, int *flags, char *qsbuf,
size_t qslen, size_t *reqlen);
int syscon_log_notify_remove(syscon_log_notify_t nfyhandle);
int syscon_log_close(syscon_logd_t logdes);
int
syscon_log_seek(syscon_logd_t
*query,
int direction);
int syscon_log_severity_compare(int *order, syscon_log_severity_t s1,
syscon_log_severity_t s2);
int syscon_log_query_create(const char *query_string, int purpose,
syscon_log_query_t *query, char *errbuf, size_t errlen);
int syscon_log_query_get(const syscon_log_query_t *query, int *purpose,
char *qsbuf, size_t qslen, size_t *reqlen);
Revision 3.0
for details on each function.
APPENDIX E – POSIX Logging API and Query
logdes,
struct
sigval
sval,
logdes,
const
syscon_log_entry
syscon_log_recid_t
syscon_log_query_t
49