Esempio n. 1
0
service_t *
new_service(
	bootstrap_info_t	*bootstrap,
	const char	*name,
	mach_port_t		service_port,
	boolean_t	isActive,
	servicetype_t	servicetype,
	server_t	*serverp)
{
        service_t *servicep;
        
	servicep = NEW(service_t, 1);
	if (servicep != NULL) {
		/* Doubly linked list */
		services.prev->next = servicep;
		servicep->prev = services.prev;
		servicep->next = &services;
		services.prev = servicep;
		
		nservices += 1;
		
		strncpy(servicep->name, name, sizeof servicep->name);
		LAST_ELEMENT(servicep->name) = '\0';
		servicep->servicetype = servicetype;
		servicep->bootstrap = bootstrap;
		servicep->port = service_port;
		servicep->server = serverp;
		servicep->isActive = isActive;
	}
	return servicep;
}
Esempio n. 2
0
server_t *
new_server(
	bootstrap_info_t	*bootstrap,
	const char		*cmd,
	int			uid,
	servertype_t		servertype)
{
	server_t *serverp;

	debug("adding new server \"%s\" with uid %d\n", cmd, uid);	
	serverp = NEW(server_t, 1);
	if (serverp != NULL) {
		/* Doubly linked list */
		servers.prev->next = serverp;
		serverp->prev = servers.prev;
		serverp->next = &servers;
		servers.prev = serverp;

		bootstrap->ref_count++;
		serverp->bootstrap = bootstrap;

		serverp->pid = NO_PID;
		serverp->task_port = MACH_PORT_NULL;
		serverp->uid = uid;

		serverp->port = MACH_PORT_NULL;
		serverp->servertype = servertype;
		serverp->activity = 0;
		serverp->active_services = 0;
		strncpy(serverp->cmd, cmd, sizeof serverp->cmd);
		LAST_ELEMENT(serverp->cmd) = '\0';
	}
	return serverp;
}
Esempio n. 3
0
File: paflof.c Progetto: 3a9LL/panda
// the actual engine
long engine(int mode, long param_1, long param_2)
{
	// For Exceptions:
	//	mode = ENGINE_MODE_PARAM_1 | MODE_PARAM_2
	//	(param_1 = error, param_2 = reason)
	//
	// For Push:
	//	mode = ENGINE_MODE_PARAM_1 | ENGINE_MODE_NOP
	//
	// For Pop:
	//	mode = ENGINE_MODE_NOP | ENGINE_MODE_POP
	//
	// For Evaluate:
	//	mode = ENGINE_MODE_PARAM_1 | MODE_PARAM_2 | ENGINE_MODE_EVAL
	//	(param_1 = strlen(string), param_2 = string)

	cell *restrict ip;
	cell *restrict cfa;
	static cell handler_stack[160];
	static cell c_return[2];
	static cell dummy;

	#include "prep.h"
	#include "dict.xt"

	static int init_engine = 0;
	if (init_engine == 0) {
		// one-time initialisation
		init_engine = 1;
		LAST_ELEMENT(xt_FORTH_X2d_WORDLIST).a = xt_LASTWORD;

		// stack-pointers
		dp = the_data_stack - 1;
		rp = handler_stack - 1;

		// return-address for "evaluate" personality
		dummy.a = &&over;
		c_return[1].a = &dummy;
	}