コード例 #1
0
int common_timer_destroy(common_timer_t **timer)
{
    int joinRet;

    if (!timer) {
        error_s(AT, E_NULL_PARAMETER, E_MSG_NULL_PARAMETER, "timer");
        return E_NULL_PARAMETER;
    }

    if (!(*timer)) {
        error_s(AT, E_NULL_PARAMETER, E_MSG_NULL_PARAMETER, "*timer");
        return E_NULL_PARAMETER;
    }

    // para garantir que a thread está mesmo executando
    if ((*timer)->run) {

        // seta a flag pra acabar a thread e fica esperando ela acabar
        (*timer)->run = false;
        joinRet = pthread_join((*timer)->thread, NULL);
        if (joinRet != 0) {
            error_s(AT, E_PTHREAD_JOIN_ERROR, E_MSG_PTHREAD_JOIN_ERROR, joinRet);
            return joinRet;
        }
    }

    free(*timer);
    (*timer) = NULL;

    return E_OK;
}
コード例 #2
0
ファイル: linked_list.cpp プロジェクト: Naykoyan/mconf-mobile
void * linkedList_last(linkedList_t *list)
{
    if (!list) {
        error_s(AT, E_NULL_PARAMETER, "Parâmetro 'list' nulo.");
        return NULL;
    }
    if (list->size == 0) {
        error_s(AT, E_LINKED_LIST_EMPTY, "Lista vazia.");
        return NULL;
    }

    //list->actualElem = list->last;
    return list->last->content;
}
コード例 #3
0
ファイル: sys.c プロジェクト: 4ad/sam
void
syserror(char *a)
{
	char buf[ERRLEN];

	if(!inerror){
		inerror=TRUE;
		errstr(buf);
		dprint("%s: ", a);
		error_s(Eio, buf);
	}
}
コード例 #4
0
ファイル: xec.c プロジェクト: 00001/plan9port
int
w_cmd(File *f, Cmd *cp)
{
	int fseq;

	fseq = f->seq;
	if(getname(f, cp->ctext, FALSE)==0)
		error(Enoname);
	if(fseq == seq)
		error_s(Ewseq, genc);
	writef(f);
	return TRUE;
}
コード例 #5
0
ファイル: common_sock.cpp プロジェクト: Naykoyan/mconf-mobile
int common_sock_cleanup()
{
    int r;

#ifdef _MSC_VER
    r = WSACleanup(); // retorna zero se successo
    if (r != 0) {
        error_s(AT, E_SOCKET_WSACLEANUP, "Erro %d na chamada WSACleanup()", r);
        return r; // Retorna o erro do WSACleanup()
    }
#endif

    return E_OK;
}
コード例 #6
0
ファイル: common_sock.cpp プロジェクト: Naykoyan/mconf-mobile
int common_sock_startup()
{
#ifdef _MSC_VER
    WORD wVersionRequested;
    WSADATA wsaData;
    wVersionRequested = MAKEWORD(2,2);
    if (WSAStartup(wVersionRequested, &wsaData) != 0) {
        error_s(AT, E_SOCKET_WSASTARTUP, "Erro na chamada WSAStartup()");
        return E_SOCKET_WSASTARTUP;
    }
#endif

    return E_OK;
}
コード例 #7
0
common_timer_t * common_timer_create(int type, uint32_t time, int interval,int (*callback)(void *),
                                     void *param)
{
    common_timer_t *timer;
    pthread_attr_t pthreadAttr;

    if (type != COMMON_TIMER_TYPE_FOREVER && type != COMMON_TIMER_TYPE_ONCE) {
        error_s(AT, E_INVALID_PARAMETER, E_MSG_INVALID_PARAMETER, "type");
        return NULL;
    }
    if (!callback) {
        error_s(AT, E_NULL_PARAMETER, E_MSG_NULL_PARAMETER, "callback");
        return NULL;
    }

    // aloca memória para o novo timer
    timer = (common_timer_t *)malloc(sizeof(common_timer_t));
    if (!timer) {
        error_s(AT, E_INSUFFICIENT_MEMORY, E_MSG_INSUFFICIENT_MEMORY, "common_timer_t");
        return NULL;
    }
    timer->timeLast = getTimestamp();
    timer->type = type;
    timer->time = time;
	timer->interval = interval;
    timer->callback = callback;
    timer->callbackParam = param;
    timer->run = true;

    // inicia a thread de chamadas do timer
    pthread_attr_init(&pthreadAttr);
    pthread_attr_setdetachstate(&pthreadAttr, PTHREAD_CREATE_JOINABLE);
    pthread_create(&timer->thread, &pthreadAttr, common_timer_thread, (void *)timer);
    pthread_attr_destroy(&pthreadAttr);

    return timer;
}
コード例 #8
0
ファイル: io.c プロジェクト: 4ad/sam
void
writef(File *f)
{
	Rune c;
	Posn n;
	char *name;
	int i, samename, newfile;
	ulong dev, qid;
	long mtime, appendonly, length;

	newfile = 0;
	samename = Strcmp(&genstr, &f->name) == 0;
	name = Strtoc(&f->name);
	i = statfile(name, &dev, &qid, &mtime, 0, 0);
	if(i == -1)
		newfile++;
	else if(samename &&
	        (f->dev!=dev || f->qid!=qid || f->date<mtime)){
		f->dev = dev;
		f->qid = qid;
		f->date = mtime;
		warn_S(Wdate, &genstr);
		return;
	}
	if(genc)
		free(genc);
	genc = Strtoc(&genstr);
	if((io=create(genc, 1, 0666L)) < 0)
		error_s(Ecreate, genc);
	dprint("%s: ", genc);
	if(statfd(io, 0, 0, 0, &length, &appendonly) > 0 && appendonly && length>0)
		error(Eappend);
	n = writeio(f);
	if(f->name.s[0]==0 || samename)
		state(f, addr.r.p1==0 && addr.r.p2==f->nrunes? Clean : Dirty);
	if(newfile)
		dprint("(new file) ");
	if(addr.r.p2>0 && Fchars(f, &c, addr.r.p2-1, addr.r.p2) && c!='\n')
		warn(Wnotnewline);
	closeio(n);
	if(f->name.s[0]==0 || samename){
		if(statfile(name, &dev, &qid, &mtime, 0, 0) > 0){
			f->dev = dev;
			f->qid = qid;
			f->date = mtime;
			checkqid(f);
		}
	}
}
コード例 #9
0
ファイル: sam.c プロジェクト: deadpixi/sam
void
trytoclose(File *f)
{
    char *t;
    char buf[256];

    if(f == cmd)    /* possible? */
        return;
    if(f->deleted)
        return;
    if(f->state==Dirty && !f->closeok) {
        f->closeok = true;
        if(f->name.s[0]) {
            t = Strtoc(&f->name);
            strncpy(buf, t, sizeof buf-1);
            free(t);
        } else
            strcpy(buf, "nameless file");
        error_s(Emodified, buf);
    }
    f->deleted = true;
}