コード例 #1
0
off_t _Seek(int fildes, off_t offset, int whence)
{
    struct anvil_seek_msg smsg;
    smsg.offset = offset;
    smsg.whence = whence;
    return msg_rpc_port(fildes, ANVIL_SEEK, &smsg, sizeof(smsg), NULL, 0);
}
コード例 #2
0
ファイル: ace_buffer_create.c プロジェクト: gerryg400/anvilos
ace_buffer_t *ace_buffer_create(ace_connection_t *connection, size_t size)
{
    ace_buffer_t                    *buf;
    struct ace_buf_create_msg       bufcreatemsg;
    struct ace_buf_create_rpy       bufcreaterpy;
    int                             err;

    /* Now create the buffer structure */
    if ((buf = (ace_buffer_t *)malloc(sizeof(ace_buffer_t))) == NULL)
    {
        return NULL;
    }

    /* Round the size up to the nearest page */
    bufcreatemsg.size = __PAGEROUND(size);

    if ((err = msg_rpc_port(connection->port, ACE_BUF_CREATE, &bufcreatemsg, sizeof(bufcreatemsg), &bufcreaterpy, sizeof(bufcreaterpy))) != 0)
    {
        free(buf);
        errno = -err;
        return NULL;
    }

    buf->size = size;
    buf->pixel_buf = (uint32_t *)bufcreaterpy.vidmem;
    buf->connection = connection;

    //anvil_syslog(0, "ace_buffer_create: returning %d\n", connection->port);

    return buf;
}
コード例 #3
0
int _Close(int fildes) {

    int     ret;

    if ((ret = msg_rpc_port(fildes, ANVIL_CLOSE, NULL, 0, NULL, 0)) < 0)
    {
        errno = EBADF;
    }

    /* Destroy the port */
    msg_port_close(fildes);

    return 0;
}
コード例 #4
0
int _Fstat(int fildes, struct stat *buf)
{
    struct anvil_stat_msg anvilstat;
    anvilstat.flags = 0;
    return msg_rpc_port(fildes, ANVIL_STAT, &anvilstat, sizeof(anvilstat), buf, sizeof(*buf));
}