コード例 #1
0
ファイル: client.c プロジェクト: julian-goldsmith/dwm-xcb
void client_send_to_monitor(Client *c, Monitor *m) {
	if(c->mon == m)
		return;
	client_unfocus(c, true);
	client_detach(c);
	client_detach_stack(c);
	c->mon = m;
	c->tags = m->tagset[m->seltags]; /* assign tags of target monitor */
	client_attach(c);
	client_attach_stack(c);
	client_focus(NULL);
	arrange(NULL);
}
コード例 #2
0
ファイル: interfaces.c プロジェクト: s1van/gpudb-explore
void gmm_init(void)
{
	INTERCEPT_CUDA("cudaMalloc", nv_cudaMalloc);
	INTERCEPT_CUDA("cudaFree", nv_cudaFree);
	INTERCEPT_CUDA("cudaMemcpy", nv_cudaMemcpy);
	INTERCEPT_CUDA("cudaMemcpyAsync", nv_cudaMemcpyAsync);
	INTERCEPT_CUDA("cudaStreamCreate", nv_cudaStreamCreate);
	INTERCEPT_CUDA("cudaStreamDestroy", nv_cudaStreamDestroy);
	INTERCEPT_CUDA("cudaStreamSynchronize", nv_cudaStreamSynchronize);
	INTERCEPT_CUDA("cudaMemGetInfo", nv_cudaMemGetInfo);
	INTERCEPT_CUDA("cudaSetupArgument", nv_cudaSetupArgument);
	INTERCEPT_CUDA("cudaConfigureCall", nv_cudaConfigureCall);
	INTERCEPT_CUDA("cudaMemset", nv_cudaMemset);
	//INTERCEPT_CUDA2("cudaMemsetAsync", nv_cudaMemsetAsync);
	//INTERCEPT_CUDA2("cudaDeviceSynchronize", nv_cudaDeviceSynchronize);
	INTERCEPT_CUDA("cudaLaunch", nv_cudaLaunch);
	INTERCEPT_CUDA("cudaStreamAddCallback", nv_cudaStreamAddCallback);

	gprint_init();

	if (gmm_context_init() == -1) {
		gprint(FATAL, "failed to initialize GMM local context\n");
		return;
	}

	if (client_attach() == -1) {
		gprint(FATAL, "failed to attach to the GMM global arena\n");
		gmm_context_fini();
		return;
	}

	// Before marking GMM context initialized, invoke an NV function
	// to initialize CUDA runtime and let whatever memory regions
	// implicitly required by CUDA runtime be allocated now. Those
	// regions should be always attached and not managed by GMM runtime.
	do {
		size_t dummy;
		nv_cudaMemGetInfo(&dummy, &dummy);
	} while (0);

	initialized = 1;
	gprint(DEBUG, "gmm initialized\n");
}
コード例 #3
0
ファイル: layout.c プロジェクト: wavebeem/wmfs
/** Set the client as master
 * \param c Client
 */
