unixdev.net


Switch to SpeakEasy.net DSL

The Modular Manual Browser

Home Page
Manual: (OpenBSD-5.7)
Page:
Section:
Apropos / Subsearch:
optional field

KERN(9)                  BSD Kernel Developer's Manual                 KERN(9)

NAME
     kern -- kernel library routines

SYNOPSIS
     #include <&lt;lib/libkern/libkern.h>&gt;

DESCRIPTION
     The kern library implements a set of useful functions and macros inside
     the kernel.

MATH
     int imax(int a, int b) int imin(int a, int b) long lmax(long a, long b)
     long lmin(long a, long b) u_int max(u_int a, u_int b) u_int min(u_int a,
     u_int b) u_long ulmax(u_long a, u_long b) u_long ulmin(u_long a, u_long
     b) int abs(int j)

     The min(), imin(), lmin() and ulmin() functions return the smallest inte-
     ger between a and b, inclusive.  The max(), imax(), lmax() and ulmax()
     functions return the largest integer between a and b, inclusive.

     The abs() function computes the absolute value of integer j.

ASSERTIONS
     void assert(CONDITION) void KASSERT(CONDITION) void KDASSERT(CONDITION)
     void KASSERTMSG(CONDITION, fmt, ...)  void KDASSERTMSG(CONDITION, fmt,
     ...)

     These macros cause kernel panic(9) if the given condition evaluates to
     false.  assert() tests are always compiled in.  KASSERT() and
     KASSERTMSG() tests are only included if the kernel has DIAGNOSTIC
     enabled.  KDASSERT() and KDASSERTMSG() tests are only included if the
     kernel has DEBUG enabled.  The KASSERTMSG() and KDASSERTMSG() macros
     append to the panic(9) format string the message specified by format and
     its subsequent arguments, similar to printf(9) functions.

     CTASSERT(CONDITION)

     This macro causes a compile time error if the given condition evaluates
     to false.  Its main purpose is to verify assertions about type and struct
     sizes that would otherwise make the code fail at run time.  CTASSERT()
     can be used in global scope or at the start of blocks, where variable
     declarations are allowed.

BYTE STRINGS
     int skpc(int mask, size_t size, u_char *cp) int scanc(u_int size, const
     u_char *cp, const u_char *table, int mask) int bcmp(const void *b1, const
     void *b2, size_t len) int timingsafe_bcmp(const void *b1, const void *b2,
     size_t len) void * memchr(const void *b, int c, size_t len) int
     memcmp(const void *b1, const void *b2, size_t len) int ffs(int value) int
     fls(int value) int flsl(long value)

     The skpc() function locates the first unsigned character of value differ-
     ent than mask inside the string cp.

     The scanc() function expects a string of indexes into the table table.
     Each table element is bitwise ANDed against mask.

     skpc() and scanc() expect the string to be of size size, and return the
     index relative to the end of the string where the match occurred, or zero
     if mask is not present in the string.

     The fls() and flsl() functions find the last bit set in value and return
     the index of that bit.

     The remaining functions have the same semantics as their libc counter-
     parts, bcmp(3), timingsafe_bcmp(3), memchr(3), memcmp(3) and ffs(3).

CHARACTER STRINGS
     size_t strlen(const char *s) char * strncpy(char *dst, const char *src,
     size_t len) size_t strnlen(const char *s, size_t maxlen) size_t
     strlcpy(char *dst, const char *src, size_t size) size_t strlcat(char
     *dst, const char *src, size_t size) int strcmp(const char *s1, const char
     *s2) int strncmp(const char *s1, const char *s2, size_t len) int
     strncasecmp(const char *s1, const char *s2, size_tlen)

     Those functions have the same semantics as their libc counterparts,
     strlen(3), strncpy(3), strnlen(3), strlcpy(3), strlcat(3), strcmp(3),
     strncmp(3) and strncasecmp(3).

MISCELLANEOUS
     int getsn(char *cp, int size)

     The getsn() function reads user input from the console and returns on
     newline.  The result is written into cp, which is assumed to be size
     bytes long.

SEE ALSO
     assert(3), bcmp(3), ffs(3), memchr(3), memcmp(3)

STANDARDS
     The abs(), memchr(), memcmp(), strlen(), strncpy(), strcmp(), strncmp()
     and strcasecmp() functions conform to ANSI X3.159-1989 (``ANSI C89'').

HISTORY
     The skpc() and scanc() functions are based on vax instructions of the
     same name.  The KASSERTMSG() and KDASSERTMSG() macros are taken from
     NetBSD.

BSD                            December 9, 2014                            BSD