Deleted Added
full compact
openfirm.c (109623) openfirm.c (111119)
1/* $NetBSD: Locore.c,v 1.7 2000/08/20 07:04:59 tsubai Exp $ */
2
3/*
4 * Copyright (C) 1995, 1996 Wolfgang Solfrank.
5 * Copyright (C) 1995, 1996 TooLs GmbH.
6 * All rights reserved.
7 *
8 * Redistribution and use in source and binary forms, with or without

--- 40 unchanged lines hidden (view full) ---

49 * IN NO EVENT SHALL TOOLS GMBH BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
50 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
51 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
52 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
53 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
54 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
55 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
56 *
1/* $NetBSD: Locore.c,v 1.7 2000/08/20 07:04:59 tsubai Exp $ */
2
3/*
4 * Copyright (C) 1995, 1996 Wolfgang Solfrank.
5 * Copyright (C) 1995, 1996 TooLs GmbH.
6 * All rights reserved.
7 *
8 * Redistribution and use in source and binary forms, with or without

--- 40 unchanged lines hidden (view full) ---

49 * IN NO EVENT SHALL TOOLS GMBH BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
50 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
51 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
52 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
53 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
54 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
55 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
56 *
57 * $FreeBSD: head/sys/dev/ofw/openfirm.c 109623 2003-01-21 08:56:16Z alfred $
57 * $FreeBSD: head/sys/dev/ofw/openfirm.c 111119 2003-02-19 05:47:46Z imp $
58 */
59
60#include <sys/param.h>
61#include <sys/kernel.h>
62#include <sys/malloc.h>
63#include <sys/systm.h>
64
65#include <machine/stdarg.h>

--- 221 unchanged lines hidden (view full) ---

287 args.buflen = (cell_t)buflen;
288 if (openfirmware(&args) == -1)
289 return -1;
290 return args.size;
291}
292
293/*
294 * Store the value of a property of a package into newly allocated memory (using
58 */
59
60#include <sys/param.h>
61#include <sys/kernel.h>
62#include <sys/malloc.h>
63#include <sys/systm.h>
64
65#include <machine/stdarg.h>

--- 221 unchanged lines hidden (view full) ---

287 args.buflen = (cell_t)buflen;
288 if (openfirmware(&args) == -1)
289 return -1;
290 return args.size;
291}
292
293/*
294 * Store the value of a property of a package into newly allocated memory (using
295 * the M_OFWPROP malloc pool and 0). elsz is the size of a single element,
295 * the M_OFWPROP malloc pool and M_WAITOK). elsz is the size of a single element,
296 * the number of elements is return in number.
297 */
298int
299OF_getprop_alloc(phandle_t package, char *propname, int elsz, void **buf)
300{
301 int len;
302
303 *buf = NULL;
304 if ((len = OF_getproplen(package, propname)) == -1 ||
305 len % elsz != 0)
306 return (-1);
307
296 * the number of elements is return in number.
297 */
298int
299OF_getprop_alloc(phandle_t package, char *propname, int elsz, void **buf)
300{
301 int len;
302
303 *buf = NULL;
304 if ((len = OF_getproplen(package, propname)) == -1 ||
305 len % elsz != 0)
306 return (-1);
307
308 *buf = malloc(len, M_OFWPROP, 0);
308 *buf = malloc(len, M_OFWPROP, M_WAITOK);
309 if (OF_getprop(package, propname, *buf, len) == -1) {
310 free(*buf, M_OFWPROP);
311 *buf = NULL;
312 return (-1);
313 }
314 return (len / elsz);
315}
316

--- 485 unchanged lines hidden ---
309 if (OF_getprop(package, propname, *buf, len) == -1) {
310 free(*buf, M_OFWPROP);
311 *buf = NULL;
312 return (-1);
313 }
314 return (len / elsz);
315}
316

--- 485 unchanged lines hidden ---