title: Why are kuid_t and similar data types of type struct?
body: <p>In the Linux kernel source, <code>kuid_t</code> is defined as a <code>typedef struct</code> that contains a single <code>uid_t</code> variable <code>val</code>. What's the reason to define <code>kuid_t</code> as a structure instead of a single <code>typedef uid_t kuid_t</code>? I see it as a bit overhead to declare a structure just for a single variable, and to access it you need to use <code>kuid_t.val</code>:</p>
  <pre class="lang-c prettyprint-override"><code>typedef struct {
      uid_t val;
  } kuid_t;
  </code></pre>
  <p>Instead of the following, which is pretty much the usual thing you would do:</p>
  <pre class="lang-c prettyprint-override"><code>typedef uid_t kuid_t;
  </code></pre>