IceWalkers.com - Linux Software downloads and news
Name : Password :
Linux SoftwareLinux RPMLinux HowtosLink UsAboutAdvertise

shmat (2)

SHMOP(2)                   Linux Programmer's Manual                  SHMOP(2)



NAME
       shmop - shared memory operations

SYNOPSIS
       #include<sys/types.h>
       #include<sys/shm.h>

       void*shmat(int shmid,constvoid*shmaddr,int shmflg);

       intshmdt(constvoid*shmaddr);

DESCRIPTION
       The  function  shmat  attaches  the shared memory segment identified by
       shmid to the address space  of  the  calling  process.   The  attaching
       address is specified by shmaddr with one of the following criteria:

       If  shmaddr  is NULL, the system chooses a suitable (unused) address at
       which to attach the segment.

       If shmaddr isn't NULL and SHM_RND is asserted  in  shmflg,  the  attach
       occurs at the address equal to shmaddr rounded down to the nearest mul-
       tiple of SHMLBA.  Otherwise shmaddr must be a page-aligned  address  at
       which the attach occurs.

       If  SHM_RDONLY is asserted in shmflg, the segment is attached for read-
       ing and the process must have read permission for the segment.   Other-
       wise  the  segment  is attached for read and write and the process must
       have read and write permission for the segment.  There is no notion  of
       a write-only shared memory segment.

       The  (Linux-specific) SHM_REMAP flag may be asserted in shmflg to indi-
       cate that the mapping of the segment should replace any  existing  map-
       ping  in  the  range starting at shmaddr and continuing for the size of
       the segment.  (Normally an EINVAL  error  would  result  if  a  mapping
       already  exists in this address range.)  In this case, shmaddr must not
       be NULL.

       The brk value of the calling process is not altered by the attach.  The
       segment  will automatically be detached at process exit.  The same seg-
       ment may be attached as a read and as a read-write one, and  more  than
       once, in the process's address space.

       On  a  successful  shmat  call  the  system  updates the members of the
       shmid_ds structure associated to the shared memory segment as follows:

              shm_atime is set to the current time.

              shm_lpid is set to the process-ID of the calling process.

              shm_nattch is incremented by one.

       Note that the attach succeeds also if  the  shared  memory  segment  is
       marked to be deleted.

       The  function  shmdt  detaches the shared memory segment located at the
       address specified by shmaddr from the address space of the calling pro-
       cess.   The  to-be-detached  segment  must  be  currently attached with
       shmaddr equal to the value returned by the its attaching shmat call.

       On a successful shmdt call  the  system  updates  the  members  of  the
       shmid_ds  structure  associated  with the shared memory segment as fol-
       lows:

              shm_dtime is set to the current time.

              shm_lpid is set to the process-ID of the calling process.

              shm_nattch is decremented by one.  If it becomes 0 and the  seg-
              ment is marked for deletion, the segment is deleted.

       The  occupied  region  in  the  user  space  of  the calling process is
       unmapped.

SYSTEMCALLS
       fork() After a fork() the child inherits  the  attached  shared  memory
              segments.

       exec() After an exec() all attached shared memory segments are detached
              from the process.

       exit() Upon exit() all attached shared  memory  segments  are  detached
              from the process.

RETURNVALUE
       On  failure  both  functions return -1 with errno indicating the error.
       On success shmat returns the address of the attached shared memory seg-
       ment, and shmdt returns 0.

ERRORS
       When shmat fails, errno is set to one of the following:

       EACCES     The  calling  process  has  no  access  permissions  for the
                  requested attach type.

       EINVAL     Invalid shmid value, unaligned (i.e., not  page-aligned  and
                  SHM_RND  was  not  specified)  or  invalid shmaddr value, or
                  failing attach  at  brk,  or  SHM_REMAP  was  specified  and
                  shmaddr was NULL.

       ENOMEM     Could not allocate memory for the descriptor or for the page
                  tables.

       The function shmdt can fail only if there is no shared  memory  segment
       attached at shmaddr, in such a case at return errno will be set to EIN-
       VAL.

NOTES
       Using shmat with shmaddr equal to NULL is the preferred,  portable  way
       of  attaching a shared memory segment.  Be aware that the shared memory
       segment attached in this way may be attached at different addresses  in
       different  processes.   Therefore,  any  pointers maintained within the
       shared memory must be made relative (typically to the starting  address
       of the segment), rather than absolute.

       The following system parameter affects a shmat system call:

       SHMLBA     Segment   low  boundary  address  multiple.   Must  be  page
                  aligned.  For the current implementation the SHMBLA value is
                  PAGE_SIZE.

       The  implementation  has  no intrinsic limit to the per-process maximum
       number of shared memory segments (SHMSEG).

