コード例 #1
0
ファイル: LeapRecorder.cpp プロジェクト: qingkaishi/canary
    void OnInit(int svsNum) {
        printf("OnInit-Record\n");
        initializeSigRoutine();

        //start = true;
        num_shared_vars = svsNum + 2; // one for fork, and the other is for synchronizations

        for (int i = 0; i < MAX_THREAD_NUM; i++) {
            thread_idx_map[i] = 0;
        }

        initialize(num_shared_vars); // initialize locks

        GLOG = new unsigned*[num_shared_vars];
        GIDX = new unsigned[num_shared_vars];
        for (int i = 0; i < num_shared_vars; i++) {
            GLOG[i] = new unsigned[MAX_LOG_LEN];
            GIDX[i] = 0;
        }

        // main thread.
        pthread_t tid = pthread_self();
        if (threadid(tid) == -1) {
            threadcreate(tid);
        }

        //gettimeofday(&tpstart, NULL);
    }
コード例 #2
0
void leave(critsect_t cs) {
    if (cs->owner != threadid()) return;
    if (cs->recursion > 0) {
        cs->recursion--;
    } else {
        cs->owner = NOHANDLE;
        if (atomic_add(&cs->count, -1) >= 0) eset(cs->event);
    }
}
コード例 #3
0
void enter(critsect_t cs) {
    tid_t tid = threadid();

    if (cs->owner == tid) {
        cs->recursion++;
    } else {
        if (atomic_add(&cs->count, 1) > 0) while (waitone(cs->event, INFINITE) != 0);
        cs->owner = tid;
    }
}
コード例 #4
0
ファイル: LeapRecorder.cpp プロジェクト: qingkaishi/canary
    void OnFork(long forked_tid_ptr) {
        if (!start) {
            return;
        }

        pthread_t ftid = *((pthread_t*) forked_tid_ptr);
        if (threadid(ftid) == -1) {
            threadcreate(ftid);
        }
#ifdef DEBUG
        printf("OnFork\n");
#endif
        pthread_t tid = pthread_self();
        int _tid = -1;
        do {
            _tid = threadid(tid);
        } while (_tid < 0);
        store(num_shared_vars - 1, _tid);
        forkunlock(num_shared_vars - 1);
    }
コード例 #5
0
ファイル: LeapRecorder.cpp プロジェクト: qingkaishi/canary
    void OnUnlock(int nouse) {
#ifdef DEBUG
        if (!start) {
            return;
        }
        pthread_t tid = pthread_self();
        int _tid = -1;
        do {
            _tid = threadid(tid);
        } while (_tid < 0);
        printf("OnunLock <-- t%d\n", _tid);
#endif
    }
コード例 #6
0
ファイル: LeapRecorder.cpp プロジェクト: qingkaishi/canary
    void OnWait(int condId, long cond_ptr, long mutex_ptr) {
        if (!start) {
            return;
        }
#ifdef DEBUG
        printf("OnWait\n");
#endif
        pthread_t tid = pthread_self();
        int _tid = -1;
        do {
            _tid = threadid(tid);
        } while (_tid < 0);
        store(num_shared_vars - 2, _tid);
    }
コード例 #7
0
ファイル: LeapRecorder.cpp プロジェクト: qingkaishi/canary
    void OnNotify(int condId) {
        if (!start) {
            return;
        }
#ifdef DEBUG
        printf("OnNotify\n");
#endif
        pthread_t tid = pthread_self();
        int _tid = -1;
        do {
            _tid = threadid(tid);
        } while (_tid < 0);
        store(num_shared_vars - 2, _tid);
        unlock(num_shared_vars - 2);
    }
