On Thu, 1 Jan 2004, Michel Dänzer wrote: > > > well the advantage is that the ifdefs can just go away in kernel trees of > > specific versions... (eg unifdef it) > > Does this look better? Maybe a macro (or a typedef?) for the type of the > last argument would still be a good idea? Or is there yet a better way?
My preference is either: - we can still undo the "nopage" argument change. It's been in the -mm tree for a long time, and it _does_ solve a problem (page fault type accounting), but the problem it solves is potentially so small that we might decide it's ok for 2.6.x. However, Andrew is king, and besides, it does fix a tiny bug, so I don't think this is what we should do. I just wanted to put it on the table as a possibility. - Use separate (and trivial) wrapper functions for this. Keep the "real" function the same across everything, and just have a _static_ function (ie no header file declaration crap) that does linux-new-vm.h: static int DRM(nopage_interface)(struct vm_area_struct * area, unsigned long address, int *type) { *type = VM_FAULT_MINOR; DRM(nopage)(area, address); } linux-old-vm.h: static int DRM(nopage_interface)(struct vm_area_struct * area, unsigned long address, int unused) { DRM(nopage)(area, address); } drm_vm.h: /* * Or, poreferably, we could create a symlink and avoid * the #if's at compile-time _entirely_. */ #if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,0) #include "linux-new-vm.h" #else #include "linux-old-v.h #endif .. .nopage = nopage_interface; .. Done right, the virtualization could be a bit higher still, and maybe the BSD code can do the same thing. In general, at least I personally _much_ prefer the #ifdef's etc to be outside the code. So even if you don't like to have separate small files for different architectures/ports/versions, I'd at least personally much rather have #if xxxx int onewholefunction(..) ... #else int onewholefunction(..) ... #endif rather than the messy int onewholefunction( #if xxx .. #else .. #endif ( { ... #if xxxx .. #endif The latter is a huge pain not just to read (you go blind after a while), but it's also painful as _hell_ to merge anywhere else. In contrast, full-file interfaces for different kernel versions are a _lot_ easier to merge and keep track of. They may look like "duplication", but the advantages are legion. You don't mix different OS's and different versions together, and that makes it much easier to support them all without going crazy. Linus ------------------------------------------------------- This SF.net email is sponsored by: IBM Linux Tutorials. Become an expert in LINUX or just sharpen your skills. Sign up for IBM's Free Linux Tutorials. Learn everything from the bash shell to sys admin. Click now! http://ads.osdn.com/?ad_id78&alloc_id371&op=click -- _______________________________________________ Dri-devel mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/dri-devel