Movatterモバイル変換


[0]ホーム

URL:


Skip Navigation Links
Exit Print View
Link to oracle.comman pages section 2: System Calls    Oracle Solaris 11 Information Library
Oracle Technology Network
Library
PDF
Print View
Feedback
search filter icon
search icon
 Search Scope:

Document Information

Preface

Introduction

System Calls

access(2)

acct(2)

acl(2)

adjtime(2)

alarm(2)

brk(2)

chdir(2)

chmod(2)

chown(2)

chroot(2)

close(2)

creat(2)

dup(2)

exec(2)

execl(2)

execle(2)

execlp(2)

execv(2)

execve(2)

execvex(2)

execvp(2)

_Exit(2)

_exit(2)

exit(2)

faccessat(2)

facl(2)

fchdir(2)

fchmod(2)

fchmodat(2)

fchown(2)

fchownat(2)

fchroot(2)

fcntl(2)

fexecve(2)

fgetlabel(2)

fork1(2)

fork(2)

forkall(2)

forkallx(2)

forkx(2)

fpathconf(2)

fstat(2)

fstatat(2)

fstatvfs(2)

futimens(2)

futimesat(2)

getacct(2)

getcontext(2)

getdents(2)

getegid(2)

geteuid(2)

getgid(2)

getgroups(2)

getisax(2)

getitimer(2)

getlabel(2)

getmsg(2)

getpflags(2)

getpgid(2)

getpgrp(2)

getpid(2)

getpmsg(2)

getppid(2)

getppriv(2)

getprojid(2)

getrctl(2)

getrlimit(2)

getsid(2)

gettaskid(2)

getuid(2)

getustack(2)

ioctl(2)

issetugid(2)

kill(2)

lchown(2)

link(2)

linkat(2)

llseek(2)

lseek(2)

lstat(2)

_lwp_cond_broadcast(2)

_lwp_cond_reltimedwait(2)

_lwp_cond_signal(2)

_lwp_cond_timedwait(2)

_lwp_cond_wait(2)

_lwp_continue(2)

_lwp_info(2)

_lwp_kill(2)

_lwp_mutex_lock(2)

_lwp_mutex_trylock(2)

_lwp_mutex_unlock(2)

_lwp_self(2)

_lwp_sema_init(2)

_lwp_sema_post(2)

_lwp_sema_trywait(2)

_lwp_sema_wait(2)

_lwp_suspend(2)

memcntl(2)

meminfo(2)

mincore(2)

mkdir(2)

mkdirat(2)

mknod(2)

mknodat(2)

mmap(2)

mmapobj(2)

mount(2)

mprotect(2)

msgctl(2)

msgget(2)

msgids(2)

msgrcv(2)

msgsnap(2)

msgsnd(2)

munmap(2)

nice(2)

ntp_adjtime(2)

ntp_gettime(2)

open(2)

openat(2)

pathconf(2)

pause(2)

pcsample(2)

pipe(2)

poll(2)

p_online(2)

ppoll(2)

pread(2)

priocntl(2)

priocntlset(2)

processor_bind(2)

processor_info(2)

profil(2)

pset_assign(2)

pset_bind(2)

pset_create(2)

pset_destroy(2)

pset_getattr(2)

pset_info(2)

pset_list(2)

pset_setattr(2)

putacct(2)

putmsg(2)

putpmsg(2)

pwrite(2)

read(2)

readlink(2)

readlinkat(2)

readv(2)

rename(2)

renameat(2)

resolvepath(2)

rmdir(2)

sbrk(2)

semctl(2)

semget(2)

semids(2)

semop(2)

semtimedop(2)

setcontext(2)

setegid(2)

seteuid(2)

setgid(2)

setgroups(2)

setitimer(2)

setpflags(2)

setpgid(2)

setpgrp(2)

setppriv(2)

setrctl(2)

setregid(2)

setreuid(2)

setrlimit(2)

setsid(2)

settaskid(2)

setuid(2)

setustack(2)

shmadv(2)

shmat(2)

shmctl(2)

shmdt(2)

shmget(2)

shmids(2)

shmop(2)

sigaction(2)

sigaltstack(2)

sigpending(2)

sigprocmask(2)

sigsend(2)

sigsendset(2)

sigsuspend(2)

sigwait(2)

__sparc_utrap_install(2)

stat(2)

statvfs(2)

stime(2)

swapctl(2)

symlink(2)

symlinkat(2)

sync(2)

sysfs(2)

sysinfo(2)

time(2)

times(2)

uadmin(2)

ulimit(2)

umask(2)

umount(2)

umount2(2)

uname(2)

unlink(2)

unlinkat(2)

ustat(2)

utime(2)

utimensat(2)

utimes(2)

uucopy(2)

vfork(2)

vforkx(2)

vhangup(2)

waitid(2)

wracct(2)

write(2)

writev(2)

yield(2)

mmapobj

- map a file object in the appropriate manner

Synopsis

#include <sys/mman.h>intmmapobj(intfd,uint_tflags,mmapobj_result_t *storage,uint_t *elements,void *arg);

Parameters

fd

The open file descriptor for the file to be mapped.

flags

Indicates that the default behavior ofmmapobj() should be modified accordingly. Available flags are:

MMOBJ_INTERPRET

Interpret the contents of the file descriptor instead of just mapping it as a single image. This flag can be used only withELF andAOUT files.

MMOBJ_PADDING

When mapping in the file descriptor, add an additional mapping before the lowest mapping and after the highest mapping. The size of this padding is at least as large as the amount pointed to byarg. These mappings will be private to the process, will not reserve any swap space and will have no protections. To use this address space, the protections for it will need to be changed. This padding request will be ignored for theAOUT format.

