Commit Graph

546 Commits

Author SHA1 Message Date
yamt 5e092cbdd7 maintain parent node pointers to speed up search and node removal. 2009-05-25 14:54:06 +00:00
yamt 03578bbe5a add comments. 2009-05-25 14:16:54 +00:00
yamt 89c1ff5632 rpst_insert_node1: fix an inverted condition. 2009-05-22 11:38:05 +00:00
christos f1dbbfab6d Set endptr if the base is not supported. The opengroup spec does not special
case this condition. Note: glibc has the same problem.
2009-05-20 22:03:29 +00:00
yamt 89ff3f9c4f - fix various bugs in the iteration code.
- add assertions.
- unittest: more tests.  verify query results by comparing with linear search.
2009-05-20 10:56:29 +00:00
yamt 0a13e5f80a don't include sys/cdefs.h twice. 2009-05-19 22:48:19 +00:00
yamt 1a764d8c67 radix priority search tree. 2009-05-19 12:39:56 +00:00
wiz e923b399de New sentence, new line. 2009-05-13 22:31:59 +00:00
pgoyette 28469fc250 Implement snprintb_m(3) to provide multi-line bit/bit-field decode.
Discussed on tech-kern.
2009-05-13 02:50:31 +00:00
rmind 79a49ca39e - Add kcpuset_iszero().
- Fix kcpuset_match().
2009-04-25 19:38:25 +00:00
skrll 0e68e44118 Only include <assert.h> and <string.h> if !_KERNEL && !_STANDALONE 2009-04-25 12:20:48 +00:00
haad 8a85d2e387 Check if pd is not NULL before we try to lock rw lock associated with it.
This fixes proplib crash when NULL is passed to prop_dictionary_get as a
dictionary.
2009-04-14 02:53:41 +00:00
joerg 1491f958e9 Improve markup. 2009-04-09 01:18:17 +00:00
enami 09fcc8b316 So that profile kernel runs again,
- Adjust the size of functions used to patch.
- Fix the jump offset of mcount call when patching functions.

Approved by Andrew Doran.
2009-04-02 00:19:02 +00:00
haad 0c9b734826 Fix crash where user was able to crash proplib with trying to internalize
bad xml file with non-existing data type e.g. <number>.

Problem is that poi is not NULL even in case that we haven't find any match
in data type name. We need to check if poi->poi_tag is not NULL before
calling poi->poi_intern function which is non existing case NULL and will
cause crash.
2009-03-30 07:42:51 +00:00
tls a34cd18b76 Fix build problems caused by crc32 addition to libkern. Also, this makes
the i386 bootblocks about 2K smaller than they were before we monkeyed
with crc32 at all.
2009-03-25 18:41:06 +00:00
he d8d70d1b63 Actually... We need libkern.h also under _STANDALONE, so that
_DIAGASSERT gets defined.  Fixes the mvmeppc libsa build.
2009-03-19 08:39:54 +00:00
tsutsui d0b9e6c924 - remove bcmp(9), bcopy(9), and bzero(9) from libkern since <sys/systm.h> has
macro which replace them with mem*() functions in #ifdef _KERNEL as noted
  in man pages
- move declarations of bcopy(3) and bzero(3) into <lib/libsa/stand.h>
  since they are still in libsa for some MD standalone sources
  (I guess all bcmp(3) in standalone sources have been replaced with memcmp(3)
   but they should be replaced with memcmp() anyway)
2009-03-18 12:25:06 +00:00
he 245ee9af71 Add local declarations of bcmp() and bzero() because libkern.h no longer
provides those declarations.

It's possible that these can be removed later when we find out whether
these functions are actually needed in the kernel, but meanwhile, this
allows alpha, hp700 and the powerpc ports (who all build these as part
of libkern) to complete their builds.
2009-03-17 23:42:45 +00:00
cegger 962766853c ansify function definitions 2009-03-16 05:59:21 +00:00
cegger 103c3602a2 ansify function definitions 2009-03-15 22:31:12 +00:00
cegger ebceae53e5 ansify function definitions 2009-03-15 22:20:09 +00:00
rmind 9c30a053ea - Add kcpuset_fill(), kcpuset_set() and kcpuset_match().
- KNF while here.
2009-03-15 20:08:43 +00:00
abs b17f6f5834 Revert test from MACHINE_ARCH to MACHINE, as this can be called with
with MACHINE_ARCH=sparc MACHINE=sparc64 when building 32bit kernels for
ultrasparc hardware. Picked up by nakayama@ - thanks.
Add a comment explaining this odd case
2009-03-13 19:16:46 +00:00
nakayama fd33b05ec2 Fix typo. (s/_HARKDERNEL/_HARDKERNEL/) 2009-03-13 16:40:22 +00:00
abs f681b265bc Prefer MACHINE_ARCH to MACHINE in some tests 2009-03-12 17:16:58 +00:00
he 91cab67b08 Follow up the powerpc side by using %rN instead of rN for registers. 2009-03-08 12:08:19 +00:00
christos 512ce49852 make this work with pcc. The previous construct is not valid c99. 2009-02-14 19:23:18 +00:00
joerg 81895b4b5d 0:0 is the adress x86emu_call pushes on the stack, so check for it here
explicitly to stop processing again. As this is the start of the IDT,
normal code is not likely to override it.
2009-02-03 19:26:29 +00:00
joerg 89b1aba64b Fix three bugs in the instruction decoder:
(1) Mode 5 for SIB uses EBP as base, not ESP.
(2) RM register mode 5 needs a segment override for SS when not using an
    immediate in 32bit mode.
