that's what i don't understand.
I have gone through other included headers and did not see the __THROW defined anywhere.
#define _SYS_IOCTL_H 1
/* Get the list of `ioctl' requests and related constants. */
/* Define some types used by `ioctl' requests. */
/* On a Unix system, the system <sys/ioctl.h> probably defines some of
the symbols we define in <sys/ttydefaults.h> (usually with the same
values). The code to generate <bits/ioctls.h> has omitted these
symbols to avoid the conflict, but a Unix program expects <sys/ioctl.h>
to define them, so we must include <sys/ttydefaults.h> here. */
/* Perform the I/O control operation specified by REQUEST on FD.
One argument may follow; its presence and type depend on REQUEST.
Return value depends on REQUEST. Usually -1 indicates error. */
extern int ioctl (int __fd, unsigned long int __request, ...) __THROW;