diff -urpN linux-2.6/include/asm-x86/types.h linux-2.6.smallint/include/asm-x86/types.h --- linux-2.6/include/asm-x86/types.h 2007-12-14 18:46:36.000000000 +0000 +++ linux-2.6.smallint/include/asm-x86/types.h 2007-12-17 14:28:23.000000000 +0000 @@ -44,6 +44,12 @@ typedef unsigned long long __u64; #ifndef __ASSEMBLY__ +/* For x86, minimum efficiently addressable memory unit is byte */ +typedef signed char smallint; +typedef unsigned char smalluint; +#define smallint smallint +#define smalluint smalluint + typedef signed char s8; typedef unsigned char u8; diff -urpN linux-2.6/include/linux/types.h linux-2.6.smallint/include/linux/types.h --- linux-2.6/include/linux/types.h 2007-12-14 18:46:36.000000000 +0000 +++ linux-2.6.smallint/include/linux/types.h 2007-12-17 14:33:46.000000000 +0000 @@ -32,6 +32,18 @@ typedef __kernel_mqd_t mqd_t; #ifdef __KERNEL__ typedef _Bool bool; +/* Minimum efficiently addressable memory unit. + * Recommended usage: global flag or enum variables; flag/enum struct members + * Don't use for: local variables, members of user-visible structs + * Guaranteed to be at least byte-sized. + */ +#ifndef smallint +typedef int smallint; +#endif +#ifndef smalluint +typedef unsigned smalluint; +#endif + typedef __kernel_uid32_t uid_t; typedef __kernel_gid32_t gid_t; typedef __kernel_uid16_t uid16_t;