apparently gnu caddr_t is supposed to be char *, not unsigned long