Lines Matching refs:fd
49 static int (*libc_close)(int fd);
50 static int (*libc_ioctl)(int fd, unsigned long request, void *argp);
51 static int (*libc_fcntl)(int fd, int cmd, int param);
85 bo_size_table(int fd) in bo_size_table() argument
88 (void*)(uintptr_t)fd); in bo_size_table()
93 bo_size(int fd, uint32_t handle) in bo_size() argument
95 struct hash_table *t = bo_size_table(fd); in bo_size()
103 is_drm_fd(int fd) in is_drm_fd() argument
105 return !!bo_size_table(fd); in is_drm_fd()
109 add_drm_fd(int fd) in add_drm_fd() argument
114 _mesa_hash_table_insert(fds_to_bo_sizes, (void*)(uintptr_t)fd, in add_drm_fd()
130 del_drm_fd(int fd) in del_drm_fd() argument
133 (void*)(uintptr_t)fd); in del_drm_fd()
164 padding_is_good(int fd, uint32_t handle) in padding_is_good() argument
168 .offset = align64(bo_size(fd, handle), 4096), in padding_is_good()
181 ret = libc_ioctl(fd, DRM_IOCTL_I915_GEM_MMAP, &mmap_arg); in padding_is_good()
208 create_with_padding(int fd, struct drm_i915_gem_create *create) in create_with_padding() argument
213 int ret = libc_ioctl(fd, DRM_IOCTL_I915_GEM_CREATE, create); in create_with_padding()
227 ret = libc_ioctl(fd, DRM_IOCTL_I915_GEM_MMAP, &mmap_arg); in create_with_padding()
238 _mesa_hash_table_insert(bo_size_table(fd), (void*)(uintptr_t)create->handle, in create_with_padding()
245 exec_and_check_padding(int fd, unsigned long request, in exec_and_check_padding() argument
248 int ret = libc_ioctl(fd, request, exec); in exec_and_check_padding()
261 ret = libc_ioctl(fd, DRM_IOCTL_I915_GEM_WAIT, &wait); in exec_and_check_padding()
270 if (!padding_is_good(fd, handle)) { in exec_and_check_padding()
284 gem_close(int fd, struct drm_gem_close *close) in gem_close() argument
286 int ret = libc_ioctl(fd, DRM_IOCTL_GEM_CLOSE, close); in gem_close()
290 struct hash_table *t = bo_size_table(fd); in gem_close()
301 is_i915(int fd) { in is_i915() argument
303 if (fstat(fd, &stat)) in is_i915()
314 if (libc_ioctl(fd, DRM_IOCTL_VERSION, &version)) in is_i915()
330 int fd = libc_open(path, flags, mode); in open() local
334 if (fd >= 0 && is_i915(fd)) in open()
335 add_drm_fd(fd); in open()
339 return fd; in open()
346 close(int fd) in close() argument
350 if (is_drm_fd(fd)) in close()
351 del_drm_fd(fd); in close()
355 return libc_close(fd); in close()
359 fcntl(int fd, int cmd, ...) in fcntl() argument
368 int res = libc_fcntl(fd, cmd, param); in fcntl()
372 if (is_drm_fd(fd) && cmd == F_DUPFD_CLOEXEC) in fcntl()
373 dup_drm_fd(fd, res); in fcntl()
381 ioctl(int fd, unsigned long request, ...) in ioctl() argument
393 if (_IOC_TYPE(request) == DRM_IOCTL_BASE && !is_drm_fd(fd) && is_i915(fd)) { in ioctl()
394 mesa_loge("missed drm fd %d", fd); in ioctl()
395 add_drm_fd(fd); in ioctl()
398 if (is_drm_fd(fd)) { in ioctl()
401 res = gem_close(fd, (struct drm_gem_close*)argp); in ioctl()
405 res = create_with_padding(fd, (struct drm_i915_gem_create*)argp); in ioctl()
410 res = exec_and_check_padding(fd, request, in ioctl()
418 res = libc_ioctl(fd, request, argp); in ioctl()