In the Linux kernel source, kuid_t is defined as a typedef struct that contains a single uid_t variable val. What's the reason to define kuid_t as a structure instead of a single typedef uid_t kuid_t? I see it as a bit overhead to declare a structure just for a single variable, and to access it you need to use kuid_t.val:
typedef struct {
uid_t val;
} kuid_t;
Instead of the following, which is pretty much the usual thing you would do:
typedef uid_t kuid_t;