Module Name: src Committed By: tls Date: Sun Aug 10 06:56:55 UTC 2014
Modified Files: src/sys/sys [tls-earlyentropy]: Makefile cdefs.h cdefs_elf.h conf.h cpu.h cpu_data.h dkio.h envsys.h exec_elf.h intr.h kcpuset.h lua.h lwp.h malloc.h mbuf.h mman.h module.h mount.h namei.h namei.src param.h pcq.h pcu.h pool.h protosw.h queue.h quotactl.h select.h signalvar.h sleepq.h socket.h socketvar.h syscall.h syscallargs.h sysctl.h syslog.h systm.h time.h tty.h ttydev.h un.h vnode.h vnode_if.h Added Files: src/sys/sys [tls-earlyentropy]: common_int_const.h common_int_fmtio.h common_int_limits.h common_int_mwgwtypes.h common_int_types.h ipi.h Log Message: Rebase. To generate a diff of this commit: cvs rdiff -u -r1.148 -r1.148.2.1 src/sys/sys/Makefile cvs rdiff -u -r1.119 -r1.119.2.1 src/sys/sys/cdefs.h cvs rdiff -u -r1.43 -r1.43.10.1 src/sys/sys/cdefs_elf.h cvs rdiff -u -r0 -r1.1.2.2 src/sys/sys/common_int_const.h \ src/sys/sys/common_int_fmtio.h src/sys/sys/common_int_limits.h \ src/sys/sys/common_int_mwgwtypes.h src/sys/sys/common_int_types.h cvs rdiff -u -r1.144 -r1.144.10.1 src/sys/sys/conf.h cvs rdiff -u -r1.40 -r1.40.2.1 src/sys/sys/cpu.h cvs rdiff -u -r1.36 -r1.36.2.1 src/sys/sys/cpu_data.h cvs rdiff -u -r1.18 -r1.18.10.1 src/sys/sys/dkio.h cvs rdiff -u -r1.33 -r1.33.10.1 src/sys/sys/envsys.h cvs rdiff -u -r1.140 -r1.140.2.1 src/sys/sys/exec_elf.h cvs rdiff -u -r1.16 -r1.16.2.1 src/sys/sys/intr.h cvs rdiff -u -r0 -r1.2.2.2 src/sys/sys/ipi.h cvs rdiff -u -r1.10 -r1.10.2.1 src/sys/sys/kcpuset.h cvs rdiff -u -r1.3 -r1.3.2.1 src/sys/sys/lua.h cvs rdiff -u -r1.168 -r1.168.8.1 src/sys/sys/lwp.h cvs rdiff -u -r1.114 -r1.114.12.1 src/sys/sys/malloc.h cvs rdiff -u -r1.154 -r1.154.2.1 src/sys/sys/mbuf.h cvs rdiff -u -r1.45 -r1.45.2.1 src/sys/sys/mman.h cvs rdiff -u -r1.34 -r1.34.2.1 src/sys/sys/module.h cvs rdiff -u -r1.212 -r1.212.2.1 src/sys/sys/mount.h cvs rdiff -u -r1.87 -r1.87.10.1 src/sys/sys/namei.h cvs rdiff -u -r1.31 -r1.31.10.1 src/sys/sys/namei.src cvs rdiff -u -r1.450 -r1.450.2.1 src/sys/sys/param.h cvs rdiff -u -r1.1 -r1.1.48.1 src/sys/sys/pcq.h cvs rdiff -u -r1.11 -r1.11.2.1 src/sys/sys/pcu.h cvs rdiff -u -r1.75 -r1.75.12.1 src/sys/sys/pool.h cvs rdiff -u -r1.44 -r1.44.54.1 src/sys/sys/protosw.h cvs rdiff -u -r1.65 -r1.65.2.1 src/sys/sys/queue.h cvs rdiff -u -r1.36 -r1.36.10.1 src/sys/sys/quotactl.h cvs rdiff -u -r1.36 -r1.36.36.1 src/sys/sys/select.h cvs rdiff -u -r1.85 -r1.85.2.1 src/sys/sys/signalvar.h cvs rdiff -u -r1.22 -r1.22.12.1 src/sys/sys/sleepq.h cvs rdiff -u -r1.108 -r1.108.10.1 src/sys/sys/socket.h cvs rdiff -u -r1.131 -r1.131.2.1 src/sys/sys/socketvar.h cvs rdiff -u -r1.268 -r1.268.2.1 src/sys/sys/syscall.h cvs rdiff -u -r1.251 -r1.251.2.1 src/sys/sys/syscallargs.h cvs rdiff -u -r1.211 -r1.211.2.1 src/sys/sys/sysctl.h cvs rdiff -u -r1.35 -r1.35.10.1 src/sys/sys/syslog.h cvs rdiff -u -r1.263 -r1.263.2.1 src/sys/sys/systm.h cvs rdiff -u -r1.65 -r1.65.26.1 src/sys/sys/time.h cvs rdiff -u -r1.91 -r1.91.10.1 src/sys/sys/tty.h cvs rdiff -u -r1.9 -r1.9.136.1 src/sys/sys/ttydev.h cvs rdiff -u -r1.46 -r1.46.26.1 src/sys/sys/un.h cvs rdiff -u -r1.246 -r1.246.2.1 src/sys/sys/vnode.h cvs rdiff -u -r1.87 -r1.87.2.1 src/sys/sys/vnode_if.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/sys/Makefile diff -u src/sys/sys/Makefile:1.148 src/sys/sys/Makefile:1.148.2.1 --- src/sys/sys/Makefile:1.148 Thu Mar 20 06:50:54 2014 +++ src/sys/sys/Makefile Sun Aug 10 06:56:54 2014 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.148 2014/03/20 06:50:54 skrll Exp $ +# $NetBSD: Makefile,v 1.148.2.1 2014/08/10 06:56:54 tls Exp $ .include <bsd.own.mk> @@ -7,7 +7,10 @@ INCSDIR= /usr/include/sys INCS= acct.h agpio.h aio.h ansi.h aout_mids.h ataio.h atomic.h audioio.h \ bitops.h bootblock.h bswap.h buf.h \ callback.h callout.h cdbr.h cdefs.h cdefs_aout.h \ - cdefs_elf.h cdio.h chio.h clockctl.h condvar.h conf.h core.h \ + cdefs_elf.h cdio.h chio.h clockctl.h \ + common_int_const.h common_int_fmtio.h common_int_limits.h \ + common_int_mwgwtypes.h common_int_types.h \ + condvar.h conf.h core.h \ cpufreq.h cpuio.h ctype_bits.h ctype_inline.h \ device.h device_if.h \ dir.h dirent.h \ Index: src/sys/sys/cdefs.h diff -u src/sys/sys/cdefs.h:1.119 src/sys/sys/cdefs.h:1.119.2.1 --- src/sys/sys/cdefs.h:1.119 Thu Mar 13 20:36:01 2014 +++ src/sys/sys/cdefs.h Sun Aug 10 06:56:54 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: cdefs.h,v 1.119 2014/03/13 20:36:01 pooka Exp $ */ +/* $NetBSD: cdefs.h,v 1.119.2.1 2014/08/10 06:56:54 tls Exp $ */ /* * Copyright (c) 1991, 1993 * The Regents of the University of California. All rights reserved. @@ -296,6 +296,12 @@ #define __noprofile /* nothing */ #endif +#if __GNUC_PREREQ__(4, 6) || defined(__clang__) +#define __unreachable() __builtin_unreachable() +#else +#define __unreachable() do {} while (0) +#endif + #if defined(__cplusplus) #define __BEGIN_EXTERN_C extern "C" { #define __END_EXTERN_C } @@ -353,14 +359,10 @@ #define __packed __packed #define __aligned(x) /* delete */ #define __section(x) /* delete */ -#elif __GNUC_PREREQ__(2, 7) +#elif __GNUC_PREREQ__(2, 7) || defined(__PCC__) #define __packed __attribute__((__packed__)) #define __aligned(x) __attribute__((__aligned__(x))) #define __section(x) __attribute__((__section__(x))) -#elif defined(__PCC__) -#define __packed _Pragma("packed 1") -#define __aligned(x) _Pragma("aligned " __STRING(x)) -#define __section(x) _Pragma("section " ## x) #elif defined(_MSC_VER) #define __packed /* ignore */ #else Index: src/sys/sys/cdefs_elf.h diff -u src/sys/sys/cdefs_elf.h:1.43 src/sys/sys/cdefs_elf.h:1.43.10.1 --- src/sys/sys/cdefs_elf.h:1.43 Thu Feb 7 18:53:34 2013 +++ src/sys/sys/cdefs_elf.h Sun Aug 10 06:56:54 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: cdefs_elf.h,v 1.43 2013/02/07 18:53:34 gdt Exp $ */ +/* $NetBSD: cdefs_elf.h,v 1.43.10.1 2014/08/10 06:56:54 tls Exp $ */ /* * Copyright (c) 1995, 1996 Carnegie-Mellon University. @@ -152,13 +152,13 @@ #define __link_set_add_data2(set, sym, n) __link_set_make_entry2(set, sym, n) #define __link_set_add_bss2(set, sym, n) __link_set_make_entry2(set, sym, n) -#define __link_set_decl(set, ptype) \ - extern ptype * const __start_link_set_##set[] __dso_hidden; \ - extern ptype * const __stop_link_set_##set[] __dso_hidden - #define __link_set_start(set) (__start_link_set_##set) #define __link_set_end(set) (__stop_link_set_##set) +#define __link_set_decl(set, ptype) \ + extern ptype * const __link_set_start(set)[] __dso_hidden; \ + extern ptype * const __link_set_end(set)[] __dso_hidden + #define __link_set_count(set) \ (__link_set_end(set) - __link_set_start(set)) Index: src/sys/sys/conf.h diff -u src/sys/sys/conf.h:1.144 src/sys/sys/conf.h:1.144.10.1 --- src/sys/sys/conf.h:1.144 Sat Oct 27 17:18:40 2012 +++ src/sys/sys/conf.h Sun Aug 10 06:56:54 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: conf.h,v 1.144 2012/10/27 17:18:40 chs Exp $ */ +/* $NetBSD: conf.h,v 1.144.10.1 2014/08/10 06:56:54 tls Exp $ */ /*- * Copyright (c) 1990, 1993 @@ -74,6 +74,7 @@ struct bdevsw { int (*d_ioctl)(dev_t, u_long, void *, int, struct lwp *); int (*d_dump)(dev_t, daddr_t, void *, size_t); int (*d_psize)(dev_t); + int (*d_discard)(dev_t, off_t, off_t); int d_flag; }; @@ -91,6 +92,7 @@ struct cdevsw { int (*d_poll)(dev_t, int, struct lwp *); paddr_t (*d_mmap)(dev_t, off_t, int); int (*d_kqfilter)(dev_t, struct knote *); + int (*d_discard)(dev_t, off_t, off_t); int d_flag; }; @@ -121,6 +123,7 @@ devmajor_t cdevsw_lookup_major(const str #define dev_type_dump(n) int n (dev_t, daddr_t, void *, size_t) #define dev_type_size(n) int n (dev_t) #define dev_type_kqfilter(n) int n (dev_t, struct knote *) +#define dev_type_discard(n) int n (dev_t, off_t, off_t) #define noopen ((dev_type_open((*)))enodev) #define noclose ((dev_type_close((*)))enodev) @@ -134,6 +137,7 @@ devmajor_t cdevsw_lookup_major(const str #define nodump ((dev_type_dump((*)))enodev) #define nosize NULL #define nokqfilter seltrue_kqfilter +#define nodiscard ((dev_type_discard((*)))enodev) #define nullopen ((dev_type_open((*)))nullop) #define nullclose ((dev_type_close((*)))nullop) @@ -145,6 +149,7 @@ devmajor_t cdevsw_lookup_major(const str #define nullmmap ((dev_type_mmap((*)))nullop) #define nulldump ((dev_type_dump((*)))nullop) #define nullkqfilter ((dev_type_kqfilter((*)))eopnotsupp) +#define nulldiscard ((dev_type_discard((*)))nullop) /* device access wrappers. */ @@ -154,6 +159,7 @@ dev_type_strategy(bdev_strategy); dev_type_ioctl(bdev_ioctl); dev_type_dump(bdev_dump); dev_type_size(bdev_size); +dev_type_discard(bdev_discard); dev_type_open(cdev_open); dev_type_close(cdev_close); @@ -165,6 +171,7 @@ dev_type_tty(cdev_tty); dev_type_poll(cdev_poll); dev_type_mmap(cdev_mmap); dev_type_kqfilter(cdev_kqfilter); +dev_type_discard(cdev_discard); int cdev_type(dev_t); int bdev_type(dev_t); Index: src/sys/sys/cpu.h diff -u src/sys/sys/cpu.h:1.40 src/sys/sys/cpu.h:1.40.2.1 --- src/sys/sys/cpu.h:1.40 Mon Mar 24 20:07:40 2014 +++ src/sys/sys/cpu.h Sun Aug 10 06:56:54 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: cpu.h,v 1.40 2014/03/24 20:07:40 christos Exp $ */ +/* $NetBSD: cpu.h,v 1.40.2.1 2014/08/10 06:56:54 tls Exp $ */ /*- * Copyright (c) 2007 YAMAMOTO Takashi, @@ -101,7 +101,7 @@ extern kcpuset_t *kcpuset_attached; extern kcpuset_t *kcpuset_running; static inline u_int -cpu_index(struct cpu_info *ci) +cpu_index(const struct cpu_info *ci) { return ci->ci_index; } Index: src/sys/sys/cpu_data.h diff -u src/sys/sys/cpu_data.h:1.36 src/sys/sys/cpu_data.h:1.36.2.1 --- src/sys/sys/cpu_data.h:1.36 Mon Nov 25 03:02:30 2013 +++ src/sys/sys/cpu_data.h Sun Aug 10 06:56:54 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: cpu_data.h,v 1.36 2013/11/25 03:02:30 christos Exp $ */ +/* $NetBSD: cpu_data.h,v 1.36.2.1 2014/08/10 06:56:54 tls Exp $ */ /*- * Copyright (c) 2004, 2006, 2007, 2008 The NetBSD Foundation, Inc. @@ -43,6 +43,7 @@ struct lwp; #include <sys/percpu_types.h> #include <sys/queue.h> #include <sys/kcpuset.h> +#include <sys/ipi.h> /* * MI per-cpu data @@ -71,6 +72,7 @@ struct cpu_data { kcondvar_t cpu_xcall; /* cross-call support */ int cpu_xcall_pending; /* cross-call support */ lwp_t *cpu_onproc; /* bottom level LWP */ + uint32_t cpu_ipipend[IPI_BITWORDS]; /* pending IPIs */ cpuid_t cpu_package_id; cpuid_t cpu_core_id; @@ -123,6 +125,7 @@ struct cpu_data { #define ci_lkdebug_recurse ci_data.cpu_lkdebug_recurse #define ci_pcu_curlwp ci_data.cpu_pcu_curlwp #define ci_kcpuset ci_data.cpu_kcpuset +#define ci_ipipend ci_data.cpu_ipipend #define ci_package_id ci_data.cpu_package_id #define ci_core_id ci_data.cpu_core_id Index: src/sys/sys/dkio.h diff -u src/sys/sys/dkio.h:1.18 src/sys/sys/dkio.h:1.18.10.1 --- src/sys/sys/dkio.h:1.18 Fri Oct 19 17:09:07 2012 +++ src/sys/sys/dkio.h Sun Aug 10 06:56:54 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: dkio.h,v 1.18 2012/10/19 17:09:07 drochner Exp $ */ +/* $NetBSD: dkio.h,v 1.18.10.1 2014/08/10 06:56:54 tls Exp $ */ /* * Copyright (c) 1987, 1988, 1993 @@ -109,15 +109,7 @@ #define DIOCTUR _IOR('d', 128, int) /* test unit ready */ -struct disk_discard_params { - long maxsize; /* in DEV_BSIZE units */ -}; -#define DIOCGDISCARDPARAMS _IOR('d', 129, struct disk_discard_params) - -struct disk_discard_range { - daddr_t bno; - long size; -}; -#define DIOCDISCARD _IOW('d', 130, struct disk_discard_range) +/* 129 was DIOCGDISCARDPARAMS during 6.99 */ +/* 130 was DIOCDISCARD during 6.99 */ #endif /* _SYS_DKIO_H_ */ Index: src/sys/sys/envsys.h diff -u src/sys/sys/envsys.h:1.33 src/sys/sys/envsys.h:1.33.10.1 --- src/sys/sys/envsys.h:1.33 Wed Dec 5 04:21:30 2012 +++ src/sys/sys/envsys.h Sun Aug 10 06:56:54 2014 @@ -1,7 +1,7 @@ -/* $NetBSD: envsys.h,v 1.33 2012/12/05 04:21:30 riastradh Exp $ */ +/* $NetBSD: envsys.h,v 1.33.10.1 2014/08/10 06:56:54 tls Exp $ */ /*- - * Copyright (c) 1999, 2007 The NetBSD Foundation, Inc. + * Copyright (c) 1999, 2007, 2014 The NetBSD Foundation, Inc. * All rights reserved. * * This code is derived from software contributed to The NetBSD Foundation @@ -63,6 +63,7 @@ enum envsys_units { ENVSYS_DRIVE, /* Drive */ ENVSYS_BATTERY_CAPACITY, /* Battery capacity */ ENVSYS_BATTERY_CHARGE, /* Battery charging/discharging */ + ENVSYS_SRELHUMIDITY, /* relative humidity */ ENVSYS_NSENSORS }; @@ -161,7 +162,7 @@ typedef struct envsys_tre_data envsys_tr #ifdef ENVSYSUNITNAMES static const char * const envsysunitnames[] = { "degC", "RPM", "VAC", "V", "Ohms", "W", - "A", "Wh", "Ah", "bool", "integer", "drive", "Unk" + "A", "Wh", "Ah", "bool", "integer", "drive", "%rH", "Unk" }; static const char * const envsysdrivestatus[] = { "unknown", "empty", "ready", "powering up", "online", "idle", "active", Index: src/sys/sys/exec_elf.h diff -u src/sys/sys/exec_elf.h:1.140 src/sys/sys/exec_elf.h:1.140.2.1 --- src/sys/sys/exec_elf.h:1.140 Sun Mar 9 17:59:19 2014 +++ src/sys/sys/exec_elf.h Sun Aug 10 06:56:54 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: exec_elf.h,v 1.140 2014/03/09 17:59:19 christos Exp $ */ +/* $NetBSD: exec_elf.h,v 1.140.2.1 2014/08/10 06:56:54 tls Exp $ */ /*- * Copyright (c) 1994 The NetBSD Foundation, Inc. @@ -1225,6 +1225,13 @@ typedef Elf32_Versym Elf64_Versym; #ifdef _KERNEL +/* + * Arbitrary limits to avoid DoS for excessive memory allocation. + */ +#define ELF_MAXPHNUM 128 +#define ELF_MAXSHNUM 32768 +#define ELF_MAXNOTESIZE 1024 + #define ELF_AUX_ENTRIES 15 /* Max size of aux array passed to loader */ #define ELF32_NO_ADDR (~(Elf32_Addr)0) /* Indicates addr. not yet filled in */ #define ELF32_LINK_ADDR ((Elf32_Addr)-2) /* advises to use link address */ Index: src/sys/sys/intr.h diff -u src/sys/sys/intr.h:1.16 src/sys/sys/intr.h:1.16.2.1 --- src/sys/sys/intr.h:1.16 Sun Aug 25 03:08:56 2013 +++ src/sys/sys/intr.h Sun Aug 10 06:56:54 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: intr.h,v 1.16 2013/08/25 03:08:56 matt Exp $ */ +/* $NetBSD: intr.h,v 1.16.2.1 2014/08/10 06:56:54 tls Exp $ */ /*- * Copyright (c) 2007 The NetBSD Foundation, Inc. @@ -42,6 +42,7 @@ struct cpu_info; void *softint_establish(u_int, void (*)(void *), void *); void softint_disestablish(void *); void softint_schedule(void *); +void softint_schedule_cpu(void *, struct cpu_info *); /* MI hooks. */ void softint_init(struct cpu_info *); @@ -62,6 +63,7 @@ void softint_dispatch(lwp_t *, int); #define SOFTINT_SERIAL 0x0002 #define SOFTINT_NET 0x0003 #define SOFTINT_MPSAFE 0x0100 +#define SOFTINT_RCPU 0x0200 /* Implementation private flags. */ #define SOFTINT_PENDING 0x1000 Index: src/sys/sys/kcpuset.h diff -u src/sys/sys/kcpuset.h:1.10 src/sys/sys/kcpuset.h:1.10.2.1 --- src/sys/sys/kcpuset.h:1.10 Tue Mar 18 18:20:44 2014 +++ src/sys/sys/kcpuset.h Sun Aug 10 06:56:54 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: kcpuset.h,v 1.10 2014/03/18 18:20:44 riastradh Exp $ */ +/* $NetBSD: kcpuset.h,v 1.10.2.1 2014/08/10 06:56:54 tls Exp $ */ /*- * Copyright (c) 2008, 2011 The NetBSD Foundation, Inc. @@ -65,7 +65,7 @@ bool kcpuset_match(const kcpuset_t *, c void kcpuset_intersect(kcpuset_t *, const kcpuset_t *); void kcpuset_merge(kcpuset_t *, const kcpuset_t *); void kcpuset_remove(kcpuset_t *, const kcpuset_t *); -int kcpuset_countset(kcpuset_t *); +int kcpuset_countset(const kcpuset_t *); cpuid_t kcpuset_ffs(const kcpuset_t *); cpuid_t kcpuset_ffs_intersecting(const kcpuset_t *, const kcpuset_t *); Index: src/sys/sys/lua.h diff -u src/sys/sys/lua.h:1.3 src/sys/sys/lua.h:1.3.2.1 --- src/sys/sys/lua.h:1.3 Tue Oct 29 17:35:40 2013 +++ src/sys/sys/lua.h Sun Aug 10 06:56:54 2014 @@ -1,6 +1,7 @@ -/* $NetBSD: lua.h,v 1.3 2013/10/29 17:35:40 mbalmer Exp $ */ +/* $NetBSD: lua.h,v 1.3.2.1 2014/08/10 06:56:54 tls Exp $ */ /* + * Copyright (c) 2014 by Lourival Vieira Neto <ln...@netbsd.org>. * Copyright (c) 2011, 2013 Marc Balmer <mbal...@netbsd.org>. * All rights reserved. * @@ -79,25 +80,22 @@ struct lua_load { #define LUALOAD _IOWR('l', 4, struct lua_load) #ifdef _KERNEL -extern int lua_mod_register(const char *, int (*)(void *)); -extern int lua_mod_unregister(const char *); +extern int klua_mod_register(const char *, lua_CFunction); +extern int klua_mod_unregister(const char *); typedef struct _klua_State { lua_State *L; kmutex_t ks_lock; - kcondvar_t ks_inuse_cv; - int ks_inuse; bool ks_user; /* state created by user (ioctl) */ } klua_State; -extern int klua_lock(klua_State *); +extern void klua_lock(klua_State *); extern void klua_unlock(klua_State *); extern void klua_close(klua_State *); -extern klua_State *klua_newstate(lua_Alloc, void *, const char *, const char *); - -extern void *lua_alloc(void *, void *, size_t, size_t); - +extern klua_State *klua_newstate(lua_Alloc, void *, const char *, const char *, + int); +extern klua_State *kluaL_newstate(const char *, const char *, int); #endif #endif /* _SYS_LUA_H_ */ Index: src/sys/sys/lwp.h diff -u src/sys/sys/lwp.h:1.168 src/sys/sys/lwp.h:1.168.8.1 --- src/sys/sys/lwp.h:1.168 Fri Mar 29 01:09:45 2013 +++ src/sys/sys/lwp.h Sun Aug 10 06:56:54 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: lwp.h,v 1.168 2013/03/29 01:09:45 christos Exp $ */ +/* $NetBSD: lwp.h,v 1.168.8.1 2014/08/10 06:56:54 tls Exp $ */ /*- * Copyright (c) 2001, 2006, 2007, 2008, 2009, 2010 @@ -129,7 +129,7 @@ struct lwp { #if PCU_UNIT_COUNT > 0 struct cpu_info * volatile l_pcu_cpu[PCU_UNIT_COUNT]; - uint16_t l_pcu_used[2]; + uint32_t l_pcu_valid; #endif /* Process level and global state, misc. */ Index: src/sys/sys/malloc.h diff -u src/sys/sys/malloc.h:1.114 src/sys/sys/malloc.h:1.114.12.1 --- src/sys/sys/malloc.h:1.114 Mon Apr 30 22:51:27 2012 +++ src/sys/sys/malloc.h Sun Aug 10 06:56:54 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: malloc.h,v 1.114 2012/04/30 22:51:27 rmind Exp $ */ +/* $NetBSD: malloc.h,v 1.114.12.1 2014/08/10 06:56:54 tls Exp $ */ /* * Copyright (c) 1987, 1993 @@ -56,7 +56,6 @@ MALLOC_DECLARE(M_DEVBUF); MALLOC_DECLARE(M_DMAMAP); MALLOC_DECLARE(M_FREE); -MALLOC_DECLARE(M_PCB); MALLOC_DECLARE(M_TEMP); MALLOC_DECLARE(M_RTABLE); MALLOC_DECLARE(M_FTABLE); Index: src/sys/sys/mbuf.h diff -u src/sys/sys/mbuf.h:1.154 src/sys/sys/mbuf.h:1.154.2.1 --- src/sys/sys/mbuf.h:1.154 Thu Mar 20 00:29:57 2014 +++ src/sys/sys/mbuf.h Sun Aug 10 06:56:54 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: mbuf.h,v 1.154 2014/03/20 00:29:57 pooka Exp $ */ +/* $NetBSD: mbuf.h,v 1.154.2.1 2014/08/10 06:56:54 tls Exp $ */ /*- * Copyright (c) 1996, 1997, 1999, 2001, 2007 The NetBSD Foundation, Inc. @@ -818,7 +818,6 @@ extern struct mowner revoked_mowner; MALLOC_DECLARE(M_MBUF); MALLOC_DECLARE(M_SONAME); -MALLOC_DECLARE(M_SOOPTS); struct mbuf *m_copym(struct mbuf *, int, int, int); struct mbuf *m_copypacket(struct mbuf *, int); Index: src/sys/sys/mman.h diff -u src/sys/sys/mman.h:1.45 src/sys/sys/mman.h:1.45.2.1 --- src/sys/sys/mman.h:1.45 Thu Dec 19 19:11:50 2013 +++ src/sys/sys/mman.h Sun Aug 10 06:56:54 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: mman.h,v 1.45 2013/12/19 19:11:50 rmind Exp $ */ +/* $NetBSD: mman.h,v 1.45.2.1 2014/08/10 06:56:54 tls Exp $ */ /*- * Copyright (c) 1982, 1986, 1993 @@ -94,7 +94,8 @@ typedef __off_t off_t; /* file offset * Mapping type */ #define MAP_FILE 0x0000 /* map from file (default) */ -#define MAP_ANON 0x1000 /* allocated from memory, swap space */ +#define MAP_ANONYMOUS 0x1000 /* allocated from memory, swap space */ +#define MAP_ANON MAP_ANONYMOUS #define MAP_STACK 0x2000 /* allocated from memory, swap space (stack) */ /* @@ -131,7 +132,7 @@ typedef __off_t off_t; /* file offset /* * POSIX memory avissory values. - * Note: keep consistent with the original defintions below. + * Note: keep consistent with the original definitions below. */ #define POSIX_MADV_NORMAL 0 /* No further special treatment */ #define POSIX_MADV_RANDOM 1 /* Expect random page references */ @@ -141,7 +142,7 @@ typedef __off_t off_t; /* file offset #if defined(_NETBSD_SOURCE) /* - * Original advice values, equivalent to POSIX defintions, + * Original advice values, equivalent to POSIX definitions, * and few implementation-specific ones. */ #define MADV_NORMAL POSIX_MADV_NORMAL @@ -160,6 +161,7 @@ typedef __off_t off_t; /* file offset #define MAP_INHERIT_NONE 2 /* absent from child */ #define MAP_INHERIT_DONATE_COPY 3 /* copy and delete -- not implemented in UVM */ +#define MAP_INHERIT_ZERO 4 /* zero in child */ #define MAP_INHERIT_DEFAULT MAP_INHERIT_COPY #endif Index: src/sys/sys/module.h diff -u src/sys/sys/module.h:1.34 src/sys/sys/module.h:1.34.2.1 --- src/sys/sys/module.h:1.34 Wed Oct 23 18:57:40 2013 +++ src/sys/sys/module.h Sun Aug 10 06:56:54 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: module.h,v 1.34 2013/10/23 18:57:40 mbalmer Exp $ */ +/* $NetBSD: module.h,v 1.34.2.1 2014/08/10 06:56:54 tls Exp $ */ /*- * Copyright (c) 2008 The NetBSD Foundation, Inc. @@ -101,7 +101,35 @@ typedef struct module { * containing only one entry, pointing to the module's modinfo_t record. * For the kernel, `link_set_modules' can contain multiple entries and * records all modules built into the kernel at link time. + * + * Alternatively, in some environments rump kernels use + * __attribute__((constructor)) due to link sets being + * difficult (impossible?) to implement (e.g. GNU gold, OS X, etc.) */ + +#ifdef RUMP_USE_CTOR +struct modinfo_chain { + const struct modinfo *mc_info; + LIST_ENTRY(modinfo_chain) mc_entries; +}; +LIST_HEAD(modinfo_boot_chain, modinfo_chain); +#define _MODULE_REGISTER(name) \ +static void modctor_##name(void) __attribute__((constructor)); \ +static void modctor_##name(void) \ +{ \ + static struct modinfo_chain mc = { \ + .mc_info = &name##_modinfo, \ + }; \ + extern struct modinfo_boot_chain modinfo_boot_chain; \ + LIST_INSERT_HEAD(&modinfo_boot_chain, &mc, mc_entries); \ +} + +#else /* RUMP_USE_CTOR */ + +#define _MODULE_REGISTER(name) __link_set_add_rodata(modules, name##_modinfo); + +#endif /* RUMP_USE_CTOR */ + #define MODULE(class, name, required) \ static int name##_modcmd(modcmd_t, void *); \ static const modinfo_t name##_modinfo = { \ @@ -111,7 +139,7 @@ static const modinfo_t name##_modinfo = .mi_name = #name, \ .mi_required = (required) \ }; \ -__link_set_add_rodata(modules, name##_modinfo); +_MODULE_REGISTER(name) TAILQ_HEAD(modlist, module); Index: src/sys/sys/mount.h diff -u src/sys/sys/mount.h:1.212 src/sys/sys/mount.h:1.212.2.1 --- src/sys/sys/mount.h:1.212 Wed Mar 5 09:37:29 2014 +++ src/sys/sys/mount.h Sun Aug 10 06:56:54 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: mount.h,v 1.212 2014/03/05 09:37:29 hannken Exp $ */ +/* $NetBSD: mount.h,v 1.212.2.1 2014/08/10 06:56:54 tls Exp $ */ /* * Copyright (c) 1989, 1991, 1993 @@ -220,6 +220,8 @@ struct vfsops { int (*vfs_statvfs) (struct mount *, struct statvfs *); int (*vfs_sync) (struct mount *, int, struct kauth_cred *); int (*vfs_vget) (struct mount *, ino_t, struct vnode **); + int (*vfs_loadvnode) (struct mount *, struct vnode *, + const void *, size_t, const void **); int (*vfs_fhtovp) (struct mount *, struct fid *, struct vnode **); int (*vfs_vptofh) (struct vnode *, struct fid *, size_t *); @@ -242,6 +244,8 @@ struct vfsops { /* XXX vget is actually file system internal. */ #define VFS_VGET(MP, INO, VPP) (*(MP)->mnt_op->vfs_vget)(MP, INO, VPP) +#define VFS_LOADVNODE(MP, VP, KEY, KEY_LEN, NEW_KEY) \ + (*(MP)->mnt_op->vfs_loadvnode)(MP, VP, KEY, KEY_LEN, NEW_KEY) #define VFS_RENAMELOCK_ENTER(MP) (*(MP)->mnt_op->vfs_renamelock_enter)(MP) #define VFS_RENAMELOCK_EXIT(MP) (*(MP)->mnt_op->vfs_renamelock_exit)(MP) @@ -281,6 +285,8 @@ int fsname##_quotactl(struct mount *, st int fsname##_statvfs(struct mount *, struct statvfs *); \ int fsname##_sync(struct mount *, int, struct kauth_cred *); \ int fsname##_vget(struct mount *, ino_t, struct vnode **); \ +int fsname##_loadvnode(struct mount *, struct vnode *, \ + const void *, size_t, const void **); \ int fsname##_fhtovp(struct mount *, struct fid *, struct vnode **); \ int fsname##_vptofh(struct vnode *, struct fid *, size_t *); \ void fsname##_init(void); \ @@ -421,7 +427,7 @@ int vfs_quotactl_get(struct mount *, con struct quotaval *); int vfs_quotactl_put(struct mount *, const struct quotakey *, const struct quotaval *); -int vfs_quotactl_delete(struct mount *, const struct quotakey *); +int vfs_quotactl_del(struct mount *, const struct quotakey *); int vfs_quotactl_cursoropen(struct mount *, struct quotakcursor *); int vfs_quotactl_cursorclose(struct mount *, struct quotakcursor *); int vfs_quotactl_cursorskipidtype(struct mount *, struct quotakcursor *, @@ -436,7 +442,8 @@ int vfs_quotactl_quotaoff(struct mount * struct vnode_iterator; /* Opaque. */ void vfs_vnode_iterator_init(struct mount *, struct vnode_iterator **); void vfs_vnode_iterator_destroy(struct vnode_iterator *); -bool vfs_vnode_iterator_next(struct vnode_iterator *, struct vnode **); +struct vnode *vfs_vnode_iterator_next(struct vnode_iterator *, + bool (*)(void *, struct vnode *), void *); extern TAILQ_HEAD(mntlist, mount) mountlist; /* mounted filesystem list */ extern struct vfsops *vfssw[]; /* filesystem type table */ Index: src/sys/sys/namei.h diff -u src/sys/sys/namei.h:1.87 src/sys/sys/namei.h:1.87.10.1 --- src/sys/sys/namei.h:1.87 Sun Nov 18 18:25:50 2012 +++ src/sys/sys/namei.h Sun Aug 10 06:56:54 2014 @@ -1,11 +1,11 @@ -/* $NetBSD: namei.h,v 1.87 2012/11/18 18:25:50 dholland Exp $ */ +/* $NetBSD: namei.h,v 1.87.10.1 2014/08/10 06:56:54 tls Exp $ */ /* * WARNING: GENERATED FILE. DO NOT EDIT * (edit namei.src and run make namei in src/sys/sys) * by: NetBSD: gennameih.awk,v 1.5 2009/12/23 14:17:19 pooka Exp - * from: NetBSD: namei.src,v 1.31 2012/11/18 18:25:08 dholland Exp + * from: NetBSD: namei.src,v 1.33 2014/06/03 21:16:15 joerg Exp */ /* @@ -286,6 +286,8 @@ void cache_enter(struct vnode *, struct const char *, size_t, uint32_t); void nchinit(void); void nchreinit(void); +void namecache_count_pass2(void); +void namecache_count_2passes(void); void cache_cpu_init(struct cpu_info *); void cache_purgevfs(struct mount *); void namecache_print(struct vnode *, void (*)(const char *, ...) @@ -310,6 +312,19 @@ struct nchstats { long ncs_revmiss; /* reverse-cache misses */ }; +struct nchstats_sysctl { + uint64_t ncs_goodhits; /* hits that we can really use */ + uint64_t ncs_neghits; /* negative hits that we can use */ + uint64_t ncs_badhits; /* hits we must drop */ + uint64_t ncs_falsehits; /* hits with id mismatch */ + uint64_t ncs_miss; /* misses */ + uint64_t ncs_long; /* long names that ignore cache */ + uint64_t ncs_pass2; /* names found with passes == 2 */ + uint64_t ncs_2passes; /* number of times we attempt it */ + uint64_t ncs_revhits; /* reverse-cache hits */ + uint64_t ncs_revmiss; /* reverse-cache misses */ +}; + #ifdef _KERNEL extern struct nchstats nchstats; #endif Index: src/sys/sys/namei.src diff -u src/sys/sys/namei.src:1.31 src/sys/sys/namei.src:1.31.10.1 --- src/sys/sys/namei.src:1.31 Sun Nov 18 18:25:08 2012 +++ src/sys/sys/namei.src Sun Aug 10 06:56:54 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: namei.src,v 1.31 2012/11/18 18:25:08 dholland Exp $ */ +/* $NetBSD: namei.src,v 1.31.10.1 2014/08/10 06:56:54 tls Exp $ */ /* * Copyright (c) 1985, 1989, 1991, 1993 @@ -278,6 +278,8 @@ void cache_enter(struct vnode *, struct const char *, size_t, uint32_t); void nchinit(void); void nchreinit(void); +void namecache_count_pass2(void); +void namecache_count_2passes(void); void cache_cpu_init(struct cpu_info *); void cache_purgevfs(struct mount *); void namecache_print(struct vnode *, void (*)(const char *, ...) @@ -302,6 +304,19 @@ struct nchstats { long ncs_revmiss; /* reverse-cache misses */ }; +struct nchstats_sysctl { + uint64_t ncs_goodhits; /* hits that we can really use */ + uint64_t ncs_neghits; /* negative hits that we can use */ + uint64_t ncs_badhits; /* hits we must drop */ + uint64_t ncs_falsehits; /* hits with id mismatch */ + uint64_t ncs_miss; /* misses */ + uint64_t ncs_long; /* long names that ignore cache */ + uint64_t ncs_pass2; /* names found with passes == 2 */ + uint64_t ncs_2passes; /* number of times we attempt it */ + uint64_t ncs_revhits; /* reverse-cache hits */ + uint64_t ncs_revmiss; /* reverse-cache misses */ +}; + #ifdef _KERNEL extern struct nchstats nchstats; #endif Index: src/sys/sys/param.h diff -u src/sys/sys/param.h:1.450 src/sys/sys/param.h:1.450.2.1 --- src/sys/sys/param.h:1.450 Fri Apr 4 18:11:58 2014 +++ src/sys/sys/param.h Sun Aug 10 06:56:54 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: param.h,v 1.450 2014/04/04 18:11:58 christos Exp $ */ +/* $NetBSD: param.h,v 1.450.2.1 2014/08/10 06:56:54 tls Exp $ */ /*- * Copyright (c) 1982, 1986, 1989, 1993 @@ -63,7 +63,7 @@ * 2.99.9 (299000900) */ -#define __NetBSD_Version__ 699004000 /* NetBSD 6.99.40 */ +#define __NetBSD_Version__ 699004900 /* NetBSD 6.99.49 */ #define __NetBSD_Prereq__(M,m,p) (((((M) * 100000000) + \ (m) * 1000000) + (p) * 100) <= __NetBSD_Version__) Index: src/sys/sys/pcq.h diff -u src/sys/sys/pcq.h:1.1 src/sys/sys/pcq.h:1.1.48.1 --- src/sys/sys/pcq.h:1.1 Tue Nov 11 20:17:27 2008 +++ src/sys/sys/pcq.h Sun Aug 10 06:56:54 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: pcq.h,v 1.1 2008/11/11 20:17:27 matt Exp $ */ +/* $NetBSD: pcq.h,v 1.1.48.1 2014/08/10 06:56:54 tls Exp $ */ /*- * Copyright (c) 2008 The NetBSD Foundation, Inc. @@ -37,12 +37,16 @@ typedef struct pcq pcq_t; #ifdef _KERNEL + +#define PCQ_MAXLEN (0xffffU) + bool pcq_put(pcq_t *, void *); void * pcq_peek(pcq_t *); void * pcq_get(pcq_t *); size_t pcq_maxitems(pcq_t *); pcq_t * pcq_create(size_t, km_flag_t); void pcq_destroy(pcq_t *); + #endif /* _KERNEL */ #endif /* _SYS_PCQ_H_ */ Index: src/sys/sys/pcu.h diff -u src/sys/sys/pcu.h:1.11 src/sys/sys/pcu.h:1.11.2.1 --- src/sys/sys/pcu.h:1.11 Thu Aug 22 19:50:55 2013 +++ src/sys/sys/pcu.h Sun Aug 10 06:56:54 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: pcu.h,v 1.11 2013/08/22 19:50:55 drochner Exp $ */ +/* $NetBSD: pcu.h,v 1.11.2.1 2014/08/10 06:56:54 tls Exp $ */ /*- * Copyright (c) 2011 The NetBSD Foundation, Inc. @@ -50,31 +50,31 @@ #if PCU_UNIT_COUNT > 0 /* - * pcu_state_save(lwp, flags) - * save the current CPU's state into the given LWP's MD storage. + * pcu_state_save(lwp) + * Tells MD code to save the current CPU's state into the given + * LWP's MD storage. * * pcu_state_load(lwp, flags) - * load PCU state from the given LWP's MD storage to the current CPU. - * the 'flags' argument contains PCU_LOADED if it isn't the first time - * the LWP has used the PCU. + * Tells MD code to load PCU state from the given LWP's MD storage + * to the current CPU. * - * pcu_state_release(lwp, flags) - * tell MD code detect the next use of the PCU on the LWP, and call - * pcu_load(). + * pcu_state_release(lwp) + * Tells MD code detect the next use of the PCU on the LWP and + * call pcu_load(). */ typedef struct { u_int pcu_id; - void (*pcu_state_save)(lwp_t *, u_int); - void (*pcu_state_load)(lwp_t *, u_int); - void (*pcu_state_release)(lwp_t *, u_int); + void (*pcu_state_save)(lwp_t *); + void (*pcu_state_load)(lwp_t *, unsigned); + void (*pcu_state_release)(lwp_t *); } pcu_ops_t; -#define PCU_USER 0x00 /* PCU state is for the user */ -#define PCU_KERNEL 0x01 /* PCU state is for the kernel */ -#define PCU_RELOAD 0x02 /* Load registers into the PCU, */ -#define PCU_ENABLE 0x04 /* Enable the PCU, */ -#define PCU_LOADED 0x08 /* LWP has used the PCU before, */ +/* + * Flags for the pcu_state_load() operation. + */ +#define PCU_VALID 0x01 /* PCU state is considered valid */ +#define PCU_REENABLE 0x02 /* the state is present, re-enable PCU */ void pcu_switchpoint(lwp_t *); void pcu_discard_all(lwp_t *); @@ -84,9 +84,7 @@ void pcu_load(const pcu_ops_t *); void pcu_save(const pcu_ops_t *); void pcu_save_all_on_cpu(void); void pcu_discard(const pcu_ops_t *, bool); -void pcu_kernel_acquire(const pcu_ops_t *); -void pcu_kernel_release(const pcu_ops_t *); -bool pcu_used_p(const pcu_ops_t *); +bool pcu_valid_p(const pcu_ops_t *); #else #define pcu_switchpoint(l) Index: src/sys/sys/pool.h diff -u src/sys/sys/pool.h:1.75 src/sys/sys/pool.h:1.75.12.1 --- src/sys/sys/pool.h:1.75 Tue Jun 5 22:51:47 2012 +++ src/sys/sys/pool.h Sun Aug 10 06:56:54 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: pool.h,v 1.75 2012/06/05 22:51:47 jym Exp $ */ +/* $NetBSD: pool.h,v 1.75.12.1 2014/08/10 06:56:54 tls Exp $ */ /*- * Copyright (c) 1997, 1998, 1999, 2000, 2007 The NetBSD Foundation, Inc. @@ -32,6 +32,39 @@ #ifndef _SYS_POOL_H_ #define _SYS_POOL_H_ +#include <sys/stdint.h> + +struct pool_sysctl { + char pr_wchan[16]; + uint64_t pr_flags; + uint64_t pr_size; + uint64_t pr_pagesize; + uint64_t pr_itemsperpage; + uint64_t pr_nitems; + uint64_t pr_nout; + uint64_t pr_hardlimit; + uint64_t pr_npages; + uint64_t pr_minpages; + uint64_t pr_maxpages; + + uint64_t pr_nget; + uint64_t pr_nfail; + uint64_t pr_nput; + uint64_t pr_npagealloc; + uint64_t pr_npagefree; + uint64_t pr_hiwat; + uint64_t pr_nidle; + + uint64_t pr_cache_meta_size; + uint64_t pr_cache_nfull; + uint64_t pr_cache_npartial; + uint64_t pr_cache_nempty; + uint64_t pr_cache_ncontended; + uint64_t pr_cache_nmiss_global; + uint64_t pr_cache_nhit_global; + uint64_t pr_cache_nmiss_pcpu; + uint64_t pr_cache_nhit_pcpu; +}; #ifdef _KERNEL #define __POOL_EXPOSE Index: src/sys/sys/protosw.h diff -u src/sys/sys/protosw.h:1.44 src/sys/sys/protosw.h:1.44.54.1 --- src/sys/sys/protosw.h:1.44 Wed Aug 6 15:01:24 2008 +++ src/sys/sys/protosw.h Sun Aug 10 06:56:54 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: protosw.h,v 1.44 2008/08/06 15:01:24 plunky Exp $ */ +/* $NetBSD: protosw.h,v 1.44.54.1 2014/08/10 06:56:54 tls Exp $ */ /*- * Copyright (c) 1982, 1986, 1993 @@ -58,12 +58,15 @@ */ struct mbuf; +struct ifnet; struct sockaddr; struct socket; struct sockopt; +struct stat; struct domain; struct proc; struct lwp; +struct pr_usrreqs; struct protosw { int pr_type; /* socket type used for */ @@ -81,10 +84,8 @@ struct protosw { int (*pr_ctloutput) /* control output (from above) */ (int, struct socket *, struct sockopt *); -/* user-protocol hook */ - int (*pr_usrreq) /* user request: see list below */ - (struct socket *, int, struct mbuf *, - struct mbuf *, struct mbuf *, struct lwp *); +/* user-protocol hooks */ + const struct pr_usrreqs *pr_usrreqs; /* utility hooks */ void (*pr_init) /* initialization hook */ @@ -109,14 +110,14 @@ struct protosw { #define PR_ATOMIC 0x01 /* exchange atomic messages only */ #define PR_ADDR 0x02 /* addresses given with messages */ #define PR_CONNREQUIRED 0x04 /* connection required by protocol */ -#define PR_WANTRCVD 0x08 /* want PRU_RCVD calls */ +#define PR_WANTRCVD 0x08 /* want pr_rcvd() calls */ #define PR_RIGHTS 0x10 /* passes capabilities */ #define PR_LISTEN 0x20 /* supports listen(2) and accept(2) */ #define PR_LASTHDR 0x40 /* enforce ipsec policy; last header */ #define PR_ABRTACPTDIS 0x80 /* abort on accept(2) to disconnected socket */ #define PR_PURGEIF 0x100 /* might store struct ifnet pointer; - PRU_PURGEIF must be called on ifnet + pr_purgeif() must be called on ifnet deletion */ /* @@ -233,6 +234,32 @@ static const char * const prcorequests[] #endif #ifdef _KERNEL + +struct pr_usrreqs { + int (*pr_attach)(struct socket *, int); + void (*pr_detach)(struct socket *); + int (*pr_accept)(struct socket *, struct mbuf *); + int (*pr_connect)(struct socket *, struct mbuf *, struct lwp *); + int (*pr_connect2)(struct socket *, struct socket *); + int (*pr_bind)(struct socket *, struct mbuf *, struct lwp *); + int (*pr_listen)(struct socket *, struct lwp *); + int (*pr_disconnect)(struct socket *); + int (*pr_shutdown)(struct socket *); + int (*pr_abort)(struct socket *); + int (*pr_ioctl)(struct socket *, u_long, void *, struct ifnet *); + int (*pr_stat)(struct socket *, struct stat *); + int (*pr_peeraddr)(struct socket *, struct mbuf *); + int (*pr_sockaddr)(struct socket *, struct mbuf *); + int (*pr_rcvd)(struct socket *, int, struct lwp *); + int (*pr_recvoob)(struct socket *, struct mbuf *, int); + int (*pr_send)(struct socket *, struct mbuf *, struct mbuf *, + struct mbuf *, struct lwp *); + int (*pr_sendoob)(struct socket *, struct mbuf *, struct mbuf *); + int (*pr_purgeif)(struct socket *, struct ifnet *); + int (*pr_generic)(struct socket *, int, struct mbuf *, + struct mbuf *, struct mbuf *, struct lwp *); +}; + /* * Monotonically increasing time values for slow and fast timers. */ @@ -263,14 +290,193 @@ void pfctlinput2(int, const struct socka */ #include <sys/systm.h> /* kernel_lock */ -#define PR_WRAP_USRREQ(name) \ +#define PR_WRAP_USRREQS(name) \ +static int \ +name##_attach_wrapper(struct socket *a, int b) \ +{ \ + int rv; \ + KERNEL_LOCK(1, NULL); \ + rv = name##_attach(a, b); \ + KERNEL_UNLOCK_ONE(NULL); \ + return rv; \ +} \ +static void \ +name##_detach_wrapper(struct socket *a) \ +{ \ + KERNEL_LOCK(1, NULL); \ + name##_detach(a); \ + KERNEL_UNLOCK_ONE(NULL); \ +} \ +static int \ +name##_accept_wrapper(struct socket *a, struct mbuf *b) \ +{ \ + int rv; \ + KERNEL_LOCK(1, NULL); \ + rv = name##_accept(a, b); \ + KERNEL_UNLOCK_ONE(NULL); \ + return rv; \ +} \ +static int \ +name##_bind_wrapper(struct socket *a, struct mbuf *b, \ + struct lwp *c) \ +{ \ + int rv; \ + KERNEL_LOCK(1, NULL); \ + rv = name##_bind(a, b, c); \ + KERNEL_UNLOCK_ONE(NULL); \ + return rv; \ +} \ +static int \ +name##_connect_wrapper(struct socket *a, \ + struct mbuf *b, struct lwp *c) \ +{ \ + int rv; \ + KERNEL_LOCK(1, NULL); \ + rv = name##_connect(a, b, c); \ + KERNEL_UNLOCK_ONE(NULL); \ + return rv; \ +} \ +static int \ +name##_connect2_wrapper(struct socket *a, \ + struct socket *b) \ +{ \ + int rv; \ + KERNEL_LOCK(1, NULL); \ + rv = name##_connect2(a, b); \ + KERNEL_UNLOCK_ONE(NULL); \ + return rv; \ +} \ +static int \ +name##_listen_wrapper(struct socket *a, struct lwp *b) \ +{ \ + int rv; \ + KERNEL_LOCK(1, NULL); \ + rv = name##_listen(a, b); \ + KERNEL_UNLOCK_ONE(NULL); \ + return rv; \ +} \ +static int \ +name##_disconnect_wrapper(struct socket *a) \ +{ \ + int rv; \ + KERNEL_LOCK(1, NULL); \ + rv = name##_disconnect(a); \ + KERNEL_UNLOCK_ONE(NULL); \ + return rv; \ +} \ +static int \ +name##_shutdown_wrapper(struct socket *a) \ +{ \ + int rv; \ + KERNEL_LOCK(1, NULL); \ + rv = name##_shutdown(a); \ + KERNEL_UNLOCK_ONE(NULL); \ + return rv; \ +} \ +static int \ +name##_abort_wrapper(struct socket *a) \ +{ \ + int rv; \ + KERNEL_LOCK(1, NULL); \ + rv = name##_abort(a); \ + KERNEL_UNLOCK_ONE(NULL); \ + return rv; \ +} \ +static int \ +name##_ioctl_wrapper(struct socket *a, u_long b, \ + void *c, struct ifnet *d) \ +{ \ + int rv; \ + KERNEL_LOCK(1, NULL); \ + rv = name##_ioctl(a, b, c, d); \ + KERNEL_UNLOCK_ONE(NULL); \ + return rv; \ +} \ +static int \ +name##_stat_wrapper(struct socket *a, struct stat *b) \ +{ \ + int rv; \ + KERNEL_LOCK(1, NULL); \ + rv = name##_stat(a, b); \ + KERNEL_UNLOCK_ONE(NULL); \ + return rv; \ +} \ +static int \ +name##_peeraddr_wrapper(struct socket *a, struct mbuf *b) \ +{ \ + int rv; \ + KERNEL_LOCK(1, NULL); \ + rv = name##_peeraddr(a, b); \ + KERNEL_UNLOCK_ONE(NULL); \ + return rv; \ +} \ +static int \ +name##_sockaddr_wrapper(struct socket *a, struct mbuf *b) \ +{ \ + int rv; \ + KERNEL_LOCK(1, NULL); \ + rv = name##_sockaddr(a, b); \ + KERNEL_UNLOCK_ONE(NULL); \ + return rv; \ +} \ +static int \ +name##_rcvd_wrapper(struct socket *a, int b, \ + struct lwp *c) \ +{ \ + int rv; \ + KERNEL_LOCK(1, NULL); \ + rv = name##_rcvd(a, b, c); \ + KERNEL_UNLOCK_ONE(NULL); \ + return rv; \ +} \ +static int \ +name##_recvoob_wrapper(struct socket *a, \ + struct mbuf *b, int c) \ +{ \ + int rv; \ + KERNEL_LOCK(1, NULL); \ + rv = name##_recvoob(a, b, c); \ + KERNEL_UNLOCK_ONE(NULL); \ + return rv; \ +} \ +static int \ +name##_send_wrapper(struct socket *a, struct mbuf *b, \ + struct mbuf *c, struct mbuf *d, struct lwp *e) \ +{ \ + int rv; \ + KERNEL_LOCK(1, NULL); \ + rv = name##_send(a, b, c, d, e); \ + KERNEL_UNLOCK_ONE(NULL); \ + return rv; \ +} \ +static int \ +name##_sendoob_wrapper(struct socket *a, \ + struct mbuf *b, struct mbuf *c) \ +{ \ + int rv; \ + KERNEL_LOCK(1, NULL); \ + rv = name##_sendoob(a, b, c); \ + KERNEL_UNLOCK_ONE(NULL); \ + return rv; \ +} \ +static int \ +name##_purgeif_wrapper(struct socket *a, \ + struct ifnet *b) \ +{ \ + int rv; \ + KERNEL_LOCK(1, NULL); \ + rv = name##_purgeif(a, b); \ + KERNEL_UNLOCK_ONE(NULL); \ + return rv; \ +} \ static int \ -name##_wrapper(struct socket *a, int b, struct mbuf *c, \ - struct mbuf *d, struct mbuf *e, struct lwp *f) \ +name##_usrreq_wrapper(struct socket *a, int b, \ + struct mbuf *c, struct mbuf *d, struct mbuf *e, \ + struct lwp *f) \ { \ int rv; \ KERNEL_LOCK(1, NULL); \ - rv = name(a, b, c, d, e, f); \ + rv = name##_usrreq(a, b, c, d, e, f); \ KERNEL_UNLOCK_ONE(NULL); \ return rv; \ } Index: src/sys/sys/queue.h diff -u src/sys/sys/queue.h:1.65 src/sys/sys/queue.h:1.65.2.1 --- src/sys/sys/queue.h:1.65 Wed Dec 25 17:19:34 2013 +++ src/sys/sys/queue.h Sun Aug 10 06:56:54 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: queue.h,v 1.65 2013/12/25 17:19:34 christos Exp $ */ +/* $NetBSD: queue.h,v 1.65.2.1 2014/08/10 06:56:54 tls Exp $ */ /* * Copyright (c) 1991, 1993 @@ -211,6 +211,14 @@ struct { \ ((tvar) = LIST_NEXT((var), field), 1); \ (var) = (tvar)) +#define LIST_MOVE(head1, head2) do { \ + LIST_INIT((head2)); \ + if (!LIST_EMPTY((head1))) { \ + (head2)->lh_first = (head1)->lh_first; \ + LIST_INIT((head1)); \ + } \ +} while (/*CONSTCOND*/0) + /* * List functions. */ Index: src/sys/sys/quotactl.h diff -u src/sys/sys/quotactl.h:1.36 src/sys/sys/quotactl.h:1.36.10.1 --- src/sys/sys/quotactl.h:1.36 Sat Dec 1 11:41:50 2012 +++ src/sys/sys/quotactl.h Sun Aug 10 06:56:54 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: quotactl.h,v 1.36 2012/12/01 11:41:50 mbalmer Exp $ */ +/* $NetBSD: quotactl.h,v 1.36.10.1 2014/08/10 06:56:54 tls Exp $ */ /*- * Copyright (c) 2011 The NetBSD Foundation, Inc. * All rights reserved. @@ -83,7 +83,7 @@ struct quotakcursor { #define QUOTACTL_OBJTYPESTAT 2 #define QUOTACTL_GET 3 #define QUOTACTL_PUT 4 -#define QUOTACTL_DELETE 5 +#define QUOTACTL_DEL 5 #define QUOTACTL_CURSOROPEN 6 #define QUOTACTL_CURSORCLOSE 7 #define QUOTACTL_CURSORSKIPIDTYPE 8 @@ -118,7 +118,7 @@ struct quotactl_args { } put; struct { const struct quotakey *qc_key; - } delete; + } del; struct { struct quotakcursor *qc_cursor; } cursoropen; Index: src/sys/sys/select.h diff -u src/sys/sys/select.h:1.36 src/sys/sys/select.h:1.36.36.1 --- src/sys/sys/select.h:1.36 Wed Nov 11 09:48:51 2009 +++ src/sys/sys/select.h Sun Aug 10 06:56:54 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: select.h,v 1.36 2009/11/11 09:48:51 rmind Exp $ */ +/* $NetBSD: select.h,v 1.36.36.1 2014/08/10 06:56:54 tls Exp $ */ /*- * Copyright (c) 1992, 1993 @@ -55,7 +55,6 @@ void selnotify(struct selinfo *, int, lo void selsysinit(struct cpu_info *); void selinit(struct selinfo *); void seldestroy(struct selinfo *); -int pollsock(struct socket *, const struct timespec *, int); #else /* _KERNEL */ Index: src/sys/sys/signalvar.h diff -u src/sys/sys/signalvar.h:1.85 src/sys/sys/signalvar.h:1.85.2.1 --- src/sys/sys/signalvar.h:1.85 Wed Jan 1 18:57:16 2014 +++ src/sys/sys/signalvar.h Sun Aug 10 06:56:54 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: signalvar.h,v 1.85 2014/01/01 18:57:16 dsl Exp $ */ +/* $NetBSD: signalvar.h,v 1.85.2.1 2014/08/10 06:56:54 tls Exp $ */ /* * Copyright (c) 1991, 1993 @@ -130,7 +130,7 @@ void kpsignal(struct proc *, struct ksig void child_psignal(struct proc *, int); void siginit(struct proc *); void trapsignal(struct lwp *, struct ksiginfo *); -void sigexit(struct lwp *, int); +void sigexit(struct lwp *, int) __dead; void killproc(struct proc *, const char *); void setsigvec(struct proc *, int, struct sigaction *); int killpg1(struct lwp *, struct ksiginfo *, int, int); Index: src/sys/sys/sleepq.h diff -u src/sys/sys/sleepq.h:1.22 src/sys/sys/sleepq.h:1.22.12.1 --- src/sys/sys/sleepq.h:1.22 Sun Feb 19 21:07:00 2012 +++ src/sys/sys/sleepq.h Sun Aug 10 06:56:54 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: sleepq.h,v 1.22 2012/02/19 21:07:00 rmind Exp $ */ +/* $NetBSD: sleepq.h,v 1.22.12.1 2014/08/10 06:56:54 tls Exp $ */ /*- * Copyright (c) 2002, 2006, 2007, 2008, 2009 The NetBSD Foundation, Inc. @@ -64,7 +64,7 @@ void sleepq_remove(sleepq_t *, lwp_t *); void sleepq_enqueue(sleepq_t *, wchan_t, const char *, syncobj_t *); void sleepq_unsleep(lwp_t *, bool); void sleepq_timeout(void *); -lwp_t *sleepq_wake(sleepq_t *, wchan_t, u_int, kmutex_t *); +void sleepq_wake(sleepq_t *, wchan_t, u_int, kmutex_t *); int sleepq_abort(kmutex_t *, int); void sleepq_changepri(lwp_t *, pri_t); void sleepq_lendpri(lwp_t *, pri_t); Index: src/sys/sys/socket.h diff -u src/sys/sys/socket.h:1.108 src/sys/sys/socket.h:1.108.10.1 --- src/sys/sys/socket.h:1.108 Thu Jan 31 14:30:47 2013 +++ src/sys/sys/socket.h Sun Aug 10 06:56:54 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: socket.h,v 1.108 2013/01/31 14:30:47 joerg Exp $ */ +/* $NetBSD: socket.h,v 1.108.10.1 2014/08/10 06:56:54 tls Exp $ */ /* * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. @@ -341,7 +341,8 @@ struct sockcred { * Compute size of a sockcred structure with groups. */ #define SOCKCREDSIZE(ngrps) \ - (sizeof(struct sockcred) + (sizeof(gid_t) * ((ngrps) - 1))) + (sizeof(struct sockcred) + (sizeof(gid_t) * \ + ((ngrps) ? ((ngrps) - 1) : 0))) #endif /* _NETBSD_SOURCE */ @@ -428,6 +429,8 @@ struct kinfo_pcb { #define ki_src ki_s._kis_src #define ki_dst ki_d._kid_dst +#define ki_spad ki_s._kis_pad +#define ki_dpad ki_d._kid_pad #define PCB_SLOP 20 #define PCB_ALL 0 Index: src/sys/sys/socketvar.h diff -u src/sys/sys/socketvar.h:1.131 src/sys/sys/socketvar.h:1.131.2.1 --- src/sys/sys/socketvar.h:1.131 Thu Aug 29 17:49:21 2013 +++ src/sys/sys/socketvar.h Sun Aug 10 06:56:55 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: socketvar.h,v 1.131 2013/08/29 17:49:21 rmind Exp $ */ +/* $NetBSD: socketvar.h,v 1.131.2.1 2014/08/10 06:56:55 tls Exp $ */ /*- * Copyright (c) 2008, 2009 The NetBSD Foundation, Inc. @@ -295,7 +295,7 @@ int soconnect(struct socket *, struct mb int soconnect2(struct socket *, struct socket *); int socreate(int, struct socket **, int, int, struct lwp *, struct socket *); -int fsocreate(int, struct socket **, int, int, struct lwp *, int *); +int fsocreate(int, struct socket **, int, int, int *); int sodisconnect(struct socket *); void sofree(struct socket *); int sogetopt(struct socket *, struct sockopt *); @@ -308,7 +308,7 @@ int solisten(struct socket *, int, struc struct socket * sonewconn(struct socket *, bool); void soqinsque(struct socket *, struct socket *, int); -int soqremque(struct socket *, int); +bool soqremque(struct socket *, int); int soreceive(struct socket *, struct mbuf **, struct uio *, struct mbuf **, struct mbuf **, int *); int soreserve(struct socket *, u_long, u_long); @@ -346,7 +346,8 @@ int copyout_sockname(struct sockaddr *, int copyout_msg_control(struct lwp *, struct msghdr *, struct mbuf *); void free_control_mbuf(struct lwp *, struct mbuf *, struct mbuf *); -int do_sys_getsockname(struct lwp *, int, int, struct mbuf **); +int do_sys_getpeername(int, struct mbuf **); +int do_sys_getsockname(int, struct mbuf **); int do_sys_sendmsg(struct lwp *, int, struct msghdr *, int, register_t *); int do_sys_recvmsg(struct lwp *, int, struct msghdr *, struct mbuf **, struct mbuf **, register_t *); Index: src/sys/sys/syscall.h diff -u src/sys/sys/syscall.h:1.268 src/sys/sys/syscall.h:1.268.2.1 --- src/sys/sys/syscall.h:1.268 Fri Mar 14 00:56:37 2014 +++ src/sys/sys/syscall.h Sun Aug 10 06:56:55 2014 @@ -1,10 +1,10 @@ -/* $NetBSD: syscall.h,v 1.268 2014/03/14 00:56:37 pooka Exp $ */ +/* $NetBSD: syscall.h,v 1.268.2.1 2014/08/10 06:56:55 tls Exp $ */ /* * System call numbers. * * DO NOT EDIT-- this file is automatically generated. - * created from NetBSD: syscalls.master,v 1.267 2014/03/14 00:52:08 pooka Exp + * created from NetBSD: syscalls.master,v 1.270 2014/07/25 08:25:47 dholland Exp */ #ifndef _SYS_SYSCALL_H_ @@ -1364,6 +1364,12 @@ /* syscall: "___lwp_park60" ret: "int" args: "clockid_t" "int" "const struct timespec *" "lwpid_t" "const void *" "const void *" */ #define SYS____lwp_park60 478 -#define SYS_MAXSYSCALL 479 +/* syscall: "posix_fallocate" ret: "int" args: "int" "int" "off_t" "off_t" */ +#define SYS_posix_fallocate 479 + +/* syscall: "fdiscard" ret: "int" args: "int" "int" "off_t" "off_t" */ +#define SYS_fdiscard 480 + +#define SYS_MAXSYSCALL 481 #define SYS_NSYSENT 512 #endif /* _SYS_SYSCALL_H_ */ Index: src/sys/sys/syscallargs.h diff -u src/sys/sys/syscallargs.h:1.251 src/sys/sys/syscallargs.h:1.251.2.1 --- src/sys/sys/syscallargs.h:1.251 Fri Mar 14 00:56:37 2014 +++ src/sys/sys/syscallargs.h Sun Aug 10 06:56:55 2014 @@ -1,10 +1,10 @@ -/* $NetBSD: syscallargs.h,v 1.251 2014/03/14 00:56:37 pooka Exp $ */ +/* $NetBSD: syscallargs.h,v 1.251.2.1 2014/08/10 06:56:55 tls Exp $ */ /* * System call argument lists. * * DO NOT EDIT-- this file is automatically generated. - * created from NetBSD: syscalls.master,v 1.267 2014/03/14 00:52:08 pooka Exp + * created from NetBSD: syscalls.master,v 1.270 2014/07/25 08:25:47 dholland Exp */ #ifndef _SYS_SYSCALLARGS_H_ @@ -1248,9 +1248,9 @@ check_syscall_args(sys_ftruncate) struct sys___sysctl_args { syscallarg(const int *) name; syscallarg(u_int) namelen; - syscallarg(void *) old; + syscallarg(void *) oldv; syscallarg(size_t *) oldlenp; - syscallarg(const void *) new; + syscallarg(const void *) newv; syscallarg(size_t) newlen; }; check_syscall_args(sys___sysctl) @@ -2094,8 +2094,8 @@ check_syscall_args(sys__lwp_ctl) #ifndef RUMP_CLIENT struct compat_60_sys_sa_register_args { - syscallarg(void *) new; - syscallarg(void **) old; + syscallarg(void *) newv; + syscallarg(void **) oldv; syscallarg(int) flags; syscallarg(ssize_t) stackinfo_offset; }; @@ -2550,42 +2550,32 @@ struct compat_50_sys___fhstat40_args { }; check_syscall_args(compat_50_sys___fhstat40) -#ifndef RUMP_CLIENT struct sys_aio_cancel_args { syscallarg(int) fildes; syscallarg(struct aiocb *) aiocbp; }; check_syscall_args(sys_aio_cancel) -#endif /* !RUMP_CLIENT */ -#ifndef RUMP_CLIENT struct sys_aio_error_args { syscallarg(const struct aiocb *) aiocbp; }; check_syscall_args(sys_aio_error) -#endif /* !RUMP_CLIENT */ -#ifndef RUMP_CLIENT struct sys_aio_fsync_args { syscallarg(int) op; syscallarg(struct aiocb *) aiocbp; }; check_syscall_args(sys_aio_fsync) -#endif /* !RUMP_CLIENT */ -#ifndef RUMP_CLIENT struct sys_aio_read_args { syscallarg(struct aiocb *) aiocbp; }; check_syscall_args(sys_aio_read) -#endif /* !RUMP_CLIENT */ -#ifndef RUMP_CLIENT struct sys_aio_return_args { syscallarg(struct aiocb *) aiocbp; }; check_syscall_args(sys_aio_return) -#endif /* !RUMP_CLIENT */ #ifndef RUMP_CLIENT struct compat_50_sys_aio_suspend_args { @@ -2596,14 +2586,11 @@ struct compat_50_sys_aio_suspend_args { check_syscall_args(compat_50_sys_aio_suspend) #endif /* !RUMP_CLIENT */ -#ifndef RUMP_CLIENT struct sys_aio_write_args { syscallarg(struct aiocb *) aiocbp; }; check_syscall_args(sys_aio_write) -#endif /* !RUMP_CLIENT */ -#ifndef RUMP_CLIENT struct sys_lio_listio_args { syscallarg(int) mode; syscallarg(struct aiocb *const *) list; @@ -2611,7 +2598,6 @@ struct sys_lio_listio_args { syscallarg(struct sigevent *) sig; }; check_syscall_args(sys_lio_listio) -#endif /* !RUMP_CLIENT */ struct sys___mount50_args { syscallarg(const char *) type; @@ -2835,14 +2821,12 @@ struct sys___pollts50_args { }; check_syscall_args(sys___pollts50) -#ifndef RUMP_CLIENT struct sys___aio_suspend50_args { syscallarg(const struct aiocb *const *) list; syscallarg(int) nent; syscallarg(const struct timespec *) timeout; }; check_syscall_args(sys___aio_suspend50) -#endif /* !RUMP_CLIENT */ struct sys___stat50_args { syscallarg(const char *) path; @@ -3163,6 +3147,22 @@ struct sys____lwp_park60_args { check_syscall_args(sys____lwp_park60) #endif /* !RUMP_CLIENT */ +struct sys_posix_fallocate_args { + syscallarg(int) fd; + syscallarg(int) PAD; + syscallarg(off_t) pos; + syscallarg(off_t) len; +}; +check_syscall_args(sys_posix_fallocate) + +struct sys_fdiscard_args { + syscallarg(int) fd; + syscallarg(int) PAD; + syscallarg(off_t) pos; + syscallarg(off_t) len; +}; +check_syscall_args(sys_fdiscard) + /* * System call prototypes. */ @@ -4060,5 +4060,9 @@ int sys_clock_nanosleep(struct lwp *, co int sys____lwp_park60(struct lwp *, const struct sys____lwp_park60_args *, register_t *); +int sys_posix_fallocate(struct lwp *, const struct sys_posix_fallocate_args *, register_t *); + +int sys_fdiscard(struct lwp *, const struct sys_fdiscard_args *, register_t *); + #endif /* !RUMP_CLIENT */ #endif /* _SYS_SYSCALLARGS_H_ */ Index: src/sys/sys/sysctl.h diff -u src/sys/sys/sysctl.h:1.211 src/sys/sys/sysctl.h:1.211.2.1 --- src/sys/sys/sysctl.h:1.211 Tue Feb 25 18:30:13 2014 +++ src/sys/sys/sysctl.h Sun Aug 10 06:56:55 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: sysctl.h,v 1.211 2014/02/25 18:30:13 pooka Exp $ */ +/* $NetBSD: sysctl.h,v 1.211.2.1 2014/08/10 06:56:55 tls Exp $ */ /* * Copyright (c) 1989, 1993 @@ -1143,6 +1143,7 @@ typedef int (*sysctlfn)(SYSCTLFN_PROTO); * used in more than just sysctl */ void fill_eproc(struct proc *, struct eproc *, bool); +void fill_kproc2(struct proc *, struct kinfo_proc2 *, bool); /* * subsystem setup @@ -1261,6 +1262,8 @@ int sysctlgetmibinfo(const char *, int * int sysctlnametomib(const char *, int *, size_t *); int proc_compare(const struct kinfo_proc2 *, const struct kinfo_lwp *, const struct kinfo_proc2 *, const struct kinfo_lwp *); +void *asysctl(const int *, size_t, size_t *); +void *asysctlbyname(const char *, size_t *); __END_DECLS #endif /* !_KERNEL */ Index: src/sys/sys/syslog.h diff -u src/sys/sys/syslog.h:1.35 src/sys/sys/syslog.h:1.35.10.1 --- src/sys/sys/syslog.h:1.35 Wed Oct 10 22:51:55 2012 +++ src/sys/sys/syslog.h Sun Aug 10 06:56:55 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: syslog.h,v 1.35 2012/10/10 22:51:55 christos Exp $ */ +/* $NetBSD: syslog.h,v 1.35.10.1 2014/08/10 06:56:55 tls Exp $ */ /* * Copyright (c) 1982, 1986, 1988, 1993 @@ -83,7 +83,7 @@ CODE prioritynames[] = { { "warning", LOG_WARNING }, { NULL, -1 } }; -#endif +#endif /* SYSLOG_NAMES */ /* facility codes */ #define LOG_KERN (0<<3) /* kernel messages */ @@ -140,7 +140,7 @@ CODE facilitynames[] = { { "local7", LOG_LOCAL7 }, { NULL, -1 } }; -#endif +#endif /* SYSLOG_NAMES */ #ifdef _KERNEL #define LOG_PRINTF -1 /* pseudo-priority to indicate use of printf */ Index: src/sys/sys/systm.h diff -u src/sys/sys/systm.h:1.263 src/sys/sys/systm.h:1.263.2.1 --- src/sys/sys/systm.h:1.263 Thu Apr 3 15:22:57 2014 +++ src/sys/sys/systm.h Sun Aug 10 06:56:55 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: systm.h,v 1.263 2014/04/03 15:22:57 christos Exp $ */ +/* $NetBSD: systm.h,v 1.263.2.1 2014/08/10 06:56:55 tls Exp $ */ /*- * Copyright (c) 1982, 1988, 1991, 1993 @@ -73,6 +73,7 @@ extern const char osrelease[]; /* short extern const char ostype[]; /* system type */ extern const char kernel_ident[];/* kernel configuration ID */ extern const char version[]; /* system version */ +extern const char buildinfo[]; /* information from build environment */ extern int autonicetime; /* time (in seconds) before autoniceval */ extern int autoniceval; /* proc priority after autonicetime */ @@ -527,7 +528,7 @@ void assert_sleepable(void); #if defined(DEBUG) #define ASSERT_SLEEPABLE() assert_sleepable() #else /* defined(DEBUG) */ -#define ASSERT_SLEEPABLE() /* nothing */ +#define ASSERT_SLEEPABLE() do {} while (0) #endif /* defined(DEBUG) */ vaddr_t calc_cache_size(vsize_t , int, int); Index: src/sys/sys/time.h diff -u src/sys/sys/time.h:1.65 src/sys/sys/time.h:1.65.26.1 --- src/sys/sys/time.h:1.65 Thu Oct 27 16:12:52 2011 +++ src/sys/sys/time.h Sun Aug 10 06:56:55 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: time.h,v 1.65 2011/10/27 16:12:52 christos Exp $ */ +/* $NetBSD: time.h,v 1.65.26.1 2014/08/10 06:56:55 tls Exp $ */ /* * Copyright (c) 1982, 1986, 1993 @@ -174,7 +174,7 @@ timespec2bintime(const struct timespec * bt->sec = ts->tv_sec; /* 18446744073 = int(2^64 / 1000000000) */ - bt->frac = ts->tv_nsec * (uint64_t)18446744073LL; + bt->frac = (uint64_t)ts->tv_nsec * (uint64_t)18446744073ULL; } static __inline void @@ -192,7 +192,7 @@ timeval2bintime(const struct timeval *tv bt->sec = tv->tv_sec; /* 18446744073709 = int(2^64 / 1000000) */ - bt->frac = tv->tv_usec * (uint64_t)18446744073709LL; + bt->frac = (uint64_t)tv->tv_usec * (uint64_t)18446744073709ULL; } #endif /* !defined(_STANDALONE) */ Index: src/sys/sys/tty.h diff -u src/sys/sys/tty.h:1.91 src/sys/sys/tty.h:1.91.10.1 --- src/sys/sys/tty.h:1.91 Sun Feb 24 06:20:24 2013 +++ src/sys/sys/tty.h Sun Aug 10 06:56:55 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: tty.h,v 1.91 2013/02/24 06:20:24 matt Exp $ */ +/* $NetBSD: tty.h,v 1.91.10.1 2014/08/10 06:56:55 tls Exp $ */ /*- * Copyright (c) 2008 The NetBSD Foundation, Inc. @@ -151,7 +151,9 @@ struct tty { void *t_softc; /* pointer to driver's softc. */ }; +#ifdef TTY_ALLOW_PRIVATE #define t_cc t_termios.c_cc +#endif #define t_cflag t_termios.c_cflag #define t_iflag t_termios.c_iflag #define t_ispeed t_termios.c_ispeed @@ -303,6 +305,10 @@ void clfree(struct clist *); extern int (*ttcompatvec)(struct tty *, u_long, void *, int, struct lwp *); +unsigned char tty_getctrlchar(struct tty *, unsigned /*which*/); +void tty_setctrlchar(struct tty *, unsigned /*which*/, unsigned char /*val*/); +int tty_try_xonxoff(struct tty *, unsigned char /*c*/); + #endif /* _KERNEL */ #endif /* !_SYS_TTY_H_ */ Index: src/sys/sys/ttydev.h diff -u src/sys/sys/ttydev.h:1.9 src/sys/sys/ttydev.h:1.9.136.1 --- src/sys/sys/ttydev.h:1.9 Sun Dec 11 12:25:21 2005 +++ src/sys/sys/ttydev.h Sun Aug 10 06:56:55 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: ttydev.h,v 1.9 2005/12/11 12:25:21 christos Exp $ */ +/* $NetBSD: ttydev.h,v 1.9.136.1 2014/08/10 06:56:55 tls Exp $ */ /*- * Copyright (c) 1982, 1986, 1990, 1993 @@ -31,7 +31,7 @@ * @(#)ttydev.h 8.2 (Berkeley) 1/4/94 */ -/* COMPATABILITY HEADER FILE */ +/* COMPATIBILITY HEADER FILE */ #ifndef _SYS_TTYDEV_H_ #define _SYS_TTYDEV_H_ Index: src/sys/sys/un.h diff -u src/sys/sys/un.h:1.46 src/sys/sys/un.h:1.46.26.1 --- src/sys/sys/un.h:1.46 Sun Jun 26 16:43:12 2011 +++ src/sys/sys/un.h Sun Aug 10 06:56:55 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: un.h,v 1.46 2011/06/26 16:43:12 christos Exp $ */ +/* $NetBSD: un.h,v 1.46.26.1 2014/08/10 06:56:55 tls Exp $ */ /* * Copyright (c) 1982, 1986, 1993 @@ -71,33 +71,24 @@ struct unpcbid { }; #ifdef _KERNEL + struct unpcb; struct socket; struct sockopt; -int uipc_usrreq(struct socket *, int, struct mbuf *, - struct mbuf *, struct mbuf *, struct lwp *); +extern const struct pr_usrreqs unp_usrreqs; + int uipc_ctloutput(int, struct socket *, struct sockopt *); -void uipc_init (void); -kmutex_t *uipc_dgramlock (void); -kmutex_t *uipc_streamlock (void); -kmutex_t *uipc_rawlock (void); - -int unp_attach (struct socket *); -int unp_bind (struct socket *, struct mbuf *, struct lwp *); -int unp_connect (struct socket *, struct mbuf *, struct lwp *); -int unp_connect2 (struct socket *, struct socket *, int); -void unp_detach (struct unpcb *); -void unp_discard (struct file *); -void unp_disconnect (struct unpcb *); -bool unp_drop (struct unpcb *, int); -void unp_shutdown (struct unpcb *); -int unp_externalize (struct mbuf *, struct lwp *, int); -int unp_internalize (struct mbuf **); -void unp_dispose (struct mbuf *); -int unp_output (struct mbuf *, struct mbuf *, struct unpcb *, - struct lwp *); -void unp_setaddr (struct socket *, struct mbuf *, bool); +void uipc_init(void); +kmutex_t *uipc_dgramlock(void); +kmutex_t *uipc_streamlock(void); +kmutex_t *uipc_rawlock(void); + +int unp_connect(struct socket *, struct mbuf *, struct lwp *); +int unp_connect2(struct socket *, struct socket *); +void unp_dispose(struct mbuf *); +int unp_externalize(struct mbuf *, struct lwp *, int); + #else /* !_KERNEL */ /* actual length of an initialized sockaddr_un */ Index: src/sys/sys/vnode.h diff -u src/sys/sys/vnode.h:1.246 src/sys/sys/vnode.h:1.246.2.1 --- src/sys/sys/vnode.h:1.246 Mon Mar 24 13:42:40 2014 +++ src/sys/sys/vnode.h Sun Aug 10 06:56:55 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: vnode.h,v 1.246 2014/03/24 13:42:40 hannken Exp $ */ +/* $NetBSD: vnode.h,v 1.246.2.1 2014/08/10 06:56:55 tls Exp $ */ /*- * Copyright (c) 2008 The NetBSD Foundation, Inc. @@ -207,8 +207,8 @@ typedef struct vnode vnode_t; #define VI_MARKER 0x00008000 /* Dummy marker vnode */ #endif /* _VFS_VNODE_PRIVATE */ #define VI_LAYER 0x00020000 /* vnode is on a layer filesystem */ -#ifdef _VFS_VNODE_PRIVATE #define VI_LOCKSHARE 0x00040000 /* v_interlock is shared */ +#ifdef _VFS_VNODE_PRIVATE #define VI_CLEAN 0x00080000 /* has been reclaimed */ #define VI_CHANGING 0x00100000 /* vnode changes state */ #endif /* _VFS_VNODE_PRIVATE */ @@ -556,6 +556,12 @@ struct vnode * vnalloc(struct mount *); void vnfree(struct vnode *); void vremfree(struct vnode *); +int vcache_get(struct mount *, const void *, size_t, struct vnode **); +int vcache_rekey_enter(struct mount *, struct vnode *, + const void *, size_t, const void *, size_t); +void vcache_rekey_exit(struct mount *, struct vnode *, + const void *, size_t, const void *, size_t); +void vcache_remove(struct mount *, const void *, size_t); /* see vnsubr(9) */ int vn_bwrite(void *); Index: src/sys/sys/vnode_if.h diff -u src/sys/sys/vnode_if.h:1.87 src/sys/sys/vnode_if.h:1.87.2.1 --- src/sys/sys/vnode_if.h:1.87 Fri Feb 7 15:29:23 2014 +++ src/sys/sys/vnode_if.h Sun Aug 10 06:56:55 2014 @@ -1,11 +1,11 @@ -/* $NetBSD: vnode_if.h,v 1.87 2014/02/07 15:29:23 hannken Exp $ */ +/* $NetBSD: vnode_if.h,v 1.87.2.1 2014/08/10 06:56:55 tls Exp $ */ /* * Warning: DO NOT EDIT! This file is automatically generated! * (Modifications made here may easily be lost!) * * Created from the file: - * NetBSD: vnode_if.src,v 1.66 2014/02/07 15:26:42 hannken Exp + * NetBSD: vnode_if.src,v 1.67 2014/07/25 08:16:47 dholland Exp * by the script: * NetBSD: vnode_if.sh,v 1.60 2014/01/13 12:07:55 hannken Exp */ @@ -165,7 +165,27 @@ struct vop_write_args { extern const struct vnodeop_desc vop_write_desc; int VOP_WRITE(struct vnode *, struct uio *, int, kauth_cred_t); -#define VOP_IOCTL_DESCOFFSET 12 +#define VOP_FALLOCATE_DESCOFFSET 12 +struct vop_fallocate_args { + const struct vnodeop_desc *a_desc; + struct vnode *a_vp; + off_t a_pos; + off_t a_len; +}; +extern const struct vnodeop_desc vop_fallocate_desc; +int VOP_FALLOCATE(struct vnode *, off_t, off_t); + +#define VOP_FDISCARD_DESCOFFSET 13 +struct vop_fdiscard_args { + const struct vnodeop_desc *a_desc; + struct vnode *a_vp; + off_t a_pos; + off_t a_len; +}; +extern const struct vnodeop_desc vop_fdiscard_desc; +int VOP_FDISCARD(struct vnode *, off_t, off_t); + +#define VOP_IOCTL_DESCOFFSET 14 struct vop_ioctl_args { const struct vnodeop_desc *a_desc; struct vnode *a_vp; @@ -177,7 +197,7 @@ struct vop_ioctl_args { extern const struct vnodeop_desc vop_ioctl_desc; int VOP_IOCTL(struct vnode *, u_long, void *, int, kauth_cred_t); -#define VOP_FCNTL_DESCOFFSET 13 +#define VOP_FCNTL_DESCOFFSET 15 struct vop_fcntl_args { const struct vnodeop_desc *a_desc; struct vnode *a_vp; @@ -189,7 +209,7 @@ struct vop_fcntl_args { extern const struct vnodeop_desc vop_fcntl_desc; int VOP_FCNTL(struct vnode *, u_int, void *, int, kauth_cred_t); -#define VOP_POLL_DESCOFFSET 14 +#define VOP_POLL_DESCOFFSET 16 struct vop_poll_args { const struct vnodeop_desc *a_desc; struct vnode *a_vp; @@ -198,7 +218,7 @@ struct vop_poll_args { extern const struct vnodeop_desc vop_poll_desc; int VOP_POLL(struct vnode *, int); -#define VOP_KQFILTER_DESCOFFSET 15 +#define VOP_KQFILTER_DESCOFFSET 17 struct vop_kqfilter_args { const struct vnodeop_desc *a_desc; struct vnode *a_vp; @@ -207,7 +227,7 @@ struct vop_kqfilter_args { extern const struct vnodeop_desc vop_kqfilter_desc; int VOP_KQFILTER(struct vnode *, struct knote *); -#define VOP_REVOKE_DESCOFFSET 16 +#define VOP_REVOKE_DESCOFFSET 18 struct vop_revoke_args { const struct vnodeop_desc *a_desc; struct vnode *a_vp; @@ -216,7 +236,7 @@ struct vop_revoke_args { extern const struct vnodeop_desc vop_revoke_desc; int VOP_REVOKE(struct vnode *, int); -#define VOP_MMAP_DESCOFFSET 17 +#define VOP_MMAP_DESCOFFSET 19 struct vop_mmap_args { const struct vnodeop_desc *a_desc; struct vnode *a_vp; @@ -226,7 +246,7 @@ struct vop_mmap_args { extern const struct vnodeop_desc vop_mmap_desc; int VOP_MMAP(struct vnode *, vm_prot_t, kauth_cred_t); -#define VOP_FSYNC_DESCOFFSET 18 +#define VOP_FSYNC_DESCOFFSET 20 struct vop_fsync_args { const struct vnodeop_desc *a_desc; struct vnode *a_vp; @@ -238,7 +258,7 @@ struct vop_fsync_args { extern const struct vnodeop_desc vop_fsync_desc; int VOP_FSYNC(struct vnode *, kauth_cred_t, int, off_t, off_t); -#define VOP_SEEK_DESCOFFSET 19 +#define VOP_SEEK_DESCOFFSET 21 struct vop_seek_args { const struct vnodeop_desc *a_desc; struct vnode *a_vp; @@ -249,7 +269,7 @@ struct vop_seek_args { extern const struct vnodeop_desc vop_seek_desc; int VOP_SEEK(struct vnode *, off_t, off_t, kauth_cred_t); -#define VOP_REMOVE_DESCOFFSET 20 +#define VOP_REMOVE_DESCOFFSET 22 struct vop_remove_args { const struct vnodeop_desc *a_desc; struct vnode *a_dvp; @@ -259,7 +279,7 @@ struct vop_remove_args { extern const struct vnodeop_desc vop_remove_desc; int VOP_REMOVE(struct vnode *, struct vnode *, struct componentname *); -#define VOP_LINK_DESCOFFSET 21 +#define VOP_LINK_DESCOFFSET 23 struct vop_link_args { const struct vnodeop_desc *a_desc; struct vnode *a_dvp; @@ -269,7 +289,7 @@ struct vop_link_args { extern const struct vnodeop_desc vop_link_desc; int VOP_LINK(struct vnode *, struct vnode *, struct componentname *); -#define VOP_RENAME_DESCOFFSET 22 +#define VOP_RENAME_DESCOFFSET 24 struct vop_rename_args { const struct vnodeop_desc *a_desc; struct vnode *a_fdvp; @@ -283,7 +303,7 @@ extern const struct vnodeop_desc vop_ren int VOP_RENAME(struct vnode *, struct vnode *, struct componentname *, struct vnode *, struct vnode *, struct componentname *); -#define VOP_MKDIR_DESCOFFSET 23 +#define VOP_MKDIR_DESCOFFSET 25 struct vop_mkdir_v3_args { const struct vnodeop_desc *a_desc; struct vnode *a_dvp; @@ -295,7 +315,7 @@ extern const struct vnodeop_desc vop_mkd int VOP_MKDIR(struct vnode *, struct vnode **, struct componentname *, struct vattr *); -#define VOP_RMDIR_DESCOFFSET 24 +#define VOP_RMDIR_DESCOFFSET 26 struct vop_rmdir_args { const struct vnodeop_desc *a_desc; struct vnode *a_dvp; @@ -305,7 +325,7 @@ struct vop_rmdir_args { extern const struct vnodeop_desc vop_rmdir_desc; int VOP_RMDIR(struct vnode *, struct vnode *, struct componentname *); -#define VOP_SYMLINK_DESCOFFSET 25 +#define VOP_SYMLINK_DESCOFFSET 27 struct vop_symlink_v3_args { const struct vnodeop_desc *a_desc; struct vnode *a_dvp; @@ -318,7 +338,7 @@ extern const struct vnodeop_desc vop_sym int VOP_SYMLINK(struct vnode *, struct vnode **, struct componentname *, struct vattr *, char *); -#define VOP_READDIR_DESCOFFSET 26 +#define VOP_READDIR_DESCOFFSET 28 struct vop_readdir_args { const struct vnodeop_desc *a_desc; struct vnode *a_vp; @@ -332,7 +352,7 @@ extern const struct vnodeop_desc vop_rea int VOP_READDIR(struct vnode *, struct uio *, kauth_cred_t, int *, off_t **, int *); -#define VOP_READLINK_DESCOFFSET 27 +#define VOP_READLINK_DESCOFFSET 29 struct vop_readlink_args { const struct vnodeop_desc *a_desc; struct vnode *a_vp; @@ -342,7 +362,7 @@ struct vop_readlink_args { extern const struct vnodeop_desc vop_readlink_desc; int VOP_READLINK(struct vnode *, struct uio *, kauth_cred_t); -#define VOP_ABORTOP_DESCOFFSET 28 +#define VOP_ABORTOP_DESCOFFSET 30 struct vop_abortop_args { const struct vnodeop_desc *a_desc; struct vnode *a_dvp; @@ -351,7 +371,7 @@ struct vop_abortop_args { extern const struct vnodeop_desc vop_abortop_desc; int VOP_ABORTOP(struct vnode *, struct componentname *); -#define VOP_INACTIVE_DESCOFFSET 29 +#define VOP_INACTIVE_DESCOFFSET 31 struct vop_inactive_args { const struct vnodeop_desc *a_desc; struct vnode *a_vp; @@ -360,7 +380,7 @@ struct vop_inactive_args { extern const struct vnodeop_desc vop_inactive_desc; int VOP_INACTIVE(struct vnode *, bool *); -#define VOP_RECLAIM_DESCOFFSET 30 +#define VOP_RECLAIM_DESCOFFSET 32 struct vop_reclaim_args { const struct vnodeop_desc *a_desc; struct vnode *a_vp; @@ -368,7 +388,7 @@ struct vop_reclaim_args { extern const struct vnodeop_desc vop_reclaim_desc; int VOP_RECLAIM(struct vnode *); -#define VOP_LOCK_DESCOFFSET 31 +#define VOP_LOCK_DESCOFFSET 33 struct vop_lock_args { const struct vnodeop_desc *a_desc; struct vnode *a_vp; @@ -377,7 +397,7 @@ struct vop_lock_args { extern const struct vnodeop_desc vop_lock_desc; int VOP_LOCK(struct vnode *, int); -#define VOP_UNLOCK_DESCOFFSET 32 +#define VOP_UNLOCK_DESCOFFSET 34 struct vop_unlock_args { const struct vnodeop_desc *a_desc; struct vnode *a_vp; @@ -385,7 +405,7 @@ struct vop_unlock_args { extern const struct vnodeop_desc vop_unlock_desc; int VOP_UNLOCK(struct vnode *); -#define VOP_BMAP_DESCOFFSET 33 +#define VOP_BMAP_DESCOFFSET 35 struct vop_bmap_args { const struct vnodeop_desc *a_desc; struct vnode *a_vp; @@ -397,7 +417,7 @@ struct vop_bmap_args { extern const struct vnodeop_desc vop_bmap_desc; int VOP_BMAP(struct vnode *, daddr_t, struct vnode **, daddr_t *, int *); -#define VOP_STRATEGY_DESCOFFSET 34 +#define VOP_STRATEGY_DESCOFFSET 36 struct vop_strategy_args { const struct vnodeop_desc *a_desc; struct vnode *a_vp; @@ -406,7 +426,7 @@ struct vop_strategy_args { extern const struct vnodeop_desc vop_strategy_desc; int VOP_STRATEGY(struct vnode *, struct buf *); -#define VOP_PRINT_DESCOFFSET 35 +#define VOP_PRINT_DESCOFFSET 37 struct vop_print_args { const struct vnodeop_desc *a_desc; struct vnode *a_vp; @@ -414,7 +434,7 @@ struct vop_print_args { extern const struct vnodeop_desc vop_print_desc; int VOP_PRINT(struct vnode *); -#define VOP_ISLOCKED_DESCOFFSET 36 +#define VOP_ISLOCKED_DESCOFFSET 38 struct vop_islocked_args { const struct vnodeop_desc *a_desc; struct vnode *a_vp; @@ -422,7 +442,7 @@ struct vop_islocked_args { extern const struct vnodeop_desc vop_islocked_desc; int VOP_ISLOCKED(struct vnode *); -#define VOP_PATHCONF_DESCOFFSET 37 +#define VOP_PATHCONF_DESCOFFSET 39 struct vop_pathconf_args { const struct vnodeop_desc *a_desc; struct vnode *a_vp; @@ -432,7 +452,7 @@ struct vop_pathconf_args { extern const struct vnodeop_desc vop_pathconf_desc; int VOP_PATHCONF(struct vnode *, int, register_t *); -#define VOP_ADVLOCK_DESCOFFSET 38 +#define VOP_ADVLOCK_DESCOFFSET 40 struct vop_advlock_args { const struct vnodeop_desc *a_desc; struct vnode *a_vp; @@ -444,7 +464,7 @@ struct vop_advlock_args { extern const struct vnodeop_desc vop_advlock_desc; int VOP_ADVLOCK(struct vnode *, void *, int, struct flock *, int); -#define VOP_WHITEOUT_DESCOFFSET 39 +#define VOP_WHITEOUT_DESCOFFSET 41 struct vop_whiteout_args { const struct vnodeop_desc *a_desc; struct vnode *a_dvp; @@ -454,7 +474,7 @@ struct vop_whiteout_args { extern const struct vnodeop_desc vop_whiteout_desc; int VOP_WHITEOUT(struct vnode *, struct componentname *, int); -#define VOP_GETPAGES_DESCOFFSET 40 +#define VOP_GETPAGES_DESCOFFSET 42 struct vop_getpages_args { const struct vnodeop_desc *a_desc; struct vnode *a_vp; @@ -470,7 +490,7 @@ extern const struct vnodeop_desc vop_get int VOP_GETPAGES(struct vnode *, voff_t, struct vm_page **, int *, int, vm_prot_t, int, int); -#define VOP_PUTPAGES_DESCOFFSET 41 +#define VOP_PUTPAGES_DESCOFFSET 43 struct vop_putpages_args { const struct vnodeop_desc *a_desc; struct vnode *a_vp; @@ -481,7 +501,7 @@ struct vop_putpages_args { extern const struct vnodeop_desc vop_putpages_desc; int VOP_PUTPAGES(struct vnode *, voff_t, voff_t, int); -#define VOP_CLOSEEXTATTR_DESCOFFSET 42 +#define VOP_CLOSEEXTATTR_DESCOFFSET 44 struct vop_closeextattr_args { const struct vnodeop_desc *a_desc; struct vnode *a_vp; @@ -491,7 +511,7 @@ struct vop_closeextattr_args { extern const struct vnodeop_desc vop_closeextattr_desc; int VOP_CLOSEEXTATTR(struct vnode *, int, kauth_cred_t); -#define VOP_GETEXTATTR_DESCOFFSET 43 +#define VOP_GETEXTATTR_DESCOFFSET 45 struct vop_getextattr_args { const struct vnodeop_desc *a_desc; struct vnode *a_vp; @@ -505,7 +525,7 @@ extern const struct vnodeop_desc vop_get int VOP_GETEXTATTR(struct vnode *, int, const char *, struct uio *, size_t *, kauth_cred_t); -#define VOP_LISTEXTATTR_DESCOFFSET 44 +#define VOP_LISTEXTATTR_DESCOFFSET 46 struct vop_listextattr_args { const struct vnodeop_desc *a_desc; struct vnode *a_vp; @@ -519,7 +539,7 @@ extern const struct vnodeop_desc vop_lis int VOP_LISTEXTATTR(struct vnode *, int, struct uio *, size_t *, int, kauth_cred_t); -#define VOP_OPENEXTATTR_DESCOFFSET 45 +#define VOP_OPENEXTATTR_DESCOFFSET 47 struct vop_openextattr_args { const struct vnodeop_desc *a_desc; struct vnode *a_vp; @@ -528,7 +548,7 @@ struct vop_openextattr_args { extern const struct vnodeop_desc vop_openextattr_desc; int VOP_OPENEXTATTR(struct vnode *, kauth_cred_t); -#define VOP_DELETEEXTATTR_DESCOFFSET 46 +#define VOP_DELETEEXTATTR_DESCOFFSET 48 struct vop_deleteextattr_args { const struct vnodeop_desc *a_desc; struct vnode *a_vp; @@ -539,7 +559,7 @@ struct vop_deleteextattr_args { extern const struct vnodeop_desc vop_deleteextattr_desc; int VOP_DELETEEXTATTR(struct vnode *, int, const char *, kauth_cred_t); -#define VOP_SETEXTATTR_DESCOFFSET 47 +#define VOP_SETEXTATTR_DESCOFFSET 49 struct vop_setextattr_args { const struct vnodeop_desc *a_desc; struct vnode *a_vp; @@ -552,6 +572,6 @@ extern const struct vnodeop_desc vop_set int VOP_SETEXTATTR(struct vnode *, int, const char *, struct uio *, kauth_cred_t); -#define VNODE_OPS_COUNT 48 +#define VNODE_OPS_COUNT 50 #endif /* !_SYS_VNODE_IF_H_ */ Added files: Index: src/sys/sys/common_int_const.h diff -u /dev/null src/sys/sys/common_int_const.h:1.1.2.2 --- /dev/null Sun Aug 10 06:56:55 2014 +++ src/sys/sys/common_int_const.h Sun Aug 10 06:56:54 2014 @@ -0,0 +1,62 @@ +/* $NetBSD: common_int_const.h,v 1.1.2.2 2014/08/10 06:56:54 tls Exp $ */ + +/*- + * Copyright (c) 2014 The NetBSD Foundation, Inc. + * All rights reserved. + * + * This code is derived from software contributed to The NetBSD Foundation + * by Joerg Sonnenberger. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _SYS_COMMON_INT_CONST_H_ +#define _SYS_COMMON_INT_CONST_H_ + +#ifndef __INTMAX_C_SUFFIX__ +#error Your compiler does not provide inter constant suffix macros. +#endif + +#define __int_join_(c,suffix) c ## suffix +#define __int_join(c,suffix) __int_join_(c,suffix) +/* + * 7.18.4 Macros for integer constants + */ + +/* 7.18.4.1 Macros for minimum-width integer constants */ + +#define INT8_C(c) __int_join(c, __INT8_C_SUFFIX__) +#define INT16_C(c) __int_join(c, __INT16_C_SUFFIX__) +#define INT32_C(c) __int_join(c, __INT32_C_SUFFIX__) +#define INT64_C(c) __int_join(c, __INT64_C_SUFFIX__) + +#define UINT8_C(c) __int_join(c, __UINT8_C_SUFFIX__) +#define UINT16_C(c) __int_join(c, __UINT16_C_SUFFIX__) +#define UINT32_C(c) __int_join(c, __UINT32_C_SUFFIX__) +#define UINT64_C(c) __int_join(c, __UINT64_C_SUFFIX__) + +/* 7.18.4.2 Macros for greatest-width integer constants */ + +#define INTMAX_C(c) __int_join(c, __INTMAX_C_SUFFIX__) +#define UINTMAX_C(c) __int_join(c, __UINTMAX_C_SUFFIX__) + +#endif /* _SYS_COMMON_INT_CONST_H_ */ Index: src/sys/sys/common_int_fmtio.h diff -u /dev/null src/sys/sys/common_int_fmtio.h:1.1.2.2 --- /dev/null Sun Aug 10 06:56:55 2014 +++ src/sys/sys/common_int_fmtio.h Sun Aug 10 06:56:54 2014 @@ -0,0 +1,230 @@ +/* $NetBSD: common_int_fmtio.h,v 1.1.2.2 2014/08/10 06:56:54 tls Exp $ */ + +/*- + * Copyright (c) 2014 The NetBSD Foundation, Inc. + * All rights reserved. + * + * This code is derived from software contributed to The NetBSD Foundation + * by Joerg Sonnenberger. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _SYS_COMMON_INT_FMTIO_H_ +#define _SYS_COMMON_INT_FMTIO_H_ + +#ifndef __INTPTR_FMTd__ +#error Your compiler does not provide format string macros. +#endif + +/* + * 7.8.1 Macros for format specifiers + */ + +/* fprintf macros for signed integers */ +#define PRId8 __INT8_FMTd__ +#define PRId16 __INT16_FMTd__ +#define PRId32 __INT32_FMTd__ +#define PRId64 __INT64_FMTd__ +#define PRIdLEAST8 __INT_LEAST8_FMTd__ +#define PRIdLEAST16 __INT_LEAST16_FMTd__ +#define PRIdLEAST32 __INT_LEAST32_FMTd__ +#define PRIdLEAST64 __INT_LEAST64_FMTd__ +#define PRIdFAST8 __INT_FAST8_FMTd__ +#define PRIdFAST16 __INT_FAST16_FMTd__ +#define PRIdFAST32 __INT_FAST32_FMTd__ +#define PRIdFAST64 __INT_FAST64_FMTd__ +#define PRIdMAX __INTMAX_FMTd__ +#define PRIdPTR __INTPTR_FMTd__ + +#define PRIi8 __INT8_FMTi__ +#define PRIi16 __INT16_FMTi__ +#define PRIi32 __INT32_FMTi__ +#define PRIi64 __INT64_FMTi__ +#define PRIiLEAST8 __INT_LEAST8_FMTi__ +#define PRIiLEAST16 __INT_LEAST16_FMTi__ +#define PRIiLEAST32 __INT_LEAST32_FMTi__ +#define PRIiLEAST64 __INT_LEAST64_FMTi__ +#define PRIiFAST8 __INT_FAST8_FMTi__ +#define PRIiFAST16 __INT_FAST16_FMTi__ +#define PRIiFAST32 __INT_FAST32_FMTi__ +#define PRIiFAST64 __INT_FAST64_FMTi__ +#define PRIiMAX __INTMAX_FMTi__ +#define PRIiPTR __INTPTR_FMTi__ + +/* fprintf macros for unsigned integers */ + +#define PRIo8 __UINT8_FMTo__ +#define PRIo16 __UINT16_FMTo__ +#define PRIo32 __UINT32_FMTo__ +#define PRIo64 __UINT64_FMTo__ +#define PRIoLEAST8 __UINT_LEAST8_FMTo__ +#define PRIoLEAST16 __UINT_LEAST16_FMTo__ +#define PRIoLEAST32 __UINT_LEAST32_FMTo__ +#define PRIoLEAST64 __UINT_LEAST64_FMTo__ +#define PRIoFAST8 __UINT_FAST8_FMTo__ +#define PRIoFAST16 __UINT_FAST16_FMTo__ +#define PRIoFAST32 __UINT_FAST32_FMTo__ +#define PRIoFAST64 __UINT_FAST64_FMTo__ +#define PRIoMAX __UINTMAX_FMTo__ +#define PRIoPTR __UINTPTR_FMTo__ + +#define PRIu8 __UINT8_FMTu__ +#define PRIu16 __UINT16_FMTu__ +#define PRIu32 __UINT32_FMTu__ +#define PRIu64 __UINT64_FMTu__ +#define PRIuLEAST8 __UINT_LEAST8_FMTu__ +#define PRIuLEAST16 __UINT_LEAST16_FMTu__ +#define PRIuLEAST32 __UINT_LEAST32_FMTu__ +#define PRIuLEAST64 __UINT_LEAST64_FMTu__ +#define PRIuFAST8 __UINT_FAST8_FMTu__ +#define PRIuFAST16 __UINT_FAST16_FMTu__ +#define PRIuFAST32 __UINT_FAST32_FMTu__ +#define PRIuFAST64 __UINT_FAST64_FMTu__ +#define PRIuMAX __UINTMAX_FMTu__ +#define PRIuPTR __UINTPTR_FMTu__ + +#define PRIx8 __UINT8_FMTx__ +#define PRIx16 __UINT16_FMTx__ +#define PRIx32 __UINT32_FMTx__ +#define PRIx64 __UINT64_FMTx__ +#define PRIxLEAST8 __UINT_LEAST8_FMTx__ +#define PRIxLEAST16 __UINT_LEAST16_FMTx__ +#define PRIxLEAST32 __UINT_LEAST32_FMTx__ +#define PRIxLEAST64 __UINT_LEAST64_FMTx__ +#define PRIxFAST8 __UINT_FAST8_FMTx__ +#define PRIxFAST16 __UINT_FAST16_FMTx__ +#define PRIxFAST32 __UINT_FAST32_FMTx__ +#define PRIxFAST64 __UINT_FAST64_FMTx__ +#define PRIxMAX __UINTMAX_FMTx__ +#define PRIxPTR __UINTPTR_FMTx__ + +#define PRIX8 __UINT8_FMTX__ +#define PRIX16 __UINT16_FMTX__ +#define PRIX32 __UINT32_FMTX__ +#define PRIX64 __UINT64_FMTX__ +#define PRIXLEAST8 __UINT_LEAST8_FMTX__ +#define PRIXLEAST16 __UINT_LEAST16_FMTX__ +#define PRIXLEAST32 __UINT_LEAST32_FMTX__ +#define PRIXLEAST64 __UINT_LEAST64_FMTX__ +#define PRIXFAST8 __UINT_FAST8_FMTX__ +#define PRIXFAST16 __UINT_FAST16_FMTX__ +#define PRIXFAST32 __UINT_FAST32_FMTX__ +#define PRIXFAST64 __UINT_FAST64_FMTX__ +#define PRIXMAX __UINTMAX_FMTX__ +#define PRIXPTR __UINTPTR_FMTX__ + +/* fscanf macros for signed integers */ + +#define SCNd8 __INT8_FMTd__ +#define SCNd16 __INT16_FMTd__ +#define SCNd32 __INT32_FMTd__ +#define SCNd64 __INT64_FMTd__ +#define SCNdLEAST8 __INT_LEAST8_FMTd__ +#define SCNdLEAST16 __INT_LEAST16_FMTd__ +#define SCNdLEAST32 __INT_LEAST32_FMTd__ +#define SCNdLEAST64 __INT_LEAST64_FMTd__ +#define SCNdFAST8 __INT_FAST8_FMTd__ +#define SCNdFAST16 __INT_FAST16_FMTd__ +#define SCNdFAST32 __INT_FAST32_FMTd__ +#define SCNdFAST64 __INT_FAST64_FMTd__ +#define SCNdMAX __INTMAX_FMTd__ +#define SCNdPTR __INTPTR_FMTd__ + +#define SCNi8 __INT8_FMTi__ +#define SCNi16 __INT16_FMTi__ +#define SCNi32 __INT32_FMTi__ +#define SCNi64 __INT64_FMTi__ +#define SCNiLEAST8 __INT_LEAST8_FMTi__ +#define SCNiLEAST16 __INT_LEAST16_FMTi__ +#define SCNiLEAST32 __INT_LEAST32_FMTi__ +#define SCNiLEAST64 __INT_LEAST64_FMTi__ +#define SCNiFAST8 __INT_FAST8_FMTi__ +#define SCNiFAST16 __INT_FAST16_FMTi__ +#define SCNiFAST32 __INT_FAST32_FMTi__ +#define SCNiFAST64 __INT_FAST64_FMTi__ +#define SCNiMAX __INTMAX_FMTi__ +#define SCNiPTR __INTPTR_FMTi__ + +/* fscanf macros for unsigned integers */ + +#define SCNo8 __UINT8_FMTo__ +#define SCNo16 __UINT16_FMTo__ +#define SCNo32 __UINT32_FMTo__ +#define SCNo64 __UINT64_FMTo__ +#define SCNoLEAST8 __UINT_LEAST8_FMTo__ +#define SCNoLEAST16 __UINT_LEAST16_FMTo__ +#define SCNoLEAST32 __UINT_LEAST32_FMTo__ +#define SCNoLEAST64 __UINT_LEAST64_FMTo__ +#define SCNoFAST8 __UINT_FAST8_FMTo__ +#define SCNoFAST16 __UINT_FAST16_FMTo__ +#define SCNoFAST32 __UINT_FAST32_FMTo__ +#define SCNoFAST64 __UINT_FAST64_FMTo__ +#define SCNoMAX __UINTMAX_FMTo__ +#define SCNoPTR __UINTPTR_FMTo__ + +#define SCNu8 __UINT8_FMTu__ +#define SCNu16 __UINT16_FMTu__ +#define SCNu32 __UINT32_FMTu__ +#define SCNu64 __UINT64_FMTu__ +#define SCNuLEAST8 __UINT_LEAST8_FMTu__ +#define SCNuLEAST16 __UINT_LEAST16_FMTu__ +#define SCNuLEAST32 __UINT_LEAST32_FMTu__ +#define SCNuLEAST64 __UINT_LEAST64_FMTu__ +#define SCNuFAST8 __UINT_FAST8_FMTu__ +#define SCNuFAST16 __UINT_FAST16_FMTu__ +#define SCNuFAST32 __UINT_FAST32_FMTu__ +#define SCNuFAST64 __UINT_FAST64_FMTu__ +#define SCNuMAX __UINTMAX_FMTu__ +#define SCNuPTR __UINTPTR_FMTu__ + +#define SCNx8 __UINT8_FMTx__ +#define SCNx16 __UINT16_FMTx__ +#define SCNx32 __UINT32_FMTx__ +#define SCNx64 __UINT64_FMTx__ +#define SCNxLEAST8 __UINT_LEAST8_FMTx__ +#define SCNxLEAST16 __UINT_LEAST16_FMTx__ +#define SCNxLEAST32 __UINT_LEAST32_FMTx__ +#define SCNxLEAST64 __UINT_LEAST64_FMTx__ +#define SCNxFAST8 __UINT_FAST8_FMTx__ +#define SCNxFAST16 __UINT_FAST16_FMTx__ +#define SCNxFAST32 __UINT_FAST32_FMTx__ +#define SCNxFAST64 __UINT_FAST64_FMTx__ +#define SCNxMAX __UINTMAX_FMTx__ +#define SCNxPTR __UINTPTR_FMTx__ + +#define SCNX8 __UINT8_FMTX__ +#define SCNX16 __UINT16_FMTX__ +#define SCNX32 __UINT32_FMTX__ +#define SCNX64 __UINT64_FMTX__ +#define SCNXLEAST8 __UINT_LEAST8_FMTX__ +#define SCNXLEAST16 __UINT_LEAST16_FMTX__ +#define SCNXLEAST32 __UINT_LEAST32_FMTX__ +#define SCNXLEAST64 __UINT_LEAST64_FMTX__ +#define SCNXFAST8 __UINT_FAST8_FMTX__ +#define SCNXFAST16 __UINT_FAST16_FMTX__ +#define SCNXFAST32 __UINT_FAST32_FMTX__ +#define SCNXFAST64 __UINT_FAST64_FMTX__ +#define SCNXMAX __UINTMAX_FMTX__ +#define SCNXPTR __UINTPTR_FMTX__ + +#endif /* _SYS_COMMON_INT_FMTIO_H_ */ Index: src/sys/sys/common_int_limits.h diff -u /dev/null src/sys/sys/common_int_limits.h:1.1.2.2 --- /dev/null Sun Aug 10 06:56:55 2014 +++ src/sys/sys/common_int_limits.h Sun Aug 10 06:56:54 2014 @@ -0,0 +1,130 @@ +/* $NetBSD: common_int_limits.h,v 1.1.2.2 2014/08/10 06:56:54 tls Exp $ */ + +/*- + * Copyright (c) 2014 The NetBSD Foundation, Inc. + * All rights reserved. + * + * This code is derived from software contributed to The NetBSD Foundation + * by Joerg Sonnenberger. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _SYS_COMMON_INT_LIMITS_H_ +#define _SYS_COMMON_INT_LIMITS_H_ + +#ifndef __SIG_ATOMIC_MAX__ +#error Your compiler does not provide limit macros. +#endif + +/* + * 7.18.2 Limits of specified-width integer types + */ + +/* 7.18.2.1 Limits of exact-width integer types */ + +/* minimum values of exact-width signed integer types */ +#define INT8_MIN (-__INT8_MAX__-1) +#define INT16_MIN (-__INT16_MAX__-1) +#define INT32_MIN (-__INT32_MAX__-1) +#define INT64_MIN (-__INT64_MAX__-1) + +/* maximum values of exact-width signed integer types */ +#define INT8_MAX __INT8_MAX__ +#define INT16_MAX __INT16_MAX__ +#define INT32_MAX __INT32_MAX__ +#define INT64_MAX __INT64_MAX__ + +/* maximum values of exact-width unsigned integer types */ +#define UINT8_MAX __UINT8_MAX__ +#define UINT16_MAX __UINT16_MAX__ +#define UINT32_MAX __UINT32_MAX__ +#define UINT64_MAX __UINT64_MAX__ + +/* 7.18.2.2 Limits of minimum-width integer types */ + +/* minimum values of minimum-width signed integer types */ +#define INT_LEAST8_MIN (-__INT_LEAST8_MAX__-1) +#define INT_LEAST16_MIN (-__INT_LEAST16_MAX__-1) +#define INT_LEAST32_MIN (-__INT_LEAST32_MAX__-1) +#define INT_LEAST64_MIN (-__INT_LEAST64_MAX__-1) + +/* maximum values of minimum-width signed integer types */ +#define INT_LEAST8_MAX __INT_LEAST8_MAX__ +#define INT_LEAST16_MAX __INT_LEAST16_MAX__ +#define INT_LEAST32_MAX __INT_LEAST32_MAX__ +#define INT_LEAST64_MAX __INT_LEAST64_MAX__ + +/* maximum values of minimum-width unsigned integer types */ +#define UINT_LEAST8_MAX __UINT_LEAST8_MAX__ +#define UINT_LEAST16_MAX __UINT_LEAST16_MAX__ +#define UINT_LEAST32_MAX __UINT_LEAST32_MAX__ +#define UINT_LEAST64_MAX __UINT_LEAST64_MAX__ + +/* 7.18.2.3 Limits of fastest minimum-width integer types */ + +/* minimum values of fastest minimum-width signed integer types */ +#define INT_FAST8_MIN (-__INT_FAST8_MAX__-1) +#define INT_FAST16_MIN (-__INT_FAST16_MAX__-1) +#define INT_FAST32_MIN (-__INT_FAST32_MAX__-1) +#define INT_FAST64_MIN (-__INT_FAST64_MAX__-1) + +/* maximum values of fastest minimum-width signed integer types */ +#define INT_FAST8_MAX __INT_FAST8_MAX__ +#define INT_FAST16_MAX __INT_FAST16_MAX__ +#define INT_FAST32_MAX __INT_FAST32_MAX__ +#define INT_FAST64_MAX __INT_FAST64_MAX__ + +/* maximum values of fastest minimum-width unsigned integer types */ +#define UINT_FAST8_MAX __UINT_FAST8_MAX__ +#define UINT_FAST16_MAX __UINT_FAST16_MAX__ +#define UINT_FAST32_MAX __UINT_FAST32_MAX__ +#define UINT_FAST64_MAX __UINT_FAST64_MAX__ + +/* 7.18.2.4 Limits of integer types capable of holding object pointers */ +#define INTPTR_MIN (-__INTPTR_MAX__-1) +#define INTPTR_MAX __INTPTR_MAX__ +#define UINTPTR_MAX __UINTPTR_MAX__ + +/* 7.18.2.5 Limits of greatest-width integer types */ + +#define INTMAX_MIN (-__INTMAX_MAX__-1) +#define INTMAX_MAX __INTMAX_MAX__ +#define UINTMAX_MAX __UINTMAX_MAX__ + + +/* + * 7.18.3 Limits of other integer types + */ + +/* limits of ptrdiff_t */ +#define PTRDIFF_MIN (-__PTRDIFF_MAX__-1) +#define PTRDIFF_MAX __PTRDIFF_MAX__ + +/* limits of sig_atomic_t */ +#define SIG_ATOMIC_MIN (-__SIG_ATOMIC_MAX__-1) +#define SIG_ATOMIC_MAX __SIG_ATOMIC_MAX__ + +/* limit of size_t */ +#define SIZE_MAX __SIZE_MAX__ + +#endif /* _SYS_COMMON_INT_LIMITS_H_ */ Index: src/sys/sys/common_int_mwgwtypes.h diff -u /dev/null src/sys/sys/common_int_mwgwtypes.h:1.1.2.2 --- /dev/null Sun Aug 10 06:56:55 2014 +++ src/sys/sys/common_int_mwgwtypes.h Sun Aug 10 06:56:54 2014 @@ -0,0 +1,69 @@ +/* $NetBSD: common_int_mwgwtypes.h,v 1.1.2.2 2014/08/10 06:56:54 tls Exp $ */ + +/*- + * Copyright (c) 2014 The NetBSD Foundation, Inc. + * All rights reserved. + * + * This code is derived from software contributed to The NetBSD Foundation + * by Joerg Sonnenberger. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _SYS_COMMON_INT_MWGWTYPES_H_ +#define _SYS_COMMON_INT_MWGWTYPES_H_ + +#ifndef __UINT_FAST64_TYPE__ +#error Your compiler does not provide min/fast width type macros. +#endif + +/* + * 7.18.1 Integer types + */ + +/* 7.18.1.2 Minimum-width integer types */ + +typedef __INT_LEAST8_TYPE__ int_least8_t; +typedef __UINT_LEAST8_TYPE__ uint_least8_t; +typedef __INT_LEAST16_TYPE__ int_least16_t; +typedef __UINT_LEAST16_TYPE__ uint_least16_t; +typedef __INT_LEAST32_TYPE__ int_least32_t; +typedef __UINT_LEAST32_TYPE__ uint_least32_t; +typedef __INT_LEAST64_TYPE__ int_least64_t; +typedef __UINT_LEAST64_TYPE__ uint_least64_t; + +/* 7.18.1.3 Fastest minimum-width integer types */ +typedef __INT_FAST8_TYPE__ int_fast8_t; +typedef __UINT_FAST8_TYPE__ uint_fast8_t; +typedef __INT_FAST16_TYPE__ int_fast16_t; +typedef __UINT_FAST16_TYPE__ uint_fast16_t; +typedef __INT_FAST32_TYPE__ int_fast32_t; +typedef __UINT_FAST32_TYPE__ uint_fast32_t; +typedef __INT_FAST64_TYPE__ int_fast64_t; +typedef __UINT_FAST64_TYPE__ uint_fast64_t; + +/* 7.18.1.5 Greatest-width integer types */ + +typedef __INTMAX_TYPE__ intmax_t; +typedef __UINTMAX_TYPE__ uintmax_t; + +#endif /* _SYS_COMMON_INT_MWGWTYPES_H_ */ Index: src/sys/sys/common_int_types.h diff -u /dev/null src/sys/sys/common_int_types.h:1.1.2.2 --- /dev/null Sun Aug 10 06:56:55 2014 +++ src/sys/sys/common_int_types.h Sun Aug 10 06:56:54 2014 @@ -0,0 +1,61 @@ +/* $NetBSD: common_int_types.h,v 1.1.2.2 2014/08/10 06:56:54 tls Exp $ */ + +/*- + * Copyright (c) 2014 The NetBSD Foundation, Inc. + * All rights reserved. + * + * This code is derived from software contributed to The NetBSD Foundation + * by Joerg Sonnenberger. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _SYS_COMMON_INT_TYPES_H_ +#define _SYS_COMMON_INT_TYPES_H_ + +#ifndef __UINTPTR_TYPE__ +#error Your compiler does not provide exact width type macros. +#endif + +/* + * 7.18.1 Integer types + */ + +/* 7.18.1.1 Exact-width integer types */ + +typedef __INT8_TYPE__ __int8_t; +typedef __UINT8_TYPE__ __uint8_t; +typedef __INT16_TYPE__ __int16_t; +typedef __UINT16_TYPE__ __uint16_t; +typedef __INT32_TYPE__ __int32_t; +typedef __UINT32_TYPE__ __uint32_t; +typedef __INT64_TYPE__ __int64_t; +typedef __UINT64_TYPE__ __uint64_t; + +#define __BIT_TYPES_DEFINED__ + +/* 7.18.1.4 Integer types capable of holding object pointers */ + +typedef __INTPTR_TYPE__ __intptr_t; +typedef __UINTPTR_TYPE__ __uintptr_t; + +#endif /* _SYS_COMMON_INT_TYPES_H_ */ Index: src/sys/sys/ipi.h diff -u /dev/null src/sys/sys/ipi.h:1.2.2.2 --- /dev/null Sun Aug 10 06:56:55 2014 +++ src/sys/sys/ipi.h Sun Aug 10 06:56:54 2014 @@ -0,0 +1,77 @@ +/* $NetBSD: ipi.h,v 1.2.2.2 2014/08/10 06:56:54 tls Exp $ */ + +/*- + * Copyright (c) 2014 The NetBSD Foundation, Inc. + * All rights reserved. + * + * This code is derived from software contributed to The NetBSD Foundation + * by Mindaugas Rasiukevicius. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _SYS_IPI_H_ +#define _SYS_IPI_H_ + +#if !defined(_KERNEL) && !defined(_KMEMUSER) +#error "not supposed to be exposed to userland" +#endif + +typedef void (*ipi_func_t)(void *); + +typedef struct { + /* Public: function handler and an argument. */ + ipi_func_t func; + void * arg; + + /* Private (internal) elements. */ + volatile u_int _pending; +} ipi_msg_t; + +/* + * Internal constants and implementation hooks. + * + * IPI_MAXREG: the maximum number of asynchronous handlers which can + * be registered on the system (normally, this should not be high). + */ +#define IPI_MAXREG 32 + +#define IPI_BITW_SHIFT 5 +#define IPI_BITW_MASK (32 - 1) +#define IPI_BITWORDS (IPI_MAXREG >> IPI_BITW_SHIFT) + +void ipi_sysinit(void); +void ipi_cpu_handler(void); +void cpu_ipi(struct cpu_info *); + +/* Public interface: asynchronous IPIs. */ +u_int ipi_register(ipi_func_t, void *); +void ipi_unregister(u_int); +void ipi_trigger(u_int, struct cpu_info *); + +/* Public interface: synchronous IPIs. */ +void ipi_unicast(ipi_msg_t *, struct cpu_info *); +void ipi_multicast(ipi_msg_t *, const kcpuset_t *); +void ipi_broadcast(ipi_msg_t *); +void ipi_wait(ipi_msg_t *); + +#endif