static void handle_nvrm_ioctl_create_simple(struct nvrm_ioctl_create_simple *s) { if (s->status != NVRM_STATUS_SUCCESS) return; pushbuf_add_object(s->handle, s->cls); nvrm_add_object(s->cid, s->parent, s->handle, s->cls); }
static void handle_nvrm_ioctl_create_simple(uint32_t fd, struct nvrm_ioctl_create_simple *s) { if (s->status != NVRM_STATUS_SUCCESS) return; check_cid(s->cid); struct gpu_object *obj = nvrm_add_object(fd, s->cid, s->parent, s->handle, s->cls); pushbuf_add_object(s->handle, s->cls, obj); }
static void handle_nvrm_ioctl_create(uint32_t fd, struct nvrm_ioctl_create *s, struct mmt_memory_dump *args, int argc) { if (s->status != NVRM_STATUS_SUCCESS) return; uint32_t cid = s->cid; uint32_t parent = s->parent; uint32_t handle = s->handle; struct mmt_buf *data = NULL; if (s->ptr) data = find_ptr(s->ptr, args, argc); if (handle == 0) { if (!data || data->len < 4) { mmt_error("\"create cid\" without data - probably because this trace was obtained by old mmt version (before Sep 6 2014)%s\n", ""); cid_not_found++; return; } cid = parent = handle = ((uint32_t *)data->data)[0]; } check_cid(cid); struct gpu_object *obj = nvrm_add_object(fd, cid, parent, handle, s->cls); pushbuf_add_object(handle, s->cls, obj); if (is_fifo_ib_class(s->cls)) { if (data) { struct fifo_state *state = get_fifo_state(obj); struct nvrm_create_fifo_ib *create_data = (void *)data->data; state->ib.addr = create_data->ib_addr; state->ib.entries = create_data->ib_entries; } } else if (is_fifo_dma_class(s->cls)) { if (data) { struct fifo_state *state = get_fifo_state(obj); struct nvrm_create_fifo_dma *create_data = (void *)data->data; state->user.addr = create_data->user_addr; } } }
static void handle_nvrm_ioctl_create(struct nvrm_ioctl_create *s, struct mmt_memory_dump *args, int argc) { if (s->status != NVRM_STATUS_SUCCESS) return; uint32_t cid = s->cid; uint32_t parent = s->parent; uint32_t handle = s->handle; if (handle == 0) { struct mmt_buf *data = find_ptr(s->ptr, args, argc); if (!data || data->len < 4) { mmt_error("\"create cid\" without data - probably because of old mmt (before Sep 6 2014) was used%s\n", ""); return; } cid = parent = handle = ((uint32_t *)data->data)[0]; } pushbuf_add_object(handle, s->cls); nvrm_add_object(cid, parent, handle, s->cls); }