Commit Graph

83 Commits

Author SHA1 Message Date
ad
e5c4df967a Make qsort() available in libkern. 2008-11-16 15:01:26 +00:00
gmcgarry
0de5da9678 Replace most gcc-specific __attribute__ uses with BSD-style sys/cdef.h
preprocessor macros.
2008-09-08 23:36:53 +00:00
matt
41f74018fd Add KASSERTMSG(e, msg) for umass.c. XXX directly calls panic. 2008-07-02 15:25:08 +00:00
matt
67b10687dc Add CTASSERT (compile time assert) from FreeBSD.
Causes sources to fail to compile:
<file>:<line>: error: size of array '__ctassert<line>' is negative
2008-07-02 14:39:20 +00:00
christos
efe07f9c02 fix again 2008-03-25 23:24:38 +00:00
christos
55feb339a9 fix bcopy again 2008-03-25 23:23:13 +00:00
christos
8ac6bd68d8 fix bcopy prototype 2008-03-25 23:21:04 +00:00
christos
3d8daf0799 add a prototype for bcopy. 2008-03-25 23:19:51 +00:00
matt
c2b9622034 Don't need to that particular in mtprng_random(). Use 2 values instead of 8. 2008-02-17 22:49:11 +00:00
matt
ab1d549cb1 Improve my version of mtprng_random. Reshuffle things. Add an compatible
version of init_by_array.
2008-02-02 01:13:04 +00:00
matt
3056c4f69a Add Mersenne Twister prototypes and state struct to libkern.h
Cleanup a comment.  s/RLEN/MTPRNG_RLEN/g    s/POS1/MTPRNG_POS1/g
Remove unneeded test code.
2008-01-31 02:36:09 +00:00
perry
b6a2ef7569 Convert many of the uses of __attribute__ to equivalent
__packed, __unused and __dead macros from cdefs.h
2007-12-25 18:33:32 +00:00
pooka
018bb97124 Rename __assert() to __kernassert() so that it doesn't collide
with the libc version.  They take different arguments.
2007-09-24 14:19:03 +00:00
ad
480f8d26c5 Disable kernel assertions if panicstr != NULL. 2007-07-29 11:46:02 +00:00
matt
e3a731cab5 Enable builtin_ffs for vax 2007-04-09 17:39:37 +00:00
thorpej
712239e366 Replace the Mach-derived boolean_t type with the C99 bool type. A
future commit will replace use of TRUE and FALSE with true and false.
2007-02-21 22:59:35 +00:00
thorpej
82fd1ebbaa - Move strtoll.c and strtoull.c from libc/stdlib to common/libc/stdlib.
- Add strtoll.c and strtoull.c to libkern.
2006-10-08 03:14:55 +00:00
matt
9bed3293b9 If __STDC__ and GNU C >= 3.0, define C99's bool, true, false 2006-09-10 23:49:21 +00:00
dyoung
8cd106d3d2 Per discussion on tech-kern and tech-userlevel, move the bit-twiddling
macros, __BIT, __BITS, SHIFTIN, SHIFTOUT, and __arraycount() from
lib/libkern/libkern.h to sys/cdefs.h.  Add a __-prefix to SHIFTIN
and SHIFTOUT, and add a manual page for the bit-twiddling macros,
bits(3).

Make the __BIT and __BITS macros "widthless," as best I can, by
changing their type to uintmax_t from uint32_t.  XXX The manual
page lags this change by a bit.

Define __PRIxBIT and __PRIxBITS printf(3) format strings.
2006-08-31 19:24:37 +00:00
matt
5e87012f78 Add __NULL_STMT which is do { } while (/* CONSTCOND */ 0) 2006-08-25 19:07:44 +00:00
matt
53ea8158b4 With VAX & GCC4, use builtin memset and memmove. 2006-07-08 00:24:26 +00:00
thorpej
7d3d66c90e Move strtoumax.c from libc/stdlib to common/libc/stdlib and include it
in libkern.  Required for new code coming soon.
2006-04-22 15:33:33 +00:00
christos
c76b868cf4 Imply DIAGNOSTIC if __COVERITY__. 2006-04-15 01:09:34 +00:00
christos
147a6ae8fb If __COVERITY__ is defined, turn on KASSERT and _DIAGASSERT. 2006-04-14 18:24:56 +00:00
dyoung
321a3122bb Per discussion on source-changes@, add __arraycount(array) for
counting the number of elements in a static array, using the idiom,
sizeof(array)/sizeof(array[0]).

