KERN(9)

NAME
kern - kernel library routines

SYNOPSIS
#include <lib/libkern/libkern.h>

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 integer 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)

These macros cause kernel panic(9) if the given condition evaluates to false. assert() tests are always compiled in. KASSERT() tests are only included if the kernel has DIAGNOSTIC enabled. KDASSERT() tests are only included if the kernel has DEBUG enabled.

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 different 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 counterparts, 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), string(3)

STANDARDS
The abs(), memchr(), memcmp(), strlen(), strncpy(), strcmp(), strncmp() and strcasecmp() functions conform to ansiC.

HISTORY
The skpc() and scanc() functions are based on vax instructions of the same name.