slog2fa()
QNX SDP8.0C Library ReferenceAPIDeveloper
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.
Examples:
See slog2_register().
Classification:
Safety: | |
---|---|
Cancellation point | No |
Signal handler | Yes |
Thread | Yes |
Page updated: