Man page - munmap(2)
Packages contains this manual
- __malloc_initialize_hook(3)
- getpwuid(3)
- frexpl(3)
- fchown(2)
- setttyent(3)
- pthread_attr_setstacksize(3)
- calloc(3)
- clog(3)
- seteuid(2)
- res_nquerydomain(3)
- y0l(3)
- catanl(3)
- catanh(3)
- inet_addr(3)
- getcwd(2)
- epoll_create1(2)
- atol(3)
- pciconfig_write(2)
- htonl(3)
- timer_settime(2)
- munmap(2)
- cexpl(3)
- rt_sigsuspend(2)
- msgctl(2)
- tan(3)
- get_mempolicy(2)
- roundf(3)
- towctrans(3)
- xdr_opaque(3)
- psignal(3)
- error_at_line(3)
- xdrmem_create(3)
- select(2)
- getdate_r(3)
- getprotobyname_r(3)
- nrand48_r(3)
- inet_netof(3)
- inet_ntoa(3)
- nextafterl(3)
- innetgr(3)
- on_exit(3)
- expm1l(3)
- strfmon(3)
- strdup(3)
- getservbyport(3)
- arch_prctl(2)
- j0(3)
- wait4(2)
- personality(2)
- bpf(2)
- pvalloc(3)
- getresuid32(2)
- des_setparity(3)
- prctl(2)
- clog10(3)
- aio_init(3)
- pthread_getconcurrency(3)
- csinl(3)
- linkat(2)
- vsscanf(3)
- isascii(3)
- xdr_union(3)
- nan(3)
- utimensat(2)
- ioctl_vt(2)
- _newselect(2)
- ldexpl(3)
- fabsf(3)
- chown(2)
- mkstemps(3)
- pthread_attr_getstacksize(3)
- listxattr(2)
- getpgrp(2)
- xdr_short(3)
- tcflush(3)
- pthread_cond_wait(3)
- argz_add(3)
- wcpncpy(3)
- reallocarray(3)
- llrintf(3)
- outsl(2)
- qsort(3)
- authnone_create(3)
- tzname(3)
- setresuid32(2)
- isspace(3)
- open_by_handle_at(2)
- drem(3)
- conjf(3)
- nanosleep(2)
- pthread_kill(3)
- putc(3)
- pthread_condattr_destroy(3)
- getpwuid_r(3)
- strverscmp(3)
- res_init(3)
- cacosl(3)
- qecvt_r(3)
- iswgraph(3)
- gethostbyname(3)
- ntohl(3)
- acct(2)
- asinl(3)
- envz_merge(3)
- strdupa(3)
- idle(2)
- getopt_long_only(3)
- hstrerror(3)
- fanotify_init(2)
- fputs_unlocked(3)
- sleep(3)
- vfprintf(3)
- scalb(3)
- nanl(3)
- lchown32(2)
- getnetent_r(3)
- fcntl(2)
- inw(2)
- rintl(3)
- arc4random(3)
- getsockopt(2)
- ilogbl(3)
- clog2(3)
- encrypt(3)
- sqrtf(3)
- isspace_l(3)
- tanl(3)
- cfmakeraw(3)
- assert(3)
- strtoull(3)
- xdrstdio_create(3)
- optopt(3)
- setrlimit(2)
- lround(3)
- xdr_accepted_reply(3)
- fmin(3)
- mq_notify(3)
- svcerr_auth(3)
- sbrk(2)
- recv(2)
- mq_unlink(2)
- strxfrm(3)
- ctan(3)
- atoi(3)
- xcrypt(3)
- sgetspent(3)
- fread(3)
- isless(3)
- ceil(3)
- pthread_cond_broadcast(3)
- oldfstat(2)
- outl(2)
- times(2)
- wcslen(3)
- popen(3)
- wprintf(3)
- labs(3)
- getrpcbynumber(3)
- shmat(2)
- clock_gettime(2)
- btree(3)
- s390_sthyi(2)
- siggetmask(3)
- getgid32(2)
- puts(3)
- scalblnl(3)
- strpbrk(3)
- catanhl(3)
- vlimit(3)
- getrpcent(3)
- tgammal(3)
- strtoll(3)
- funlockfile(3)
- xdecrypt(3)
- pthread_key_delete(3)
- setgrent(3)
- wmemmove(3)
- gnu_dev_major(3)
- regexec(3)
- lrintl(3)
- __ppc_set_ppr_med(3)
- rmdir(2)
- io_getevents(2)
- request_key(2)
- ecvt(3)
- __ppc_mdoom(3)
- mktemp(3)
- key_gendes(3)
- le64toh(3)
- statvfs(3)
- rpc(3)
- getdate_err(3)
- munlockall(2)
- close(2)
- xdr_rejected_reply(3)
- dlerror(3)
- le32toh(3)
- feclearexcept(3)
- insque(3)
- clntraw_create(3)
- getutid(3)
- strtof(3)
- settimeofday(2)
- mkdir(2)
- rewind(3)
- logf(3)
- tmpnam(3)
- iswpunct(3)
- wcrtomb(3)
- epoll_pwait(2)
- getitimer(2)
- wordexp(3)
- clog2f(3)
- capset(2)
- strrchr(3)
- outsb(2)
- freeifaddrs(3)
- getwc_unlocked(3)
- ustat(2)
- bswap_16(3)
- program_invocation_short_name(3)
- ldiv(3)
- exp10f(3)
- vprintf(3)
- wcsncpy(3)
- iscntrl(3)
- readlink(2)
- semget(2)
- connect(2)
- psiginfo(3)
- epoll_ctl(2)
- removexattr(2)
- envz_strip(3)
- fgetxattr(2)
- atexit(3)
- putgrent(3)
- bswap(3)
- getegid32(2)
- qecvt(3)
- asinh(3)
- isfdtype(3)
- setenv(3)
- readdir(3)
- rtime(3)
- nearbyint(3)
- getgroups32(2)
- statx(2)
- modify_ldt(2)
- cpow(3)
- eventfd_read(3)
- sendfile64(2)
- getnetbyname(3)
- fremovexattr(2)
- uselib(2)
- inet(3)
- endutxent(3)
- clnt_spcreateerror(3)
- pututline(3)
- nexttowardl(3)
- getipnodebyaddr(3)
- fts_set(3)
- memmem(3)
- fmodl(3)
- setfsuid32(2)
- wordfree(3)
- fadvise64(2)
- getppid(2)
- qsort_r(3)
- toupper(3)
- getwc(3)
- fputws(3)
- mrand48(3)
- preadv(2)
- sincosf(3)
- fstatat64(2)
- dirfd(3)
- jnf(3)
- static_assert(3)
- wctype(3)
- vwarn(3)
- setfsent(3)
- listen(2)
- wcstok(3)
- argz_insert(3)
- select_tut(2)
- ctanl(3)
- getunwind(2)
- difftime(3)
- daylight(3)
- sigpause(3)
- wcscat(3)
- dlclose(3)
- __ppc_set_ppr_med_low(3)
- pread(2)
- fstatvfs(3)
- cbrtf(3)
- strnlen(3)
- sinhl(3)
- inl_p(2)
- setregid32(2)
- putwc(3)
- register_printf_type(3)
- nextafterf(3)
- opendir(3)
- strtod(3)
- tgamma(3)
- malloc_get_state(3)
- aio_write(3)
- timezone(3)
- xdr_pmaplist(3)
- sysfs(2)
- index(3)
- svcerr_noproc(3)
- envz(3)
- klogctl(3)
- pselect(2)
- get_current_dir_name(3)
- xdr_char(3)
- asinhf(3)
- preadv2(2)
- inotify_init1(2)
- pthread_attr_setstackaddr(3)
- getline(3)
- tanhf(3)
- rtnetlink(3)
- pkey_alloc(2)
- edata(3)
- stailq(3)
- isastream(2)
- setregid(2)
- copy_file_range(2)
- rcmd_af(3)
- futex(2)
- prof(2)
- siglongjmp(3)
- hdestroy(3)
- catan(3)
- pthread_cond_signal(3)
- mkfifoat(3)
- clntudp_create(3)
- getentropy(3)
- vsprintf(3)
- fabs(3)
- lseek64(3)
- pthread_setname_np(3)
- conjl(3)
- chroot(2)
- ccoshf(3)
- erand48_r(3)
- wcsnrtombs(3)
- rindex(3)
- fputc_unlocked(3)
- setresgid32(2)
- gettimeofday(2)
- cexp(3)
- inotify_add_watch(2)
- set_robust_list(2)
- nice(2)
- strtold(3)
- mq_getattr(3)
- xdr(3)
- getxattr(2)
- getrandom(2)
- splice(2)
- strerror(3)
- fcntl64(2)
- fnmatch(3)
- ungetwc(3)
- getspnam_r(3)
- clearenv(3)
- atan2(3)
- get_myaddress(3)
- open(2)
- pthread_setcancelstate(3)
- newlocale(3)
- open_memstream(3)
- setprotoent(3)
- logbf(3)
- ilogb(3)
- wmemcpy(3)
- tcsendbreak(3)
- be16toh(3)
- perfmonctl(2)
- strtoq(3)
- getgrgid_r(3)
- pthread_timedjoin_np(3)
- memfd_create(2)
- getttynam(3)
- mcheck_pedantic(3)
- _llseek(2)
- renameat2(2)
- ioperm(2)
- ecb_crypt(3)
- pthread_condattr_init(3)
- fminl(3)
- lio_listio(3)
- envz_add(3)
- setbuf(3)
- setkey(3)
- expm1(3)
- strtoul(3)
- getcwd(3)
- setutxent(3)
- getrpcent_r(3)
- unimplemented(2)
- fclose(3)
- epoll_create(2)
- getfsent(3)
- key_secretkey_is_set(3)
- vserver(2)
- vswprintf(3)
- sigsuspend(2)
- pututxline(3)
- clnt_freeres(3)
- cacheflush(2)
- ioprio_set(2)
- alarm(2)
- fgetc(3)
- __fpurge(3)
- getlogin_r(3)
- vfork(2)
- bstring(3)
- div(3)
- getrusage(2)
- gettid(2)
- dprintf(3)
- strtoumax(3)
- jrand48(3)
- iswcntrl(3)
- vwarnx(3)
- cacos(3)
- ccoshl(3)
- fesetexceptflag(3)
- res_nclose(3)
- shmop(2)
- mcheck_check_all(3)
- vscanf(3)
- tolower(3)
- landlock_add_rule(2)
- argz_next(3)
- lroundl(3)
- ruserok(3)
- glob(3)
- brk(2)
- rename(2)
- strcspn(3)
- sched_getscheduler(2)
- wcstoumax(3)
- dbopen(3)
- xdr_bytes(3)
- fegetenv(3)
- scalbf(3)
- pkey_free(2)
- fgetgrent(3)
- strchrnul(3)
- fork(2)
- log1pf(3)
- strtoimax(3)
- fputs(3)
- putspent(3)
- ttyname_r(3)
- iswlower(3)
- epoll_wait(2)
- minor(3)
- wcsspn(3)
- sendmmsg(2)
- pthread_attr_getsigmask_np(3)
- erand48(3)
- setpgrp(2)
- db(3)
- readv(2)
- cimagf(3)
- pthread_sigmask(3)
- getresuid(2)
- gamma(3)
- logwtmp(3)
- imaxabs(3)
- y1(3)
- swapoff(2)
- svcerr_weakauth(3)
- mbtowc(3)
- madvise(2)
- __fbufsize(3)
- swapon(2)
- towlower(3)
- asin(3)
- initgroups(3)
- svc_getreqset(3)
- pthread_attr_destroy(3)
- scalblnf(3)
- ispunct(3)
- casin(3)
- xdr_pmap(3)
- sigvec(3)
- dlmopen(3)
- localeconv(3)
- tcgetattr(3)
- mempcpy(3)
- clnt_perrno(3)
- clock_getcpuclockid(3)
- setaliasent(3)
- clock(3)
- ftok(3)
- svc_run(3)
- getsubopt(3)
- coshf(3)
- pow(3)
- getpwent(3)
- ntp_gettime(3)
- xdrrec_skiprecord(3)
- symlink(2)
- shmctl(2)
- mq_timedreceive(2)
- malloc(3)
- tgkill(2)
- l64a(3)
- unlockpt(3)
- mallopt(3)
- creal(3)
- syscalls(2)
- set_tid_address(2)
- exp2f(3)
- fstatfs(2)
- statfs(2)
- dreml(3)
- feenableexcept(3)
- ftw(3)
- fanotify_mark(2)
- clnt_sperror(3)
- realpath(3)
- sysconf(3)
- _syscall(2)
- set_mempolicy(2)
- mq_unlink(3)
- freehostent(3)
- rresvport_af(3)
- nl_langinfo_l(3)
- fmaxl(3)
- iscntrl_l(3)
- copysignf(3)
- llseek(2)
- bzero(3)
- ioctl_fsmap(2)
- remquof(3)
- malloc_trim(3)
- pthread_getattr_default_np(3)
- isalnum_l(3)
- mlock(2)
- nearbyintf(3)
- confstr(3)
- sinf(3)
- ioctl_eventpoll(2)
- sigstack(3)
- seed48_r(3)
- utmpname(3)
- malloc_stats(3)
- stpncpy(3)
- getservbyport_r(3)
- cabsl(3)
- isblank(3)
- sigprocmask(2)
- isinfl(3)
- isinff(3)
- pathconf(3)
- xdr_u_short(3)
- acos(3)
- timerfd_create(2)
- key_encryptsession(3)
- log2f(3)
- oldlstat(2)
- res_querydomain(3)
- memcmp(3)
- gethostbyaddr(3)
- sighold(3)
- gtty(2)
- xdr_void(3)
- getmsg(2)
- io_setup(2)
- ttyslot(3)
- recno(3)
- cuserid(3)
- nanf(3)
- pthread_getaffinity_np(3)
- if_indextoname(3)
- remainderf(3)
- putpwent(3)
- pow10f(3)
- pwritev(2)
- swapcontext(3)
- cfsetospeed(3)
- envz_remove(3)
- cosh(3)
- a64l(3)
- uselocale(3)
- yn(3)
- msgget(2)
- pthread_equal(3)
- prlimit(2)
- setspent(3)
- newfstatat(2)
- renameat(2)
- truncf(3)
- pthread_yield(3)
- tkill(2)
- islessequal(3)
- isnanf(3)
- sethostent(3)
- setvbuf(3)
- gnu_get_libc_release(3)
- atoll(3)
- getgrnam(3)
- get_robust_list(2)
- __ppc_yield(3)
- __memalign_hook(3)
- eventfd2(2)
- mq_setattr(3)
- tmpnam_r(3)
- pmap_getport(3)
- svcfd_create(3)
- getfsspec(3)
- setgid(2)
- getlogin(3)
- get_nprocs(3)
- canonicalize_file_name(3)
- pthread_mutexattr_getrobust(3)
- strerrorname_np(3)
- csinh(3)
- malloc_set_state(3)
- tcgetsid(3)
- ssignal(3)
- secure_getenv(3)
- significandl(3)
- wcschr(3)
- isgraph(3)
- pthread_mutexattr_gettype(3)
- creat(2)
- cabsf(3)
- __ppc_set_ppr_med_high(3)
- fchdir(2)
- backtrace_symbols(3)
- exp10l(3)
- euidaccess(3)
- sync_file_range(2)
- getutxline(3)
- isdigit(3)
- sinhf(3)
- lgetxattr(2)
- getaliasent(3)
- memrchr(3)
- io_submit(2)
- clnt_create(3)
- __setfpucw(3)
- _flushlbf(3)
- lcong48_r(3)
- clog10l(3)
- pmap_getmaps(3)
- memalign(3)
- xdr_authunix_parms(3)
- execl(3)
- getdate(3)
- cfsetispeed(3)
- tanhl(3)
- wmempcpy(3)
- outw_p(2)
- faccessat(2)
- rresvport(3)
- nextup(3)
- fgetgrent_r(3)
- getopt(3)
- xdr_vector(3)
- aio_error(3)
- frexpf(3)
- getpw(3)
- sscanf(3)
- mprotect(2)
- exp(3)
- sched_getaffinity(2)
- accept4(2)
- remainderl(3)
- pthread_key_create(3)
- endian(3)
- setmntent(3)
- get_phys_pages(3)
- argz(3)
- _exit(2)
- towupper_l(3)
- lrand48(3)
- csqrt(3)
- hdestroy_r(3)
- remquo(3)
- feof_unlocked(3)
- isprint(3)
- pivot_root(2)
- arc4random_uniform(3)
- strfroml(3)
- getdomainname(2)
- va_end(3)
- getresgid(2)
- cosf(3)
- endhostent(3)
- setgid32(2)
- ioctl_fs(2)
- getaddrinfo(3)
- fgetwc(3)
- lock(2)
- getservbyname_r(3)
- sys_nerr(3)
- insb(2)
- usleep(3)
- security(2)
- cfree(3)
- tanf(3)
- fprintf(3)
- pthread_mutexattr_setpshared(3)
- xprt_unregister(3)
- alphasort(3)
- getgrent(3)
- scandirat(3)
- iruserok(3)
- ttyname(3)
- tdestroy(3)
- strcasecmp(3)
- getpgid(2)
- drand48_r(3)
- mmap(2)
- sigtimedwait(2)
- pthread_once(3)
- mq_receive(3)
- pthread_mutexattr_setkind_np(3)
- iopl(2)
- s390_runtime_instr(2)
- lckpwdf(3)
- memmove(3)
- __fpending(3)
- mbsrtowcs(3)
- restart_syscall(2)
- memset(3)
- significandf(3)
- openat2(2)
- timeradd(3)
- conj(3)
- flockfile(3)
- madvise1(2)
- inet_aton(3)
- fstatfs64(2)
- fmax(3)
- fmemopen(3)
- fmaf(3)
- lseek(2)
- registerrpc(3)
- kexec_file_load(2)
- gammal(3)
- feof(3)
- pidfd_open(2)
- crealf(3)
- clogl(3)
- getutmp(3)
- umount(2)
- inet_pton(3)
- flistxattr(2)
- xdr_wrapstring(3)
- socketcall(2)
- setrpcent(3)
- rint(3)
- vm86(2)
- sincosl(3)
- getprotoent_r(3)
- mknod(2)
- getdents64(2)
- gai_cancel(3)
- srandom_r(3)
- getnetbyname_r(3)
- sigaddset(3)
- htole16(3)
- endnetent(3)
- nextafter(3)
- timerisset(3)
- getgrent_r(3)
- freeaddrinfo(3)
- endprotoent(3)
- mbind(2)
- sigorset(3)
- pthread_rwlockattr_setkind_np(3)
- cimag(3)
- waitid(2)
- abs(3)
- unlink(2)
- recvmsg(2)
- getaliasbyname(3)
- wctrans(3)
- kill(2)
- strtol(3)
- __ppc_set_ppr_very_low(3)
- membarrier(2)
- getnetbyaddr_r(3)
- writev(2)
- errx(3)
- tfind(3)
- clone3(2)
- __freading(3)
- outw(2)
- regfree(3)
- accept(2)
- timer_getoverrun(2)
- shmdt(2)
- svcerr_decode(3)
- getnameinfo(3)
- endusershell(3)
- execvpe(3)
- cbc_crypt(3)
- res_send(3)
- xdr_destroy(3)
- getcontext(3)
- pkey_mprotect(2)
- twalk_r(3)
- isalnum(3)
- timercmp(3)
- setxattr(2)
- pthread_cleanup_pop_restore_np(3)
- stat(2)
- isupper(3)
- vsyslog(3)
- strlen(3)
- pthread_attr_setinheritsched(3)
- xdr_inline(3)
- strtouq(3)
- raise(3)
- getpeername(2)
- capget(2)
- atanl(3)
- ferror_unlocked(3)
- isxdigit_l(3)
- modfl(3)
- pthread_mutexattr_init(3)
- pthread_mutexattr_getkind_np(3)
- phys(2)
- llabs(3)
- sched_rr_get_interval(2)
- asprintf(3)
- explicit_bzero(3)
- asctime(3)
- clone(2)
- munlock(2)
- __realloc_hook(3)
- atof(3)
- rt_tgsigqueueinfo(2)
- syslog(2)
- inet_makeaddr(3)
- epoll_pwait2(2)
- iswalpha(3)
- netlink(3)
- sched_setattr(2)
- sigdescr_np(3)
- access(2)
- getc_unlocked(3)
- dysize(3)
- inet_net_pton(3)
- sched_setparam(2)
- timerfd_settime(2)
- nexttowardf(3)
- expf(3)
- svcerr_progvers(3)
- getwchar(3)
- ftime(3)
- if_nametoindex(3)
- argz_add_sep(3)
- vasprintf(3)
- unlinkat(2)
- putenv(3)
- pthread_mutexattr_setrobust_np(3)
- error_message_count(3)
- setfsgid(2)
- cmsg(3)
- setpwent(3)
- cfgetospeed(3)
- end(3)
- pidfd_send_signal(2)
- scalbn(3)
- closelog(3)
- srandom(3)
- argz_replace(3)
- ioctl_tty(2)
- va_arg(3)
- towlower_l(3)
- isblank_l(3)
- remove(3)
- expl(3)
- fscanf(3)
- versionsort(3)
- pow10(3)
- hsearch(3)
- gethostid(3)
- fchownat(2)
- group_member(3)
- getchar_unlocked(3)
- getservbyname(3)
- pthread_mutexattr_destroy(3)
- setpgid(2)
- acosf(3)
- ctanhf(3)
- shm_open(3)
- towupper(3)
- getdents(2)
- chown32(2)
- hypotf(3)
- undocumented(3)
- drand48(3)
- csinf(3)
- ctime_r(3)
- setlinebuf(3)
- ulimit(3)
- spu_create(2)
- fcvt_r(3)
- ipc(2)
- ftruncate64(2)
- fdopen(3)
- svcerr_noprog(3)
- getrpcport(3)
- csin(3)
- sinh(3)
- nrand48(3)
- openpty(3)
- xdr_double(3)
- pthread_attr_getscope(3)
- vfscanf(3)
- catanhf(3)
- inb(2)
- wcpcpy(3)
- ldexp(3)
- getopt_long(3)
- strerrordesc_np(3)
- mbsinit(3)
- argz_stringify(3)
- setbuffer(3)
- byteorder(3)
- expm1f(3)
- pthread_attr_setscope(3)
- gnu_dev_makedev(3)
- pipe(2)
- updwtmp(3)
- fts_read(3)
- ioctl_fat(2)
- h_errno(3)
- sem_getvalue(3)
- iswupper(3)
- lrint(3)
- perror(3)
- xdr_u_int(3)
- timer_create(2)
- iswdigit(3)
- fgetspent(3)
- fwrite_unlocked(3)
- reboot(2)
- ftruncate(2)
- getutmpx(3)
- pwrite64(2)
- getauxval(3)
- xdr_pointer(3)
- getprotobynumber(3)
- svc_destroy(3)
- vmsplice(2)
- inet_network(3)
- readdir_r(3)
- setsockopt(2)
- rexec(3)
- flock(2)
- getw(3)
- mmap2(2)
- j1f(3)
- cprojf(3)
- mkstemp(3)
- symlinkat(2)
- tempnam(3)
- pthread_attr_getaffinity_np(3)
- gethostbyname_r(3)
- signalfd4(2)
- sys_siglist(3)
- erfc(3)
- truncate64(2)
- verr(3)
- pthread_kill_other_threads_np(3)
- eaccess(3)
- fsetpos(3)
- slist(3)
- pmap_unset(3)
- modf(3)
- ioctl_pipe(2)
- vfwprintf(3)
- getresgid32(2)
- statfs64(2)
- cexp2(3)
- stdio_ext(3)
- login_tty(3)
- xdr_long(3)
- dlsym(3)
- clog2l(3)
- malloc_usable_size(3)
- fegetexceptflag(3)
- basename(3)
- fwrite(3)
- vhangup(2)
- printf(3)
- setnetent(3)
- gethostbyname2(3)
- mallinfo2(3)
- signbit(3)
- clnt_broadcast(3)
- sched_yield(2)
- sem_open(3)
- sigsetjmp(3)
- cacoshl(3)
- sem_unlink(3)
- setresuid(2)
- signgam(3)
- putw(3)
- imaxdiv(3)
- regex(3)
- alloc_hugepages(2)
- modff(3)
- exp10(3)
- cprojl(3)
- utime(2)
- clogf(3)
- pthread_mutex_unlock(3)
- erff(3)
- ioctl_userfaultfd(2)
- iswprint(3)
- roundl(3)
- sqrtl(3)
- fpurge(3)
- getusershell(3)
- fcloseall(3)
- xdr_opaque_auth(3)
- gethostent_r(3)
- fgetwc_unlocked(3)
- fchmod(2)
- strptime(3)
- lutimes(3)
- htole64(3)
- putchar_unlocked(3)
- create_module(2)
- isascii_l(3)
- sigaction(2)
- stdout(3)
- geteuid32(2)
- xprt_register(3)
- freopen(3)
- ccosl(3)
- pthread_setschedprio(3)
- rt_sigaction(2)
- getmntent(3)
- putwchar_unlocked(3)
- logl(3)
- remque(3)
- unsetenv(3)
- sigwaitinfo(2)
- pthread_mutexattr_getrobust_np(3)
- initstate_r(3)
- getfsfile(3)
- exp2l(3)
- isatty(3)
- lgamma_r(3)
- lrintf(3)
- outb(2)
- __clone2(2)
- strcpy(3)
- clnt_call(3)
- hypot(3)
- fegetexcept(3)
- tcsetpgrp(3)
- gets(3)
- malloc_info(3)
- nextupf(3)
- pthread_attr_getdetachstate(3)
- getaliasent_r(3)
- fstat64(2)
- futimesat(2)
- dl_iterate_phdr(3)
- posix_madvise(3)
- endnetgrent(3)
- tolower_l(3)
- pthread_attr_setstack(3)
- pread64(2)
- sigsetops(3)
- stty(2)
- process_vm_readv(2)
- isfinite(3)
- gethostbyaddr_r(3)
- cproj(3)
- gai_strerror(3)
- key_decryptsession(3)
- inet_ntop(3)
- __ppc_mdoio(3)
- btowc(3)
- setstate_r(3)
- if_nameindex(3)
- fdetach(2)
- random_r(3)
- iruserok_af(3)
- truncl(3)
- clearerr(3)
- lgammaf(3)
- lfind(3)
- ctanf(3)
- strcat(3)
- pthread_attr_getschedpolicy(3)
- pthread_rwlockattr_getkind_np(3)
- sigrelse(3)
- daemon(3)
- pthread_setcanceltype(3)
- sigevent(7)
- iswalnum(3)
- pmap_set(3)
- stdin(3)
- ceilf(3)
- asctime_r(3)
- poll(2)
- svc_unregister(3)
- isnanl(3)
- carg(3)
- getprotobyname(3)
- arm_fadvise(2)
- optind(3)
- mount_setattr(2)
- dlvsym(3)
- ntp_adjtime(3)
- abort(3)
- pthread_getname_np(3)
- execlp(3)
- bind(2)
- bsearch(3)
- endspent(3)
- register_printf_specifier(3)
- landlock_create_ruleset(2)
- mkostemp(3)
- setgroups(2)
- toupper_l(3)
- argz_extract(3)
- sigblock(3)
- j0l(3)
- argz_delete(3)
- setusershell(3)
- getspnam(3)
- optarg(3)
- vm86old(2)
- sigandset(3)
- getdtablesize(3)
- getsockname(2)
- pthread_sigqueue(3)
- ptsname(3)
- j1(3)
- lgamma(3)
- getpagesize(2)
- pthread_mutex_lock(3)
- setsid(2)
- strncat(3)
- ioctl_kd(2)
- tsearch(3)
- mq_notify(2)
- fcvt(3)
- clntudp_bufcreate(3)
- getpwent_r(3)
- pthread_getspecific(3)
- memfrob(3)
- arc4random_buf(3)
- forkpty(3)
- powl(3)
- dlopen(3)
- stderr(3)
- set_thread_area(2)
- query_module(2)
- sem_close(3)
- strndup(3)
- __malloc_hook(3)
- setjmp(3)
- stdio(3)
- bdflush(2)
- sendto(2)
- mpx(2)
- fopen(3)
- setpriority(2)
- nextdownl(3)
- mprobe(3)
- oldstat(2)
- sem_destroy(3)
- bcopy(3)
- remap_file_pages(2)
- isgreaterequal(3)
- getpass(3)
- seekdir(3)
- break(2)
- authunix_create_default(3)
- tty_ioctl(4)
- process_madvise(2)
- endfsent(3)
- atoq(3)
- strftime(3)
- fts(3)
- getgrgid(3)
- isxdigit(3)
- ftello(3)
- regcomp(3)
- error(3)
- getenv(3)
- clnt_sperrno(3)
- readahead(2)
- y0(3)
- roundup(3)
- io_destroy(2)
- vsnprintf(3)
- lgammal(3)
- eventfd_write(3)
- pthread_mutex_trylock(3)
- lchown(2)
- dladdr(3)
- error_print_progname(3)
- pthread_mutexattr_settype(3)
- strspn(3)
- __after_morecore_hook(3)
- localtime(3)
- fsync(2)
- ether_aton(3)
- csinhl(3)
- trunc(3)
- xdr_u_char(3)
- syslog(3)
- y1f(3)
- ioctl_nsfs(2)
- wmemcmp(3)
- ffsll(3)
- ether_ntohost(3)
- bswap_32(3)
- umount2(2)
- sigfillset(3)
- landlock_restrict_self(2)
- pthread_join(3)
- sysinfo(2)
- clock_settime(2)
- llrint(3)
- s390_guarded_storage(2)
- getc(3)
- inet_lnaof(3)
- tcgetpgrp(3)
- clock_getres(2)
- etext(3)
- strfmon_l(3)
- putwc_unlocked(3)
- xdr_replymsg(3)
- scalbl(3)
- fdim(3)
- getspent(3)
- sem_timedwait(3)
- posix_fallocate(3)
- res_nmkquery(3)
- pthread_spin_unlock(3)
- mq_timedsend(2)
- opterr(3)
- getloadavg(3)
- strsignal(3)
- finite(3)
- inw_p(2)
- csinhf(3)
- execveat(2)
- seed48(3)
- sigset(3)
- setgroups32(2)
- logbl(3)
- wcsdup(3)
- clnt_geterr(3)
- sys_errlist(3)
- inotify_rm_watch(2)
- qgcvt(3)
- wcspbrk(3)
- sin(3)
- lookup_dcookie(2)
- s390_pci_mmio_read(2)
- wcscmp(3)
- getutxent(3)
- pciconfig_read(2)
- initstate(3)
- backtrace(3)
- putc_unlocked(3)
- fedisableexcept(3)
- rt_sigprocmask(2)
- clock_adjtime(2)
- fwprintf(3)
- jnl(3)
- grantpt(3)
- cimagl(3)
- getgrnam_r(3)
- remquol(3)
- swprintf(3)
- mbrtowc(3)
- fileno_unlocked(3)
- readlinkat(2)
- sigignore(3)
- strndupa(3)
- semctl(2)
- assert_perror(3)
- sendfile(2)
- shm_unlink(3)
- log(3)
- ungetc(3)
- erf(3)
- qfcvt(3)
- pthread_atfork(3)
- login(3)
- setservent(3)
- jrand48_r(3)
- wcsnlen(3)
- tcflow(3)
- pthread_cond_destroy(3)
- inl(2)
- srand48_r(3)
- erfcf(3)
- iconv(3)
- pthread_mutex_consistent_np(3)
- fabsl(3)
- pclose(3)
- nfsservctl(2)
- gai_error(3)
- wcsncmp(3)
- islower_l(3)
- iswctype(3)
- svc_register(3)
- arm_sync_file_range(2)
- strfry(3)
- strfromd(3)
- getttyent(3)
- rand(3)
- fchown32(2)
- ctime(3)
- fsetxattr(2)
- feupdateenv(3)
- random(3)
- getpwnam_r(3)
- sigwait(3)
- aio_fsync(3)
- mq_open(2)
- tanh(3)
- localtime_r(3)
- bsd_signal(3)
- strsep(3)
- mknodat(2)
- cexpf(3)
- cacosh(3)
- mbrlen(3)
- aio_cancel(3)
- mq_getsetattr(2)
- fdatasync(2)
- htons(3)
- sem_post(3)
- htobe16(3)
- vtimes(3)
- fgetpwent_r(3)
- getwchar_unlocked(3)
- mkdirat(2)
- dup(2)
- free_hugepages(2)
- feraiseexcept(3)
- lockf(3)
- userfaultfd(2)
- pthread_attr_setaffinity_np(3)
- memcpy(3)
- prlimit64(2)
- ferror(3)
- ldexpf(3)
- aio_return(3)
- adjtimex(2)
- execle(3)
- tailq(3)
- cabs(3)
- endaliasent(3)
- execvp(3)
- hasmntopt(3)
- if_freenameindex(3)
- signal(2)
- dn_comp(3)
- pthread_attr_getstack(3)
- ether_hostton(3)
- re_comp(3)
- cexp2l(3)
- getwd(3)
- llroundl(3)
- cos(3)
- pthread_mutex_consistent(3)
- isalpha_l(3)
- io_cancel(2)
- frexp(3)
- finitel(3)
- perf_event_open(2)
- pthread_exit(3)
- ioctl_console(2)
- timelocal(3)
- timersub(3)
- setresgid(2)
- semop(2)
- getgroups(2)
- envz_entry(3)
- xdr_u_long(3)
- seccomp(2)
- ftrylockfile(3)
- setuid(2)
- wcwidth(3)
- llround(3)
- cacoshf(3)
- pthread_attr_setschedpolicy(3)
- fgetpos(3)
- xdr_array(3)
- sprintf(3)
- wmemset(3)
- setcontext(3)
- copysignl(3)
- be64toh(3)
- matherr(3)
- hypotl(3)
- rawmemchr(3)
- fmodf(3)
- mount(2)
- mktime(3)
- stdarg(3)
- clnttcp_create(3)
- string(3)
- profil(3)
- clnt_perror(3)
- getpriority(2)
- regerror(3)
- clone2(2)
- getgid(2)
- pthread_spin_lock(3)
- iswblank(3)
- ftell(3)
- dup3(2)
- toascii(3)
- strncpy(3)
- mrand48_r(3)
- setstate(3)
- sigqueue(3)
- cpowf(3)
- setlogmask(3)
- sched_getcpu(3)
- htobe32(3)
- list(3)
- isdigit_l(3)
- chdir(2)
- fstat(2)
- pwritev2(2)
- get_thread_area(2)
- freelocale(3)
- acoshl(3)
- socketpair(2)
- scalbln(3)
- fpclassify(3)
- getpwnam(3)
- pthread_getcpuclockid(3)
- ioprio_get(2)
- strtok_r(3)
- exit_group(2)
- scalbnf(3)
- xdrrec_create(3)
- pthread_mutex_destroy(3)
- sqrt(3)
- dirname(3)
- exit(2)
- ulckpwdf(3)
- cargl(3)
- powerof2(3)
- simpleq(3)
- process_vm_writev(2)
- fdopendir(3)
- getpt(3)
- floorl(3)
- va_start(3)
- lcong48(3)
- strerror_l(3)
- xdrrec_eof(3)
- key_setsecret(3)
- lstat64(2)
- memfd_secret(2)
- sigreturn(2)
- casinhf(3)
- valloc(3)
- stat64(2)
- jn(3)
- sinl(3)
- pthread_testcancel(3)
- cfgetispeed(3)
- dup2(2)
- getnetent(3)
- pthread_setconcurrency(3)
- memccpy(3)
- rt_sigqueueinfo(2)
- ccosf(3)
- sincos(3)
- tcdrain(3)
- ccos(3)
- chmod(2)
- cacosf(3)
- lstat(2)
- pthread_spin_trylock(3)
- sigisemptyset(3)
- getrpcbyname(3)
- fpathconf(3)
- copysign(3)
- round(3)
- wmemchr(3)
- qfcvt_r(3)
- fattach(2)
- __fsetlocking(3)
- adjtime(3)
- makedev(3)
- des_crypt(3)
- iswspace(3)
- twalk(3)
- exec(3)
- link(2)
- fileno(3)
- endpwent(3)
- logb(3)
- wcscspn(3)
- console_ioctl(4)
- fgetpwent(3)
- setegid(2)
- clnt_destroy(3)
- getaddrinfo_a(3)
- svc_getargs(3)
- addmntent(3)
- globfree(3)
- islower(3)
- muntrace(3)
- clnt_pcreateerror(3)
- llrintl(3)
- clnt_control(3)
- fgetspent_r(3)
- strstr(3)
- putmsg(2)
- __fwritable(3)
- res_nsearch(3)
- fseeko(3)
- mq_timedreceive(3)
- log10(3)
- fexecve(3)
- gammaf(3)
- pthread_setschedparam(3)
- wcscpy(3)
- xdr_float(3)
- pthread_attr_setdetachstate(3)
- sem_wait(3)
- pow10l(3)
- re_exec(3)
- rand_r(3)
- putpmsg(2)
- getdelim(3)
- utimes(2)
- mq_close(3)
- setutent(3)
- creall(3)
- mq_send(3)
- telldir(3)
- powf(3)
- erfl(3)
- pthread_self(3)
- pselect6(2)
- unlocked_stdio(3)
- insw(2)
- cfsetspeed(3)
- argz_create(3)
- xdr_string(3)
- pthread_attr_getguardsize(3)
- finitef(3)
- setlocale(3)
- bcmp(3)
- fmtmsg(3)
- sendmsg(2)
- pthread_cleanup_push(3)
- inb_p(2)
- mmap64(3)
- getuid32(2)
- truncate(2)
- mlock2(2)
- fegetround(3)
- ugetrlimit(2)
- getprotobynumber_r(3)
- utmpxname(3)
- isinf(3)
- clearerr_unlocked(3)
- stime(2)
- nftw(3)
- duplocale(3)
- svcraw_create(3)
- svc_getcaller(3)
- ctanhl(3)
- cbrt(3)
- floorf(3)
- sethostid(3)
- sigemptyset(3)
- sigaltstack(2)
- mkfifo(3)
- lsearch(3)
- getservent_r(3)
- islessgreater(3)
- floor(3)
- argz_append(3)
- tzset(3)
- res_mkquery(3)
- fstatat(2)
- strchr(3)
- semtimedop(2)
- bindresvport(3)
- tcsetattr(3)
- warn(3)
- getservent(3)
- atanhl(3)
- tdelete(3)
- ynf(3)
- ether_ntoa_r(3)
- fesetenv(3)
- mq_timedsend(3)
- quotactl(2)
- init_module(2)
- rcmd(3)
- fenv(3)
- getutxid(3)
- pthread_mutexattr_getpshared(3)
- scalbnl(3)
- atan2l(3)
- argz_count(3)
- rpmatch(3)
- timerfd_gettime(2)
- ualarm(3)
- pthread_attr_init(3)
- vdprintf(3)
- pthread_cancel(3)
- fflush(3)
- setkey_r(3)
- mbstowcs(3)
- mremap(2)
- strcasestr(3)
- hcreate_r(3)
- siginterrupt(3)
- offsetof(3)
- atan(3)
- wctomb(3)
- getutent(3)
- significand(3)
- arm_fadvise64_64(2)
- dremf(3)
- wcswidth(3)
- syscall(2)
- rintf(3)
- bswap_64(3)
- pthread_attr_getschedparam(3)
- lroundf(3)
- timegm(3)
- posix_fadvise(2)
- getrlimit(2)
- svc_freeargs(3)
- xdr_enum(3)
- hcreate(3)
- ptrace(2)
- backtrace_symbols_fd(3)
- fetestexcept(3)
- ccosh(3)
- htole32(3)
- kexec_load(2)
- fallocate(2)
- timer_gettime(2)
- tgammaf(3)
- errno(3)
- sched_get_priority_max(2)
- xdr_getpos(3)
- vwprintf(3)
- ssetmask(2)
- ether_ntoa(3)
- waitpid(2)
- sched_getattr(2)
- inotify_init(2)
- fma(3)
- gnu_get_libc_version(3)
- svctcp_create(3)
- wcstombs(3)
- gethostname(2)
- strerror_r(3)
- sigismember(3)
- fgetws_unlocked(3)
- hash(3)
- circleq(3)
- getrpcbynumber_r(3)
- pthread_cond_timedwait(3)
- uname(2)
- fgetc_unlocked(3)
- mq_open(3)
- cosl(3)
- rewinddir(3)
- nextdown(3)
- longjmp(3)
- execv(3)
- iconv_open(3)
- xencrypt(3)
- ctermid(3)
- isgraph_l(3)
- move_pages(2)
- isunordered(3)
- msgsnd(2)
- rt_sigtimedwait(2)
- syncfs(2)
- mlockall(2)
- pthread_getschedparam(3)
- lsetxattr(2)
- getutid_r(3)
- log1pl(3)
- catanf(3)
- passwd2des(3)
- iconv_close(3)
- aligned_alloc(3)
- sched_setscheduler(2)
- gmtime(3)
- __free_hook(3)
- acoshf(3)
- mtrace(3)
- resolver(3)
- clog10f(3)
- sethostname(2)
- pthread_attr_setguardsize(3)
- tuxcall(2)
- atanh(3)
- ispunct_l(3)
- svcudp_bufcreate(3)
- ctanh(3)
- j1l(3)
- log10l(3)
- alloca(3)
- sigpending(2)
- nexttoward(3)
- isnormal(3)
- svc_getreq(3)
- putchar(3)
- getnetbyaddr(3)
- cpowl(3)
- get_kernel_syms(2)
- getutline_r(3)
- pthread_setaffinity_np(3)
- isnan(3)
- getprotoent(3)
- catclose(3)
- getsid(2)
- endrpcent(3)
- fts_close(3)
- gnu_dev_minor(3)
- ruserok_af(3)
- getutent_r(3)
- getegid(2)
- sgetmask(2)
- posix_memalign(3)
- atanf(3)
- unshare(2)
- lremovexattr(2)
- strncasecmp(3)
- endutent(3)
- updwtmpx(3)
- outsw(2)
- sched_getparam(2)
- setuid32(2)
- catgets(3)
- nextupl(3)
- openat(2)
- logout(3)
- free(3)
- setfsuid(2)
- getutline(3)
- svc_sendreply(3)
- fadvise64_64(2)
- cargf(3)
- __ppc_set_ppr_low(3)
- casinh(3)
- outb_p(2)
- fputwc(3)
- log10f(3)
- getnetgrent(3)
- fputws_unlocked(3)
- ffsl(3)
- endttyent(3)
- isgreater(3)
- sigmask(3)
- sgetspent_r(3)
- fmaxf(3)
- openlog(3)
- strncmp(3)
- closedir(3)
- rexec_af(3)
- exp2(3)
- mcheck(3)
- isalpha(3)
- pthread_mutex_init(3)
- catopen(3)
- clock_nanosleep(2)
- ioctl(2)
- remainder(3)
- olduname(2)
- getcpu(2)
- setns(2)
- asinhl(3)
- wcscasecmp(3)
- nearbyintl(3)
- atan2f(3)
- wctob(3)
- nextdownf(3)
- gmtime_r(3)
- fmal(3)
- setfsgid32(2)
- dlinfo(3)
- posix_spawnp(3)
- fgets_unlocked(3)
- major(3)
- fseek(3)
- xdr_callhdr(3)
- execve(2)
- exit(3)
- makecontext(3)
- sysctl(2)
- oldolduname(2)
- getgrouplist(3)
- pthread_getattr_np(3)
- ffs(3)
- sem_init(3)
- gcvt(3)
- fts_children(3)
- rt_sigreturn(2)
- mallinfo(3)
- insl(2)
- geteuid(2)
- signalfd(2)
- erfcl(3)
- sched_get_priority_min(2)
- sched_setaffinity(2)
- wcsrchr(3)
- xdr_reference(3)
- snprintf(3)
- delete_module(2)
- j0f(3)
- malloc_hook(3)
- casinf(3)
- y0f(3)
- endgrent(3)
- y1l(3)
- pthread_create(3)
- wcsncasecmp(3)
- pidfd_getfd(2)
- htobe64(3)
- _sysctl(2)
- lrand48_r(3)
- warnx(3)
- lgammaf_r(3)
- verrx(3)
- finit_module(2)
- gsignal(3)
- recvfrom(2)
- log2(3)
- fflush_unlocked(3)
- getaliasbyname_r(3)
- pthread_mutexattr_setrobust(3)
- getdirentries(3)
- getrpcbyname_r(3)
- ppoll(2)
- tmpfile(3)
- isupper_l(3)
- xdr_free(3)
- res_nquery(3)
- fts_open(3)
- shutdown(2)
- xdr_callmsg(3)
- coshl(3)
- ntp_gettimex(3)
- afs_syscall(2)
- be32toh(3)
- fchmodat(2)
- addseverity(3)
- pause(2)
- strcmp(3)
- mkostemps(3)
- wcsrtombs(3)
- scandir(3)
- __freadable(3)
- killpg(3)
- add_key(2)
- strcoll(3)
- migrate_pages(2)
- pthread_setattr_default_np(3)
- pthread_attr_setsigmask_np(3)
- sigabbrev_np(3)
- readdir(2)
- subpage_prot(2)
- strfromf(3)
- sysv_signal(3)
- gethostbyname2_r(3)
- outl_p(2)
- sync(2)
- pthread_attr_getinheritsched(3)
- socket(2)
- msgrcv(2)
- fgetws(3)
- pthread_cleanup_push_defer_np(3)
- getnetgrent_r(3)
- ynl(3)
- endservent(3)
- srand(3)
- endmntent(3)
- cbrtl(3)
- setitimer(2)
- pmap_rmtcall(3)
- svcerr_systemerr(3)
- fesetround(3)
- ilogbf(3)
- __fwriting(3)
- log1p(3)
- futimens(3)
- xdrrec_endofrecord(3)
- setreuid32(2)
- swab(3)
- pthread_spin_init(3)
- memchr(3)
- fminf(3)
- getipnodebyname(3)
- msgop(2)
- wait(2)
- ether_aton_r(3)
- open_wmemstream(3)
- xdr_bool(3)
- pthread_tryjoin_np(3)
- xdr_int(3)
- inet_net_ntop(3)
- fdimf(3)
- srand48(3)
- xdr_setpos(3)
- asinf(3)
- program_invocation_name(3)
- write(2)
- mkdtemp(3)
- pthread_cleanup_pop(3)
- ptsname_r(3)
- lgammal_r(3)
- pthread_attr_getstackaddr(3)
- authunix_create(3)
- getpmsg(2)
- ceill(3)
- cexp2f(3)
- kcmp(2)
- setup(2)
- err(3)
- sync_file_range2(2)
- getpid(2)
- wcsncat(3)
- envz_get(3)
- futimes(3)
- mincore(2)
- herror(3)
- ether_line(3)
- feholdexcept(3)
- fputc(3)
- keyctl(2)
- timer_delete(2)
- posix_spawn(3)
- faccessat2(2)
- setnetgrent(3)
- pwrite(2)
- aio_read(3)
- shmget(2)
- acosh(3)
- sigdelset(3)
- __ppc_get_timebase(3)
- __flbf(3)
- dladdr1(3)
- argz_create_sep(3)
- mblen(3)
- gethostent(3)
- pciconfig_iobase(2)
- recvmmsg(2)
- isprint_l(3)
- csqrtf(3)
- wcstoimax(3)
- hsearch_r(3)
- svcudp_create(3)
- setreuid(2)
- le16toh(3)
- name_to_handle_at(2)
- strftime_l(3)
- pthread_attr_setschedparam(3)
- eventfd(2)
- atanhf(3)
- pthread_setspecific(3)
- pthread_cond_init(3)
- acosl(3)
- llistxattr(2)
- fputwc_unlocked(3)
- scanf(3)
- getmntent_r(3)
- getchar(3)
- res_ninit(3)
- error_one_per_line(3)
- sigsetmask(3)
- putwchar(3)
- llroundf(3)
- rt_sigpending(2)
- send(2)
- wcsstr(3)
- log2l(3)
- fmod(3)
- va_copy(3)
- res_search(3)
- res_nsend(3)
- res_query(3)
- wait3(2)
- encrypt_r(3)
- system(3)
- close_range(2)
- ecvt_r(3)
- read(2)
- auth_destroy(3)
- realloc(3)
- pipe2(2)
- dn_expand(3)
- timerclear(3)
- get_avphys_pages(3)
- mbsnrtowcs(3)
- strtok(3)
- fwide(3)
- __ppc_get_timebase_freq(3)
- gai_suspend(3)
- stpcpy(3)
- lldiv(3)
- iswxdigit(3)
- posix_openpt(3)
- s390_pci_mmio_write(2)
- pthread_spin_destroy(3)
- callrpc(3)
- getifaddrs(3)
- aio_suspend(3)
- fread_unlocked(3)
- get_nprocs_conf(3)
- getuid(2)
- spu_run(2)
- termios(3)
- umask(2)
- csqrtl(3)
- register_printf_modifier(3)
- sem_trywait(3)
- tee(2)
- msync(2)
- mpool(3)
- setdomainname(2)
- fopencookie(3)
- nl_langinfo(3)
- sockatmark(3)
- getspent_r(3)
- casinhl(3)
- fdiml(3)
- ntohs(3)
- fgets(3)
- time(2)
- casinl(3)
- pthread_detach(3)
- seccomp_unotify(2)
apt-get install manpages-dev
Available languages:
en fr pl nl ja ru deManual
mmap
NOMBIBLIOTHĂQUE
SYNOPSIS
DESCRIPTION
Le paramĂštre des attributs
munmap()
VALEUR RENVOYĂE
ERREURS
ATTRIBUTS
VERSIONS
Différences entre bibliothÚque C et noyau
STANDARDS
HISTORIQUE
NOTES
Utilisation sûre de MAP_FIXED
Modifications dâhorodatage pour les projections prises en charge par unfichier
Projections de pages immenses (Huge TLB)
BOGUES
EXEMPLES
Source du programme
VOIR AUSSI
TRADUCTION
NOM
mmap, munmap - Ătablir/supprimer une projection en mĂ©moire (map/unmap) des fichiers ou des pĂ©riphĂ©riques
BIBLIOTHĂQUE
BibliothĂšque C standard ( libc , -lc )
SYNOPSIS
#include <sys/mman.h>
void
*mmap(void
addr
[.
length
],
size_t
length
, int
prot
, int
flags
,
int
fd
, off_t
offset
);
int munmap(void
addr
[.
length
],
size_t
length
);
Consultez la section NOTES pour plus dâinformations sur les exigences de la macro de test de fonctionnalitĂ©.
DESCRIPTION
mmap () crĂ©e une nouvelle projection dans lâespace dâadressage virtuel du processus appelant. Lâadresse de dĂ©marrage de la nouvelle projection est indiquĂ©e dans addr . Le paramĂštre length indique la longueur de la projection (qui doit ĂȘtre supĂ©rieure Ă 0 ).
Si addr est NULL, le noyau choisit lâadresse (alignĂ©e sur une page) Ă laquelle dĂ©marrer la projection ; câest la mĂ©thode la plus portable pour crĂ©er une nouvelle projection. Si addr nâest pas NULL, le noyau le considĂšre comme une indication sur lâendroit oĂč placer la projection ; sous Linux, elle sera placĂ©e Ă une frontiĂšre de page proche (mais toujours supĂ©rieure ou Ă©gale Ă la valeur indiquĂ©e par /proc/sys/vm/mmap_min_addr ) et tente dây crĂ©er la projection. Si une projection y existe dĂ©jĂ , le noyau prend une nouvelle adresse qui peut ou pas dĂ©pendre de lâindication. Lâadresse de la nouvelle projection est renvoyĂ©e comme rĂ©sultat de lâappel.
Le contenu dâune projection de fichier (par opposition Ă une projection anonyme ; voir ci-dessous MAP_ANONYMOUS ) est initialisĂ© avec length octets Ă partir de la position offset dans le fichier (ou autre objet) correspondant au descripteur de fichier fd . offset doit ĂȘtre un multiple de la taille de la page renvoyĂ©e par sysconf(_SC_PAGE_SIZE) .
AprĂšs le retour de lâappel mmap (), le descripteur de fichier fd peut ĂȘtre fermĂ© immĂ©diatement sans invalider la projection.
Lâargument prot indique la protection que lâon dĂ©sire pour cette zone de mĂ©moire et ne doit pas entrer en conflit avec le mode dâouverture du fichier. Il sâagit soit de PROT_NONE (le contenu de la mĂ©moire est inaccessible) soit dâun OU binaire entre les constantes suivantes :
|
PROT_EXEC |
Il est possible dâexĂ©cuter les pages. |
|||
|
PROT_READ |
Il est possible de lire les pages. |
|||
|
PROT_WRITE |
Il est possible dâĂ©crire les pages. |
|||
|
PROT_NONE |
Il nâest pas possible dâaccĂ©der aux pages. |
Le paramĂštre des attributs
Le
paramĂštre
flags
détermine si les
modifications de la projection sont visibles depuis les
autres processus projetant la mĂȘme rĂ©gion et si
les modifications sont appliquées au fichier
sous-jacent. Ce comportement est déterminé en
incluant exactement une des valeurs suivantes dans
flags
:
MAP_SHARED
Partager la projection. Les modifications de la projection sont visibles dans les autres processus qui projettent la mĂȘme rĂ©gion et (en cas de projection file-backed) elles sont appliquĂ©es au fichier sous-jacent (pour contrĂŽler prĂ©cisĂ©ment le moment des mises Ă jour du fichier sous-jacent, il faut utiliser msync (2)).
MAP_SHARED_VALIDATE (depuis Linux 4.15)
Cet attribut apporte le mĂȘme comportement que MAP_SHARED sauf que les projections MAP_SHARED ignorent les attributs inconnus dans flags . Au contraire, lors de la crĂ©ation dâune projection en utilisant MAP_SHARED_VALIDATE , le noyau vĂ©rifie que tous les attributs passĂ©s sont connus et il fait Ă©chouer la projection avec lâerreur EOPNOTSUPP pour les attributs inconnus. Ce type de projection est aussi nĂ©cessaire pour pouvoir utiliser certains attributs de projection (comme MAP_SYNC ).
MAP_PRIVATE
CrĂ©er une projection privĂ©e, utilisant la mĂ©thode de copie Ă lâĂ©criture. Les modifications de la projection ne sont pas visibles depuis les autres processus projetant le mĂȘme fichier, et ne modifient pas le fichier lui-mĂȘme. Il nâest pas prĂ©cisĂ© si les changements effectuĂ©s dans le fichier aprĂšs lâappel mmap () seront visibles dans la rĂ©gion projetĂ©e.
MAP_SHARED et MAP_PRIVATE sont décrits dans POSIX.1-2001 et POSIX.1-2008. MAP_SHARED_VALIDATE est une extension Linux.
De plus,
zĂ©ro ou plus des valeurs suivantes peuvent ĂȘtre
incluses dans
flags
(avec un OU binaire)Â :
MAP_32BIT
(depuis Linux 2.4.20, 2.6)
Placer la projection dans les deux premiers gigaoctets de lâespace dâadressage du processus. Cet attribut nâest pris en charge que sous x86-64, pour les programmes 64 bits. Il a Ă©tĂ© ajoutĂ© pour permettre Ă la pile dâun fil dâexĂ©cution dâĂȘtre allouĂ©e dans les deux premiers gigaoctets de mĂ©moire, afin dâamĂ©liorer les performances des changements de contexte sur les premiers processeurs 64 bits. Les processeurs x86-64 modernes nâont plus ces problĂšmes de performance, donc lâutilisation de cet attribut nâest pas nĂ©cessaire sur ces systĂšmes. Lâattribut MAP_32BIT est ignorĂ© quand MAP_FIXED est positionnĂ©.
MAP_ANON
Synonyme de MAP_ANONYMOUS ; fourni pour une compatibilitĂ© avec dâautres implĂ©mentations.
MAP_ANONYMOUS
La projection nâest prise en charge par aucun fichier ; son contenu est initialisĂ© Ă 0 . Lâargument fd est ignoré ; cependant, certaines implĂ©mentations demandent que fd soit -1 si MAP_ANONYMOUS (ou MAP_ANON ) est utilisĂ©, et les applications portables doivent donc sâen assurer. Lâargument offset devrait ĂȘtre 0 . La prise en charge de MAP_ANONYMOUS avec MAP_SHARED a Ă©tĂ© ajoutĂ©e dans Linux 2.4.
MAP_DENYWRITE
Cet attribut est ignorĂ© (autrefois â Linux 2.0 et antĂ©rieur â il signalait une tentative dâĂ©criture dans le fichier sous-jacent et qui Ă©chouait avec lâerreur ETXTBUSY . Mais cela permettait des attaques par dĂ©ni de service).
MAP_EXECUTABLE
Cet attribut est ignoré.
MAP_FILE
Attribut pour compatibilité. Ignoré.
MAP_FIXED
Ne pas considĂ©rer addr comme une indication : nâutiliser que lâadresse indiquĂ©e. addr doit ĂȘtre correctement alignĂ©e : pour la plupart des architectures, un multiple de la taille de page suffit, toutefois certaines architectures imposent des limitations supplĂ©mentaires. Si la zone mĂ©moire indiquĂ©e par addr et length recouvre des pages dâune projection existante, la partie recouverte de la projection existante sera ignorĂ©e. Si lâadresse indiquĂ©e ne peut ĂȘtre utilisĂ©e, mmap () Ă©chouera.
Les logiciels qui aspirent Ă la portabilitĂ© devraient utiliser lâattribut MAP_FIXED prudemment, en gardant Ă lâesprit que lâaspect exact des projections de mĂ©moire du processus est autorisĂ© Ă changer significativement entre les versions de Linux, de la glibc et du systĂšme dâexploitation. Lisez attentivement le point sur cet attribut dans les NOTES !
MAP_FIXED_NOREPLACE (depuis Linux 4.17)
Cet attribut offre un comportement identique Ă MAP_FIXED par rapport Ă lâapplication de addr , mais il sâen distingue en ce que MAP_FIXED_NOREPLACE nâĂ©crase jamais une plage projetĂ©e existante. Si la plage demandĂ©e entre en conflit avec une projection existante, cet appel Ă©choue avec lâerreur EEXIST. Cet attribut peut donc ĂȘtre utilisĂ© comme une façon dâessayer de projeter une plage dâadresses de maniĂšre atomique (vis-Ă -vis dâautres fils dâexĂ©cutions) : un thread rĂ©ussira, tous les autres signaleront un Ă©chec.
Remarquez que les anciens noyaux qui ne reconnaissent pas lâattribut MAP_FIXED_NOREPLACE se rabattront gĂ©nĂ©ralement (en dĂ©tectant une collision avec une projection existante) sur un type de comportement « sans MAP_FIXED » : ils renverront une adresse diffĂ©rente de celle demandĂ©e. Les logiciels rĂ©tro-compatibles devront donc vĂ©rifier lâadresse renvoyĂ©e vis-Ă -vis de lâadresse demandĂ©e.
MAP_GROWSDOWN
Cet attribut est utilisĂ© pour les piles. Il indique au noyau le systĂšme de mĂ©moire virtuelle vers lequel la projection devrait descendre dans la mĂ©moire. Lâadresse renvoyĂ©e est une page infĂ©rieure Ă la zone de mĂ©moire créée dans lâespace dâadressage virtuel du processus. La modification dâune adresse dans la page de « garde » sous la projection fera agrandir la projection dâune page. Cette croissance peut se rĂ©pĂ©ter jusquâĂ ce que la taille de la projection dans la page atteigne lâextrĂ©mitĂ© haute de la projection plus basse suivante, point oĂč la modification de la page de « garde » donnera un signal SIGSEGV .
MAP_HUGETLB (depuis Linux 2.6.32)
Allouer la projection Ă lâaide de « pages immenses ». Consultez le fichier Documentation/vm/hugetlbpage.txt des sources du noyau Linux pour plus dâinformations ainsi que les NOTES ci-dessous.
MAP_HUGE_2MB
MAP_HUGE_1GB
(depuis Linux 3.8)
UtilisĂ© avec MAP_HUGETLB pour sĂ©lectionner dâautres tailles de pages immenses (hugetlb) (respectivement 2 Mo et 1 Go) sur les systĂšmes qui gĂšrent plusieurs tailles de page hugetlb.
Plus gĂ©nĂ©ralement, la taille de la page immense souhaitĂ©e peut ĂȘtre configurĂ©e en encodant le logarithme de base 2 de la taille de la page dĂ©sirĂ©e dans les six bits situĂ©s sur MAP_HUGE_SHIFT (une valeur de zĂ©ro dans ce champ de bit fournit la taille de page immense par dĂ©faut ; vous pouvez connaĂźtre celle-ci Ă lâaide du champ Hugepagesize qui apparaĂźt dans /proc/meminfo ). Ainsi, les deux constantes ci-dessus sont dĂ©finies comme suit :
#define
MAP_HUGE_2MB (21 << MAP_HUGE_SHIFT)
#define MAP_HUGE_1GB (30 << MAP_HUGE_SHIFT)
Vous pouvez connaĂźtre lâintervalle de tailles des pages immenses gĂ©rĂ©es par le systĂšme en listant les sous-rĂ©pertoires de /sys/kernel/mm/hugepages .
MAP_LOCKED (depuis Linux 2.5.37)
Marquer la rĂ©gion projetĂ©e pour quâelle soit verrouillĂ©e de la mĂȘme maniĂšre que mlock (2). Cette implĂ©mentation essaiera de remplir (prefault) toute la plage mais lâappel mmap () nâĂ©chouera pas avec ENOMEM si cela Ă©choue. Des erreurs Ă©normes pourraient donc se produire ultĂ©rieurement. La sĂ©mantique nâest donc pas aussi robuste que mlock (2). Vous devriez utiliser mmap () et mlock (2) si dâĂ©normes erreurs ne sont pas acceptables aprĂšs lâinitialisation de la projection. Lâattribut MAP_LOCKED est ignorĂ© sur les anciens noyaux.
MAP_NONBLOCK (depuis Linux 2.5.46)
Cet attribut nâa de sens quâen conjonction avec MAP_POPULATE . Ne pas effectuer de lecture anticipĂ©e : crĂ©er seulement les entrĂ©es de tables de page pour les pages dĂ©jĂ prĂ©sentes en RAM. Depuis Linux 2.6.23, cet attribut fait que MAP_POPULATE nâa aucun effet. Un jour la combinaison de MAP_POPULATE et MAP_NONBLOCK pourra ĂȘtre implĂ©mentĂ©e de nouveau.
MAP_NORESERVE
Ne pas rĂ©server dâespace de swap pour les pages de cette projection. Une telle rĂ©servation garantit que lâon puisse modifier les zones soumises Ă une copie-en-Ă©criture. Sans rĂ©servation, on peut recevoir un signal SIGSEGV durant une Ă©criture, sâil nây a plus de place disponible. Consultez Ă©galement la description du fichier /proc/sys/vm/overcommit_memory dans la page proc (5). Avant Linux 2.6, cet attribut nâavait dâeffet que pour les projections privĂ©es modifiables.
MAP_POPULATE (depuis Linux 2.5.46)
Remplir (prefault) les tables de pages pour une projection. Pour une projection de fichier, cela provoque une lecture anticipĂ©e du fichier. Les accĂšs ultĂ©rieurs Ă la projection ne seront pas bloquĂ©s par des erreurs de pages. Lâappel mmap nâĂ©choue pas si la projection ne peut pas ĂȘtre remplie (par exemple Ă cause de limitation sur le nombre de pages immenses mappĂ©es lors de lâutilisation de MAP_HUGETLB ). La prise en charge de MAP_POPULATE avec les projections privĂ©es a Ă©tĂ© ajoutĂ©e dans Linux 2.6.23.
MAP_STACK (depuis Linux 2.6.27)
Allouer la projection Ă une adresse qui convient Ă la pile dâun processus ou dâun thread.
Cet attribut nâest pas opĂ©rationnel pour lâinstant sur Linux. Mais son utilisation permet aux applications de sâassurer quâelles le gĂšreront de maniĂšre transparente sâil est implĂ©mentĂ© dans le futur. Ainsi, il est utilisĂ© dans lâimplĂ©mentation de threading de la glibc pour accepter le fait que certaines architectures pourront (plus tard) nĂ©cessiter un traitement spĂ©cial pour allouer des piles. Une autre raison dâutiliser cet attribut est la portabilité : MAP_STACK existe et a un effet sur dâautres systĂšmes (comme certains BSD).
MAP_SYNC (depuis Linux 4.15)
Cet attribut nâest possible quâavec le type de projection MAP_SHARED_VALIDATE ; les projections de type MAP_SHARED ignoreront silencieusement cet attribut. Il nâest pris en charge que pour des fichiers gĂ©rant le DAX (projection directe de mĂ©moire persistante). Pour les autres fichiers, crĂ©er une projection avec cet attribut provoquera une erreur EOPNOTSUPP .
Les projections de fichier partagĂ© ayant cet attribut fournissent une garantie que tant que la mĂ©moire est projetĂ©e avec accĂšs en Ă©criture dans lâespace dâadressage du processus, elle sera visible dans le mĂȘme fichier et au mĂȘme endroit mĂȘme aprĂšs un plantage ou un redĂ©marrage du systĂšme. CouplĂ© Ă lâutilisation des instructions adĂ©quates du processeur, cela offre aux utilisateurs de telles projections une maniĂšre plus efficace de rendre des modifications de donnĂ©es persistantes.
MAP_UNINITIALIZED (depuis Linux 2.6.33)
Ne pas effacer pas les pages anonymes. Cet attribut nâa pour lâinstant un effet que si le noyau a Ă©tĂ© configurĂ© avec lâoption CONFIG_MMAP_ALLOW_UNINITIALIZED . Ă cause des implications sur la sĂ©curitĂ©, cette option nâest normalement active que sur des pĂ©riphĂ©riques embarquĂ©s (câest-Ă -dire avec des pĂ©riphĂ©riques avec lesquels il est possible dâavoir un contrĂŽle total de la mĂ©moire utilisateur).
Parmi les attributs ci-dessus, seul MAP_FIXED est spécifié dans POSIX.1-2001 et POSIX.1-2008. Cependant, la plupart des systÚmes gÚrent aussi MAP_ANONYMOUS (ou son synonyme MAP_ANON ).
munmap()
Lâappel systĂšme munmap () dĂ©truit la projection dans la zone de mĂ©moire spĂ©cifiĂ©e et sâarrange pour que toute rĂ©fĂ©rence ultĂ©rieure Ă cette zone mĂ©moire dĂ©clenche une erreur dâadressage. La projection est aussi automatiquement dĂ©truite lorsque le processus se termine. Ă lâinverse, la fermeture du descripteur de fichier ne supprime pas la projection.
Lâadresse addr doit ĂȘtre un multiple de la taille de la page (mais ce nâest pas obligatoire pour length ). Toutes les pages contenant une partie de lâintervalle indiquĂ© sont libĂ©rĂ©es, et tout accĂšs ultĂ©rieur dĂ©clenchera SIGSEGV . Aucune erreur nâest dĂ©tectĂ©e si lâintervalle indiquĂ© ne contient pas de page projetĂ©e.
VALEUR RENVOYĂE
En cas de succĂšs, mmap () renvoie un pointeur sur la zone projetĂ©e. En cas dâĂ©chec, la valeur MAP_FAILED (câest-Ă -dire (void *) -1 ) est renvoyĂ©e et errno est dĂ©fini pour indiquer lâerreur.
Sâil rĂ©ussit, munmap () renvoie 0 . En cas dâĂ©chec, -1 est renvoyĂ© et errno est dĂ©fini pour indiquer lâerreur (probablement EINVAL ).
ERREURS
|
EACCES |
Le descripteur ne correspond pas Ă un fichier normal ou une demande de projection de fichier a Ă©tĂ© demandĂ©e mais fd nâest pas ouvert en lecture, ou une demande de projection partagĂ©e MAP_SHARED avec protection PROT_WRITE a Ă©tĂ© demandĂ©e mais fd nâest pas ouvert en lecture et Ă©criture ( O_RDWR ), ou encore PROT_WRITE est demandĂ© mais le fichier est ouvert en ajout seulement. |
||
|
EAGAIN |
Le fichier est verrouillé ou trop de pages ont été verrouillées en mémoire (consultez setrlimit (2)). |
||
|
EBADF |
fd nâest pas un descripteur de fichier valable (et MAP_ANONYMOUS nâĂ©tait pas prĂ©cisĂ©). |
||
|
EEXIST |
MAP_FIXED_NOREPLACE était indiqué dans flags et la plage couverte par addr et length est en conflit avec une projection existante. |
||
|
EINVAL |
addr ou length ou offset sont non valables (par exemple : zone trop grande, ou non alignée sur une frontiÚre de page). |
||
|
EINVAL |
(depuis Linux 2.6.12) length est nul. |
||
|
EINVAL |
flags ne contenait ni MAP_PRIVATE , ni MAP_SHARED , ni MAP_SHARED_VALIDATE . |
||
|
ENFILE |
La limite du nombre total de fichiers ouverts pour le systÚme entier a été atteinte. |
||
|
ENODEV |
Le systÚme de fichiers sous-jacent ne gÚre pas la projection en mémoire. |
||
|
ENOMEM |
Aucune mémoire disponible. |
||
|
ENOMEM |
Le nombre maximal de projections du processus serait dĂ©passĂ©. Cette erreur peut aussi se produire pour munmap () lors de la suppression dâune projection dâune rĂ©gion au milieu dâune projection existante, puisque cela provoque deux rĂ©gions plus petites de chaque cĂŽtĂ© de la rĂ©gion Ă supprimer. |
||
|
ENOMEM |
(Depuis Linux 4.7) La limite RLIMIT_DATA du processus, décrite dans getrlimit (2), serait dépassée. |
||
|
ENOMEM |
addr nâest pas apprĂ©ciĂ© parce quâil dĂ©passe lâespace dâadressage virtuel du processeur |
EOVERFLOW
Sur architecture 32 bits avec lâextension de fichiers trĂšs grands (câest-Ă -dire utilisant un off_t sur 64 bits) : le nombre de pages utilisĂ©es pour length plus le nombre de pages utilisĂ©es pour offset dĂ©passerait unsigned long (32 bits).
|
EPERM |
Lâargument prot a demandĂ© PROT_EXEC mais la zone appartient Ă un fichier sur un systĂšme de fichiers montĂ© sans permission dâexĂ©cution. |
||
|
EPERM |
La lecture a été interrompue par un signal ; consultez fnctl (2). |
||
|
EPERM |
Lâattribut MAP_HUGETLB Ă©tait indiquĂ©, mais lâappelant nâĂ©tait pas priviliĂ©giĂ© (il nâavait pas la capacitĂ© CAP_IPC_LOCK ) et nâest pas membre du groupe sysctl_hugetlb_shm_group ; voir la desription de /proc/sys/vm/sysctl_hugetlb_shm_group dans proc_sys (5). |
ETXTBSY
MAP_DENYWRITE a été réclamé mais fd est ouvert en écriture.
LâaccĂšs
à une zone de projection peut déclencher les
signaux suivants :
SIGSEGV
Tentative dâĂ©criture dans une zone en lecture seule.
|
SIGBUS |
Tentative dâaccĂšs Ă une page du tampon au-delĂ de la fin du fichier projetĂ©. Pour une explication du traitement des octets dans la page correspondant Ă la fin du fichier projetĂ© nâĂ©tant pas un multiple de la taille de la page, voir les NOTES. |
ATTRIBUTS
Pour une explication des termes utilisés dans cette section, consulter attributes (7).
VERSIONS
Sur certaines architectures matĂ©rielles (par exemple, i386), PROT_WRITE implique PROT_READ . Cela dĂ©pend de lâarchitecture si PROT_READ implique PROT_EXEC ou non. Les programmes portables doivent toujours indiquer PROT_EXEC sâils veulent exĂ©cuter du code dans la projection.
La maniĂšre portable de crĂ©er une projection est de spĂ©cifier addr Ă 0 (NULL), et dâomettre MAP_FIXED dans flags . Dans ce cas, le systĂšme choisit lâadresse de la projection ; lâadresse est choisie de maniĂšre Ă ne pas entrer en conflit avec une projection existante et de ne pas ĂȘtre nulle. Si lâattribut MAP_FIXED est indiquĂ© et si addr vaut 0 (NULL), lâadresse projetĂ©e sera zĂ©ro (NULL).
Certaines constantes de flags sont définies seulement si des macros de test de fonctionnalités adaptées sont définies (potentiellement par défaut) : _DEFAULT_SOURCE avec la glibc 2.19 ou supérieure, ou bien _BSD_SOURCE ou _SVID_SOURCE dans la glibc 2.19 et antérieure (la définition de _GNU_SOURCE suffit également, et son usage aurait été plus logique, puisque ces attributs sont tous spécifiques à Linux). Les attributs adéquats sont : MAP_32BIT , MAP_ANONYMOUS (et son synonyme MAP_ANON ), MAP_DENYWRITE , MAP_EXECUTABLE , MAP_FILE , MAP_GROWSDOWN , MAP_HUGETLB , MAP_LOCKED , MAP_NONBLOCK , MAP_NORESERVE , MAP_POPULATE , et MAP_STACK .
Différences entre bibliothÚque C et noyau
Cette page dĂ©crit lâinterface fournie par la fonction mmap () de la glibc. Initialement, cette fonction appelait un appel systĂšme du mĂȘme nom. Depuis Linux 2.4, cet appel systĂšme a Ă©tĂ© remplacĂ© par mmap2 (2). De nos jours, la fonction mmap () de la glibc appelle mmap2 (2) avec la bonne valeur pour offset .
STANDARDS
POSIX.1-2008.
HISTORIQUE
POSIX.1-2001, SVr4, 4.4BSD.
Sur les systÚmes POSIX sur lesquels mmap (), msync (2) et munmap () sont disponibles, _POSIX_MAPPED_FILES est définie dans <unistd.h> comme étant une valeur supérieure à 0 (consultez aussi sysconf (3)).
NOTES
La mĂ©moire obtenue par mmap est prĂ©servĂ©e au travers dâun fork (2), avec les mĂȘmes attributs.
Un fichier est projetĂ© en multiples de de la taille de la page. Pour un fichier dont la longueur nâest pas un multiple de la taille de page, la mĂ©moire restante est remplie de zĂ©ros lors de la projection, et les Ă©critures dans cette zone nâaffectent pas le fichier. Les effets de la modification de la taille du fichier sous-jacent sur les pages correspondant aux zones ajoutĂ©es ou supprimĂ©es ne sont pas prĂ©cisĂ©s.
Une application peut dĂ©terminer les pages dâune projection se trouvant dans le tampon/le cache de page en utilisant mincore (2).
Utilisation sûre de MAP_FIXED
La seule utilisation sĂ»re de MAP_FIXED est quand la plage dâadresses indiquĂ©e par addr et length a Ă©tĂ© prĂ©alablement rĂ©servĂ©e en utilisant une autre projection ; sans quoi lâutilisation de MAP_FIXED est hasardeuse car elle supprime brutalement des projections prĂ©existantes, ce qui facilite la corruption par un processus multithread de son propre espace dâadressage.
Par exemple, supposons quâun thread A cherche dans /proc/ pid /maps une plage dâadresses inutilisĂ©e oĂč il peut se projeter en utilisant MAP_FIXED , tandis quâun thread B acquiert en mĂȘme temps tout ou partie de cette mĂȘme plage dâadresses. Quand le thread A utilisera ensuite mmap(MAP_FIXED) , il va de fait Ă©craser la projection créée par le thread B. Dans ce scĂ©nario, le thread B ne doit pas crĂ©er de projection directement ; un appel de bibliothĂšque qui, en interne, utilise dlopen (3) pour charger dâautres bibliothĂšques partagĂ©es, est suffisant. Lâappel dlopen (3) projettera la bibliothĂšque dans lâespace dâadressage du processus. De plus, presque tous les appels de bibliothĂšques peuvent ĂȘtre implĂ©mentĂ©s dâune maniĂšre qui ajoute des projections de mĂ©moire aux espaces dâadressage, Ă lâaide de cette technique ou en allouant simplement de la mĂ©moire. Parmi les exemples, figurent brk (2), malloc (3), pthread_create (3) et les bibliothĂšques PAM http://www.linux-pam.org .
Depuis Linux 4.17, un programme multithreadĂ© peut utiliser lâattribut MAP_FIXED_NOREPLACE pour Ă©viter le risque dĂ©crit ci-dessus quand on essaie de crĂ©er une projection Ă une adresse fixe non rĂ©servĂ©e par une projection prĂ©existante.
Modifications dâhorodatage pour les projections prises en charge par unfichier
Pour les projections prises en charge par un fichier, le champ st_atime du fichier peut ĂȘtre mis Ă jour Ă tout moment entre lâappel mmap () et le munmap () correspondant. Le premier accĂšs dans la page projetĂ©e mettra le champ Ă jour si cela nâa pas Ă©tĂ© dĂ©jĂ fait.
Les champs st_ctime et st_mtime pour un fichier projetĂ© avec PROT_WRITE et MAP_SHARED seront mis Ă jour aprĂšs une Ă©criture dans la rĂ©gion projetĂ©e, et avant lâĂ©ventuel msync (2) suivant avec lâattribut MS_SYNC ou MS_ASYNC .
Projections de pages immenses (Huge TLB)
Pour les projections qui utilisent des pages immenses, les exigences des attributs de mmap () et de munmap () diffĂšrent quelque peu de celles pour des projections qui utilisent la taille native des pages du systĂšme.
Pour mmap (), offset doit ĂȘtre un multiple de la taille de la page immense sous-jacente. Le systĂšme aligne automatiquement length pour quâil soit un multiple de la taille de la page immense sous-jacente.
Pour munmap (), addr et length doivent ĂȘtre tous deux un multiple de la taille de la page immense sous-jacente.
BOGUES
Sous Linux, il nây a aucune garantie comme celles indiquĂ©es plus haut Ă propos de MAP_NORESERVE . Par dĂ©faut, nâimporte quel processus peut ĂȘtre tuĂ© Ă tout moment lorsque le systĂšme nâa plus de mĂ©moire.
Avant Linux 2.6.7, lâattribut MAP_POPULATE nâavait dâeffet que si prot Ă©tait PROT_NONE .
SUSv3 indique que mmap () devrait Ă©chouer si length est 0. Cependant, avant Linux 2.6.12, mmap () rĂ©ussissait dans ce cas : aucune projection nâĂ©tait créée, et lâappel renvoyait addr . Depuis Linux 2.6.12, mmap () Ă©choue avec le code dâerreur EINVAL si length est nul.
POSIX spĂ©cifie que le systĂšme devrait toujours remplir de zĂ©ros toutes les pages incomplĂštes Ă la fin de lâobjet et que le systĂšme nâĂ©crira jamais de modification de lâobjet au-delĂ de sa fin. Sous Linux, lors de lâĂ©criture de donnĂ©es vers ce genre de pages incomplĂštes aprĂšs la fin de lâobjet, les donnĂ©es restent dans le cache de page mĂȘme aprĂšs que le fichier soit fermĂ© et dĂ©projetĂ©, et mĂȘme si les donnĂ©es ne sont jamais Ă©crites vers le fichier lui-mĂȘme, les projections suivantes pourraient voir le contenu modifiĂ©. Dans certains cas, cela pourrait ĂȘtre corrigĂ© en appelant msync (2) avant la dĂ©projection. Cependant, cela ne fonctionne pas sur tmpfs (5) (par exemple en utilisant lâinterface de mĂ©moire partagĂ©e POSIX documentĂ©e dans shm_overview (7)).
EXEMPLES
Le programme suivant affiche la partie du fichier, prĂ©cisĂ© par le premier argument de la ligne de commande, sur la sortie standard. Les octets qui seront affichĂ©s sont prĂ©cisĂ©s Ă partir dâun offset (dĂ©placement) et dâune longueur en deuxiĂšme et troisiĂšme paramĂštre. Le code fait une projection mĂ©moire des pages nĂ©cessaires du fichier puis utilise write (2) pour afficher les octets voulus.
Source du programme
#include
<fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/mman.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>
#define handle_error(msg) \
do { perror(msg); exit(EXIT_FAILURE); } while (0)
int
main(int argc, char *argv[])
{
int fd;
char *addr;
off_t offset, pa_offset;
size_t length;
ssize_t s;
struct stat sb;
if (argc < 3 || argc > 4) {
fprintf(stderr, "%s position du fichier
[longueur]\n", argv[0]);
exit(EXIT_FAILURE);
}
fd = open(argv[1], O_RDONLY);
if (fd == -1)
handle_error("open");
if (fstat(fd, &sb) == -1) /* To obtain file size */
handle_error("fstat");
offset = atoi(argv[2]);
pa_offset = offset & ~(sysconf(_SC_PAGE_SIZE) - 1);
/* la position de mmap() doit ĂȘtre alignĂ©e sur
la page */
if (offset >= sb.st_size) {
fprintf(stderr, "la position est au-delĂ de la
fin du fichier\n");
exit(EXIT_FAILURE);
}
if (argc == 4) {
length = atoi(argv[3]);
if (offset + length > sb.st_size)
length = sb.st_size - offset;
/* Ne peut pas afficher dâoctets situĂ©s
aprĂšs la fin du fichier */
} else { /* Pas dâaffichage de longueur arg ==>
Ă la fin du fichier */
length = sb.st_size - offset;
}
addr = mmap(NULL, length + offset - pa_offset, PROT_READ,
MAP_PRIVATE, fd, pa_offset);
if (addr == MAP_FAILED)
handle_error("mmap");
s = write(STDOUT_FILENO, addr + offset - pa_offset, length);
if (s != length) {
if (s == -1)
handle_error("write");
fprintf(stderr, "écriture partielle");
exit(EXIT_FAILURE);
}
munmap(addr, length + offset - pa_offset);
close(fd);
exit(EXIT_SUCCESS);
}
VOIR AUSSI
ftruncate (2), getpagesize (2), memfd_create (2), mincore (2), mlock (2), mmap2 (2), mprotect (2), mremap (2), msync (2), remap_file_pages (2), setrlimit (2), shmat (2), userfaultfd (2), shm_open (3), shm_overview (7)
Dans proc (5), les descriptions des fichiers : /proc/ pid /maps , /proc/ pid /map_files et /proc/ pid /smaps .
B.O. Gallmeister, POSIX.4, OâReilly, p. 128â129 et 389â391.
TRADUCTION
La traduction française de cette page de manuel a été créée par Christophe Blaess <https://www.blaess.fr/christophe/>, Stéphan Rafin <stephan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard <fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@debian.org>, David Prévot <david@tilapin.org> et Jean-Philippe MENGUAL <jpmengual@debian.org>
Cette traduction est une documentation libre ; veuillez vous reporter Ă la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il nây a aucune RESPONSABILITĂ LĂGALE.
Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à debian-l10n-french@lists.debian.org .