コード例 #8
0
ファイル: main.c プロジェクト: npe9/harvey
void
threadmain(int argc, char **argv)
{
	char args[Arglen];
	char *as, *ae;
	int accel, pena, devid;
	int csps[] = { KbdCSP, PtrCSP, 0 };

	quotefmtinstall();
	pena = 1;
	ae = args+sizeof(args);
	as = seprint(args, ae, "kb");
	ARGBEGIN{
	case 'a':
		accel = strtol(EARGF(usage()), nil, 0);
		as = seprint(as, ae, " -a %d", accel);
		break;
	case 'd':
		usbdebug++;
		as = seprint(as, ae, " -d");
		break;
	case 'k':
		as = seprint(as, ae, " -k");
		pena = 0;
		break;
	case 'm':
		as = seprint(as, ae, " -m");
		pena = 1;
		break;
	case 'N':
		devid = atoi(EARGF(usage()));		/* ignore dev number */
		USED(devid);
		break;
	case 'b':
		as = seprint(as, ae, " -b");
		break;
	default:
		usage();
	}ARGEND;

	rfork(RFNOTEG);
	fmtinstall('U', Ufmt);
	threadsetgrp(threadid());
	if(pena == 0)
		csps[1] = 0;
	startdevs(args, argv, argc, matchdevcsp, csps, kbmain);
	threadexits(nil);
}
コード例 #9
0
ファイル: LeapRecorder.cpp プロジェクト: qingkaishi/canary
    void OnLock(int nouse) {
        if (!start) {
            return;
        }

        pthread_t tid = pthread_self();
        int _tid = -1;
        do {
            _tid = threadid(tid);
        } while (_tid < 0);
        store(num_shared_vars - 2, _tid);
#ifdef DEBUG
        printf("OnLock --> t%d\n", _tid);
#endif

    }
コード例 #10
0
ファイル: LeapRecorder.cpp プロジェクト: qingkaishi/canary
    void OnPreStore(int svId, int debug) {
        if (!start) {
            return;
        }

        pthread_t tid = pthread_self();
        int _tid = -1;
        do {
            _tid = threadid(tid);
        } while (_tid < 0);

        lock(svId);
#ifdef DEBUG        
        printf("OnPreStore: %d at t%d [%d]\n", svId, _tid, debug);
#endif
        store(svId, _tid);
    }
