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