int main() { kern_return_t err; mach_port_t bootstrap; struct trivfs_control *fsys; task_get_bootstrap_port(mach_task_self(), &bootstrap); if (bootstrap == MACH_PORT_NULL) { printf("bootstrap.\n"); } err = trivfs_startup(bootstrap, 0, 0, 0, 0, 0, &fsys); if (err) { printf("the trivfs_startup.\n"); } ports_manage_port_operations_one_thread(fsys -> pi.bucket, demuxer, 0); return 0; }
int main(int argc, char *argv[]) { int err; mach_port_t bootstrap; struct trivfs_control *fsys; if (argc > 1) { fprintf(stderr, "Usage: settrans [opts] node %s\n", program_invocation_name); exit (1); } task_get_bootstrap_port (mach_task_self (), &bootstrap); if (bootstrap == MACH_PORT_NULL) error(2, 0, "Must be started as a translator"); /* Reply to our parent */ err = trivfs_startup (bootstrap, 0, 0, 0, 0, 0,&fsys); mach_port_deallocate (mach_task_self (), bootstrap); if (err) { return (0); } ports_manage_port_operations_one_thread (fsys->pi.bucket, demuxer, 0); return 0; }
static void * ethernet_thread (void *arg) { ports_manage_port_operations_one_thread (etherport_bucket, ethernet_demuxer, 0); return NULL; }
/* main */ int main (int argc, char *argv[]) { error_t err; mach_port_t bootstrap; struct trivfs_control *fsys; err = argp_parse(&argp, argc, argv, 0, NULL, NULL); if (err) { error(1, err, "argp_parse"); } task_get_bootstrap_port(mach_task_self(), &bootstrap); if (bootstrap == MACH_PORT_NULL) { error(1, 0, "must be started as translator"); } /* reply to our parent */ err = trivfs_startup(bootstrap, 0, NULL, NULL, NULL, NULL, &fsys); if (err) { error(3, err, "trivfs_startup"); } /* launch translator */ init_logging(); info("start oss translator"); info("init rump"); rump_init(); debug("open rump audio device"); audio_fd = rump_sys_open(RUMP_AUDIO_DEVICE, O_WRONLY); if (audio_fd < 0) { err("rump_open(%s, O_WRONLY): %s", RUMP_AUDIO_DEVICE, rump_strerror(errno)); return EIO; } /* set default parameters */ audio_info_t info; AUDIO_INITINFO(&info); info.play.sample_rate = 44100; info.play.channels = 1; info.play.precision = 16; info.play.encoding = AUDIO_ENCODING_LINEAR; info.play.samples = 0; if (rump_sys_ioctl(audio_fd, AUDIO_SETINFO, &info)) { err("rump_sys_ioctl AUDIO_SETINFO: %s", rump_strerror(errno)); return EIO; } /* wait for orders */ info("wait for orders"); ports_manage_port_operations_one_thread(fsys->pi.bucket, oss_demuxer, 0); return 0; }
int main (int argc, char **argv) { error_t err; mach_port_t pflocal; mach_port_t bootstrap; char buf[512]; const struct argp argp = { 0, 0, 0, doc }; argp_parse (&argp, argc, argv, 0, 0, 0); control_class = ports_create_class (trivfs_clean_cntl, 0); node_class = ports_create_class (trivfs_clean_protid, 0); port_bucket = ports_create_bucket (); trivfs_protid_portclasses[0] = node_class; trivfs_cntl_portclasses[0] = control_class; task_get_bootstrap_port (mach_task_self (), &bootstrap); if (bootstrap == MACH_PORT_NULL) error(1, 0, "Must be started as a translator"); /* Reply to our parent */ err = trivfs_startup (bootstrap, 0, control_class, port_bucket, node_class, port_bucket, NULL); mach_port_deallocate (mach_task_self (), bootstrap); if (err) error(2, err, "Contacting parent"); /* Try and connect to the pflocal server */ sprintf (buf, "%s/%d", _SERVERS_SOCKET, PF_LOCAL); pflocal = file_name_lookup (buf, 0, 0); if (pflocal == MACH_PORT_NULL) address_port = MACH_PORT_NULL; else { err = socket_fabricate_address (pflocal, AF_LOCAL, &address_port); if (err) address_port = MACH_PORT_NULL; mach_port_deallocate (mach_task_self (), pflocal); } /* Launch. */ ports_manage_port_operations_one_thread (port_bucket, demuxer, 0); return 0; }
int main(int argc, char *argv[]) { mach_port_t bootstrap; struct trivfs_control *control; error_t err; argp_parse(&kgi_argp, argc, argv, 0, NULL, NULL); init_module(); if(!display) error(3, 0, "No suitable display found... I'm bored, bye."); task_get_bootstrap_port(mach_task_self(), &bootstrap); if(bootstrap == MACH_PORT_NULL) { /* not started as translator */ printf("Init complete; press <return>.\n"); getchar(); setmode(); printf("setmode() complete; press <return>.\n"); getchar(); draw_crap(); printf("draw_crap() complete; press <return>.\n"); getchar(); unsetmode(); printf("unsetmode() complete; press <return>.\n"); getchar(); cleanup_module(); assert(!display); return 0; } err = trivfs_startup(bootstrap, 0, NULL, NULL, NULL, NULL, &control); mach_port_deallocate(mach_task_self(), bootstrap); if(err) error(2, err, "trivfs_startup"); ports_manage_port_operations_one_thread(control->pi.bucket, kgi_demuxer, 0); return 0; /* not reached */ }