XXX This may move in the future, but this is a safe place to put
XXX it for use in the kernel.
2006-03-27 21:18:33 +00:00
kleink
31930d4de5 Provide BCD<->binary conversion in libkern and turn <dev/clock_subr.h>'s
FROMBCD()/TOBCD() macros into wrappers around it, resulting in both
smaller code footprint and elimination of possible issues due to
multiple evaluation of macro arguments.

Suggested by Simon Burge and Anders Gavare on tech-kern.
2006-03-11 15:40:07 +00:00
dyoung
cafe884d2c Change macro names to avoid collisions:
BIT -> __BIT
BITS -> __BITS
2006-03-08 08:26:50 +00:00
dyoung
f66403a698 Move my bit-twiddling macros to libkern.h from my drivers, where
I had duplicated them.  Improve the macros' names.  Simplify their
implementation.

A brief description of each macro is below.

        BIT(n): Return a bitmask with bit m set, where the least
                significant bit is bit 0.

        BITS(m, n): Return a bitmask with bits m through n, inclusive,
                    set.  It does not matter whether m>n or m<=n.
                    The least significant bit is bit 0.

        A "bitfield" is a span of consecutive bits defined by a
        bitmask, where 1s select the bits in the bitfield.  SHIFTIN,
        SHIFTOUT, and SHIFTOUT_MASK help read and write bitfields
        from device registers.

        SHIFTIN(v, mask): Left-shift bits `v' into the bitfield
                          defined by `mask', and return them.  No
                          side-effects.

        SHIFTOUT(v, mask): Extract and return the bitfield selected
                           by `mask' from `v', right-shifting the
                           bits so that the rightmost selected bit
                           is at bit 0.  No side-effects.

        SHIFTOUT_MASK(mask): Right-shift the bits in `mask' so that
                             the rightmost non-zero bit is at bit
                             0.  This is useful for finding the
                             greatest unsigned value that a bitfield
                             can hold.  No side-effects.  Note that
                             SHIFTOUT_MASK(m) = SHIFTOUT(m, m).

Examples:

/*
 * Register definitions taken from the RFMD RF3000 manual.
 */
#define RF3000_GAINCTL          0x11            /* TX variable gain control */
#define         RF3000_GAINCTL_TXVGC_MASK       BITS(7, 2)
#define         RF3000_GAINCTL_SCRAMBLER        BIT(1)

/*
 * Shift the transmit power into the transmit-power field of the
 * gain-control register and write it to the baseband processor.
 */
atw_rf3000_write(sc, RF3000_GAINCTL,
    SHIFTIN(txpower, RF3000_GAINCTL_TXVGC_MASK));


/*
 * Register definitions taken from the ADMtek ADM8211 manual.
 *
 */
#define ATW_RXSTAT_OWN          BIT(31)         /* 1: NIC may fill descriptor */
/* ... */
#define ATW_RXSTAT_DA1          BIT(17)         /* DA bit 1, admin'd address */
#define ATW_RXSTAT_DA0          BIT(16)         /* DA bit 0, group address */
#define ATW_RXSTAT_RXDR_MASK    BITS(15,12)     /* RX data rate */
#define ATW_RXSTAT_FL_MASK      BITS(11,0)      /* RX frame length, last
                                                 * descriptor only
                                                 */

/* Extract the frame length from the Rx descriptor's
 * status field.
 */
len = SHIFTOUT(rxstat, ATW_RXSTAT_FL_MASK);
2006-03-08 00:24:06 +00:00
perry
fbae48b901 Change "inline" back to "__inline" in .h files -- C99 is still too
new, and some apps compile things in C89 mode. C89 keywords stay.

As per core@.
2006-02-16 20:17:12 +00:00
perry
0f0296d88a Remove leading __ from __(const|inline|signed|volatile) -- it is obsolete. 2005-12-24 20:45:08 +00:00
christos
f852d21f71 Add the state setting functions for the new random function, but use the
small one by default, so that we can switch in the future if we want to.
2005-12-21 14:24:44 +00:00
christos
6fcf9fd532 Provide _DIAGASSERT and NULL, so that we don't have to do it in *all* the
libkern files.
Also the new inet_addr, provides inet_aton; advertise it.
2005-12-20 19:35:12 +00:00
christos
95e1ffb156 merge ktrace-lwp. 2005-12-11 12:16:03 +00:00
ragge
bc830a1980 Do not use the builtins for the mem* functions on vax, the compiler gets
confused with the static inline functions vax uses.
2003-08-13 11:34:24 +00:00
agc
aad01611e7 Move UCB-licensed code from 4-clause to 3-clause licence.
Patches provided by Joel Baker in PR 22364, verified by myself.
2003-08-07 16:26:28 +00:00
itojun
99c5869d56 add strl{cpy,cat} to libkern. code from lib/libc/string (originally from openbsd). 2003-05-15 13:50:35 +00:00
christos
07dca24022 make offsetof lint friendlier. 2002-10-24 20:53:50 +00:00
tls
0f95ec4fd5 ESP output was drawing down the entropy pool at a ferocious rate, a
particular problem on hosts with only wireless interfaces that are
definitely not safe to use as entropy sources.

Add arc4randbytes() which hands out bytes from the same source used
by arc4random().  This is intended to be a _temporary_ interface
until we can design and implement a better general PRNG interface
that is decoupled from the entropy-pool implementation.

Modify key_randomfill() (used only for initialization vectors on
SA creation and via key_sa_stir_iv(), which does not "stir",
despite its name) to use arc4randbytes() instead of pulling bits
directly from the entropy pool.  It is my hope that this change
will pose minimal integration problems for the KAME folks as the
random-pool interface is *already* different between each BSD
variant; this just simplifies the NetBSD case and solves a
fairly serious problem.

Note that it is generally considered acceptable cryptographic
practice to use a fast stream cipher to generate IVs for encryption
with stronger block ciphers.  For example, the use of "non-Approved"
PRNGs to generate IVs for "Approved" block ciphers is explicitly
sanctioned by FIPS 140-2.
2002-10-06 08:51:44 +00:00
junyoung
26737526db Add strstr() to libkern. For now, it's only used in i386 (for processor
identification).
2002-10-04 18:39:52 +00:00
matt
44bc4ef4a9 Ansify's (use prototypes). 2002-10-04 00:50:15 +00:00
thorpej
181f0a9b54 Tweak the previous change so that a prototype is always provided. 2002-08-25 21:09:45 +00:00
ragge
3f5fba68de Do not try to use "__builtin_ffs" on vax, ffs is an instruction already.
Maybe possible to teach gcc to use it?
2002-08-23 08:45:27 +00:00
thorpej
c0d823519c GCC 2.95 supports __builtin_ffs(); use it. 2002-08-21 01:27:58 +00:00
itojun
0ac289dea9 have arc4random(9). 2002-05-28 10:09:24 +00:00
thorpej
23ed6be403 Always provide alloca() as __builtin_alloca(). 2001-12-28 07:37:06 +00:00
thorpej
5ed948ecea The kernel is now built with -ffreestanding, so GCC built-ins are
disabled.  Explicitly re-enable some that we want to use, namely:

* memcpy() -> __builtin_memcpy()
* memcmp() -> __builtin_memcmp()
* memset() -> __builtin_memset()

* strcpy() -> __builtin_strcpy()
* strcmp() -> __builtin_strcmp()
* strlen() -> __builtin_strlen()

We might also consider some others for GCC 3.x.
2001-12-23 22:48:29 +00:00
perry
5624bbb1d4 restore bzero and bcmp prototypes for now -- this has to be hashed out. 2001-07-07 17:22:25 +00:00
simonb
5439e1a9ff Put the prototypes for bcmp() and bzero() back (ifdef _STANDALONE) so that
libsa builds again.
2001-07-07 12:23:43 +00:00
perry
7ab9c62227 Remove bcmp and bzero prototypes. And yes, I actually checked and
tested this time. (Slap self repeatedly.)
2001-07-07 05:42:16 +00:00
lukem
85772a1cef remove some lint 2001-04-30 02:34:58 +00:00