コード例 #1
0
ファイル: etna_mem.c プロジェクト: sjhill71/etna_viv
int etna_usermem_map(etna_usermem **mem_out, void *memory, size_t size)
{
    if(mem_out == NULL) return ETNA_INVALID_ADDR;
    etna_usermem *mem = ETNA_NEW(etna_usermem);

    mem->memory = memory;
    mem->size = size;

    if(viv_map_user_memory(memory, size, &mem->info, &mem->address)!=0)
    {
        return ETNA_INTERNAL_ERROR;
    }

    *mem_out = mem;
    return ETNA_OK;
}
コード例 #2
0
ファイル: etna_bo.c プロジェクト: gale320/etna_viv
struct etna_bo *etna_bo_from_usermem(struct viv_conn *conn, void *memory, size_t size)
{
    struct etna_bo *mem = ETNA_CALLOC_STRUCT(etna_bo);
    if(mem == NULL) return NULL;

    mem->bo_type = ETNA_BO_TYPE_USERMEM;
    mem->logical = memory;
    mem->size = size;

    if(viv_map_user_memory(conn, memory, size, &mem->usermem_info, &mem->address)!=0)
    {
        ETNA_FREE(mem);
        return NULL;
    }

    return mem;
}