1 #include "syslib.h" 2 3 #include <unistd.h> 4 #include <string.h> 5 #include <minix/safecopies.h> 6 7 int 8 socketpath(endpoint_t endpt, const char * path, size_t size, int what, 9 dev_t * dev, ino_t * ino) 10 { 11 cp_grant_id_t grant; 12 message m; 13 int r; 14 15 if ((grant = cpf_grant_direct(VFS_PROC_NR, (vir_bytes)path, size, 16 CPF_READ)) == GRANT_INVALID) 17 return ENOMEM; 18 19 memset(&m, 0, sizeof(m)); 20 m.m_lsys_vfs_socketpath.endpt = endpt; 21 m.m_lsys_vfs_socketpath.grant = grant; 22 m.m_lsys_vfs_socketpath.count = size; 23 m.m_lsys_vfs_socketpath.what = what; 24 25 r = _taskcall(VFS_PROC_NR, VFS_SOCKETPATH, &m); 26 27 cpf_revoke(grant); 28 29 if (r == OK) { 30 *dev = m.m_vfs_lsys_socketpath.device; 31 *ino = m.m_vfs_lsys_socketpath.inode; 32 } 33 34 return r; 35 } 36