Jump to content United States-English
HP.com Home Products and Services Support and Drivers Solutions How to Buy
» Contact HP
More options
HP.com home
HP-UX Reference > M

msem_init(2)

HP-UX 11i Version 3: February 2007
» 

Technical documentation

» Feedback
Content starts here

 » Table of Contents

 » Index

NAME

msem_init — initialize a semaphore in a mapped file or anonymous memory region

SYNOPSIS

#include <sys/mman.h>

msemaphore *msem_init(msemaphore *sem, int initial_value);

DESCRIPTION

msem_init() allocates a new binary semaphore and initializes the state of the new semaphore.

sem points to an msemaphore structure in which the state of the semaphore is to be stored.

If initial_value is MSEM_LOCKED, the new semaphore is initialized in the locked state. If initial_value is MSEM_UNLOCKED, the new semaphore is initialized in the unlocked state.

The msemaphore structure must be located within a mapped file or anonymous memory region created by a successful call to mmap() and have both read and write access.

If a semaphore is created in a mapped file region, any reference by a process that has mapped the same file, using a (struct msemaphore *) pointer that resolves to the same file offset is interpreted as a reference to the same semaphore. If a semaphore is created in an anonymous memory region, any reference by a process sharing the same region by use of a (struct msemaphore *) pointer that resolves to the same offset from the start of the region is interpreted as a reference to the same semaphore.

Any previous semaphore state stored in the msemaphore structure will be ignored and overwritten.

Implementation Notes

In order to ensure that an msemaphore structure is entirely contained in a single memory page, sem must be at an address that is an exact multiple of sizeof(struct msemaphore). The size of the msemaphore structure is guaranteed to prevent semaphores that cross page boundaries given the above restriction.

For a memory mapped file region, the system deallocates memory that corresponds to a range of the file that has been truncated with ftruncate() or truncate(). If a semaphore is located in memory so deallocated, the effect is equivalent to an msem_remove() on the semaphore.

RETURN VALUE

msem_init() returns the address of the initialized msemaphore structure; otherwise, it returns NULL and sets errno to indicate the error.

ERRORS

msem_init() fails if any of the following conditions are encountered:

EINVAL

sem points to an msemaphore structure that is not located in a mapped region created by mmap() and with read and write access, or initial_value is not valid.

ENOMEM

A new semaphore could not be created.

EFAULT

sem is an invalid pointer.

AUTHOR

msem_init() was developed by HP and OSF.

STANDARDS CONFORMANCE

msem_init(): AES

Printable version
Privacy statement Using this site means you accept its terms Feedback to webmaster
© 1983-2007 Hewlett-Packard Development Company, L.P.