예제 #1
0
void cMutexInitPort(MutexT * mt) {
    int ret;
    if(mt) {
        pthread_mutexattr_init(&g_mutex_attr);
        pthread_mutexattr_settype(&g_mutex_attr, PTHREAD_MUTEX_RECURSIVE);

        mt->mutex = (void*)cMalloc(sizeof(pthread_mutex_t));
        pthread_mutex_init((pthread_mutex_t*)mt->mutex, &g_mutex_attr);
    }
}
예제 #2
0
파일: cio.c 프로젝트: Grainspring/xoc
bool cIOCopy(const char *aDstFile, const char *aSrcFile)
{
    Int32 srcFd = -1;
    Int32 dstFd = -1;
    Int32 fileSize = -1;
    BYTE *buf = NULL;
    bool isOK = false;

    srcFd = cIOOpen(aSrcFile, MADA_OF_READ);
    if(srcFd <= 0) {
        goto done;
    }

    fileSize = cIOSize(srcFd);
    if(fileSize < 0) {
        goto done;
    }

    buf = cMalloc(fileSize);
    if(NULL == buf) {
        goto done;
    }

    if(cIORead(srcFd, buf, fileSize) != fileSize) {
        goto done;
    }

    dstFd = cIOOpen(aDstFile, MADA_OF_CREATE | MADA_OF_WRITE | MADA_OF_TRUNC);
    if(dstFd <= 0) {
        goto done;
    }

    if(cIOWrite(dstFd, buf, fileSize) != fileSize) {
        goto done;
    }
    isOK = true;
done:
    if(NULL != buf) {
        cFree(buf);
    }
    if(srcFd > 0) {
        cIOClose(srcFd);
    }
    if(dstFd > 0) {
        cIOClose(dstFd);
    }
    return isOK;
}
예제 #3
0
파일: cbuf.c 프로젝트: Alibaba-boonya/xoc
bool cBufExpand(CBufferT *mem, int size) {
    char* tmp;

    if(!mem)
        return false;
    if((int)mem->size >= size)
        return true;
    tmp = mem->buffer;
    mem->buffer = (char*)cMalloc(size);
    if(!mem->buffer) {
        mem->buffer = tmp;
        return false;
    }
    cMemset(mem->buffer, 0, size);
    if(tmp != NULL) {
        cMemcpy(mem->buffer, tmp, mem->size);
        cFree(tmp);
    }
    mem->size = size;
    return true;
}
예제 #4
0
void* cpalloc( const void* ptr, size_t size)
{
	void* ret = cMalloc( size);
	memcpy( ret, ptr, size);
	return ret;
}