void
layout_set_client_master(Client *c)
{
     screen_get_sel();

     if(!c || (c->flags & HintFlag) || !(c->flags & TileFlag)
               || (c->flags & FSSFlag))
          return;

     if(c == tiled_client(selscreen, clients))
          CHECK((c = tiled_client(selscreen, c->next)));

     client_detach(c);
     client_attach(c);

     tags[selscreen][seltag[selscreen]].layout.func(selscreen);

     return;
}
コード例 #4
0
ファイル: launch.c プロジェクト: aufau/xqf
int client_launch_exec (int forkit, char *dir, char* argv[], struct server *s) {
	int pid;
	int pipefds[2];
	int flags;
	char msg[CLIENT_ERROR_BUFFER];

	if (get_debug_level() || dontlaunch) {
		char* cmdline = g_strjoinv(" # ",argv);
		debug(0,"%s",cmdline);
		g_free(cmdline);
	}

	if (dontlaunch)
		return -1;

	script_action_gamestart(NULL, s);

	if (forkit) {

		if (pipe (pipefds) < 0) {
			dialog_failed ("pipe", NULL);
			return -1;
		}

		pid = fork ();

		if (pid == -1) {
			dialog_failed ("fork", NULL);
			return -1;
		}

		if (pid) {  /* parent */
			close (pipefds[1]);

			flags = fcntl (pipefds[0], F_GETFL, 0);
			if (flags < 0 || fcntl (pipefds[0], F_SETFL, flags | O_NONBLOCK) < 0) {
				dialog_failed ("fcntl", NULL);
				return -1;
			}

			client_attach (pid, pipefds[0], s);
		}
		else {      /* child */

			close_fds(pipefds[1]);

			if (dir && dir[0] != '\0') {
				if (chdir (dir) != 0) {
					g_snprintf (msg, CLIENT_ERROR_BUFFER, "%schdir failed: %s", 
							CLIENT_ERROR_MSG_HEAD, g_strerror (errno));
					goto error_out;
				}
			}


			server_set_env(s);

			execvp (argv[0], argv);

			g_snprintf (msg, CLIENT_ERROR_BUFFER, "%sexec(%s) failed: %s", 
					CLIENT_ERROR_MSG_HEAD, argv[0], g_strerror (errno));

			error_out:
			write (pipefds[1], msg, strlen (msg) + 1);
			close (pipefds[1]);

			on_sig (SIGHUP,  _exit);
			on_sig (SIGINT,  _exit);
			on_sig (SIGQUIT, _exit);
			on_sig (SIGBUS,  _exit);
			on_sig (SIGSEGV, _exit);
			on_sig (SIGPIPE, _exit);
			on_sig (SIGTERM, _exit);
			on_sig (SIGALRM, _exit);
			on_sig (SIGCHLD, SIG_DFL);

			_exit (1);
		}
		return pid;
	}

	execvp (argv[0], argv);

	dialog_failed ("exec", argv[0]);
	return -1;
}
コード例 #5
0
ファイル: jpf_service.c プロジェクト: dulton/nampu
static __inline__ void
jpf_service_connect(jpf_service *ps)
{
	int32_t sock, err;
	struct sockaddr_in sin;
	client *c;
	tr_server *server;

	err = unix_resolve_host(&sin, ps->psp.ip, ps->psp.port);
	if (err)
	{
		LOG_W(
			"jpf_service_connect()->unix_resolve_host() failed, ip:%s.",
			ps->psp.ip
		);
		goto __conn_err;
	}

	sock = unix_sock_bind(L4_TCP, 0, 0, 0);
	if (sock < 0)
	{
		LOG_W(
			"jpf_service_connect()->unix_sock_bind() failed."
		);
		err = sock;
		goto __conn_err;
	}

	if (connect(sock, (struct sockaddr*)&sin, sizeof(sin)) < 0)
	{
		err = -errno;
		LOG_W(
			"jpf_service_connect()->connect() failed, err:'%d'.",
			err
		);
		goto __conn_err;
	}

	c = rtsp_impl_ts_client_new(0, (void*)sock);
	if (!c)
	{
		LOG_W(
			"jpf_service_connect()->rtsp_impl_ts_client_new() failed."
		);
		close(sock);
		err = -ENOMEM;
		goto __conn_err;
	}

	server = avs_get_server();
	if (!server)
	{
		LOG_W(
			"jpf_service_connect()->avs_get_server() failed."
		);
		client_kill_unref((client*)c);
		err = -EPERM;
		goto __conn_err;
	}

	client_attach(c, server->sched);
	ps->jpf_client = (rtsp_ts_client*)c;
	ps->ttl = 0;
	LOG_I(
		"Connect MDS '%s:%d' ok.", ps->psp.ip, ps->psp.port
	);
	return;

__conn_err:
	if (ps->psp.exp_notifier)
	{
		(*ps->psp.exp_notifier)(ps->psp.user_data, err);
	}
	return;
}