Exemple #1
0
/**
 * stop the events on the fd, not unregister the fd
 */
int ev_stop(ev_loop_t *loop, int fd, EV_TYPE events) {
	/*fd in use, and evnets on fd*/
	if(loop->fd_records[fd].active && (loop->fd_records[fd].events & events)) {
		if((loop->fd_records[fd].events & EV_READ) && (events & EV_READ)) {
			loop->fd_records[fd].events &= (~EV_READ);
		}
		if((loop->fd_records[fd].events & EV_WRITE) && (events & EV_WRITE)) {
			loop->fd_records[fd].events &= (~EV_WRITE);
		}
		
		struct epoll_event ev;
		ev.events = loop->fd_records[fd].events;
		if(loop->etmodel) {
			ev.events |= EPOLLET;
		}
		ev.data.fd = fd;

		if(-1 == epoll_ctl(loop->epfd, EPOLL_CTL_MOD, fd, &ev)) {
			fprintf(stderr, "epoll_ctl mod in ev_stop\n");
			return -1;
		}

		if(!(loop->fd_records[fd].events & EV_READ || loop->fd_records[fd].events &EV_WRITE)) {
			return ev_unregister(loop, fd);
		}
	}
	return 0;
}
Exemple #2
0
void cli_cmd_stepover(size_t argc,const sASTNode **argv) {
	if(argc != 0 && argc != 1)
		cmds_throwEx(NULL);

	octa count = 1;
	if(argc == 1) {
		sCmdArg first = cmds_evalArg(argv[0],ARGVAL_INT,0,NULL);
		count = first.d.integer;
	}

	if(cpu_isHalted())
		cmds_throwEx("CPU is halted. Set the PC or reset the machine!\n");
	ev_register(EV_AFTER_EXEC,afterExec);
	while(count-- > 0) {
		level = 0;
		cpu_run();
	}
	ev_unregister(EV_AFTER_EXEC,afterExec);
}