source: rtems/doc/new_chapters/eventlog.t @ c5568160

4.104.114.84.95
Last change on this file since c5568160 was c5568160, checked in by Joel Sherrill <joel.sherrill@…>, on 08/27/98 at 18:28:17

Corrected log_severity_before as part of reviewing the code.

  • Property mode set to 100644
File size: 25.5 KB
Line 
1@c
2@c  COPYRIGHT (c) 1988-1998.
3@c  On-Line Applications Research Corporation (OAR).
4@c  All rights reserved.
5@c
6@c  $Id$
7@c
8
9@chapter Event Logging Manager
10
11@section Introduction
12
13The event logging manager provides a portable method for logging
14system and application events and subsequent processing of those
15events.  The capabilities in this manager were defined in the POSIX
161003.1h/D3 proposed standard titled @b{Services for Reliable,
17Available, and Serviceable Systems}.
18
19The directives provided by the event logging manager are:
20
21@itemize @bullet
22@item @code{log_write} - Write to the Log
23@item @code{log_open} - Open a log file
24@item @code{log_read} - Read from the system Log
25@item @code{log_notify} - Notify Process of writes to the system log
26@item @code{log_close} - Close log descriptor
27@item @code{log_seek} - Reposition log file offset
28@item @code{log_severity_before} - Compare event record severities
29@item @code{log_facilityemptyset} - Manipulate log facility sets
30@item @code{log_facilityfillset} - Manipulate log facility sets
31@item @code{log_facilityaddset} - Manipulate log facility sets
32@item @code{log_facilitydelset} - Manipulate log facility sets
33@item @code{log_facilityismember} - Manipulate log facility sets
34@end itemize
35
36@section Background
37
38@subsection Log Files and Events
39
40System log
41
42Non-system logs
43
44Events, facility, severity
45
46@subsection Queries
47
48@section Operations
49
50@subsection Creating and Writing a non-System Log
51
52Discuss creating and writing to a non-system log.
53
54@example
55  log_create
56  log_write loop
57@end example
58
59@subsection Reading a Log
60
61Discuss opening and reading from a log.
62
63@example
64  build a query
65  log_open
66  log_read loop
67@end example
68
69@section Directives
70
71This section details the event logging manager's directives.
72A subsection is dedicated to each of this manager's directives
73and describes the calling sequence, related constants, usage,
74and status codes.
75
76@page
77@subsection log_write - Write to the Log
78
79@subheading CALLING SEQUENCE:
80
81@ifset is-C
82@example
83#include <evlog.h>
84
85int log_write(
86  const log_facility_t  facility,
87  const int             event_id,
88  const log_severity_t  severity,
89  const void           *buf,
90  const size_t          len
91);
92@end example
93@end ifset
94
95@ifset is-Ada
96@end ifset
97
98@subheading STATUS CODES:
99
100@table @b
101@item EINVAL
102The facility argument is not a valid log_facility.
103
104@item EINVAL
105The severity argument exceeds @code{LOG_SEVERITY_MAX}
106
107@item EINVAL
108The len argument exceeds @code{LOG_ENTRY_MAXLEN}
109
110@item ENOSPC
111The log file has run out of space on the device.
112
113@item EPERM
114The caller does not have appropriate permission for writing to
115the given facility.
116
117@item EIO
118An I/O error occurred in writing to the system event log.
119
120@end table
121
122@subheading DESCRIPTION:
123
124The @code{log_write} function writes an event record, consisting
125of event attributes, and the data identified by the @code{buf}
126argument, to the system log.  The @code{len} argument specifies
127the length in bytes of the buffer pointed to by @code{buf}.  The
128@code{len} argument shall specify the value of the event record
129length attribute.  The value of @code{len} shall be less than or
130equal to @code{LOG_ENTRY_MAXLEN} or the @code{log_write} shall fail.
131
132The @code{event_id} argument identifies the type of event record
133being written.  The @code{event_id} argument shall specify the value
134of the event ID attribute of the event record.
135
136The argument @code{facility} indicates the facility from which the
137event type is drawn.  The @code{facility} argument shall specify the
138value of the event record facility attribute.  The value of the
139@code{facility} argument shall be a valid log facility or the
140@code{log_write} function shall fail.
141
142The @code{severity} argument indicates the severity level of the
143event record.  The @code{severity} argument shall specify the value
144of the event record severity attribute.  The value of the
145@code{severity} argument shall be less than or equal to
146@code{LOG_SEVERITY_MAX} or the @code{log_write} function shall fail. 
147
148The effective_UID of the calling process shall specify the event
149record UID attribute.  The effective-GID of the calling process
150shall specify the event record GID attribute.  The process ID
151of the calling process shall specify the event record process ID
152attribute.  The process group ID of the calling process shall
153specify the event record process group ID attribute.  The current
154value of the system clock shall specify the event record timestamp
155attribute.
156
157@subheading NOTES:
158
159The @code{_POSIX_LOGGING} feature flag is defined to indicate
160this service is available.
161
162@page
163@subsection log_open - Open a log file
164
165@subheading CALLING SEQUENCE:
166
167@ifset is-C
168@example
169#include <evlog.h>
170
171int log_open(
172  const logd_t         *logdes,
173  const char           *path,
174  const log_query_t    *query
175);
176@end example
177@end ifset
178
179@ifset is-Ada
180@end ifset
181
182@subheading STATUS CODES:
183
184@table @b
185@item EACCES
186Search permission is denied on a component of the path prefix,
187or the log file exists and read permission is denied.
188
189@item  EINTR
190A signal interrupted the call to log_open().
191
192@item EINVAL
193The log_facility field of the query argument is not a valid
194facility set.
195
196@item EINVAL
197The log_severity field of the query argument exceeds
198@code{LOG_SEVERITY_MAX}.
199
200@item EINVAL
201The path argument referred to a file that was not a log file.
202
203@item EMFILE
204Too many log file descriptors are currently in use by this
205process.
206
207@item ENAMETOOLONG
208The length of the path string exceeds @code{PATH_MAX}, or a pathname
209component is longer than @code{NAME_MAX} while @code{_POSIX_NO_TRUNC} is
210in effect.
211
212@item ENFILE
213Too many files are currently open in the system.
214
215@item ENOENT
216The file specified by the path argument does not exist.
217
218@item ENOTDIR
219A component of the path prefix is not a directory.
220
221@end table
222
223@subheading DESCRIPTION:
224
225The @code{log_open} function establishes the connection between a
226log file and a log file descriptor.  It creates an open log file
227description that refers to a log file and a log file descriptor that
228refers to that open log file description.  The log file descriptor is
229used by other log functions to refer to that log file.  The @code{path}
230argument points to a pathname naming a log file.  A @code{path}
231argument of NULL specifies the current system log file. 
232
233The @code{query} argument points to a log query specification that
234restricts log operations using the returned log file descriptor to
235to event records from the log file which match the query.  The
236predicate which determines the success of the match operation is the
237logical AND of the individual comparison predicates for each member
238of the log query specification.  The query attribute of the open file
239description is set to filter as specified by the @code{query} argument.
240If the value of the query argument is not NULL, the value of the
241@code{log_facility} member of the @code{query} specification shall be
242a set of valid log facilities or the @code{log_open} shall fail.  If
243the value of the @code{query} argument is not NULL, the value of the
244@code{log_severity} member of the @code{query} specification shall be
245less than or equal to @code{LOG_SEVERITY_MAX} or the @code{log_open}
246shall fail.  If the value of the @code{query} argument is NULL, no
247query filter shall be applied.
248
249@subheading NOTES:
250
251The @code{_POSIX_LOGGING} feature flag is defined to indicate
252this service is available.
253
254@page
255@subsection log_read - Read from the system Log
256
257@subheading CALLING SEQUENCE:
258
259@ifset is-C
260@example
261#include <evlog.h>
262
263int log_read(
264  const logd_t logdes,
265  struct log_entry *entry,
266  void             *log_buf,
267  const size_t      log_len,
268  const size_t     *log_sizeread
269);
270@end example
271@end ifset
272
273@ifset is-Ada
274@end ifset
275
276@subheading STATUS CODES:
277
278@table @b
279@item EBADF
280The logdes argument is not a valid log file descriptor.
281
282@item EBUSY
283No data available.  The open log file descriptor references
284the current system log.  and there are no unread event records
285remaining.
286
287@item EINTR
288A signal interrupted the call to log_read().
289
290@item EIO
291An I/O error occurred in reading from the event log.
292
293@end table
294
295@subheading DESCRIPTION:
296
297The @code{log_read} function shall attempt to read the @code{log_entry}
298structure and @code{log_len} bytes of data from the next event record
299of the log file associated with the open log file descriptor @code{logdes},
300placing the @code{log_entry} structure into the buffer pointed to by
301@code{entry}, and the data into the buffer pointed to by @code{log_buf}.
302The log record ID of the returned event record shall be stored in the
303@code{log_recid} member of the @code{log_entry} structure for the event
304record.
305
306If the query attribute of the open log file description associated with
307the @code{logdes} is set, the event record read shall match that query.
308If the @code{entry} argument is not NULL it will point to a @code{log_entry}
309structure which shall be filled with the creation information for this log
310entry.  If the argument @code{log_buf} is not NULL the data written with the
311log entry will be placed in the buffer.  The size of the buffer is specified
312by the argument @code{log_len}.
313
314If the @code{log_read} is successful the call shall store the actual length
315of the data associated with the event record into the location specified by
316@code{log_sizeread}.  This number may be smaller or greater than
317@code{log_len}.
318
319@subheading NOTES:
320
321The @code{_POSIX_LOGGING} feature flag is defined to indicate
322this service is available.
323
324@page
325@subsection log_notify - Notify Process of writes to the system log.
326
327@subheading CALLING SEQUENCE:
328
329@ifset is-C
330@example
331#include <evlog.h>
332
333int log_notify(
334  const logd_t           logdes,
335  const struct sigevent *notification
336);
337@end example
338@end ifset
339
340@ifset is-Ada
341@end ifset
342
343@subheading STATUS CODES:
344
345@table @b
346@item EBADF
347The logdes argument is not a valid log file descriptor.
348
349@item EINVAL
350The notification argument specifies an invalid signal.
351
352@item EINVAL
353The process has requested a notify on a log that will not be
354written to.
355
356@item ENOSYS
357The function log_notify() is not supported by this implementation.
358
359@end table
360
361@subheading DESCRIPTION:
362
363If the argument @code{notification} is not NULL this function registers
364the calling process to be notified of event records received by the system
365log, which match the query parameters associated with the open log descriptor
366specified by @code{logdes}.  The notification specified by the
367@code{notification} argument shall be sent to the process when an event
368record received by the system log is matched by the query attribute of the
369open log file description associated with the @code{logdes} log file
370descriptor.  If the calling process has already registered a notification
371for the @code{logdes} log file descriptor, the new notification shall
372replace the existing notification registration.
373
374If the @code{notification} argument is NULL and the calling process is
375currently registered to be notified for the @code{logdes} log file
376descriptor, the existing registration shall be removed.
377
378@subheading NOTES:
379
380The @code{_POSIX_LOGGING} feature flag is defined to indicate
381this service is available.
382
383@page
384@subsection log_close - Close log descriptor
385
386@subheading CALLING SEQUENCE:
387
388@ifset is-C
389@example
390#include <evlog.h>
391
392int log_close(
393  const logd_t   logdes
394);
395@end example
396@end ifset
397
398@ifset is-Ada
399@end ifset
400
401@subheading STATUS CODES:
402
403@table @b
404@item EBADF
405The logdes argument is not a valid log file descriptor.
406
407@end table
408
409@subheading DESCRIPTION:
410
411The @code{log_close} function deallocates the open log file descriptor
412indicated by @code{log_des}.
413
414When all log file descriptors associated with an open log file description
415have been closed, the open log file description shall be freed.
416
417If the link count of the log file is zero, when all log file descriptors
418have been closed, the space occupied by the log file shall be freed and the
419log file shall no longer be accessible.
420
421If the process has successfully registered a notification request for the
422log file descriptor, the registration shall be removed.
423
424@subheading NOTES:
425
426The @code{_POSIX_LOGGING} feature flag is defined to indicate
427this service is available.
428
429@page
430@subsection log_seek - Reposition log file offset
431
432@subheading CALLING SEQUENCE:
433
434@ifset is-C
435@example
436#include <evlog.h>
437
438int log_seek(
439  const logd_t    logdes,
440  log_recid_t     log_recid
441);
442@end example
443@end ifset
444
445@ifset is-Ada
446@end ifset
447
448@subheading STATUS CODES:
449
450@table @b
451@item EBADF
452The logdes argument is not a valid log file descriptor.
453
454@item EINTR
455The log_seek() function was interrupted by a signal.
456
457@item EINVAL
458The log_recid argument is not a valid record id.
459
460@end table
461
462@subheading DESCRIPTION:
463
464The @code{log_seek} function shall set the log file offset of the open
465log description associated with the @code{logdes} log file descriptor
466to the event record in the log file identified by @code{log_recid}. 
467The @code{log_recid} argument is either the record id of a valid event
468record or one of the following values, as defined in the header <evlog.h>:
469
470@table @b
471@item LOG_SEEK_START
472Set log file position to point at the first event
473record in the log file
474
475@item LOG_SEEK_END
476Set log file position to point after the last event
477record in the log file
478
479@end table
480
481If the @code{log_seek} function is interrupted, the state of the open log
482file description associated with @code{logdes} is unspecified.
483
484@subheading NOTES:
485
486The @code{_POSIX_LOGGING} feature flag is defined to indicate
487this service is available.
488
489@page
490@subsection log_severity_before - Compare event record severities
491
492@subheading CALLING SEQUENCE:
493
494@ifset is-C
495@example
496#include <evlog.h>
497
498int log_severity_before(
499  log_severity_t  s1,
500  log_severity_t  s2
501);
502@end example
503@end ifset
504
505@ifset is-Ada
506@end ifset
507
508@subheading STATUS CODES:
509
510@table @b
511@item 0
512The severity of @code{s1} is less than that of @code{s2}.
513
514@item 1
515The severity of @code{s1} is greater than or equal that of @code{s2}.
516
517@item EINVAL
518The value of either s1 or s2 exceeds @code{LOG_SEVERITY_MAX}.
519
520@end table
521
522@subheading DESCRIPTION:
523
524The @code{log_severity_before} function compares the severity order
525of the @code{s1} and @code{s2} arguments.  If @code{s1} is of
526severity greater than or equal to that of @code{s2}, then this
527function returns 1.  Otherwise, it returns 0.
528
529If either @code{s1} or @code{s2} specify invalid severity values, the
530return value of @code{log_severity_before} is unspecified.
531
532@subheading NOTES:
533
534The @code{_POSIX_LOGGING} feature flag is defined to indicate
535this service is available.
536
537The POSIX specification of the return value for this function is ambiguous.
538If @code{EINVAL} is equal to 1 in an implementation, then the application
539can not distinguish between greater than and an error condition.
540
541@page
542@subsection log_facilityemptyset - Manipulate log facility sets
543
544@subheading CALLING SEQUENCE:
545
546@ifset is-C
547@example
548#include <evlog.h>
549
550int log_facilityemptyset(
551  log_facility_set_t  *set
552);
553@end example
554@end ifset
555
556@ifset is-Ada
557@end ifset
558
559@subheading STATUS CODES:
560
561@table @b
562@item EINVAL
563The facilityno argument is not a valid facility.
564
565@end table
566
567@subheading DESCRIPTION:
568
569The facilitysetops primitives manipulate sets of facilities.  They
570operate on data objects addressable by the application.
571
572The @code{log_facilityemptyset} function initializes the facility
573set pointed to by the argument @code{set}, such that all facilities
574are included.
575
576Applications shall call either @code{log_facilityemptyset} or
577@code{log_facilityfillset} at least once for each object of type
578@code{log_facilityset_t} prior to any other use of that object.  If
579such an object is not initialized in this way, but is nonetheless
580supplied as an argument  to any of the @code{log_facilityaddset},
581@code{logfacilitydelset}, @code{log_facilityismember} or
582@code{log_open} functions, the results are undefined.
583
584The @code{log_facilityaddset} and @code{log_facilitydelset} functions
585respectively add or delete the individual facility specified by the
586value of the argument @code{facilityno} to or from the facility set
587pointed to by the argument @code{set}
588
589The @code{log_facilityismember} function tests whether the facility
590specified by the value of the argument @code{facilityno} is a member
591of the set pointed to by the argument @code{set}.  Upon successful
592completion, the @code{log_facilityismember} function either returns
593a value of one to the location specified by @code{member} if the
594specified facility is a member of the specified set or returns a
595value of zero to the location specified by @code{member} if the
596specified facility is not a member of the specified set.
597
598@subheading NOTES:
599
600The @code{_POSIX_LOGGING} feature flag is defined to indicate
601this service is available.
602
603@page
604@subsection log_facilityfillset - Manipulate log facility sets
605
606@subheading CALLING SEQUENCE:
607
608@ifset is-C
609@example
610#include <evlog.h>
611
612int log_facilityfillset(
613  log_facility_set_t  *set
614);
615@end example
616@end ifset
617
618@ifset is-Ada
619@end ifset
620
621@subheading STATUS CODES:
622
623@table @b
624@item EINVAL
625The facilityno argument is not a valid facility.
626
627@end table
628
629@subheading DESCRIPTION:
630
631The facilitysetops primitives manipulate sets of facilities.  They
632operate on data objects addressable by the application.
633
634The @code{log_facilityemptyset} function initializes the facility
635set pointed to by the argument @code{set}, such that all facilities
636are included.
637
638Applications shall call either @code{log_facilityemptyset} or
639@code{log_facilityfillset} at least once for each object of type
640@code{log_facilityset_t} prior to any other use of that object.  If
641such an object is not initialized in this way, but is nonetheless
642supplied as an argument  to any of the @code{log_facilityaddset},
643@code{logfacilitydelset}, @code{log_facilityismember} or
644@code{log_open} functions, the results are undefined.
645
646The @code{log_facilityaddset} and @code{log_facilitydelset} functions
647respectively add or delete the individual facility specified by the
648value of the argument @code{facilityno} to or from the facility set
649pointed to by the argument @code{set}
650
651The @code{log_facilityismember} function tests whether the facility
652specified by the value of the argument @code{facilityno} is a member
653of the set pointed to by the argument @code{set}.  Upon successful
654completion, the @code{log_facilityismember} function either returns
655a value of one to the location specified by @code{member} if the
656specified facility is a member of the specified set or returns a
657value of zero to the location specified by @code{member} if the
658specified facility is not a member of the specified set.
659
660@subheading NOTES:
661
662The @code{_POSIX_LOGGING} feature flag is defined to indicate
663this service is available.
664
665@page
666@subsection log_facilityaddset - Manipulate log facility sets
667
668@subheading CALLING SEQUENCE:
669
670@ifset is-C
671@example
672#include <evlog.h>
673
674int log_facilityaddset(
675  log_facility_set_t  *set,
676  log_facility_t      facilityno
677);
678@end example
679@end ifset
680
681@ifset is-Ada
682@end ifset
683
684@subheading STATUS CODES:
685
686@table @b
687@item EINVAL
688The facilityno argument is not a valid facility.
689
690@end table
691
692@subheading DESCRIPTION:
693
694The facilitysetops primitives manipulate sets of facilities.  They
695operate on data objects addressable by the application.
696
697The @code{log_facilityemptyset} function initializes the facility
698set pointed to by the argument @code{set}, such that all facilities
699are included.
700
701Applications shall call either @code{log_facilityemptyset} or
702@code{log_facilityfillset} at least once for each object of type
703@code{log_facilityset_t} prior to any other use of that object.  If
704such an object is not initialized in this way, but is nonetheless
705supplied as an argument  to any of the @code{log_facilityaddset},
706@code{logfacilitydelset}, @code{log_facilityismember} or
707@code{log_open} functions, the results are undefined.
708
709The @code{log_facilityaddset} and @code{log_facilitydelset} functions
710respectively add or delete the individual facility specified by the
711value of the argument @code{facilityno} to or from the facility set
712pointed to by the argument @code{set}
713
714The @code{log_facilityismember} function tests whether the facility
715specified by the value of the argument @code{facilityno} is a member
716of the set pointed to by the argument @code{set}.  Upon successful
717completion, the @code{log_facilityismember} function either returns
718a value of one to the location specified by @code{member} if the
719specified facility is a member of the specified set or returns a
720value of zero to the location specified by @code{member} if the
721specified facility is not a member of the specified set.
722
723@subheading NOTES:
724
725The @code{_POSIX_LOGGING} feature flag is defined to indicate
726this service is available.
727
728@page
729@subsection log_facilitydelset - Manipulate log facility sets
730
731@subheading CALLING SEQUENCE:
732
733@ifset is-C
734@example
735#include <evlog.h>
736
737int log_facilitydelset(
738  log_facility_set_t  *set,
739  log_facility_t      facilityno
740);
741@end example
742@end ifset
743
744@ifset is-Ada
745@end ifset
746
747@subheading STATUS CODES:
748
749@table @b
750@item EINVAL
751The facilityno argument is not a valid facility.
752
753@end table
754
755@subheading DESCRIPTION:
756
757The facilitysetops primitives manipulate sets of facilities.  They
758operate on data objects addressable by the application.
759
760The @code{log_facilityemptyset} function initializes the facility
761set pointed to by the argument @code{set}, such that all facilities
762are included.
763
764Applications shall call either @code{log_facilityemptyset} or
765@code{log_facilityfillset} at least once for each object of type
766@code{log_facilityset_t} prior to any other use of that object.  If
767such an object is not initialized in this way, but is nonetheless
768supplied as an argument  to any of the @code{log_facilityaddset},
769@code{logfacilitydelset}, @code{log_facilityismember} or
770@code{log_open} functions, the results are undefined.
771
772The @code{log_facilityaddset} and @code{log_facilitydelset} functions
773respectively add or delete the individual facility specified by the
774value of the argument @code{facilityno} to or from the facility set
775pointed to by the argument @code{set}
776
777The @code{log_facilityismember} function tests whether the facility
778specified by the value of the argument @code{facilityno} is a member
779of the set pointed to by the argument @code{set}.  Upon successful
780completion, the @code{log_facilityismember} function either returns
781a value of one to the location specified by @code{member} if the
782specified facility is a member of the specified set or returns a
783value of zero to the location specified by @code{member} if the
784specified facility is not a member of the specified set.
785
786@subheading NOTES:
787
788The @code{_POSIX_LOGGING} feature flag is defined to indicate
789this service is available.
790
791@page
792@subsection log_facilityismember - Manipulate log facility sets
793
794@subheading CALLING SEQUENCE:
795
796@ifset is-C
797@example
798#include <evlog.h>
799
800int log_facilityismember(
801  const log_facility_set_t *set,
802  log_facility_t            facilityno,
803  const int                *member
804);
805@end example
806@end ifset
807
808@ifset is-Ada
809@end ifset
810
811@subheading STATUS CODES:
812
813@table @b
814@item EINVAL
815The facilityno argument is not a valid facility.
816
817@end table
818
819@subheading DESCRIPTION:
820
821The facilitysetops primitives manipulate sets of facilities.  They
822operate on data objects addressable by the application.
823
824The @code{log_facilityemptyset} function initializes the facility
825set pointed to by the argument @code{set}, such that all facilities
826are included.
827
828Applications shall call either @code{log_facilityemptyset} or
829@code{log_facilityfillset} at least once for each object of type
830@code{log_facilityset_t} prior to any other use of that object.  If
831such an object is not initialized in this way, but is nonetheless
832supplied as an argument  to any of the @code{log_facilityaddset},
833@code{logfacilitydelset}, @code{log_facilityismember} or
834@code{log_open} functions, the results are undefined.
835
836The @code{log_facilityaddset} and @code{log_facilitydelset} functions
837respectively add or delete the individual facility specified by the
838value of the argument @code{facilityno} to or from the facility set
839pointed to by the argument @code{set}
840
841The @code{log_facilityismember} function tests whether the facility
842specified by the value of the argument @code{facilityno} is a member
843of the set pointed to by the argument @code{set}.  Upon successful
844completion, the @code{log_facilityismember} function either returns
845a value of one to the location specified by @code{member} if the
846specified facility is a member of the specified set or returns a
847value of zero to the location specified by @code{member} if the
848specified facility is not a member of the specified set.
849
850@subheading NOTES:
851
852The @code{_POSIX_LOGGING} feature flag is defined to indicate
853this service is available.
854
855@page
856@subsection log_create - Creates a log file
857
858@subheading CALLING SEQUENCE:
859
860@ifset is-C
861@example
862#include <evlog.h>
863
864int log_create(
865  logd_t       *ld,
866  const char   *path,
867);
868@end example
869@end ifset
870
871@ifset is-Ada
872@end ifset
873
874@subheading STATUS CODES:
875
876@table @b
877@item ENOMEM
878The is ????????????
879
880@end table
881
882@subheading DESCRIPTION:
883
884This function dynamically allocates memory for the @code{ld}, associates
885a directory path to the @code{ld}, and provides access permissions to the
886@code{ld}.
887
888@subheading NOTES:
889
890The @code{_POSIX_LOGGING} feature flag is defined to indicate
891this service is available.
892
893@page
894@subsection log_sys_create - Creates a system log file
895
896@subheading CALLING SEQUENCE:
897
898@ifset is-C
899@example
900#include <evlog.h>
901
902int log_sys_create();
903@end example
904@end ifset
905
906@ifset is-Ada
907@end ifset
908
909@subheading STATUS CODES:
910
911@table @b
912@item EEXIST
913The directory path to the system log already exist.
914
915@end table
916
917@subheading DESCRIPTION:
918
919This function will create a predefined system log directory path and
920system log file if they do not already exist.
921
922@subheading NOTES:
923
924The @code{_POSIX_LOGGING} feature flag is defined to indicate
925this service is available.
Note: See TracBrowser for help on using the repository browser.