void    OSEventThread::init_wakeuper()
{
    int ret;
    int filedes[2];

#ifdef USE_SOCKET_PAIR
    ret = dumb_socketpair(filedes, 0);
#else
    ret = pipe(filedes);
#endif

    if (ret < 0) {
        ERR("Error in pipe() errno:%d\n", errno);
    }

    mFdWakeupRead = filedes[0];
    mFdWakeupWrite = filedes[1];

    SetFileDescNonBlocking(mFdWakeupRead);
    SetEvent (&mWakeupFdEvent, mFdWakeupRead, true,
        processWakeupCallback, NULL);

    {
        OSMutexLocker _locker(&mMutex);
        addWatch(&mWakeupFdEvent);
    }
}
K init(K x)
{
    dumb_socketpair(sockets, 0);
    sd1(sockets[1], recieve_data);
    
    FEED_STATE = FF_CONTINUE_FEED;
    start_thread();

    return (K) 0;
}
Exemple #3
0
OPENCONNECT_CMD_SOCKET openconnect_setup_cmd_pipe(struct openconnect_info *vpninfo)
{
	OPENCONNECT_CMD_SOCKET pipefd[2];

#ifdef _WIN32
	if (dumb_socketpair(pipefd, 0))
		return CMD_PIPE_ERR;
#else
	if (pipe(pipefd) < 0)
		return CMD_PIPE_ERR;
#endif

	if (set_sock_nonblock(pipefd[0]) || set_sock_nonblock(pipefd[1])) {
		closesocket(pipefd[0]);
		closesocket(pipefd[1]);
		return CMD_PIPE_ERR;
	}
	vpninfo->cmd_fd = pipefd[0];
	vpninfo->cmd_fd_write = pipefd[1];
	return vpninfo->cmd_fd_write;
}