From 46aa3347cb72a78253d66cee79e17413af61804c Mon Sep 17 00:00:00 2001 From: Poul-Henning Kamp Date: Fri, 27 Oct 2000 11:45:49 +0000 Subject: [PATCH] Convert all users of fldoff() to offsetof(). fldoff() is bad because it only takes a struct tag which makes it impossible to use unions, typedefs etc. Define __offsetof() in Define offsetof() in terms of __offsetof() in and Remove myriad of local offsetof() definitions. Remove includes of in kernel code. NB: Kernelcode should *never* include from /usr/include ! Make include to avoid polluting the API. Deprecate with a warning. The warning turns into an error on 01-12-2000 and the file gets removed entirely on 01-01-2001. Paritials reviews by: various. Significant brucifications by: bde --- include/stddef.h | 4 +++- include/struct.h | 6 ++++++ sys/alpha/alpha/machdep.c | 2 -- sys/alpha/include/ansi.h | 5 +++++ sys/amd64/amd64/machdep.c | 2 -- sys/amd64/amd64/tsc.c | 2 +- sys/amd64/conf/GENERIC.hints | 2 +- sys/amd64/isa/clock.c | 2 +- sys/cam/scsi/scsi_targ_bh.c | 1 - sys/cam/scsi/scsi_target.c | 1 - sys/dev/aac/aac.c | 8 ++++---- sys/dev/aac/aacvar.h | 7 ------- sys/dev/advansys/adwcam.c | 1 - sys/dev/ahb/ahb.c | 2 -- sys/dev/dpt/dpt_scsi.c | 2 -- sys/dev/mly/mly.c | 9 +++------ sys/dev/sound/midi/midisynth.c | 1 - sys/dev/sym/sym_hipd.c | 4 ---- sys/dev/wds/wd7000.c | 4 ---- sys/gnu/ext2fs/ext2_lookup.c | 2 -- sys/gnu/fs/ext2fs/ext2_lookup.c | 2 -- sys/i386/conf/GENERIC.hints | 2 +- sys/i386/i386/machdep.c | 2 -- sys/i386/i386/tsc.c | 2 +- sys/i386/include/ansi.h | 5 +++++ sys/i386/isa/clock.c | 2 +- sys/ia64/ia64/machdep.c | 2 -- sys/ia64/include/ansi.h | 5 +++++ sys/isa/atrtc.c | 2 +- sys/kern/kern_ktrace.c | 3 --- sys/kern/subr_diskslice.c | 2 -- sys/kern/sysv_sem.c | 4 ---- sys/kern/uipc_usrreq.c | 1 - sys/net/if_stf.c | 4 ---- sys/netinet/in_gif.c | 4 ---- sys/netinet/ip_input.c | 2 -- sys/netinet/tcp_output.c | 2 -- sys/netinet/tcp_subr.c | 1 - sys/netinet/tcp_timewait.c | 1 - sys/netinet/udp_usrreq.c | 1 - sys/netinet6/frag6.c | 4 ---- sys/netinet6/icmp6.c | 4 +--- sys/netinet6/in6_gif.c | 4 ---- sys/netinet6/in6_proto.c | 2 -- sys/netinet6/raw_ip6.c | 4 ---- sys/netkey/key.c | 3 --- sys/pc98/i386/machdep.c | 2 -- sys/pc98/pc98/machdep.c | 2 -- sys/pci/ncr.c | 2 -- sys/sys/queue.h | 17 ++++------------- sys/sys/types.h | 5 ++--- 51 files changed, 45 insertions(+), 120 deletions(-) diff --git a/include/stddef.h b/include/stddef.h index 38a773636a7..feeebc90f78 100644 --- a/include/stddef.h +++ b/include/stddef.h @@ -31,6 +31,8 @@ * SUCH DAMAGE. * * @(#)stddef.h 8.1 (Berkeley) 6/2/93 + * + * $FreeBSD$ */ #ifndef _STDDEF_H_ @@ -61,6 +63,6 @@ typedef _BSD_WCHAR_T_ wchar_t; #define NULL 0 #endif -#define offsetof(type, member) ((size_t)(&((type *)0)->member)) +#define offsetof(type, member) __offsetof(type, member) #endif /* _STDDEF_H_ */ diff --git a/include/struct.h b/include/struct.h index f80ecd07713..c32ec28e64e 100644 --- a/include/struct.h +++ b/include/struct.h @@ -31,11 +31,17 @@ * SUCH DAMAGE. * * @(#)struct.h 8.1 (Berkeley) 6/2/93 + * + * $FreeBSD$ */ #ifndef _STRUCT_H_ #define _STRUCT_H_ +#if __GNUC__ +#warning "this file includes which is deprecated, use instead" +#endif + /* Offset of the field in the structure. */ #define fldoff(name, field) \ ((int)&(((struct name *)0)->field)) diff --git a/sys/alpha/alpha/machdep.c b/sys/alpha/alpha/machdep.c index 47d9951e362..0cf74e537a7 100644 --- a/sys/alpha/alpha/machdep.c +++ b/sys/alpha/alpha/machdep.c @@ -231,8 +231,6 @@ static vm_offset_t buffer_sva, buffer_eva; vm_offset_t clean_sva, clean_eva; static vm_offset_t pager_sva, pager_eva; -#define offsetof(type, member) ((size_t)(&((type *)0)->member)) - /* * Hooked into the shutdown chain; if the system is to be halted, * unconditionally drop back to the SRM console. diff --git a/sys/alpha/include/ansi.h b/sys/alpha/include/ansi.h index f9b1f424114..9eaf663e069 100644 --- a/sys/alpha/include/ansi.h +++ b/sys/alpha/include/ansi.h @@ -105,6 +105,11 @@ typedef struct { #define _BSD_CLK_TCK_ 100 #define _BSD_CLOCKS_PER_SEC_ 100 +/* + * We define this here since both and needs it. + */ +#define __offsetof(type, field) ((size_t)(&((type *)0)->field)) + /* * Internal names for basic integral types. Omit the typedef if * not possible for a machine/compiler combination. diff --git a/sys/amd64/amd64/machdep.c b/sys/amd64/amd64/machdep.c index 62c698ba621..1d15d394d4b 100644 --- a/sys/amd64/amd64/machdep.c +++ b/sys/amd64/amd64/machdep.c @@ -250,8 +250,6 @@ struct cpuhead cpuhead; MUTEX_DECLARE(,sched_lock); MUTEX_DECLARE(,Giant); -#define offsetof(type, member) ((size_t)(&((type *)0)->member)) - static void cpu_startup(dummy) void *dummy; diff --git a/sys/amd64/amd64/tsc.c b/sys/amd64/amd64/tsc.c index 1ad7bf454ec..8a84bf86d38 100644 --- a/sys/amd64/amd64/tsc.c +++ b/sys/amd64/amd64/tsc.c @@ -189,7 +189,7 @@ SYSCTL_OPAQUE(_debug, OID_AUTO, tsc_timecounter, CTLFLAG_RD, static struct timecounter i8254_timecounter = { i8254_get_timecount, /* get_timecount */ 0, /* no poll_pps */ - ~0u, /* counter_mask */ + 0x1ffff, /* counter_mask */ 0, /* frequency */ "i8254" /* name */ }; diff --git a/sys/amd64/conf/GENERIC.hints b/sys/amd64/conf/GENERIC.hints index 652faa9e2b4..9603f4b682a 100644 --- a/sys/amd64/conf/GENERIC.hints +++ b/sys/amd64/conf/GENERIC.hints @@ -32,7 +32,7 @@ hint.npx.0.at="nexus" hint.npx.0.port="0x0F0" hint.npx.0.irq="13" hint.apm.0.at="nexus" -hint.apm.0.disabled="1" +#hint.apm.0.disabled="1" hint.apm.0.flags="0x20" hint.pcic.0.at="isa" # hint.pcic.0.irq="10" # Default to polling diff --git a/sys/amd64/isa/clock.c b/sys/amd64/isa/clock.c index 1ad7bf454ec..8a84bf86d38 100644 --- a/sys/amd64/isa/clock.c +++ b/sys/amd64/isa/clock.c @@ -189,7 +189,7 @@ SYSCTL_OPAQUE(_debug, OID_AUTO, tsc_timecounter, CTLFLAG_RD, static struct timecounter i8254_timecounter = { i8254_get_timecount, /* get_timecount */ 0, /* no poll_pps */ - ~0u, /* counter_mask */ + 0x1ffff, /* counter_mask */ 0, /* frequency */ "i8254" /* name */ }; diff --git a/sys/cam/scsi/scsi_targ_bh.c b/sys/cam/scsi/scsi_targ_bh.c index d3ceffa5a95..e8da3529cbb 100644 --- a/sys/cam/scsi/scsi_targ_bh.c +++ b/sys/cam/scsi/scsi_targ_bh.c @@ -27,7 +27,6 @@ * * $FreeBSD$ */ -#include /* For offsetof */ #include #include diff --git a/sys/cam/scsi/scsi_target.c b/sys/cam/scsi/scsi_target.c index 686a90aad84..91a2d3a7cb6 100644 --- a/sys/cam/scsi/scsi_target.c +++ b/sys/cam/scsi/scsi_target.c @@ -27,7 +27,6 @@ * * $FreeBSD$ */ -#include /* For offsetof */ #include #include diff --git a/sys/dev/aac/aac.c b/sys/dev/aac/aac.c index 938db5119f8..87cc9aefe76 100644 --- a/sys/dev/aac/aac.c +++ b/sys/dev/aac/aac.c @@ -1124,12 +1124,12 @@ aac_init(struct aac_softc *sc) ip = &sc->aac_common->ac_init; ip->InitStructRevision = AAC_INIT_STRUCT_REVISION; - ip->AdapterFibsPhysicalAddress = sc->aac_common_busaddr + fldoff(aac_common, ac_fibs); + ip->AdapterFibsPhysicalAddress = sc->aac_common_busaddr + offsetof(struct aac_common, ac_fibs); ip->AdapterFibsVirtualAddress = &sc->aac_common->ac_fibs[0]; ip->AdapterFibsSize = AAC_ADAPTER_FIBS * sizeof(struct aac_fib); ip->AdapterFibAlign = sizeof(struct aac_fib); - ip->PrintfBufferAddress = sc->aac_common_busaddr + fldoff(aac_common, ac_printf); + ip->PrintfBufferAddress = sc->aac_common_busaddr + offsetof(struct aac_common, ac_printf); ip->PrintfBufferSize = AAC_PRINTF_BUFSIZE; ip->HostPhysMemPages = 0; /* not used? */ @@ -1191,7 +1191,7 @@ aac_init(struct aac_softc *sc) * Give the init structure to the controller. */ if (aac_sync_command(sc, AAC_MONKER_INITSTRUCT, - sc->aac_common_busaddr + fldoff(aac_common, ac_init), + sc->aac_common_busaddr + offsetof(struct aac_common, ac_init), 0, 0, 0, NULL)) { device_printf(sc->aac_dev, "error establishing init structure\n"); return(EIO); @@ -1266,7 +1266,7 @@ aac_sync_fib(struct aac_softc *sc, u_int32_t command, u_int32_t xferstate, fib->Header.Size = sizeof(struct aac_fib) + datasize; fib->Header.SenderSize = sizeof(struct aac_fib); fib->Header.SenderFibAddress = (u_int32_t)fib; - fib->Header.ReceiverFibAddress = sc->aac_common_busaddr + fldoff(aac_common, ac_sync_fib); + fib->Header.ReceiverFibAddress = sc->aac_common_busaddr + offsetof(struct aac_common, ac_sync_fib); /* * Copy in data. diff --git a/sys/dev/aac/aacvar.h b/sys/dev/aac/aacvar.h index e65dd66309e..f70cb6480ff 100644 --- a/sys/dev/aac/aacvar.h +++ b/sys/dev/aac/aacvar.h @@ -336,13 +336,6 @@ struct aac_code_lookup { u_int32_t code; }; -/* - * Borrowed from - */ -/* Offset of the field in the structure. */ -#define fldoff(name, field) \ - ((int)&(((struct name *)0)->field)) - /******************************************************************************** * Queue primitives * diff --git a/sys/dev/advansys/adwcam.c b/sys/dev/advansys/adwcam.c index 95777a64971..77c1718a8ce 100644 --- a/sys/dev/advansys/adwcam.c +++ b/sys/dev/advansys/adwcam.c @@ -44,7 +44,6 @@ * code retain the above copyright notice and this comment without * modification. */ -#include /* For offsetof */ #include #include diff --git a/sys/dev/ahb/ahb.c b/sys/dev/ahb/ahb.c index 0388b3ed9cc..9fc15a4b9cb 100644 --- a/sys/dev/ahb/ahb.c +++ b/sys/dev/ahb/ahb.c @@ -28,8 +28,6 @@ * $FreeBSD$ */ -#include /* For offsetof() */ - #include #include #include diff --git a/sys/dev/dpt/dpt_scsi.c b/sys/dev/dpt/dpt_scsi.c index 7b5fd94dc57..9fa12e5f542 100644 --- a/sys/dev/dpt/dpt_scsi.c +++ b/sys/dev/dpt/dpt_scsi.c @@ -54,8 +54,6 @@ #include #include -#include /* For offsetof */ - #include #include diff --git a/sys/dev/mly/mly.c b/sys/dev/mly/mly.c index 15073f4e4a9..91cec9c8a1e 100644 --- a/sys/dev/mly/mly.c +++ b/sys/dev/mly/mly.c @@ -42,9 +42,6 @@ #include -/* XXX: This is not where we should get fldoff() from. */ -#include - #include #include #define MLY_DEFINE_TABLES @@ -442,9 +439,9 @@ mly_enable_mmbox(struct mly_softc *sc) bzero(&mci, sizeof(mci)); mci.sub_ioctl = MDACIOCTL_SETMEMORYMAILBOX; /* set buffer addresses */ - mci.param.setmemorymailbox.command_mailbox_physaddr = sc->mly_mmbox_busaddr + fldoff(mly_mmbox, mmm_command); - mci.param.setmemorymailbox.status_mailbox_physaddr = sc->mly_mmbox_busaddr + fldoff(mly_mmbox, mmm_status); - mci.param.setmemorymailbox.health_buffer_physaddr = sc->mly_mmbox_busaddr + fldoff(mly_mmbox, mmm_health); + mci.param.setmemorymailbox.command_mailbox_physaddr = sc->mly_mmbox_busaddr + offsetof(struct mly_mmbox, mmm_command); + mci.param.setmemorymailbox.status_mailbox_physaddr = sc->mly_mmbox_busaddr + offsetof(struct mly_mmbox, mmm_status); + mci.param.setmemorymailbox.health_buffer_physaddr = sc->mly_mmbox_busaddr + offsetof(struct mly_mmbox, mmm_health); /* set buffer sizes - abuse of data_size field is revolting */ sp = (u_int8_t *)&mci.data_size; diff --git a/sys/dev/sound/midi/midisynth.c b/sys/dev/sound/midi/midisynth.c index 42a2a7ee5d7..0c6dd8a3a81 100644 --- a/sys/dev/sound/midi/midisynth.c +++ b/sys/dev/sound/midi/midisynth.c @@ -34,7 +34,6 @@ * midi messages, and vice versa. */ -#include #include #define TYPEDRANGE(type, x, lower, upper) \ diff --git a/sys/dev/sym/sym_hipd.c b/sys/dev/sym/sym_hipd.c index fa6fcc2c203..45f148abd3b 100644 --- a/sys/dev/sym/sym_hipd.c +++ b/sys/dev/sym/sym_hipd.c @@ -62,7 +62,6 @@ /* #define SYM_DEBUG_GENERIC_SUPPORT */ #include -#include /* For offsetof */ #include /* @@ -393,9 +392,6 @@ static __inline struct sym_quehead *sym_remque_tail(struct sym_quehead *head) /* * These ones should have been already defined. */ -#ifndef offsetof -#define offsetof(t, m) ((size_t) (&((t *)0)->m)) -#endif #ifndef MIN #define MIN(a, b) (((a) < (b)) ? (a) : (b)) #endif diff --git a/sys/dev/wds/wd7000.c b/sys/dev/wds/wd7000.c index abba71d3bf3..c09532a8caa 100644 --- a/sys/dev/wds/wd7000.c +++ b/sys/dev/wds/wd7000.c @@ -159,10 +159,6 @@ #include #include -/* somehow offsetof() was lost in FreeBSD 5.0, so declare it */ -#undef offsetof -#define offsetof(type, field) ( (int)( &((type *)0)->field ) ) - #define WDSTOPHYS(wp, a) ( ((u_long)a) - ((u_long)wp->dx) + ((u_long)wp->dx_p) ) #define WDSTOVIRT(wp, a) ( ((char *)a) - ((char*)wp->dx_p) + ((char *)wp->dx) ) diff --git a/sys/gnu/ext2fs/ext2_lookup.c b/sys/gnu/ext2fs/ext2_lookup.c index 7909a6c31e8..4804ff1fe67 100644 --- a/sys/gnu/ext2fs/ext2_lookup.c +++ b/sys/gnu/ext2fs/ext2_lookup.c @@ -46,8 +46,6 @@ * @(#)ufs_lookup.c 8.6 (Berkeley) 4/1/94 */ -#include - #include #include #include diff --git a/sys/gnu/fs/ext2fs/ext2_lookup.c b/sys/gnu/fs/ext2fs/ext2_lookup.c index 7909a6c31e8..4804ff1fe67 100644 --- a/sys/gnu/fs/ext2fs/ext2_lookup.c +++ b/sys/gnu/fs/ext2fs/ext2_lookup.c @@ -46,8 +46,6 @@ * @(#)ufs_lookup.c 8.6 (Berkeley) 4/1/94 */ -#include - #include #include #include diff --git a/sys/i386/conf/GENERIC.hints b/sys/i386/conf/GENERIC.hints index 652faa9e2b4..9603f4b682a 100644 --- a/sys/i386/conf/GENERIC.hints +++ b/sys/i386/conf/GENERIC.hints @@ -32,7 +32,7 @@ hint.npx.0.at="nexus" hint.npx.0.port="0x0F0" hint.npx.0.irq="13" hint.apm.0.at="nexus" -hint.apm.0.disabled="1" +#hint.apm.0.disabled="1" hint.apm.0.flags="0x20" hint.pcic.0.at="isa" # hint.pcic.0.irq="10" # Default to polling diff --git a/sys/i386/i386/machdep.c b/sys/i386/i386/machdep.c index 62c698ba621..1d15d394d4b 100644 --- a/sys/i386/i386/machdep.c +++ b/sys/i386/i386/machdep.c @@ -250,8 +250,6 @@ struct cpuhead cpuhead; MUTEX_DECLARE(,sched_lock); MUTEX_DECLARE(,Giant); -#define offsetof(type, member) ((size_t)(&((type *)0)->member)) - static void cpu_startup(dummy) void *dummy; diff --git a/sys/i386/i386/tsc.c b/sys/i386/i386/tsc.c index 1ad7bf454ec..8a84bf86d38 100644 --- a/sys/i386/i386/tsc.c +++ b/sys/i386/i386/tsc.c @@ -189,7 +189,7 @@ SYSCTL_OPAQUE(_debug, OID_AUTO, tsc_timecounter, CTLFLAG_RD, static struct timecounter i8254_timecounter = { i8254_get_timecount, /* get_timecount */ 0, /* no poll_pps */ - ~0u, /* counter_mask */ + 0x1ffff, /* counter_mask */ 0, /* frequency */ "i8254" /* name */ }; diff --git a/sys/i386/include/ansi.h b/sys/i386/include/ansi.h index 65ab84fff75..f01fe5e07dc 100644 --- a/sys/i386/include/ansi.h +++ b/sys/i386/include/ansi.h @@ -92,6 +92,11 @@ #define _BSD_CLK_TCK_ 128 #define _BSD_CLOCKS_PER_SEC_ 128 +/* + * We define this here since both and needs it. + */ +#define __offsetof(type, field) ((size_t)(&((type *)0)->field)) + /* * Typedefs for especially magic types. #define's wouldn't work in the * __GNUC__ case, since __attribute__(()) only works in certain contexts. diff --git a/sys/i386/isa/clock.c b/sys/i386/isa/clock.c index 1ad7bf454ec..8a84bf86d38 100644 --- a/sys/i386/isa/clock.c +++ b/sys/i386/isa/clock.c @@ -189,7 +189,7 @@ SYSCTL_OPAQUE(_debug, OID_AUTO, tsc_timecounter, CTLFLAG_RD, static struct timecounter i8254_timecounter = { i8254_get_timecount, /* get_timecount */ 0, /* no poll_pps */ - ~0u, /* counter_mask */ + 0x1ffff, /* counter_mask */ 0, /* frequency */ "i8254" /* name */ }; diff --git a/sys/ia64/ia64/machdep.c b/sys/ia64/ia64/machdep.c index 434f0125c99..0fae55189cd 100644 --- a/sys/ia64/ia64/machdep.c +++ b/sys/ia64/ia64/machdep.c @@ -164,8 +164,6 @@ static vm_offset_t buffer_sva, buffer_eva; vm_offset_t clean_sva, clean_eva; static vm_offset_t pager_sva, pager_eva; -#define offsetof(type, member) ((size_t)(&((type *)0)->member)) - static void cpu_startup(dummy) void *dummy; diff --git a/sys/ia64/include/ansi.h b/sys/ia64/include/ansi.h index c5ef23de318..c4e1156a155 100644 --- a/sys/ia64/include/ansi.h +++ b/sys/ia64/include/ansi.h @@ -100,6 +100,11 @@ #define _BSD_CLK_TCK_ 100 #define _BSD_CLOCKS_PER_SEC_ 100 +/* + * We define this here since both and needs it. + */ +#define __offsetof(type, field) ((size_t)(&((type *)0)->field)) + /* * Internal names for basic integral types. Omit the typedef if * not possible for a machine/compiler combination. diff --git a/sys/isa/atrtc.c b/sys/isa/atrtc.c index 1ad7bf454ec..8a84bf86d38 100644 --- a/sys/isa/atrtc.c +++ b/sys/isa/atrtc.c @@ -189,7 +189,7 @@ SYSCTL_OPAQUE(_debug, OID_AUTO, tsc_timecounter, CTLFLAG_RD, static struct timecounter i8254_timecounter = { i8254_get_timecount, /* get_timecount */ 0, /* no poll_pps */ - ~0u, /* counter_mask */ + 0x1ffff, /* counter_mask */ 0, /* frequency */ "i8254" /* name */ }; diff --git a/sys/kern/kern_ktrace.c b/sys/kern/kern_ktrace.c index e51f8d10fee..7d2e75a1d44 100644 --- a/sys/kern/kern_ktrace.c +++ b/sys/kern/kern_ktrace.c @@ -49,9 +49,6 @@ #include #include - -#include - static MALLOC_DEFINE(M_KTRACE, "KTRACE", "KTRACE"); #ifdef KTRACE diff --git a/sys/kern/subr_diskslice.c b/sys/kern/subr_diskslice.c index eed211c84a2..25a88be6c11 100644 --- a/sys/kern/subr_diskslice.c +++ b/sys/kern/subr_diskslice.c @@ -46,8 +46,6 @@ * $FreeBSD$ */ -#include - #include #include #include diff --git a/sys/kern/sysv_sem.c b/sys/kern/sysv_sem.c index 7d78bfd8c97..3d4fbdd2b77 100644 --- a/sys/kern/sysv_sem.c +++ b/sys/kern/sysv_sem.c @@ -106,10 +106,6 @@ struct sem_undo { * SEMUSZ is properly aligned. */ -#ifndef offsetof -#define offsetof(type, member) ((size_t)(&((type *)0)->member)) -#endif - #define SEM_ALIGN(bytes) (((bytes) + (sizeof(long) - 1)) & ~(sizeof(long) - 1)) /* actual size of an undo structure */ diff --git a/sys/kern/uipc_usrreq.c b/sys/kern/uipc_usrreq.c index 0e028e76303..d77b67bb744 100644 --- a/sys/kern/uipc_usrreq.c +++ b/sys/kern/uipc_usrreq.c @@ -550,7 +550,6 @@ unp_bind(unp, nam, p) if (unp->unp_vnode != NULL) return (EINVAL); -#define offsetof(s, e) ((char *)&((s *)0)->e - (char *)((s *)0)) namelen = soun->sun_len - offsetof(struct sockaddr_un, sun_path); if (namelen <= 0) return EINVAL; diff --git a/sys/net/if_stf.c b/sys/net/if_stf.c index bfd462a777f..6b3834d01e6 100644 --- a/sys/net/if_stf.c +++ b/sys/net/if_stf.c @@ -308,10 +308,6 @@ stf_getsrcifa6(ifp) return NULL; } -#ifndef offsetof -#define offsetof(s, e) ((int)&((s *)0)->e) -#endif - static int stf_output(ifp, m, dst, rt) struct ifnet *ifp; diff --git a/sys/netinet/in_gif.c b/sys/netinet/in_gif.c index bce267cde19..a27339badd1 100644 --- a/sys/netinet/in_gif.c +++ b/sys/netinet/in_gif.c @@ -81,10 +81,6 @@ int ip_gif_ttl = 0; SYSCTL_INT(_net_inet_ip, IPCTL_GIF_TTL, gifttl, CTLFLAG_RW, &ip_gif_ttl, 0, ""); -#ifndef offsetof -#define offsetof(s, e) ((int)&((s *)0)->e) -#endif - int in_gif_output(ifp, family, m, rt) struct ifnet *ifp; diff --git a/sys/netinet/ip_input.c b/sys/netinet/ip_input.c index ed68439f617..0405b96e974 100644 --- a/sys/netinet/ip_input.c +++ b/sys/netinet/ip_input.c @@ -45,8 +45,6 @@ #include "opt_ipsec.h" #include "opt_pfil_hooks.h" -#include - #include #include #include diff --git a/sys/netinet/tcp_output.c b/sys/netinet/tcp_output.c index ce5f13b472a..9ffbf58f827 100644 --- a/sys/netinet/tcp_output.c +++ b/sys/netinet/tcp_output.c @@ -38,8 +38,6 @@ #include "opt_ipsec.h" #include "opt_tcpdebug.h" -#include - #include #include #include diff --git a/sys/netinet/tcp_subr.c b/sys/netinet/tcp_subr.c index 25c9b66b9da..c3616a524fa 100644 --- a/sys/netinet/tcp_subr.c +++ b/sys/netinet/tcp_subr.c @@ -39,7 +39,6 @@ #include "opt_ipsec.h" #include "opt_tcpdebug.h" -#include #include #include #include diff --git a/sys/netinet/tcp_timewait.c b/sys/netinet/tcp_timewait.c index 25c9b66b9da..c3616a524fa 100644 --- a/sys/netinet/tcp_timewait.c +++ b/sys/netinet/tcp_timewait.c @@ -39,7 +39,6 @@ #include "opt_ipsec.h" #include "opt_tcpdebug.h" -#include #include #include #include diff --git a/sys/netinet/udp_usrreq.c b/sys/netinet/udp_usrreq.c index 07b1166bba3..f357905568f 100644 --- a/sys/netinet/udp_usrreq.c +++ b/sys/netinet/udp_usrreq.c @@ -37,7 +37,6 @@ #include "opt_ipsec.h" #include "opt_inet6.h" -#include #include #include #include diff --git a/sys/netinet6/frag6.c b/sys/netinet6/frag6.c index 1bf7e737061..d7833571942 100644 --- a/sys/netinet6/frag6.c +++ b/sys/netinet6/frag6.c @@ -73,10 +73,6 @@ struct ip6q ip6q; /* ip6 reassemble queue */ /* FreeBSD tweak */ MALLOC_DEFINE(M_FTABLE, "fragment", "fragment reassembly header"); -#ifndef offsetof /* XXX */ -#define offsetof(type, member) ((size_t)(&((type *)0)->member)) -#endif - /* * Initialise reassembly queue and fragment identifier. */ diff --git a/sys/netinet6/icmp6.c b/sys/netinet6/icmp6.c index a5f6326d05b..9dca71e7190 100644 --- a/sys/netinet6/icmp6.c +++ b/sys/netinet6/icmp6.c @@ -1061,9 +1061,7 @@ icmp6_mtudisc_update(dst, icmp6, m) * with hostname changes by sethostname(3) */ #define hostnamelen strlen(hostname) -#ifndef offsetof /* XXX */ -#define offsetof(type, member) ((size_t)(&((type *)0)->member)) -#endif + static struct mbuf * ni6_input(m, off) struct mbuf *m; diff --git a/sys/netinet6/in6_gif.c b/sys/netinet6/in6_gif.c index e554f5a64f7..c8c1450f02f 100644 --- a/sys/netinet6/in6_gif.c +++ b/sys/netinet6/in6_gif.c @@ -68,10 +68,6 @@ #include -#ifndef offsetof -#define offsetof(s, e) ((int)&((s *)0)->e) -#endif - int in6_gif_output(ifp, family, m, rt) struct ifnet *ifp; diff --git a/sys/netinet6/in6_proto.c b/sys/netinet6/in6_proto.c index 8af642f1488..87db176628a 100644 --- a/sys/netinet6/in6_proto.c +++ b/sys/netinet6/in6_proto.c @@ -129,8 +129,6 @@ #include -#define offsetof(type, member) ((size_t)(&((type *)0)->member)) - /* * TCP/IP protocol family: IP6, ICMP6, UDP, TCP. */ diff --git a/sys/netinet6/raw_ip6.c b/sys/netinet6/raw_ip6.c index a846b3c4db2..95c7d20af87 100644 --- a/sys/netinet6/raw_ip6.c +++ b/sys/netinet6/raw_ip6.c @@ -66,8 +66,6 @@ #include "opt_ipsec.h" -#include - #include #include #include @@ -409,8 +407,6 @@ rip6_output(m, va_alist) int off; u_int16_t *p; -#define offsetof(type, member) ((size_t)(&((type *)0)->member)) /* XXX */ - /* compute checksum */ if (so->so_proto->pr_protocol == IPPROTO_ICMPV6) off = offsetof(struct icmp6_hdr, icmp6_cksum); diff --git a/sys/netkey/key.c b/sys/netkey/key.c index caa2f93e436..8e9e356fae9 100644 --- a/sys/netkey/key.c +++ b/sys/netkey/key.c @@ -105,9 +105,6 @@ #include -#ifndef offsetof -#define offsetof(type, member) ((size_t)(&((type *)0)->member)) -#endif #ifndef satosin #define satosin(s) ((struct sockaddr_in *)s) #endif diff --git a/sys/pc98/i386/machdep.c b/sys/pc98/i386/machdep.c index eba50611f8f..591503b0722 100644 --- a/sys/pc98/i386/machdep.c +++ b/sys/pc98/i386/machdep.c @@ -264,8 +264,6 @@ struct cpuhead cpuhead; MUTEX_DECLARE(,sched_lock); MUTEX_DECLARE(,Giant); -#define offsetof(type, member) ((size_t)(&((type *)0)->member)) - static void cpu_startup(dummy) void *dummy; diff --git a/sys/pc98/pc98/machdep.c b/sys/pc98/pc98/machdep.c index eba50611f8f..591503b0722 100644 --- a/sys/pc98/pc98/machdep.c +++ b/sys/pc98/pc98/machdep.c @@ -264,8 +264,6 @@ struct cpuhead cpuhead; MUTEX_DECLARE(,sched_lock); MUTEX_DECLARE(,Giant); -#define offsetof(type, member) ((size_t)(&((type *)0)->member)) - static void cpu_startup(dummy) void *dummy; diff --git a/sys/pci/ncr.c b/sys/pci/ncr.c index 77d694068f0..c30e922847a 100644 --- a/sys/pci/ncr.c +++ b/sys/pci/ncr.c @@ -170,8 +170,6 @@ **========================================================== */ -#include - #include #include diff --git a/sys/sys/queue.h b/sys/sys/queue.h index ee66759b11c..ab232b8335d 100644 --- a/sys/sys/queue.h +++ b/sys/sys/queue.h @@ -37,6 +37,8 @@ #ifndef _SYS_QUEUE_H_ #define _SYS_QUEUE_H_ +#include /* for __offsetof */ + /* * This file defines five types of data structures: singly-linked lists, * singly-linked tail queues, lists, tail queues, and circular queues. @@ -108,18 +110,6 @@ * */ -/* - * XXX: temporary, we need to find the real home of these. - */ - -/* Offset of the field in the structure. */ -#define __qfldoff(name, field) \ - ((int)&(((struct name *)0)->field)) - -/* Address of the structure from a field. */ -#define __qstrbase(name, addr, field) \ - ((struct name *)((char *)(addr) - __qfldoff(name, field))) - /* * Singly-linked List declarations. */ @@ -236,7 +226,8 @@ struct { \ #define STAILQ_LAST(head, type, field) \ (STAILQ_EMPTY(head) ? \ NULL : \ - __qstrbase(type, (head)->stqh_last, field)) + ((struct type *) \ + ((char *)((head)->stqh_last) - __offsetof(struct type, field)))) #define STAILQ_NEXT(elm, field) ((elm)->field.stqe_next) diff --git a/sys/sys/types.h b/sys/sys/types.h index f4bef46c8c5..f0c21f26e78 100644 --- a/sys/sys/types.h +++ b/sys/sys/types.h @@ -93,15 +93,14 @@ typedef u_int32_t uid_t; /* user id */ typedef int boolean_t; typedef u_int64_t uoff_t; typedef struct vm_page *vm_page_t; -#endif - -#ifdef _KERNEL struct specinfo; typedef u_int32_t udev_t; /* device number */ typedef struct specinfo *dev_t; +#define offsetof(type, field) __offsetof(type, field) + #else /* !_KERNEL */ typedef u_int32_t dev_t; /* device number */