* [KJ][RFC]NAME_OFFSET macro
@ 2007-04-06 8:58 Milind Arun Choudhary
2007-04-06 18:50 ` Matt Mackall
0 siblings, 1 reply; 2+ messages in thread
From: Milind Arun Choudhary @ 2007-04-06 8:58 UTC (permalink / raw)
To: kernel-janitors; +Cc: linux-kernel
milind@arun:~/src/linux> egrep -rin "#define.*NAME_?OFFSET" .
./arch/alpha/kernel/osf_sys.c:95:#define NAME_OFFSET offsetof (struct osf_dirent, d_name)
./arch/mips/kernel/sysirix.c:1738:#define NAME_OFFSET32(de) ((int) ((de)->d_name - (char *) (de)))
./arch/mips/kernel/sysirix.c:1840:#define NAME_OFFSET64(de) ((int) ((de)->d_name - (char *) (de)))
./arch/parisc/hpux/fs.c:72:#define NAME_OFFSET(de) ((int) ((de)->d_name - (char __user *) (de)))
./arch/parisc/kernel/sys_parisc32.c:315:#define NAME_OFFSET(de) ((int) ((de)->d_name - (char __user *) (de)))
./arch/powerpc/kernel/sys_ppc32.c:57:#define NAME_OFFSET(de) ((int) ((de)->d_name - (char __user *) (de)))
./arch/sparc/kernel/sys_sunos.c:324:#define NAME_OFFSET(de) ((int) ((de)->d_name - (char __user *) (de)))
./arch/sparc64/kernel/sys_sunos32.c:275:#define NAME_OFFSET(de) ((int) ((de)->d_name - (char __user *) (de)))
./drivers/isdn/hardware/eicon/s_4bri.c:184:#define FPGA_NAME_OFFSET 0x10
./fs/compat.c:903:#define NAME_OFFSET(de) ((int) ((de)->d_name - (char __user *) (de)))
./fs/readdir.c:54:#define NAME_OFFSET(de) ((int) ((de)->d_name - (char __user *) (de)))
./include/linux/fuse.h:342:#define FUSE_NAME_OFFSET ((unsigned) ((struct fuse_dirent *) 0)->name)
just working out different options before putting it in kernel.h
as all the dirent structures have used the
same name for the d_name member,so we can use
#define NAME_OFFSET(dirent) ((int) ((dirent)->d_name - (char __user *) (dirent)))
but then it becomes binding on the future users
to maintain the same naming convention.
#define NAME_OFFSET(dirent,d_name) ((int) ((dirent)->d_name - (char __user *) (dirent)))
#define NAME_OFFSET(dirent,d_name) offsetof(struct dirent,d_name)
though ..the first one seem to be just fine
thoughts
--
Milind Arun Choudhary
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [KJ][RFC]NAME_OFFSET macro
2007-04-06 8:58 [KJ][RFC]NAME_OFFSET macro Milind Arun Choudhary
@ 2007-04-06 18:50 ` Matt Mackall
0 siblings, 0 replies; 2+ messages in thread
From: Matt Mackall @ 2007-04-06 18:50 UTC (permalink / raw)
To: Milind Arun Choudhary; +Cc: kernel-janitors, linux-kernel
On Fri, Apr 06, 2007 at 02:28:13PM +0530, Milind Arun Choudhary wrote:
>
> milind@arun:~/src/linux> egrep -rin "#define.*NAME_?OFFSET" .
> ./arch/alpha/kernel/osf_sys.c:95:#define NAME_OFFSET offsetof (struct osf_dirent, d_name)
> ./arch/mips/kernel/sysirix.c:1738:#define NAME_OFFSET32(de) ((int) ((de)->d_name - (char *) (de)))
> ./arch/mips/kernel/sysirix.c:1840:#define NAME_OFFSET64(de) ((int) ((de)->d_name - (char *) (de)))
> ./arch/parisc/hpux/fs.c:72:#define NAME_OFFSET(de) ((int) ((de)->d_name - (char __user *) (de)))
> ./arch/parisc/kernel/sys_parisc32.c:315:#define NAME_OFFSET(de) ((int) ((de)->d_name - (char __user *) (de)))
> ./arch/powerpc/kernel/sys_ppc32.c:57:#define NAME_OFFSET(de) ((int) ((de)->d_name - (char __user *) (de)))
> ./arch/sparc/kernel/sys_sunos.c:324:#define NAME_OFFSET(de) ((int) ((de)->d_name - (char __user *) (de)))
> ./arch/sparc64/kernel/sys_sunos32.c:275:#define NAME_OFFSET(de) ((int) ((de)->d_name - (char __user *) (de)))
> ./drivers/isdn/hardware/eicon/s_4bri.c:184:#define FPGA_NAME_OFFSET 0x10
> ./fs/compat.c:903:#define NAME_OFFSET(de) ((int) ((de)->d_name - (char __user *) (de)))
> ./fs/readdir.c:54:#define NAME_OFFSET(de) ((int) ((de)->d_name - (char __user *) (de)))
> ./include/linux/fuse.h:342:#define FUSE_NAME_OFFSET ((unsigned) ((struct fuse_dirent *) 0)->name)
>
>
> just working out different options before putting it in kernel.h
>
> as all the dirent structures have used the
> same name for the d_name member,so we can use
>
> #define NAME_OFFSET(dirent) ((int) ((dirent)->d_name - (char __user *) (dirent)))
>
> but then it becomes binding on the future users
> to maintain the same naming convention.
>
> #define NAME_OFFSET(dirent,d_name) ((int) ((dirent)->d_name - (char __user *) (dirent)))
>
> #define NAME_OFFSET(dirent,d_name) offsetof(struct dirent,d_name)
>
> though ..the first one seem to be just fine
>
> thoughts
Delete all instances of the macro. Replace all uses of it with
offsetof(foo, name). You wouldn't wrap a simple sizeof in a macro like
this, there's no reason to do so with offsetof except for ignorance of
offsetof's existence.
Actually most of the above are probably copy and paste of code predating the
kernel having a global offsetof definition.
--
Mathematics is the supreme nostalgia of our time.
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2007-04-06 19:02 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-04-06 8:58 [KJ][RFC]NAME_OFFSET macro Milind Arun Choudhary
2007-04-06 18:50 ` Matt Mackall
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox