Regarding Point # 37
37) kill all of this:
+/* OS related system calls */
+static inline u64 read64(void *addr)
+ u64 ret = 0;
+ ret = readl(addr + 4);
+ (u64) ret <<= 32;
+ (u64) ret |= readl(addr);
I agree that read/write(32,16,8) are not used so can be eliminated,
but the read/write64 macros are essential because not all platforms
have defined the readq and writeq system calls. i386 for example
doesn't have readq/writeq and to write into the 64 bit registers
of the NIC, I use 2 successive 32 bits (readl/writel) operation to
achieve the 64 bit equivalent. This procedure does work on all the
platforms that we have tested on.
The code should use the kernel API -- readq/writeq -- not define its own
API. With regards to the missing readq/writeq on some architectures...
Short term, if some arches do not provide readq/writeq, provide your own
definition (i.e. rename your write64 to a conditionally-defined writeq).
Long term, all Linux platforms need to provide readq/writeq, so we need
to modify the architectures with the missing pieces.
The information contained in this electronic message and any attachments to
this message are intended
for the exclusive use of the addressee(s) and may contain confidential or
privileged information. If
you are not the intended recipient, please notify the sender at Wipro or
and destroy all copies of this message and any attachments.
Oh really? ;-) You should talk to your lawyers and sysadmins about
sending email to open source people and lists...