identity.lisp 708 B

1234567891011121314151617181920212223
  1. (in-package :hurd)
  2. (defcfun ("io_identity" %io-identity)
  3. err
  4. (file port)
  5. (idport port-pointer)
  6. (fsidport port-pointer)
  7. (fileno :pointer))
  8. (defun io-identity (file)
  9. "Return the identity port the filesystem id port and the fileno."
  10. (declare (type fixnum file))
  11. (with-foreign-pointer (idport (foreign-type-size 'port))
  12. (with-foreign-pointer (fsidport (foreign-type-size 'port))
  13. (with-foreign-pointer (fileno (foreign-type-size 'ino-t))
  14. (select-error (%io-identity file idport fsidport fileno)
  15. (values
  16. (mem-ref idport 'port)
  17. (mem-ref fsidport 'port)
  18. (mem-ref fileno 'ino-t)))))))