CONFORMINGTO
       SVr4, SVID.  SVr4 documents an additional error condition  EMFILE.   In
       SVID-v4  the  type of the shmaddr argument was changed from char* into
       constvoid*, and the returned type of shmat() from char* into void*.
       (Linux  libc4 and libc5 have the char* prototypes; glibc2 has void*.)

SEEALSO
       brk(2), ipc(5), mmap(2), shmctl(2), shmget(2)



Linux 2.5                         2002-01-05                          SHMOP(2)

_Exitgetsockoptoutwshmat
_exitgettidoutw_pshmctl
_llseekgettimeofdaypauseshmdt
_newselectgetuidpersonalityshmget
_sysctlgttypipeshmop
acceptidlepivot_rootshutdown
accessinbpollsigaction
acctinb_pprctlsigaltstack
adjtimexinlpreadsigblock
afs_syscallinl_pprofsiggetmask
alarminsbpselectsigmask
alloc_hugepagesinslptracesignal
arch_prctlinswpwritesigpause
bdflushintroquotactlsigpending
bindinwreadsigprocmask
breakinw_preaddirsigqueue
brkioctlreadlinksigreturn
cacheflushioctl_listreadvsigsetmask
capgetiopermrebootsigsuspend
capsetioplrecvsigtimedwait
chdiripcrecvfromsigvec
chmodkillrecvmsgsigwaitinfo
chownkillpgrenamesocket
chrootlchownrmdirsocketcall
clonelinksbrksocketpair
closelistensched_get_priority_maxssetmask
connectllseeksched_get_priority_minstat
creatlocksched_getaffinitystatfs
duplseeksched_getparamstime
dup2lstatsched_getschedulerstty
execvemadvisesched_rr_get_intervalswapoff
exitmincoresched_setaffinityswapon
fchdirmkdirsched_setparamsymlink
fchmodmknodsched_setschedulersync
fchownmlocksched_yieldsyscall
fcntlmlockallselectsyscalls
fdatasyncmmapselect_tutsysctl
flockmmap2semctlsysfs
forkmodify_ldtsemgetsysinfo
free_hugepagesmountsemopsyslog
fstatmprotectsendtime
fstatfsmpxsendfiletimes
fsyncmremapsendmsgtkill
ftruncatemsgctlsendtotruncate
futexmsggetsetcontextumask
getcontextmsgopsetdomainnameumount
getdentsmsgrcvsetegidumount2
getdomainnamemsgsndseteuiduname
getdtablesizemsyncsetfsgidundocumented
getegidmunlocksetfsuidunimplemented
geteuidmunlockallsetgidunlink
getgidmunmapsetgroupsuselib
getgroupsnanosleepsethostidustat
gethostidnfsservctlsethostnameutime
gethostnamenicesetitimerutimes
getitimerobsoletesetpgidvfork
getpagesizeoldfstatsetpgrpvhangup
getpeernameoldlstatsetpriorityvm86
getpgidoldoldunamesetregidwait
getpgrpoldstatsetresgidwait3
getpidoldunamesetresuidwait4
getppidopensetreuidwaitpid
getpriorityoutbsetrlimitwrite
getresgidoutb_psetsidwritev
getresuidoutlsetsockopt 
getrlimitoutl_psettimeofday 
getrusageoutsbsetuid 
getsidoutslsetup 


The Gimp 2.6.3
GNU Image Manipulation Program
Linux Kernel 2.6 2.6.27.7
Linux Kernel
Battle for Wesnoth 1.4.6
Fantasy Turn-Based Strategy Game
DeleGate 9.9.0-pre8
Proxy server which runs on multiple platforms
Safesquid proxy server 4.2.2.RC8.14B
Antivirus and content filtering proxy server
Thunderbird 2.0.0.18
An email and newsgroup client with powerful, new junk mail controls
Wine 1.1.9
Free implementation of Windows on Unix
WebGUI 7.5.34
A fully featured content management system.
KOffice 2.0 beta3
Integrated office suite for KDE
LimeWire 4.18.8
Gnutella Client
Free IT Magazines, White Papers, eBooks, and more !
Oracle Magazine

Contains technology strategy articles, sample code, tips, Oracle and partner news, how to articles for developers and DBAs, and more.

eWeek

The essential technology information source for builders of e-business.

BusinessWeek (Digital Edition)

Provides readers a deeper understanding of the trends that drive growth, and what best practices keep them ahead of the competition.

Linux Software Map
Find Linux RPM
Best Rated Linux Software
Most Rated Linux Software
Linux Distributions
Linux Howtos
Quick Survey

Please take our survey and help us improve our website to serve you better.

Thank you.
Linux Software
Linux / IT Resources
Site Resources
Google
Privacy Policy
Contact Us
Submit Software
Advertising info