Commit Graph

314 Commits

Author SHA1 Message Date
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
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