Commit Graph

89 Commits

Author SHA1 Message Date
thorpej
873293facc Make prop_number_t handle both signed and unsigned numbers. The *integer*
routines now take int64_t arguments, and new *unsigned_integer* routines
take uint64_t arguments.  See prop_number(3) for complete details.
2006-10-12 04:46:56 +00:00
thorpej
b5c9ebab95 Make this compile with -Wunused and handle the case where __predict_false()
is not defined (non-NetBSD environments).
2006-10-12 04:43:20 +00:00
thorpej
4c9ab4b0a8 _prop_object_fini(): Consume all of the arguments. 2006-10-12 04:41:51 +00:00
thorpej
1c717ab574 _prop_bool_free(): Consume all of the arguments. 2006-10-12 04:41:13 +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
dbj
a8e91bcbd6 fix build issue for !_KERNEL
fixes pr lib/34708, credit Henning Petersen via t-online.de
2006-10-04 09:43:45 +00:00
thorpej
eb2acb850f - Add a reader-writer lock to array and dictionary objects that ensures that
the data structure is internally consistent in the face of multiple threads
  accessing it concurrently.  This is not designed to provide application-
  level semantic consistency; applications are responsible for that locking
  protocol should it be necessary.
- Rename _PROP_MUTEX_DECL() to _PROP_MUTEX_DECL_STATIC().
2006-10-03 15:45:04 +00:00
xtraeme
c54463e668 typos: prop_stringy_* -> prop_string_* 2006-09-27 19:24:28 +00:00
dogcow
9c80a2830c unbreak kernel builds from the last fix 2006-09-22 23:58:36 +00:00
dbj
727299862c protect include of sys/mman.h when building _KERNEL or _STANDALONE 2006-09-22 19:46:21 +00:00
thorpej
6cf1ffe998 Alter the protocol impemented by prop_kern to allow for bi-directional
plist-based messages and to eliminate looping previously required to
receive a plist from the kernel:

- prop_dictionary_copyin_ioctl() and prop_dictionary_copyout_ioctl()
  now take the cmd argument rather than the file open flag.  The
  read-ness or write-ness of an ioctl command is checked by these
  routines to ensure that information is being passed to/from the
  userland component properly.

- prop_dictionary_copyout_ioctl() now allocates the memory for the
  XML plist on behalf of the userland component by way of uvm_mmap().
  The XML plist is copied out to the newly-mapped anonymous region,
  and the pointer returned via the plistref.

- prop_dictionary_recv_ioctl() is responsible for munmap()'ing the
  region after parsing the XML plist into internal represenatation.

- A new prop_dictionary_sendrecv_ioctl() is added, allowing user space
  code to send a dictionary to the kernel and receive one back as a
  reply.


Update users of prop_kern for the API changes (Bluetooth).

This constitutes an ABI / protocol change -- but this will also be put
into NetBSD 4.0 so that the first proplib release will implement the new
scheme.
2006-09-22 04:20:23 +00:00
thorpej
452b3d1a33 Take the node indices out of the same namespace that <sys/tree.h> uses. 2006-09-09 15:19:18 +00:00
thorpej
fd7e02e68f Revert previous. 2006-09-09 15:01:37 +00:00
xtraeme
82b358e3b5 Don't re-define RB_{LEFT,RIGHT,PARENT} before undef'ing them first. 2006-09-09 09:35:16 +00:00
thorpej
25b4258767 Adapt Matt Thomas's red-black tree implementation for use in proplib. This
has a significant code size savings over <sys/tree.h>.

Also change prop_number_t to store all number objects in an r-b tree,
only ever allocating one object for any given number (we can do this
because numbers are immutable).  This results in significant run-time
memory savings.
2006-09-09 06:59:28 +00:00
christos
0616c072ff complete initialization. 2006-08-27 22:31:55 +00:00
wiz
f46bc596c0 Remove duplicate word. Markup fixes. 2006-08-23 20:50:37 +00:00
wiz
18a66ca024 Bump date for previous. 2006-08-23 20:46:22 +00:00
thorpej
beabdd9bdd Also guard object accessors against NULL (like we do foreign object types)
so that apps can use this construct safely:

	obj = prop_dictionary_get(dict, "value");
	if (! prop_number_equals_integer(obj, 5)) {
		...
	}

Suggested by Iain Hibbert.
2006-08-22 21:21:23 +00:00
he
325cec31d4 Add a workaround for GCC -Wuninitialized, similar to the prop_array.c
workaround, and properly marked with XXXGCC -Wuninitialized.
2006-08-21 17:35:15 +00:00
he
1a119b51b3 Add a workaround for a GCC -Wuninitialized mis-warning (seen for mips). 2006-08-21 15:39:02 +00:00
thorpej
d21620b264 Several changes to proplib:
- Arrays can now be externalized and internalized in the same way
  dictionaries can.
- Add new "externalize to file" and "internalize from file" functions
  to make reading a property list from a file and writing a property
  list to a file more convenient.
- Many assertions in the object implementations are gone.  Instead,
  calling an accessor for one object type with a different object type
  as an argument will return a suitable "invalid" value.
