source: azure_iot_hub/trunk/musl-1.1.18/src/mman/mmap.c@ 388

Last change on this file since 388 was 388, checked in by coas-nagasima, 5 years ago

Azure IoT Hub Device C SDK を使ったサンプルの追加

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
  • Property svn:mime-type set to text/x-csrc
File size: 1.1 KB
Line 
1#include <unistd.h>
2#include <sys/mman.h>
3#include <errno.h>
4#include <stdint.h>
5#include <limits.h>
6#include "syscall.h"
7#include "libc.h"
8
9#ifndef __c2__
10static void dummy(void) { }
11weak_alias(dummy, __vm_wait);
12#else
13extern void __vm_wait(void);
14#endif
15
16#define UNIT SYSCALL_MMAP2_UNIT
17#define OFF_MASK ((-0x2000ULL << (8*sizeof(syscall_arg_t)-1)) | (UNIT-1))
18
19void *__mmap(void *start, size_t len, int prot, int flags, int fd, off_t off)
20{
21 long ret;
22 if (off & OFF_MASK) {
23 errno = EINVAL;
24 return MAP_FAILED;
25 }
26 if (len >= PTRDIFF_MAX) {
27 errno = ENOMEM;
28 return MAP_FAILED;
29 }
30 if (flags & MAP_FIXED) {
31 __vm_wait();
32 }
33#ifdef SYS_mmap2
34 ret = __syscall(SYS_mmap2, start, len, prot, flags, fd, off/UNIT);
35#else
36 ret = __syscall(SYS_mmap, start, len, prot, flags, fd, off);
37#endif
38 /* Fixup incorrect EPERM from kernel. */
39 if (ret == -EPERM && !start && (flags&MAP_ANON) && !(flags&MAP_FIXED))
40 ret = -ENOMEM;
41 return (void *)__syscall_ret(ret);
42}
43
44#ifndef __c2__
45weak_alias(__mmap, mmap);
46#else
47void *mmap(void *start, size_t len, int prot, int flags, int fd, off_t off)
48{
49 return __mmap(start, len, prot, flags, fd, off);
50}
51#endif
52
53LFS64(mmap);
Note: See TracBrowser for help on using the repository browser.