コード例 #11
0
ファイル: main.c プロジェクト: 99years/plan9
void
threadmain(int argc, char **argv)
{
	char *mnt, *srv, *as, *ae;
	char args[Arglen];

	mnt = "/dev";
	srv = nil;

	quotefmtinstall();
	ae = args + sizeof args;
	as = seprint(args, ae, "serial");
	ARGBEGIN{
	case 'D':
		usbfsdebug++;
		break;
	case 'd':
		usbdebug++;
		as = seprint(as, ae, " -d");
		break;
	case 'N':
		as = seprint(as, ae, " -N %s", EARGF(usage()));
		break;
	case 'm':
		mnt = EARGF(usage());
		break;
	case 's':
		srv = EARGF(usage());
		break;
	default:
		usage();
		break;
	}ARGEND;

	rfork(RFNOTEG);
	fmtinstall('U', Ufmt);
	threadsetgrp(threadid());

	usbfsinit(srv, mnt, &usbdirfs, MAFTER|MCREATE);
	startdevs(args, argv, argc, matchserial, nil, serialmain);
	threadexits(nil);
}
コード例 #12
0
ファイル: dev.c プロジェクト: dancrossnyc/harvey
static void
startdevproc(void *a)
{
	Sarg	*sa = a;
	Dev	*d;
	Devtab *dt;
	int	argc;
	char *args, *argse, **argv;
	char *fname;

	threadsetgrp(threadid());
	d = sa->pp->dev;
	dt = sa->dt;
	args = sa->args;
	argse = sa->args + sizeof sa->args;
	argv = sa->argv;
	fname = sa->fname;
	sa->pp->devmaskp = &dt->devmask;
	sa->pp->devnb = getdevnb(&dt->devmask);
	if(sa->pp->devnb < 0){
		sa->pp->devmaskp = nil;
		sa->pp->devnb = 0;
	}else
		args = seprint(args, argse, "-N %d", sa->pp->devnb);
	if(dt->args != nil)
		seprint(args, argse, " %s", dt->args);
	args = sa->args;
	dprint(2, "%s: start: %s %s\n", argv0, dt->name, args);
	argv[0] = dt->name;
	argc = 1;
	if(args[0] != 0)
		argc += tokenize(args, argv+1, nelem(sa->argv)-2);
	argv[argc] = nil;
	if(dt->init == nil){
		if(d->dfd > 0 ){
			close(d->dfd);
			d->dfd = -1;
		}
		rfork(RFCFDG);
		open("/dev/null", OREAD);
		open("/dev/cons", OWRITE);
		open("/dev/cons", OWRITE);

		xexec(sa->rc, argv[0], argv);
		snprint(fname, sizeof(sa->fname), "/bin/usb/%s", dt->name);
		xexec(sa->rc, fname, argv);
		snprint(fname, sizeof(sa->fname), "/boot/%s", dt->name);
		xexec(sa->rc, fname, argv);
		if(cputype == nil)
			cputype = getenv("cputype");
		if(cputype != nil){
			snprint(fname, sizeof(sa->fname), "/%s/bin/%s",
				cputype, dt->name);
			argv[0] = fname;
			xexec(sa->rc, fname, argv);
		}
		fprint(2, "%s: %s: not found. can't exec\n", argv0, dt->name);
		sendul(sa->rc, -1);
		threadexits("exec");
	}else{
		sa->pp->dev = opendev(d->dir);
		sendul(sa->rc, 0);
		if(dt->init(d, argc, argv) < 0)
			fprint(2, "%s: %s: %r\n", argv0, dt->name);
		closedev(d);
		free(sa);
	}
	threadexits(nil);
}
コード例 #13
0
ファイル: Player.cpp プロジェクト: shengang1978/HH
int CPlayer::ReStartMonitor()
{
	m_comSocket.Close();
	m_streamParser.ClearBuf();//清除缓冲
	memset(&m_rcRenderRect, 0, sizeof(RECT));
	if( m_comSocket.Connect(m_clientInfo.connInfo.ip, m_clientInfo.connInfo.port) < 0 )
    {
        m_comSocket.Close();
        return HHV_ERROR_CONNECT;
    }
	int	streamHeaderSize = 4*1024;
	memset( m_streamHeader, 0x00, sizeof(m_streamHeader) );

    int ret = MonitorStartCmdMT(m_comSocket.m_hSocket, &m_clientInfo, m_streamHeader, streamHeaderSize);
    if( ret < 0 )
    {
        m_comSocket.Close();
        return ret;
    }

	PlayM4_Stop(m_index);
	PlayM4_CloseStream( m_index);
	ResetBuf();

	//mode- 流模式(1-实时流/2-文件流)
	int nErr = 0;
	m_playType = STREAME_REALTIME;
	BOOL  bret =  PlayM4_SetStreamOpenMode(m_index, m_playType);
    bret =  PlayM4_OpenStream( m_index, (BYTE*)m_streamHeader, streamHeaderSize, 600*1024);
	if (!bret)
	{
		m_comSocket.Close();
		nErr =  PlayM4_GetLastError(m_index);

		return -nErr;
	}

	m_disconnection = false;
	if( ! PlayM4_RigisterDrawFun( m_index, MP4SDKDrawFun, (DWORD)this) )
	{
		m_comSocket.Close();
		nErr =  PlayM4_GetLastError(m_index);
		//TRACE_SDK_ERROR("执行 CHKSeries::RegisterDrawFun 中  PlayM4_RigisterDrawFun 函数 Fail nErr = %d strErr = %s\r\n\r\n", nErr, strErr.c_str() );
		return -nErr;
	}

	bret =  PlayM4_Play(m_index, m_hWnd);
	if (!bret)
	{
		nErr =  PlayM4_GetLastError(m_index);
		//string strErr = GetPlayMp4LastErrorStr( nErr );
		//TRACE_SDK_ERROR("执行 CHKSeries::OpenStream 中  PlayM4_Play 函数 Fail nErr = %d strErr = %s\r\n\r\n", nErr, strErr.c_str() );
		return -nErr;
	}

	m_hRenderWnd = m_hWnd;
	ResizeMonitorWindow();

    //memcpy(&m_clientInfo, clientInfo, sizeof(UNISDK_CLIENT_INFO));
    //开启线程, 接收视频流
    m_exit = false;
    UINT threadid(0);
    m_Thread = (HANDLE)_beginthreadex( NULL, 4*1024*1024, DecoderRoutine, this, 0, &threadid ); 
    if(m_Thread <= 0)
    {
        TRACE(_T("(MTVideo)!!!!!!开辟接受数据线程失败!m_Thread:%d errno:%d _doserrno:%d \r\n"),
            m_Thread, errno, _doserrno);
        SetEvent( m_hExitEvent );
    }
	
    CloseHandle( m_Thread );
  //
  //  TRACE(_T("(MTVideo)监视成功结束 m_PlayHandle = %d dvrIP = %s channel = %d\r\n"),
		//m_PlayHandle, m_clientInfo.connInfo.ip, clientInfo->channel);
    return m_index;
}
コード例 #14
0
ファイル: Player.cpp プロジェクト: shengang1978/HH
INT CPlayer::StartMonitor(HWND hWnd, HHV_CLIENT_INFO* clientInfo)
{	
	m_hWnd = hWnd;
	memcpy(&m_clientInfo, clientInfo, sizeof(HHV_CLIENT_INFO));
	m_disconnection = false;
	if( clientInfo == NULL )
	{
		return HHV_ERROR_INVALID_PARA;
	}
    if( !CCommClass::CheckIP(std::string(clientInfo->connInfo.ip)) )
    {   
        return HHV_ERROR_INVALID_IP;
    }
	
    if( m_comSocket.Connect(clientInfo->connInfo.ip, clientInfo->connInfo.port) < 0 )
    {
        m_comSocket.Close();
        return HHV_ERROR_CONNECT;
    }
	
	int   streamHeaderSize = 4*1024;
	memset( m_streamHeader, 0x00, sizeof(m_streamHeader) );

    int ret = MonitorStartCmdMT(m_comSocket.m_hSocket, clientInfo, m_streamHeader, streamHeaderSize);
    if( ret < 0 )
    {
        //TRACE(_T("(MTVideo)监视失败 发送cmd失败或被服务器拒绝 vsIP = %s vsPort = %d dvrIP = %s channel = %d\r\n",
		//	clientInfo->RFIP, clientInfo->RFTCPPort, clientInfo->connInfo.ip, clientInfo->channel);
        m_comSocket.Close();
        return ret;
    }
    //TRACE(_T("(MTVideo)监视 发送cmd成功 vsIP = %s vsPort = %d dvrIP = %s channel = %d\r\n",
	//	clientInfo->RFIP, clientInfo->RFTCPPort, clientInfo->connInfo.ip, clientInfo->channel);

    //mode- 流模式(1-实时流/2-文件流)
	int nErr = 0;
	m_playType = STREAME_REALTIME;
	//NAME(PlayM4_GetPort)(&m_index);
	BOOL  bret =  PlayM4_SetStreamOpenMode(m_index, m_playType);
	nErr =  PlayM4_GetLastError(m_index);
    bret =  PlayM4_OpenStream( m_index, (BYTE*)m_streamHeader, streamHeaderSize, 600*1024);
	nErr =  PlayM4_GetLastError(m_index);
	if (!bret)
	{
		m_comSocket.Close();
		nErr =  PlayM4_GetLastError(m_index);
		//string strErr = GetPlayMp4LastErrorStr( nErr );
		//TRACE_SDK_ERROR("执行 CHKSeries::OpenStream 中  PlayM4_OpenStream 函数 Fail nErr = %d strErr = %s\r\n\r\n", nErr, strErr.c_str() );
		//RACE_LOG("(MTVideo)监视失败 <Error pDvrSDK->OpenPlayStream Fail> m_PlayHandle = %d dvrIP = %s channel = %d\r\n",
		//	m_PlayHandle, clientInfo->connInfo.ip, clientInfo->channel);

		return -nErr;
	}

	if( ! PlayM4_RigisterDrawFun( m_index, MP4SDKDrawFun, (DWORD)this) )
	{
		m_comSocket.Close();
		nErr =  PlayM4_GetLastError(m_index);
		//TRACE_SDK_ERROR("执行 CHKSeries::RegisterDrawFun 中  PlayM4_RigisterDrawFun 函数 Fail nErr = %d strErr = %s\r\n\r\n", nErr, strErr.c_str() );
		return -nErr;
	}

	bret =  PlayM4_Play(m_index, hWnd);
	if (!bret)
	{
		nErr =  PlayM4_GetLastError(m_index);
		//string strErr = GetPlayMp4LastErrorStr( nErr );
		//TRACE_SDK_ERROR("执行 CHKSeries::OpenStream 中  PlayM4_Play 函数 Fail nErr = %d strErr = %s\r\n\r\n", nErr, strErr.c_str() );
		return -nErr;
	}

	m_hRenderWnd = hWnd;
	ResizeMonitorWindow();

    TRACE(_T("(MTVideo)监视 OpenPlayStream成功 m_index = %d dvrIP = %s channel = %d\r\n"),
		m_index, clientInfo->connInfo.ip, clientInfo->channel);
    //memcpy(&m_clientInfo, clientInfo, sizeof(UNISDK_CLIENT_INFO));
    //开启线程, 接收视频流
    m_exit = false;
    UINT threadid(0);
    m_Thread = (HANDLE)_beginthreadex( NULL, 4*1024*1024, DecoderRoutine, this, 0, &threadid ); 
    if(m_Thread <= 0)
    {
        TRACE(_T("(MTVideo)!!!!!!开辟接受数据线程失败!m_Thread:%d errno:%d _doserrno:%d \r\n"),
            m_Thread, errno, _doserrno);
        SetEvent( m_hExitEvent );
    }
	
    CloseHandle( m_Thread );
  
    TRACE(_T("(MTVideo)监视成功结束 m_PlayHandle = %d dvrIP = %s channel = %d\r\n"),
		m_PlayHandle, clientInfo->connInfo.ip, clientInfo->channel);
    return m_index;
}
コード例 #15
0
ファイル: Player.cpp プロジェクト: shengang1978/HH
int CPlayer::StartPlayBackByTime(HWND hWnd, SYSTEM_VIDEO_FILE* recdFile,
								 char* ssIP, int ssPort)
{
	if( m_comSocket.Connect(ssIP, ssPort) < 0 )
    {
        m_comSocket.Close();
        return -1;
    }
	
    int   streamHeaderSize = 4*1024;  
    memset( m_streamHeader, 0x00, sizeof(m_streamHeader) ); 

	SPlayBackByTimeResponseInfo  rspBody;
    
    if( PlayStartCmdByTime(m_comSocket.m_hSocket, recdFile, m_streamHeader, streamHeaderSize, rspBody) < 0 )
    {
        m_comSocket.Close();
        return -1;
    }

	m_playbacklen = rspBody.nPlayBackLength;
    m_streamParser_PlayBack.SetSocketPara(&m_comSocket);
    m_streamParser_PlayBack.SetFileLenPara(m_playbacklen);

    //mode- 流模式(1-实时流/2-文件流)
	int nErr = 0;
	m_playType = STREAME_FILE;
	BOOL  bret =  PlayM4_SetStreamOpenMode(m_index, m_playType);
    bret =  PlayM4_OpenStream( m_index, (BYTE*)m_streamHeader, streamHeaderSize, 600*1024);
	if (!bret)
	{
		m_comSocket.Close();
		nErr =  PlayM4_GetLastError(m_index);
		//string strErr = GetPlayMp4LastErrorStr( nErr );
		//TRACE_SDK_ERROR("执行 CHKSeries::OpenStream 中  PlayM4_OpenStream 函数 Fail nErr = %d strErr = %s\r\n\r\n", nErr, strErr.c_str() );
		//RACE_LOG("(MTVideo)监视失败 <Error pDvrSDK->OpenPlayStream Fail> m_PlayHandle = %d dvrIP = %s channel = %d\r\n",
		//	m_PlayHandle, clientInfo->connInfo.ip, clientInfo->channel);
		
		return -nErr;
	}
	
	if( ! PlayM4_RigisterDrawFun( m_index, MP4SDKDrawFun, (DWORD)this) )
	{
		m_comSocket.Close();
		nErr =  PlayM4_GetLastError(m_index);
		//TRACE_SDK_ERROR("执行 CHKSeries::RegisterDrawFun 中  PlayM4_RigisterDrawFun 函数 Fail nErr = %d strErr = %s\r\n\r\n", nErr, strErr.c_str() );
		return -nErr;
	}
	
	bret =  PlayM4_Play(m_index, hWnd);
	if (!bret)
	{
		nErr =  PlayM4_GetLastError(m_index);
		//string strErr = GetPlayMp4LastErrorStr( nErr );
		//TRACE_SDK_ERROR("执行 CHKSeries::OpenStream 中  PlayM4_Play 函数 Fail nErr = %d strErr = %s\r\n\r\n", nErr, strErr.c_str() );
		return -nErr;
	}

	m_hRenderWnd = hWnd;
	ResizeMonitorWindow();
    //开启线程, 接收视频流
    m_exit = false;
    UINT threadid(0);
    m_Thread = (HANDLE)_beginthreadex( NULL, 4*1024*1024, DecoderRoutine, this, 0, &threadid ); 
    if(m_Thread <= 0)
    {
        TRACE(_T("(MTVideo)!!!!!!开辟接受数据线程失败!m_Thread:%d errno:%d _doserrno:%d \r\n"),
            m_Thread, errno, _doserrno);
        SetEvent( m_hExitEvent );
    }
	
    CloseHandle( m_Thread );
	
    return m_index;
	return 0;
}
コード例 #16
0
ファイル: smbnegotiate.c プロジェクト: 99years/plan9
SmbProcessResult
smbnegotiate(SmbSession *s, SmbHeader *h, uchar *, SmbBuffer *b)
{
	ushort index;
	int i;
	uchar bufferformat;

	if (!smbcheckwordcount("negotiate", h, 0))
		return SmbProcessResultFormat;
	if (s->state != SmbSessionNeedNegotiate) {
		/* this acts as a complete session reset */
		smblogprint(-1, "smbnegotiate: called when already negotiated\n");
		return SmbProcessResultUnimp;
	}
	i = 0;
	index = 0xffff;
	while (smbbuffergetb(b, &bufferformat)) {
		char *s;
		if (bufferformat != 0x02) {
			smblogprint(-1, "smbnegotiate: unrecognised buffer format 0x%.2ux\n", bufferformat);
			return SmbProcessResultFormat;
		}
		if (!smbbuffergetstr(b, 0, &s)) {
			smblogprint(-1, "smbnegotiate: no null found\n");
			return SmbProcessResultFormat;
		}
		smblogprint(h->command, "smbnegotiate: '%s'\n", s);
		if (index == 0xffff && strcmp(s, "NT LM 0.12") == 0)
			index = i;
		i++;
		free(s);
	}
	if (index != 0xffff) {
		Tm *tm;
		ulong capabilities;
		ulong bytecountfixupoffset;

		h->wordcount = 17;
		if (!smbbufferputheader(s->response, h, nil)
			|| !smbbufferputs(s->response, index)
			|| !smbbufferputb(s->response, 3)			/* user security, encrypted */
			|| !smbbufferputs(s->response, 1)			/* max mux */
			|| !smbbufferputs(s->response, 1)			/* max vc */
			|| !smbbufferputl(s->response, smbglobals.maxreceive)		/* max buffer size */
			|| !smbbufferputl(s->response, 0x10000)		/* max raw */
			|| !smbbufferputl(s->response, threadid()))	/* session key */
			goto die;
		/* <= Win2k insist upon this being set to ensure that they observe the prototol (!) */
		capabilities = CAP_NT_SMBS;
		if (smbglobals.unicode)
			capabilities |= CAP_UNICODE;
		tm = localtime(time(nil));
		s->tzoff = tm->tzoff;
		if (!smbbufferputl(s->response, capabilities)
			|| !smbbufferputv(s->response, nsec() / 100 + (vlong)10000000 * 11644473600LL)
			|| !smbbufferputs(s->response, -s->tzoff / 60)
			|| !smbbufferputb(s->response, 8))	/* crypt len */
			goto die;
		bytecountfixupoffset = smbbufferwriteoffset(s->response);
		if (!smbbufferputs(s->response, 0))
			goto die;
		s->cs = auth_challenge("proto=mschap role=server");
		if (s->cs == nil) {
			smblogprint(h->command, "smbnegotiate: couldn't get mschap challenge\n");
			return SmbProcessResultMisc;
		}
		if (s->cs->nchal != 8) {
			smblogprint(h->command, "smbnegotiate: nchal %d\n", s->cs->nchal);
			return SmbProcessResultMisc;
		}
		if (!smbbufferputbytes(s->response, s->cs->chal, s->cs->nchal)
			|| !smbbufferputstring(s->response, nil, SMB_STRING_UNICODE, smbglobals.primarydomain)
			|| !smbbufferfixuprelatives(s->response, bytecountfixupoffset))
			goto die;
	}
	else {
		h->wordcount = 1;
		if (!smbbufferputheader(s->response, h, nil)
			|| !smbbufferputs(s->response, index)
			|| !smbbufferputs(s->response, 0))
			goto die;
	}
	s->state = SmbSessionNeedSetup;
	return SmbProcessResultReply;
die:
	return SmbProcessResultDie;
}