- prop_object_type() now returns a new PROP_TYPE_UNKNOWN value if called
  with a NULL object.
- Externalized property lists now contain a reference to the Apple XML
  plist DTD.
- Add a new prop_ingest(3) facility, which provides a convenient way to
  translate a dictionary into an arbitrary binary representation.
2006-08-21 04:13:28 +00:00
ross
282f07d643 Fix bug involving addresses >= 4G on ppc64. 2006-08-15 02:23:54 +00:00
yamt
9858dc825d don't include stdint.h for _STANDALONE. 2006-07-12 13:54:55 +00:00
wiz
2115abd72d Make HTML-safe. 2006-07-09 19:08:31 +00:00
wiz
cafa4de049 Sort SEE ALSO, make HTML-safe. 2006-07-09 19:08:23 +00:00
wiz
f988fad75e Drop trailing whitespace. 2006-07-09 19:04:02 +00:00
thorpej
723e715a3b Change prop_number_t to store a uint64_t, rather than a uintmax_t. No
ABI change, and we ought to explicitly state that this is a fixed-width
type, since that what it needs to be for binary plist support.
2006-07-07 22:29:55 +00:00
thorpej
296508b606 Use a red-black tree to unique'ify the dictionary key symbols, rather than
a sorted array.  Using a tree puts the linkage into the key symbol itself,
allowing us to avoid having to allocate memory with a mutex held.
2006-07-07 17:09:36 +00:00
ross
12f8dfa169 add reachover ffs and strlen for ppc64 2006-07-07 07:37:44 +00:00
ross
9eb6edc931 revert 2006-07-07 07:31:03 +00:00
ross
a76fa390b6 And yet more .S files... 2006-07-07 07:15:04 +00:00
thorpej
434b7a76fc Add kernel and user space parts of a protocol for sending property lists
to / from the kernel using ioctls.
2006-07-05 21:46:10 +00:00
thorpej
2f3beab89e Reduce the memory footprint for prop_bool_t objects significantly, taking
adavantage of the immutability of these objects:

Statically allocate a TRUE object and a FALSE object, and simply return
references to those objects for create and copy operations.
2006-07-05 20:29:28 +00:00
jnemeth
03f6e8b0e6 remove unused variable that broke build 2006-05-28 10:15:25 +00:00
thorpej
e79f2cf0d1 Keep a table of unique dictionary keysyms. This way, if we have 200 devices
with the "fw-path" property, we only have one copy of the "fw-path" string
as a dictionary key.
2006-05-28 03:56:29 +00:00
thorpej
42e8dee346 Fix the way that prop_array_ensure_capacity() and _prop_array_expand()
interact.
2006-05-28 03:53:51 +00:00
thorpej
9e4cb79390 More cleanup. 2006-05-18 16:35:33 +00:00
thorpej
eff718846c Move all of the locking compatibility definitions into prop_object_impl.h. 2006-05-18 16:23:55 +00:00
thorpej
1eaa09f21d Minor cleanup. 2006-05-18 16:11:33 +00:00
thorpej
3e69f1b2a5 - Add prop_array_equals(), prop_dictionary_equals(), and
prop_dictionary_keysym_equals(), and prop_object_equals() functions.
- Use realloc() where it makes sense.  There will be more changes in this
  area.
- Add a _prop_object_type structure that is used internally to keep
  information about the object types.  Decreases the footprint of the
  objects slightly by replacing several pointers with just one.
2006-05-18 03:05:19 +00:00
christos
b7c6768d3d Coverity CID 3206: Add assertion for NULL deref. 2006-05-13 22:05:04 +00:00
he
6bbc42816c Make the conditional for defining boolean_t complement the conditional
in sys/sys/types.h -- also need to test _STANDALONE.
Fixes a build problem for vax.
2006-05-07 12:46:01 +00:00
simonb
fda54e7c6f In _prop_dictionary_alloc(), explicitly set pd->pd_flags to zero
instead of leaving random garbage in there.
Should we just use "memset(pd, 0, sizeof(*pd));" instead?

Fixes boot problems on evbppc/WALNUT with new proplib.
2006-05-07 06:25:49 +00:00
thorpej
774eb1a395 Initial commit of proplib, a library for manipulating property lists and
converting to/from an XML external representation (based on Apple XML
property lists).  Works in the kernel and user space.
2006-04-27 20:11:27 +00:00
uwe
13ab2e2a10 Now that bcopy.S doesn't contain the actual implemenation, move it
back to libc.
2006-04-23 00:08:18 +00:00
uwe
c71562d660 Move the code into memcpy.S. Adjust the other files accordingly.
Same binaries are generated.
2006-04-22 23:53:47 +00:00
uwe
e983955bb3 libc gets gcc millicode from libgcc, so we don't need to keep it
in src/common.  Move it to sys/lib/libkern/arch/sh3.
2006-04-22 22:48:53 +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
yamt
88cde7b8a8 prefix local labels with ".L". 2006-04-07 12:07:55 +00:00