Ejemplo n.º 1
0
void __rdi_class_link_setup() {
	
	rdi_class_link = robject_cons(0, rdi_class_core);

	robject_set_call(rdi_class_link, "find",     _find,     AC_NULL);
	robject_set_call(rdi_class_link, "set-link", _set_link, AC_WRITE);
	robject_set_call(rdi_class_link, "get-link", _get_link, AC_READ);

	robject_set_data(rdi_class_link, "type", (void*) "link");
	robject_set_data(rdi_class_link, "name", (void*) "RDI-class-link");
}
Ejemplo n.º 2
0
int main(int argc, char **argv) {
	struct robject *root;

	rdi_init();

	// create root directory
	root = rdi_dir_cons(robject_new_index(), ACCS_READ | ACCS_WRITE);

	// set interface functions
	robject_set_call(rdi_class_file, "reset", tmpfs_reset, AC_WRITE);
	rdi_global_read_hook  = tmpfs_read;
	rdi_global_write_hook = tmpfs_write;
	rdi_global_cons_file_hook = tmpfs_file_cons;
	rdi_global_cons_dir_hook  = tmpfs_dir_cons;
	rdi_global_cons_link_hook = tmpfs_link_cons;

	// daemonize
	msendb(RP_CONS(getppid(), 0), ACTION_CHILD);
	_done();

	return 0;
}
Ejemplo n.º 3
0
int main(int argc, char **argv) {
	struct robject *canvas;
	char *modesstr0;
	char *modestr;
	int i;

	rdi_init();

	canvas = rdi_file_cons(robject_new_index(), ACCS_READ | ACCS_WRITE | ACCS_EVENT);
	robject_set_data(canvas, "type", (void*) "canvas share");

	svga_init();

	// generate list of modes
	modesstr = strdup("");
	for (i = 0; i < modelist_count; i++) {
		modesstr0 = modesstr;
		modestr = malloc(16);
		sprintf(modestr, "%d:%d:%d ", modelist[i].w, modelist[i].h, modelist[i].d);
		modesstr = strvcat(modesstr, modestr, NULL);
		free(modesstr0);
	}

	svga_set_mode(svga_find_mode(640, 480, 24));
	buffer = malloc(svga.w * svga.h * 4);

	/* set up driver interface */
	robject_set_call(canvas, "getmode",   svga_rcall_getmode,   STAT_READER);
	robject_set_call(canvas, "listmodes", svga_rcall_listmodes, STAT_READER);
	robject_set_call(canvas, "unshare",   svga_rcall_unshare,   STAT_WRITER);
	robject_set_call(canvas, "setmode",   svga_rcall_setmode,   STAT_WRITER);
	robject_set_call(canvas, "syncrect",  svga_rcall_syncrect,  STAT_WRITER);
	robject_set_call(canvas, "sync",      svga_rcall_sync,      STAT_WRITER);
	rdi_global_share_hook = svga_share;

	/* register the driver as /dev/svga0 */
	fs_plink("/dev/svga0", RP_CONS(getpid(), canvas->index), NULL);
	msendb(RP_CONS(getppid(), 0), PORT_CHILD);
	_done();

	return 0;
}