Log a printf-style string in a slog2 buffer
Synopsis:
#include <sys/slog2.h>
int slog2fa( slog2_buffer_t buffer,
             uint16_t code,
             uint8_t severity,
             const char* format, ... );
 
Arguments:
- buffer
 
- The handle of the buffer you want to log the message in, or NULL
  to use the default buffer that you specified earlier with
  slog2_set_default_buffer().
 
- code
 
- A user-specified code that you want to be associated with the message.
  The slog2 system doesn't interpret this code in any way.
 
- severity
 
- The severity level of this log item; one of:
  
  - SLOG2_SHUTDOWN
 
  - SLOG2_CRITICAL
 
  - SLOG2_ERROR
 
  - SLOG2_WARNING
 
  - SLOG2_NOTICE
 
  - SLOG2_INFO
 
  - SLOG2_DEBUG1
 
  - SLOG2_DEBUG2
 
  
  
  For more information, see the entry for
  slog2_register().
  
 
- format
 
- A
  printf-formatted
  character string used to define the log message.
 
- Additional arguments
 
- An argument vector that specifies the arguments for the format string.
  You must use the appropriate SLOG2_FA_*() helper macro for parameters,
  as described below.
  The last parameter in the vector must be SLOG2_FA_END.
 
 
Library:
libslog2
Use the -l slog2 option to
qcc
to link against this library.
 
Description:
The slog2fa() function a printf-style format string along with
its arguments specified in the argument vector.
This function uses special formatting macros to ensure that va_args() doesn't trigger
any interrupts.
The format string isn't decoded before writing; it must be decoded during the time of the read.
  
    CAUTION:
Don't use 
slog2fa() after using 
slog2_reset(). The
      
slog2_reset() function unmaps all instances, which releases all
      buffer handles and triggers the 
SIGSEGV signal if
      
slog2fa() tries to dereference the buffer pointer.
 
   
  Note: 
If you're specifying a string with %s, the size must include the NULL character.
You can use the following macros to build the parameters to slog2fa:
- SLOG2_FA_UNSIGNED( x )
  
 
- SLOG2_FA_SIGNED( x )
  
 
- SLOG2_FA_CHAR( x )
  
 
- SLOG2_FA_FLOAT( x )
  
 
- SLOG2_FA_DOUBLE( x )
  
 
- SLOG2_FA_STRING( x )
  
 
- SLOG2_FA_END — you must end the list with this macro
  
 
For example:
int8_t some_number = -1;
slog2fa( ..., "string:%s, some_number:%d", SLOG2_FA_STRING( "Hello world" ),
                                           SLOG2_FA_SIGNED( some_number ),
                                           SLOG2_FA_END );
 
Returns:
0 on success, or -1 if an error occurred.
 
Errors:
- EBUSY
 
- The logger couldn't obtain a buffer within the number of retries that you specified when you registered
  the buffer set; see
  slog2_register().
 
- EFAULT
 
- You specified NULL for buffer, but there's no default buffer.
 
- EINVAL
 
- The format string is invalid.
 
- ENOMEM
 
- The resulting packet size would be greater than the maximum packet size allowed.
 
- EPERM
 
- The process hasn't registered with slog2.
 
 
  
Classification:
QNX Neutrino
| Safety: | 
  | 
| Cancellation point | 
No | 
| Interrupt handler | 
Yes | 
| Signal handler | 
Yes | 
| Thread | 
Yes |