storage

A pointer to themmapobj_result_t array where the mapping data will be copied out after a successful mapping offd.

elements

A pointer to the number ofmmapobj_result_t elements pointed to bystorage. On return,elements contains the number of mappings required to fully map the requested object. If the original value ofelements is too small,E2BIG is returned andelements is modified to contain the number of mappings necessary.

arg

A pointer to additional information that might be associated with the specific request. Only theMMOBJ_PADDING request uses this argument. IfMMOBJ_PADDING is not specified,arg must beNULL.

Description

Themmapobj() function establishes a set of mappings between a process's addressspace and a file. By default,mmapobj() maps the whole fileas a single, private, read-only mapping. TheMMOBJ_INTERPRET flag instructsmmapobj()to attempt to interpret the file and map the file according to therules for that file format. The followingELF andAOUT formatsare supported:

ET_EXEC andAOUT executables

This format results in one or more mappings whose size, alignment and protections are as described by the file's program header information. The address of each mapping is explicitly defined by the file's program headers.

ET_DYN andAOUT shared objects

This format results in one or more mappings whose size, alignment and protections are as described by the file's program header information. The base address of the initial mapping is chosen bymmapobj(). The addresses of adjacent mappings are based off of this base address as defined by the file's program headers.

ET_REL andET_CORE

This format results in a single, read-only mapping that covers the whole file. The base address of this mapping is chosen bymmapobj().

Themmapobj() function will not map over any currently used mappings withinthe process, except for the case of anELF ET_EXEC file for whicha previous reservation has been made via/dev/null. The most common wayto make such a reservation would be with anmmap() of/dev/null.

Mappings created withmmapobj() can be processed individually by other system callssuch asmunmap(2).

Themmapobj_result structure contains the following members:

typedef struct mmapobj_result {      caddr_t         mr_addr;         /* mapping address */      size_t          mr_msize;        /* mapping size */      size_t          mr_fsize;        /* file size */      size_t          mr_offset;       /* offset into file */      uint_t          mr_prot;         /* the protections provided */      uint_t          mr_flags;        /* info on the mapping */} mmapobj_result_t;

The macroMR_GET_TYPE(mr_flags) must be used when looking for the above flagsin the value ofmr_flags.

Values formr_flags include:

MR_PADDING   0x1  /* this mapping represents requested padding */MR_HDR_ELF   0x2  /* the ELF header is mapped at mr_addr */MR_HDR_AOU   0x3  /* the AOUT header is mapped at mr_addr */

WhenMR_PADDING is set,mr_fsize andmr_offset will both be 0.

Themr_fsize member represents the amount of the file that is mappedinto memory with this mapping.

Themr_offset member is the offset into the mapping where valid databegins.

Themr_msize member represents the size of the memory mapping starting atmr_addr. This size may include unused data prior tomr_offset that existsto satisfy the alignment requirements of this segment. This size may also includeany non-file data that are required to provideNOBITS data (typically .bss).The system reserves the right to map more thanmr_msize bytes ofmemory but onlymr_msize bytes will be available to the caller ofmmapobj().

Return Values

Upon successful completion, 0 is returned andelements contains the number ofprogram headers that are mapped forfd. The data describing these elementsare copied to storage such that the firstelements members of the storagearray contain valid mapping data.

On failure, -1 is returned anderrno is set to indicate theerror. No data is copied to storage.

Errors

Themmapobj() function will fail if:

E2BIG

Theelements argument was not large enough to hold the number of loadable segments infd. Theelements argument will be modified to contain the number of segments required.

EACCES

The file system containing thefd to be mapped does not allow execute access, or the file descriptor pointed to byfd is not open for reading.

EADDRINUSE

The mapping requirements overlap an object that is already used by the process.

EAGAIN

There is insufficient room to reserve swap space for the mapping.

The file to be mapped is already locked using advisory or mandatory record locking. Seefcntl(2).

EBADF

Thefd argument is not a valid open file descriptor.

EFAULT

Thestorage,arg, orelements argument points to an invalid address.

EINVAL

Theflags argument contains an invalid flag.

MMOBJ_PADDING was not specified inflagsandarg was non-null.

The file to be mapped has a length of 0.

ENODEV

Thefd argument refers to an object for whichmmapobj() is meaningless, such as a terminal.

ENOMEM

Insufficient memory is available to hold the program headers.

Insufficient memory is available in the address space to create the mapping.

ENOTSUP

The current user data model does not match thefd to be interpreted; thus, a 32-bit process that tried to usemmapobj() to interpret a 64-bit object would returnENOTSUP.

Thefd argument is a file whose type can not be interpreted andMMOBJ_INTERPRET was specified inflags.

TheELF header contains an unalignede_phentsize value.

ENOSYS

An unsupported filesystem operation was attempted while trying to map in the object.

Attributes

Seeattributes(5) for descriptions of the following attributes:

ATTRIBUTE TYPE
ATTRIBUTE VALUE
Interface Stability
Private
MT-Level
Async-Signal-Safe

See Also

ld.so.1(1),fcntl(2),memcntl(2),mmap(2),mprotect(2),munmap(2),elf(3ELF),madvise(3C),mlockall(3C),msync(3C),a.out(4),attributes(5)

Linker and Libraries Guide

Copyright © 2011, Oracle and/or its affiliates. All rights reserved.Legal Notices
PreviousNext

[8]ページ先頭

©2009-2025 Movatter.jp