mirror of https://git.musl-libc.org/git/musl
2 changed files with 42 additions and 0 deletions
@ -0,0 +1,21 @@ |
|||
#include <sys/mman.h> |
|||
#include <errno.h> |
|||
#include <fcntl.h> |
|||
#include <unistd.h> |
|||
#include <string.h> |
|||
|
|||
int shm_open(const char *name, int flag, mode_t mode) |
|||
{ |
|||
int fd, dir; |
|||
|
|||
while (*name == '/') name++; |
|||
if (strchr(name, '/')) { |
|||
errno = EINVAL; |
|||
return -1; |
|||
} |
|||
|
|||
if ((dir = open("/dev/shm", O_DIRECTORY|O_RDONLY)) < 0) return -1; |
|||
fd = openat(dir, name, flag|O_NOFOLLOW|O_CLOEXEC|O_NONBLOCK, mode); |
|||
close(dir); |
|||
return fd; |
|||
} |
|||
@ -0,0 +1,21 @@ |
|||
#include <sys/mman.h> |
|||
#include <errno.h> |
|||
#include <fcntl.h> |
|||
#include <unistd.h> |
|||
#include <string.h> |
|||
|
|||
int shm_unlink(const char *name) |
|||
{ |
|||
int dir, ret; |
|||
|
|||
while (*name == '/') name++; |
|||
if (strchr(name, '/')) { |
|||
errno = EINVAL; |
|||
return -1; |
|||
} |
|||
|
|||
if ((dir = open("/dev/shm", O_DIRECTORY|O_RDONLY)) < 0) return -1; |
|||
ret = unlinkat(dir, name, 0); |
|||
close(dir); |
|||
return ret; |
|||
} |
|||
Loading…
Reference in new issue