struct args { int a1; int a2; int a3; }; void *syscall(int syscallid, struct args *a) { if (a != 0) { if (is_a_ptr_to_an_args(a)) { if (syscallid >= 0 && syscallid < SYSCALLMAX) { syscalltable[syscallid](a); } }