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); }
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; }
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; }
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)); }