.hy 0
.ad l
.br
No Medium Found, 6.0, Notes
6. Adventures in ioctl(2) Support
 6.1 Decoding Request Numbers 
-  first impression: large but limited set
-  switch: they don't play well together
 one ioctl handler per source file
-  reality: private request numbers
-  ambiguity: private and historical (look at file descriptor)
-  internal table of pointers (not a problem yet);
     slide
-  ...each has optional "method" to disambiguate
-  URL.. follow along the source code
 6.2 Representation 
-  "fildes" is handled the same way as the other system calls
-  "request" is handled on previous slide
-  accurate representation of 3rd argument;
     slide
-  ...each ioctl request has "method" to print data
-  ...output-only requests just print the pointer
 6.3 Explanations 
-  each ioctl request has "method" to print explanation;
     slide
-  set set of errno(3) value usually not documented
-  this is where you read kernel source
 6.4 EINVAL vs ENOTTY 
-  like system calls, this is messy;
     slide
-  kernel source comments indicate this may be being dealt with
-  also: ENOSYS, ENOTSUP EOPNOTSUP, and (not Linux) ENOIOCTL
 6.5 intptr_t 
-  shoe-horn
-  prototype;
     slide
-  ...bye bye type safety
-  tcflush(3) and friends
-  [e]glibc internally: two ways
-  sys_ioctl
-  cognitive dissonance = bugs
-  intptr_t