(3) Same for mode 6 in 16bit mode.

From anon ymous.
2009-02-03 19:14:52 +00:00
skrll 5dbd6a69ca Make sure _atomic_cas_fn is initialised for "weirdo environments" such
as ramdisks where the constructor doesn't get called.

Fixes ifconfig in hp700 sysinst.

OK'ed by ad.
2009-01-30 14:29:44 +00:00
lukem 114b3fb343 sign-compare fix 2009-01-25 14:22:52 +00:00
cyber 23dc01f7e9 Properly handle empty data nodes (such as generated by Apple's
plist editor). They are in the form of <data></data>, whereas the
original code path only checked for empty being <data/>.

This causes an assert to be triggered when trying to access the node's
content.

Patch reviewed by thorpej.
2009-01-25 06:59:35 +00:00
lukem c5eb4ab601 fix -Wsign-compare issues 2009-01-18 11:56:51 +00:00
pooka d21961207f Include sys/param.h in the kernel to make the vax properly pick up
memset.  Otherwise vax/macros.h doesn't get included and the usual
lossage ensues.
(I bet you saw that one coming)
2009-01-14 21:33:22 +00:00
pooka 654753c2e1 include sys/param.h for _HARDKERNEL instead of homegrown def. 2009-01-12 02:53:29 +00:00
pooka 132ffc213b Include userland version of atomic cas routines in librump.
(the kernel version disables interrupts and therefore can't be used)
2009-01-10 23:36:22 +00:00
mjf a15a784800 The .if conditional crosses a line boundary, so add a backslash.
This fixes the kernel build for hppa.
2009-01-06 13:23:31 +00:00
pooka 1ce853369b Temporarily define MCOUNT as a dummy for _RUMPKERNEL to allow build
to proceed - the MD macros use processor instructions unavailable
to userspace and should/could be provided as interfaces.
2009-01-05 18:06:57 +00:00
pooka 69885c98a3 Do not use lockpatches with _RUMPKERNEL (non-PIC ... and pointless). 2009-01-04 18:46:16 +00:00
pooka 58302d6770 Opt for libc versions in case of _KERNEL && !_RUMPKERNEL.
(kernel version uses sti/cli and is not PIC)
2009-01-04 18:21:38 +00:00
pooka e77a29de65 allow inclusion of atomic ops in librump 2009-01-04 17:54:29 +00:00
pooka b6e6025d0d Get rid of locks with static initializers using once and atomic ops.
This makes proplib simplelock-free.
2009-01-03 18:31:33 +00:00
ad 30fd42e845 PR kern/40213 my i386 machine can't boot because of tsc
- Patch in atomic_cas_64() twice. The first patch is early and makes it
  the MP-atomic version available if we have cmpxchg8b. The second patch
  strips the lock prefix if ncpu==1.

- Fix the i486 atomic_cas_64() to not unconditionally enable interrupts.
2008-12-19 11:21:24 +00:00
christos 2d2593ab23 We don't need this for _STANDALONE, and it needs snprintf to work. 2008-12-17 16:02:27 +00:00
christos cec60a5890 share with kernel; replaces bitmask_snprintf which was very broken:
- subtracted one from len without checking if len was 0
- checked for a minimum buffer size
- arguments order was inconsistent with other printf like functions
- no way to tell if it overflowed
2008-12-16 22:33:11 +00:00
ad 58a45c6ffe Avoid conflicts with ZFS. 2008-12-05 13:11:41 +00:00
haad e51aea320a Fix two race conditions in proplib library. In prop_dictionary and prop_number
there was small window in which was entry left in rb tree with reference
count 0 which lead to rb tree coruption when another thread picked this up
before it was released.
Add 2 new members to the prop_object_t which are used for locking/unlocking
rb tree guard mutex.

Ok by joerg@, core@, thorpej@
2008-11-30 00:17:07 +00:00
jnemeth e971cab0ab fix build in _STANDALONE case 2008-11-21 03:23:43 +00:00
matt 4de7478cea Make lint happy (stupid lint). 2008-11-21 01:58:41 +00:00
matt 0ad7281825 Add new ptree (Patricia / RADIX tree) implementation to NetBSD. 2008-11-20 23:50:08 +00:00
matt 4a0de1478c Add an atomic_cas_8 which uses ldrex/strex. 2008-11-18 15:22:56 +00:00
jnemeth ef266cee6b oops, converted some #ifndef into #if defined... 2008-11-17 10:21:30 +00:00
jnemeth 3e8ff10fa3 Convert all #ifdef _KERNEL to #if defined (_KERNEL) || defined(_STANDALONE)
from Bernd Ernesti on source-changes@.  This fixes a build breakage
with i386/amd64 bootblocks.
2008-11-17 09:56:48 +00:00
ad c6555ead19 Our qsort() is inappropriate for kernel use because it makes recursive
calls. Replace it with a kheapsort() function in kernel. Pointed out
by tron@.
2008-11-16 16:15:58 +00:00
ad e5c4df967a Make qsort() available in libkern. 2008-11-16 15:01:26 +00:00
joerg fd06786f0c Raise correct interrupt on division errors. 2008-10-27 00:20:22 +00:00
mrg 4c0ca913b1 look for COMMON_MACHINE_ARCH before MACHINE_ARCH or MACHINE_CPU. 2008-10-26 07:22:50 +00:00
jmcneill 48e69717fb Emulate cpuid instruction. 2008-10-25 19:01:18 +00:00
ad ab62b04dc5 Allow atomic ops to be built as part of libpthread. 2008-09-29 08:43:00 +00:00
haad 185aec71fe Add prop_array_add_int* and prop_array_add_uint* functions. These functions
can be used to append specified type to the end of prop_array_t.

Ok'ed by @joerg.
2008-09-11 13:15:13 +00:00
joerg 3ae583451f Prepare use of strtoull, strtoumax and strtoimax in tools/compat by
including nbtool_config.h.
2008-09-10 18:08:58 +00:00
matt 331139bd61 Properly deal with LIBC namespace issues. 2008-08-22 03:00:02 +00:00
dogcow e74fc2a17d Unbork cross-builds in tools/compat/ 2008-08-22 01:48:03 +00:00
oster 5577c7fceb Fix build breakage by adding appropriate #includes.
Patch from joerg@
2008-08-20 19:58:33 +00:00
joerg 245e086321 Unify the implementation of strto{l,ul,ll,ull,imax,umax,q,uq} into one
version for signed and one version for unsigned data types.

Add a check for supported bases and set errno (userland) or panic
(kernel, libsa) otherwise.

Make strto{ll,ull,imax,umax} normal symbols and just keep the underscore
versions as strong alias.

Obtained from DragonFly, based on the wide char version from Citrus.
Reviewed by christos@
2008-08-20 12:42:26 +00:00
matt c7572a70dd Add assembly versions of atomic ops with ldrex/strex 2008-08-16 07:12:39 +00:00
skrll d8054af5f4 Provide assembly _atomic_cas_up() as the compiler cannot be trusted to
generate fully restartable code sequences.
2008-08-11 21:54:51 +00:00
christos ecd6bc7086 typo in comment and white-space fixes mostly from Stathis Kamperis 2008-08-11 05:54:21 +00:00
thorpej 4ce0dc3a15 Fix an issue introduced with the prop_stack change: It's not a good idea to
return a 3-value enum from a function declared to return bool.  This broke
the recurse case for prop_object_equals().  Instead, declare the object type
equals routine to return a _prop_object_equals_rv_t.

Give the same treatment to the object type free routines: declare them to
return a _prop_object_free_rv_t, and consistently check those return values
againt the enum type.

Tidy up some whitespace while we're here.
2008-08-03 04:00:12 +00:00
thorpej 1d49730690 Fix a typo. 2008-08-03 03:11:28 +00:00
dholland 154fe9b1d9 Don't convert cpuid_t through int while testing it for being in range.
(Might truncate it, for one thing. Also, if the shift result is < 0 the
demons have already flown out of our nose.)

Fixes some -Wsign-compare warnings.
2008-07-27 05:47:56 +00:00
rmind 9dfcfe5db5 Add few KASSERTs. 2008-07-14 01:07:39 +00:00
matt 94bc3febe6 Changes to make lint STFU. 2008-06-30 20:54:19 +00:00
matt 5a4f0c6b2b Change tree op members/typedefs to rbto_compare_* from rb_compare_* 2008-06-30 20:14:09 +00:00
matt 48717a981d Move rb.c from sys/lib/libkern to common so it can be in both libc and libkern. 2008-06-30 19:03:59 +00:00
ad d6c32b235a +atomic_cas_*_ni 2008-06-23 10:33:52 +00:00
ad 7a21650601 Install manual pages for the atomic ops. 2008-06-23 10:22:40 +00:00
he d6e5879de3 Be consistent in how cpuset_nentries is computed in the kernel and
in user-land.  This fixes the user-land part.  Now "cpuctl identify 0"
gives a result instead of getting EINVAL from the set-affinity syscall.
2008-06-22 21:49:31 +00:00
rmind 54ccd4a6fa kcpuset_isset: remove if-check. It is not reasonable for kernel,
saves few cycles, and it is better for CPU cache.
2008-06-22 03:24:31 +00:00
christos dfeefcdcb8 Separate cpuset and kcpuset, and only use the bits in userland. Requested
by yamt
2008-06-22 00:05:09 +00:00
thorpej e0e4b153c9 _prop_rb_tree_insert_node() now returns true/false to indicate if the
insertion succeeded.  Update existing usage that arranges for insertions
to always succeed to assert that they do.
2008-06-17 21:29:47 +00:00
christos ddbb9c58dd We don't need any of this in standalone mode. 2008-06-16 13:02:08 +00:00
christos 04608dd0bf little more lint 2008-06-16 02:53:32 +00:00
christos 834ef62012 make lint happy 2008-06-16 02:30:03 +00:00
rmind 481ae1556f - Add general cpuset macros.
- Use kcpuset name for kernel-only functions.
- Use cpuid_t to specify CPU ID.
- Unify all cpuset users.

API is expected to be stable now.
2008-06-16 01:41:20 +00:00
rmind 7d902495c2 cpuset_create: check the return value of calloc(). 2008-06-15 23:45:51 +00:00
rmind 8f8073542b - cpuset_create: pass correct argument to sysctl(3).
- Constify few variables.
2008-06-15 23:41:39 +00:00
christos b46ed27e5c Hook into sys 2008-06-15 20:35:11 +00:00
christos 849fbad5b6 cpuset related functions, shared between the kernel and userland. 2008-06-15 20:33:50 +00:00
wiz 46c5658a32 Sort SEE ALSO. 2008-06-04 07:46:48 +00:00
haad 9b09c481c8 Add prop_array_util functions to proplib. This code is copied/changed
prop_dictionary_util.

From manual page

The prop_array_util family of functions are provided to make getting and
setting values in arrays more convenient in some applications.

OK by mjf@ and freza@.
2008-06-03 20:18:24 +00:00
haad b95cd5a6fe Fix typo.
OK by martin@.
2008-06-02 09:27:04 +00:00
chs 6740bb5440 enable profiling of assembly functions. 2008-05-25 15:56:11 +00:00
yamt 75b1a2ec18 fix recursive read-lock bugs found by lockdebug and reported
by Geoff C. Wing and others.  ok'ed by Jason Thorpe.
an earlier version was tested by Sverre Froyen.
PR/38732 from oster@.
2008-05-24 14:32:48 +00:00
yamt 6787eedebd revert the recent "use trylock to hide locking errors" changes
and their associated changes, in particular, the following versions.
	prop_array.c		1.13-1.16
	prop_dictionary.c	1.25-1.28
	prop_object_impl.h	1.21-1.25
ok'ed by core@.
2008-05-24 14:24:04 +00:00
dyoung 848e7ffe8c In prop_data_create_data(blob, len), if len == 0, allocate no memory
for blob, and leave pd_mutable set to NULL.  In this way, avoid
tripping over the assertion in prop_data_data_nocopy().
2008-05-15 21:23:33 +00:00
tron e70ab693a2 Change the argument of _PROP_RWLOCK_TRYRDLOCK() to the lock member and not
its address to be consistent with all the other macros.
2008-05-07 10:16:41 +00:00
tron 2916b940f8 Replace _prop_rwlock_tryrdlock() by a macro _PROP_RWLOCK_TRYRDLOCK().
This avoids build failures in stand alone binaries (e.g. bootloaders)
where there is no "pa_rwlock" member in the "_prop_array" structure.
2008-05-07 10:01:50 +00:00
simonb 4ec02db9e9 Fix a "#define<tab><tab>" that crept in to previous. 2008-05-07 05:40:01 +00:00
xtraeme 35fe7cdcf1 prop_object_iterator_next() and prop_object_iterator_reset() were
acquiring the rwlock recursively in some paths.

Introduce _prop_rwlock_tryrdlock() and use it in these functions, so
that the rwlock is *always* acquired once, while here add some
_PROP_RWLOCK_OWNED asserts to verify.

This definitely fixes the "locking against myself" panics.
2008-05-06 22:57:26 +00:00
xtraeme d69a8a8939 Xref prop_dictionary_util(3). 2008-05-06 17:23:38 +00:00
xtraeme 771a05b730 Do not acquire the rwlock recursively in prop_{array,dictionary}_iterator_reset()
when prop_{array,dictionary}_copyout_ioctl() is called.

Introduce _PROP_RWLOCK_OWNED() which is a KASSERT(rw_lock_held(lock))
and use it in those two functions, also acquire the rwlock in other
places where it is required now.

This fixes a LOCKDEBUG panic "locking against myself", as reported by
Geoff C. Wing in current-users@.
2008-05-06 13:52:51 +00:00
yamt 78eb84d14c whitespace. 2008-05-03 05:43:05 +00:00
yamt 9093441576 rename END to ENDLABEL. i'll use END for other purpose. ok by Andrew Doran. 2008-05-03 05:40:21 +00:00
martin 11a6dbe728 Convert TNF licenses to new 2 clause variant 2008-04-30 13:10:46 +00:00
tsutsui 2be642537b Make this compile (missing register prefix). 2008-04-30 09:59:42 +00:00
ad 9ba64b51be Assembly _atomic_cas_up() for mips. PR lib/38482. 2008-04-30 00:17:34 +00:00
scw 4e2c4c42b4 Implement _atomic_cas_up() in assembly code as the compiler cannot be
trusted to generate fully restartable code sequences.

Addresses lib/38482 for ARM and m68000.
2008-04-29 20:57:50 +00:00
martin 3028e483e4 Convert to new 2 clause license 2008-04-29 06:53:00 +00:00
martin ce099b4099 Remove clause 3 and 4 from TNF licenses 2008-04-28 20:22:51 +00:00
nakayama 99adca9efa Use %xcc for 64-bit comparisons. 2008-04-09 12:49:05 +00:00
tsutsui c3b0f346ec Fix pasto. 2008-04-06 04:01:56 +00:00
tsutsui 7dfcdee2a2 Use .c version atomic ops for m68010. 2008-04-05 22:28:36 +00:00
he 73e50f111b Do like the non-__OPTIMIZE_SIZE__ variant, and compile memset() unless
BZERO is defined, instead of requiring MEMSET to be defined.

Avoids violating the principle of least astonishment, and also fixes
the build of stand/ and kernels for (at least) alpha.
2008-03-29 14:03:22 +00:00
he a58a2cddc0 Make the size-optimized memset() actually conform to the man page
by returning the first arg.
2008-03-29 12:25:32 +00:00
apb f5c2801052 Add /* __OPTIMIZE_SIZE__ */ comments on relevant #else and #endif lines.
Also change some #ifdef to #if defined() for consistency.
2008-03-26 06:19:36 +00:00
christos 9f2bc34fb9 bcopy does not return ptr. 2008-03-25 23:23:34 +00:00
christos 93f951ce0d fix #ifdefs for BCOPY 2008-03-25 23:16:29 +00:00
christos 985a3d11e8 add bcopy and bzero for the benefit of loadfile. 2008-03-25 23:13:15 +00:00
christos 9e32ad04aa add __OPTIMIZE_SIZE__ versions. 2008-03-25 21:22:37 +00:00
kochi 2ead1ed5c4 Add atomic_cas_foo_ni alias. 2008-03-24 14:59:30 +00:00
kochi 473f1b48ee Add ia64 MI atomic ops.
(Not tested at all, just for reference)
2008-03-20 07:10:31 +00:00
ad b0f548e27b oops 2008-03-07 02:18:34 +00:00
ad bb9b5eb92c In libc, use the MI atomic_cas(). The assembly version is faster, but I
think there are PIC issues with it and I don't have a way to fix and test.
2008-03-07 01:18:54 +00:00
phx e6d6e05cb1 Including assym.h is not needed and will break the build, because it does not
exist that early. Deleted it.
Approved by garbled.
2008-03-06 21:17:17 +00:00
cube 5b25d80ca0 Actually implement prop_dictionary_make_immutable. OK'd by thorpej@. 2008-03-05 07:47:09 +00:00
lukem 8346a6360d Use mkstemp() + fchmod() instead of mktemp(), since the latter
results in linker warnings.
2008-02-23 01:26:01 +00:00
garbled 2ba84f0f9e Add tuned powerpc assembler written by IBM and released under a 3-clause
BSD Lisc as part of the perflib project.
http://sourceforge.net/projects/ppcperflib/

Tested the new functions with microbenchmarks on a number of different
CPU types, and  found that most cpus either benefited greatly, or were
unaffected.  Primarily G4 CPU's were unaffected, and all others showed
speedups.  My 7044 (POWER3) went from a 70.6 to a 73.2 (thats good) in
bytebench with a complete release built with these.  Also passed
regression tests.
2008-02-21 17:35:47 +00:00
apb 267197ec1e For all files under src/common, as well as related man pages under
src/lib/libc, or related headers under src/sys/sys: change u_intNN_t to
uintNN_t.
2008-02-16 17:37:13 +00:00
apb cf01a0f8c8 C99 is no longer "very recent". Adjust a comment accordingly, and
start using uintNN_t instead of u_intNN_t in the definitions of
sha2_{byte,word32,word64}.
2008-02-16 17:15:32 +00:00
dogcow 26a84bff72 add missing %. (hi matt!) 2008-02-13 03:55:54 +00:00
ad 2d0314d313 Always enable memory barriers in userspace, otherwise libpthread won't
work correctly on MP systems.
2008-02-12 18:40:28 +00:00
ad b86eac67c4 Correct a dodgy alias. 2008-02-12 18:35:38 +00:00
matt 360e0475e3 Use %rN as all new code is supposed to. 2008-02-12 07:58:01 +00:00
matt 131790b421 Fix pthread problem. (export membar* to userland) 2008-02-12 07:35:04 +00:00
ad eff625dc0e Put back a __predict_false removed during testing and fix atomic_cas_mp(). 2008-02-11 23:48:23 +00:00
ad a3fb849dfc Clarify what membar_enter/membar_exit provide. 2008-02-11 15:12:07 +00:00
ad 1b2aff1f03 Note many of the restrictions, and clarify the section on global
visibility.
2008-02-11 15:01:24 +00:00
ad b3193dc791 Only build atomic ops for libkern/libc. 2008-02-11 14:21:11 +00:00
ad b5b3e9fb51 Enable the atomic ops in userspace. 2008-02-10 18:45:40 +00:00
ad 12190eee54 Fix name of the init function. 2008-02-10 13:41:02 +00:00
ad 646fc3baa9 Add atomic_cas_foo_ni(). 2008-02-10 13:40:31 +00:00
ad cc655ebd16 Add atomic_cas_foo_ni(). 2008-02-10 13:25:46 +00:00
ad a180c2a1f7 membar_enter was doing the wrong thing. For x86 we can alias:
membar_enter -> membar_consumer
	membar_exit -> membar_producer
2008-02-09 13:42:21 +00:00
ad d418b9fe8b Some glue for atomic ops in userspace. 2008-02-09 13:30:54 +00:00
matt 350555cd1f Add the .C versions for the atomic ops. 2008-02-03 07:46:38 +00:00
nakayama da1555e6a7 Search files in arch/sparc64/atomic before arch/sparc/atomic in case of
sparc64 32-bit kernel.

Make sparc64 32-bit kernel works again.
2008-01-22 12:34:58 +00:00
nakayama b4ed00a22d Use __arch64__ instead of __sparc64__, since -D__sparc64__ is appended
to build option of sparc64 32-bit kernel.
2008-01-22 12:32:07 +00:00
christos 428727f47f PR/37838: Stathis Kamperis: proplib documentation enhancements 2008-01-21 22:15:03 +00:00
ad 607fd8ae21 atomic_and/atomic_or don't operate on pointers, so don't copy the return
to a0. From thorpej@.
2008-01-12 17:29:03 +00:00
ad f6c08490ef Don't put membar in the delay slot. thorpej@ says it may be problematic. 2008-01-12 17:27:28 +00:00
simonb d8de5b102b Remove support for NetBSD/pc532. 2008-01-09 11:25:58 +00:00
martin ececdb7913 When passing char (or unsigned char) arguments as int, assign them to a
temporary char (resp. unsigned char) before comparing, to force truncation
to the proper domain. This makes the coresponding regression tests succeed.
2008-01-08 21:57:06 +00:00
ad 9324487752 Include sys/simplelock.h in prop_object_impl.h. 2008-01-05 01:15:02 +00:00
mjf 83535b7f11 Nuke prop_dictionary_capacity, there was no implementation for it.
No objections on tech-kern.
2008-01-05 00:23:46 +00:00
xtraeme 0f546319ca sys/simplelock.h is required now. 2008-01-04 21:33:17 +00:00
mrg 97e461c633 - provide 32 bit versions of the sparc v9 atomic ops.
- use them on sparc64 32 bit kernels.

fixes issues on 32 bit sparc64 kernels that were using sparc v8 ops.
tested by rjs@.
2007-12-22 23:19:40 +00:00
tsutsui 3e9910f3b8 Disable a sanity check output buffer != NULL in _STANDALONE case.
Some kernels are loaded at address 0x0 by bootloaders and
output buffer address could be zero in such case.

Fixes "read text" errors on loading install floppy of NetBSD/news68k 4.0,
reported by KIYOHARA Takashi on port-news68k.
2007-12-22 00:52:03 +00:00
joerg 45f2572a92 Add virtual i8254 for x86emu. 2007-12-21 17:45:50 +00:00
ad e16a661bf3 - Make __cpu_simple_lock and similar real functions and patch at runtime.
- Remove old x86 atomic ops.
- Drop text alignment back to 16 on i386 (really, this time).
- Minor cleanup.
2007-12-20 23:46:10 +00:00
ad 163e94a67e 64-bit atomic ops for i386. 2007-12-20 01:27:24 +00:00
joerg 823959a6b2 Refactor interrupt dispatching. 2007-12-13 16:41:59 +00:00
ad 9e9c09c30a Fix _atomic_cas_64. Noted by bouyer@. 2007-12-10 14:13:12 +00:00
ad 164992f1a5 Add missing strong aliases. 2007-12-09 17:38:51 +00:00
ad 6260baac6e Add missing strong aliases; sure I did this before? 2007-12-09 17:33:56 +00:00
ad 1206a8cb5c Add some goo to make this work in userspace. 2007-12-08 22:53:33 +00:00
ad 96f5ce86b9 objdump -d to the rescue. I think this should work now. 2007-12-08 22:42:46 +00:00
joerg e982f87297 Expect that src/common/include is in include path and use x86emu/* for
the includes.
2007-12-04 17:32:22 +00:00
he 1e962f25f7 Correct what must obviously be a cut+paste-induced set of typos. 2007-12-04 01:13:38 +00:00
wiz 7b371a343f Typo fixes. 2007-12-02 18:57:56 +00:00
joerg 00487473b9 Move x86emu's include files to src/common/include/x86emu. 2007-12-01 20:14:09 +00:00
ad 234aa6237e Memory barriers for MIPS. 2007-11-30 22:50:44 +00:00
joerg 22ac6fc0fb Add x86emu for in-kernel use. This is a 386 real mode emulator that can
be used to run ROM code inside the kernel without having to setup vm86
and without having a x86 CPU at hand.

This code was originally written by SciTech and released under MIT/X11
license for XFree86. It has been refactored be less than half of the
original size, the compiled code being around a third of the former
size. The interface was changed to be a real library, e.g. no global
variables are used.
2007-11-30 20:02:49 +00:00
ad 4d460dc055 This is atomic_dec, not atomic_inc! 2007-11-30 17:11:48 +00:00
ad f377e7f907 Fix ia32 -> amd64 thinko. 2007-11-29 21:59:47 +00:00
ad 7243d328e1 Atomic ops for sh3. 2007-11-29 17:33:38 +00:00
ad 6f3a041727 atomic_add_* takes signed integers, the others take unsigned. 2007-11-29 17:29:40 +00:00
ad 29d1edb61b Apparently pointers are also returned in %a0. 2007-11-29 17:12:21 +00:00
ad 935eacf351 Pull in m68k atomic ops from the thorpej-atomic branch. 2007-11-29 17:09:31 +00:00
ad 6b0ff77038 Atomic ops for hppa. 2007-11-29 16:14:56 +00:00
ad 881b1b699e Use the CAS-based inc/dec variants, since these CPUs don't have atomic
add in hardware (does arm?).
2007-11-29 15:29:46 +00:00
ad fe803ab0ed Add inc/dec variants that use atomic_cas in preference to atomic_add. 2007-11-29 15:27:57 +00:00
ad 5c5043b187 membar_read/write are gone. 2007-11-29 15:20:43 +00:00
ad 11f83d35dd Atomic ops for arm. 2007-11-29 15:19:54 +00:00
ad 2da5f5559a Fix the aliases. 2007-11-29 02:16:00 +00:00
ad ebe806aa11 sparc atomic ops 2007-11-29 02:01:22 +00:00
ad c69c0e0f91 Make the 64-bit operations available when possible. 2007-11-29 01:04:57 +00:00
ad 695c2bc225 Only build the 64-bit versions if __HAVE_ATOMIC64_OPS. 2007-11-29 01:02:40 +00:00
ad 7b3b1e0427 Atomic ops for MIPS. Use the CAS functions already provided by the kernel,
and use the generic C code to provide the rest. Unfortunatley the C code
assembles up pretty badly on MIPS but at least it will work.
2007-11-29 00:16:23 +00:00
ad 2f827ecd6a ppc64 atomic ops. 2007-11-28 21:47:00 +00:00
ad bc7bf35c36 Atomic ops for powerpc. Please review. 2007-11-28 21:39:48 +00:00
ad 44fc0a18e5 A lock prefix on xchg is meaningless. 2007-11-28 18:02:29 +00:00
ad fb900ec918 Pull in alpha atomic ops from the thorpej-atomic branch. 2007-11-28 17:39:06 +00:00
ad f1d10eab90 Pull in sparc64 atomic ops from the thorpej-atomic branch. 2007-11-28 17:29:31 +00:00
ad 77ca26a240 Memory barriers for sparc64. XXX Can the 'membar' go in retl delay slot? 2007-11-28 17:29:13 +00:00
ad 0df165c04d Use xchgb, bswapl and not rotate/shift. 2007-11-28 17:03:35 +00:00
ad 13c86772e9 Memory barrier in respect of the CAS isn't necessary. 2007-11-28 16:59:09 +00:00
ad 79085586b9 Support files from the thorpej-atomic branch. 2007-11-28 16:54:57 +00:00
ad db42e14f44 Hook the atomic ops in. Right now they are only built into libkern, and
only if available.
2007-11-28 15:25:44 +00:00
ad b47fc5f5e0 Fix up a few minor problems. 2007-11-28 15:24:38 +00:00
ad 65728ed419 x86 atomic ops. 2007-11-28 01:33:47 +00:00
ad 51a2159851 Don't unconditionally clear the direction flag. The ABI says it must always
be clear when making a function call, and 'cld' takes about 50 clock cyles
on the P4.
2007-11-12 18:41:59 +00:00
mjf c05cd035e3 Fix typo 2007-11-06 11:41:35 +00:00
christos 2f1af36850 use the ffs32 from bitops.h which is faster 2007-11-02 21:05:06 +00:00
xtraeme d7ef1da684 Fix a typo that has been there forever. prop_dictionary_set:
the object will be retained by the dictionary not array.
2007-10-11 03:10:28 +00:00
he 2a0ce8a57f Improve consistency between <sys/bswap.h> and what's actually
defined by the C library for the various m68k ports by borrowing
some #ifs from the i386 port.

Also, align sun2 with the other m68k ports as to whether they
define __bswap{16,32} or bswap{16,32} in their C library (all
now define the __ variants).

This should make the m68k ports build sys/rump again, except
for sun2 which hits another problem later on.
2007-09-19 20:31:34 +00:00
xtraeme ed504658f5 tyop: guaranty -> guarantee. 2007-08-30 19:12:32 +00:00
joerg 4deb593145 Avoid using unbound amount of stack frames in prop_object_equal
by using a dynamic stack as well. Reorder arguments for the internalizer
as the iteration is always present and should go before possibly
NULL arguments.

Reviewed by mjf@ and adrianp@
2007-08-30 12:23:53 +00:00
pavel c0f560c80e struct plistref does not reference other proplib data types, so split it
in its own header file to be included by dkio.h. Fixes breakage due to
pollution from proplib.h in programs which include ioctl.h. Tested and OK
by dogcow@.
2007-08-17 11:05:03 +00:00
joerg e835604c26 libprop is currently using a recursive parser. While this is fine for
userland, deeply nested arrays and dictionaries can easily overflow
the kernel stack and thereby force a panic.

Fix the internalizer and prop_object_release to use a separate call
stack and alter the dictionary and array handling to not recurse on
the C stack. The default stack has an inline depth of 16 elements,
which should keep the overhead reasonable.

This issue was found by Pavel Cahyna and Jachym Holecek.

Additionally add a limit for prop_object_copyin_ioctl to prevent user
programs from temporary allocating unbound amount of kernel memory.
Allow malloc to fail so that tight loops of userland processes can't
force panics by exhausting the kernel map.

Tested with the sample exploit of Jachym, his test suite and reviewed
by himself (initial patch), Christos Zoulas and Jason Thorpe.
2007-08-16 21:44:06 +00:00
thorpej 04377267cc boolean_t -> bool
TRUE -> true
FALSE -> false
2007-08-16 16:28:17 +00:00
ad 79ba10e06a lockmgr > rwlock 2007-07-29 11:25:01 +00:00
drochner de07feb28f cast to void* to avoid a fatal warning 2007-07-18 16:58:14 +00:00
joerg 17c77a58f0 Fix SIGBUS issues on strict alignment issues. Use le32dec in RMD160
as the data pointer to RMD160_Update doesn't have to be aligned.
In SHA256_Update and SHA512_Update, only operate directly on the passed
in data if no left-over in the context exists and the data is correctly
aligned. The problem was exposed by the audit-packages rewrite in C
and reported for the libnbcompat version in PR pkg/36662.
2007-07-18 13:57:54 +00:00
joerg 22549e91c8 Consider '\r' to be white space. Discussed with and also kept as local
change by freza. With this change, DOS style line endings work.
2007-07-17 20:36:38 +00:00
joerg 39dccbf2f1 prop_array_internalize and prop_dictionary_internalize are basically the
same code. Refactor it into _prop_generic_internalize, which gets passed
the second-level tag.
2007-07-16 19:20:17 +00:00
degroote be58d0f67a Fix the prototyp of prop_dictionary_set_keysym in the DESCRIPTION part 2007-07-07 19:03:52 +00:00
scw dba01be393 Apply the patch, with some minor tweaks, supplied in PR/36513.
This prevents a possible prefetch past the end of the source buffer.

Note that the semantics of the pld instruction mean that it is unlikely
that this would have caused any problems except in very specific
circumstances in some types of device drivers.
2007-06-21 21:37:04 +00:00
xtraeme 5386acb4ac Xref prop_dictionary_util(3) and prop_send_ioctl(3). 2007-06-21 12:02:31 +00:00
scw 5092a6592f Apply the patch supplied in PR/36512 to fix the buffer overlap check. 2007-06-20 22:31:21 +00:00
christos a8565cf99b handle fortify, ansify. 2007-06-04 18:19:26 +00:00
christos 1418345039 Make these work with _FORTIFY_SOURCE, by overriding the fortified definitions 2007-06-03 17:39:26 +00:00
xtraeme d4be10ac51 Typo: prop_dictionary_receive_ioctl -> prop_dictionary_recv_ioctl.
Bump date.
2007-05-10 22:15:47 +00:00
xtraeme 6af752323b It's "Copy a dictionary" not "Copy an dictionary". preempt wiz and
bump date.
2007-04-28 06:01:13 +00:00
yamt 1e244571b1 correct a section number. 2007-04-22 11:27:25 +00:00
yamt 8ad48713da correct function names. 2007-04-22 11:23:29 +00:00
scw 5764a76889 Remove support for NetBSD/{,evb}sh5. 2007-04-08 09:35:21 +00:00
matt 1c1dcb3369 Add these so kernels built -O0 will link. 2007-03-31 06:13:52 +00:00
ad 59d979c5f1 Pass an ipl argument to pool_init/POOL_INIT to be used when initializing
the pool's lock.
2007-03-12 18:18:22 +00:00
dillo 3827e4b3e7 Fix white space skipping before closing tag when padding characters
are present.

Okayed by thorpej.
2007-03-04 22:31:43 +00:00
freza d7d800dc0c Add prop_data_size() to SYNOPSIS. 2007-02-22 22:49:29 +00:00
chs d210472073 don't do the weak symbol thing in kernel context. 2007-02-19 18:33:09 +00:00
christos ace49726e7 Make SHA512_Last static since it is not part of the API. Suggested by
Matthias Scheler
2007-02-18 18:13:38 +00:00
christos 5feb51ff2c make SHA512_Last weak. 2007-02-17 17:15:43 +00:00
mjf 118bbc15f5 Fix typo. 2007-02-02 19:35:59 +00:00
christos 4361f207b8 remove bogus (void)&var; from Anon Ymous 2006-12-18 00:41:54 +00:00
cube bb54157110 Add a comment to explain how the value for uaddr is chosen. Maybe uvm_mmap
should do that instead of sys_mmap...
2006-11-28 18:36:26 +00:00
cube 00fbe2b725 In _prop_object_copyout_ioctl, uaddr was not initialised, although it is
used by uvm_mmap() as a hint for the virtual address to map memory to.  As
a consequence, it tended to fail a lot on some architectures.

We cannot use 0, so instead use the value that would have been used if we
were calling mmap(2) with 0 as the first argument.

Fixes PR#34639 by xtraeme@.
2006-11-28 18:30:47 +00:00
dyoung e3361bb265 Add strsep(3) to libkern.
To avoid code duplication, move strsep.c to the kernel/userland
common files.

Soon I will commit source-address selection (options IPSELSRC).
It will use strsep(3).
2006-11-13 03:26:43 +00:00
he 80b96f1aa4 Add include of <sys/param.h>, to allow vax kernels to build again.
For vax, this causes <machine/macros.h> to be included and the
redefine of memset() to take effect.
2006-11-01 11:29:08 +00:00
uwe 5dd5d540a6 Simplify the __attribute__ ifdef mess now that __used does the right
thing for older gccs.
2006-10-27 22:14:13 +00:00
christos d029b25938 restruct the include files to look like the other hash functions. 2006-10-27 21:25:21 +00:00
christos 77c9e41904 this is shared with the kernel now. 2006-10-27 21:23:15 +00:00
uwe 088af57adf Do the used/unused dance under #ifdef KERNEL too. Prevents mcount
from being optimized away when compiling sh3 kernels with profiling
enabled (gcc doesn't see that __mcount, which is written in asm,
refers to it).
2006-10-26 23:10:16 +00:00
thorpej 1aea07a325 Add prop_array_t support to prop_kern. 2006-10-26 18:51:21 +00:00
thorpej 26d4f90430 - Add prop_dictionary_all_keys(). Takes a snapshot of a dictionary's
keys and returns them in an array.  This effectively allows a caller
  to mutate a dictionary while iterating over it (really, you iterate
  over the array of keys instead of the dictionary itself).
- Add a slew of utility functions that make it more convenient (in some
  circumstances, anyway) to get/set values in a dictionary.
2006-10-26 05:02:12 +00:00
he 4df50368d1 sysconf() returns long, which isn't neccessarily assignment-compatible
with size_t, as evidenced by sh5, so add an explicit cast.
2006-10-19 10:10:35 +00:00
martin ab82117070 Backout size_t casts - lint has been fixed. 2006-10-18 19:15:46 +00:00
martin ec465210f2 Sprinkle a few size_t casts to avoid conversion warnings. 2006-10-18 14:49:21 +00:00