11-20-2008
Quote:
Originally Posted by
mae4
I have created a shared memory segment (which size is 64 bytes) using shmget, shmat e.t.c and i want to divide it into 2 areas. One area for input data and one area for output? How can i do that?
I'm guessing the purpose of that is to make half of it read-only. If so, you should just make two segments, I don't think you can make
half of a segment read-only and certainly not in tiny 32-byte chunks. The OS can only actually map and protect memory in chunks of size
pagesize(), which is often 4 kilobytes or more. See
mmap() and
mprotect() for details on what it's doing.
If that's not what you mean then I don't understand your question. Why not just use the upper and lower halves as is?
10 More Discussions You Might Find Interesting
1. UNIX for Advanced & Expert Users
I am running HP-UX B.11.11.
I'm increasing a parameter for a database engine so that it uses more memory to buffer the disk drive (to speed up performance). I have over 5GB of memory not being used.
But when I try to start the DB with the increased buffer parameter I get told.
"Not... (1 Reply)
Discussion started by: cjcamaro
1 Replies
2. HP-UX
Hello....
AIX has a limit of 11 shared memory segments per process, does any one know how many HP have?? If so how do I find that out??
Thanks in advance...... (2 Replies)
Discussion started by: catwomen
2 Replies
3. Programming
I need to create a shared library to access an in memory DB. The DB is not huge, but big enough to make it cumbersome to carry around in every single process using the shared library. Luckily, it is pretty static information, so I don't need to worry much about synchronizing the data between... (12 Replies)
Discussion started by: DreamWarrior
12 Replies
4. HP-UX
I am fairly new to HP-UX and trying to get a better understanding of the operating system. While poking around a bit I find myself questioning whether I should be concerned about Shared Memory segments with missing CPID and LPID? For example:
ipcs -mp
IPC status from /dev/kmem as of Mon Mar... (2 Replies)
Discussion started by: scotbuff
2 Replies
5. Programming
I am looking for C program source code. Could you please help me in finding the source code required mentioned below.
program to create multiple threads (one master thread and rest worker threads) and using the threads write into and read from shared memory
Restrictions:
Only one thread... (2 Replies)
Discussion started by: kumars
2 Replies
6. Programming
I am writing a shared library in Linux (but compatible with other UNIXes) and I want to allow multiple instances to share a piece of memory -- 1 byte is enough. What's the "best" way to do this? I want to optimize for speed and portability.
Obviously, I'll have to worry about mutual exclusion. (0 Replies)
Discussion started by: otheus
0 Replies
7. Programming
Can someone tell me how many bytes are allocated for C segments(text,data,heap,stack). (3 Replies)
Discussion started by: nandumishra
3 Replies
8. Programming
I created a shared memory and attached it. I also created the appropriate semaphores to sync. my read/write operations. However I do not know how am I supposed to do so. Anyone has got any ideas? I want to write int the form of 1234:23:444:... where each number between : means something to the... (0 Replies)
Discussion started by: tyron
0 Replies
9. UNIX for Dummies Questions & Answers
I have created and attached a shared memory segment. However I do not know how am I supposed to write and read data from it. I want to save various different data on this segment such as process IDs and other. Do you know how am I supposed to write these and be able to read such data in the correct... (1 Reply)
Discussion started by: tyron
1 Replies
10. Programming
Hello.
I am new to this forum and I would like to ask for advice about low level POSIX programming.
I have to implement a POSIX compliant C shared library.
A file will have some variables and the shared library will have some functions which need those variables.
There is one special... (5 Replies)
Discussion started by: iamjag
5 Replies
LEARN ABOUT ULTRIX
shmget
shmget(2) System Calls Manual shmget(2)
Name
shmget - get shared memory segment
Syntax
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
int shmget (key, size, shmflg)
key_t key;
int size, shmflg;
Description
The system call returns the shared memory identifier associated with key.
A shared memory identifier and associated data structure and shared memory segment of size size bytes are created for key, if one of the
following is true:
The key is equal to IPC_PRIVATE. For further information, see
The key does not already have a shared memory identifier associated with it, and (shmflg & IPC_CREAT ) is true.
Upon creation, the data structure associated with the new shared memory identifier is initialized as follows:
The and are set equal to the effective user ID and effective group ID of the calling process.
The low-order nine bits of are set equal to the low-order nine bits of shmflg. The is set equal to the value of size.
The and are set equal to zero (0). The shm_ctime is set equal to the current time.
Return Values
Upon successful completion, a non-negative integer, namely, a shared memory identifier is returned. Otherwise, a value of -1 is returned
and errno is set to indicated the error.
Diagnostics
The system call fails if any of the following is true:
[EINVAL] The size is less than the system-imposed minimum or greater than the system-imposed maximum.
[EACCES] A shared memory identifier exists for key, but operations permission, as specified by the low-order nine bits of shmflg,
would not be granted. For further information, see
[EINVAL] A shared memory identifier exists for key, but the size of the segment associated with it is less than size and size is not
equal to zero.
[ENOENT] A shared memory identifier does not exist for key, and (shmflg & IPC_CREAT ) is false.
[ENOSPC] A shared memory identifier is to be created, but the system-imposed limit on the maximum number of allowed shared memory
identifiers would be exceeded.
[ENOMEM] A shared memory identifier and the associated shared memory segment are to be created, but the amount of available physical
memory is not sufficient to fill the request.
[EEXIST] A shared memory identifier exists for key, but ((shmflg & IPC_CREAT ) and (shmflg & IPC_EXCL )) is true.
See Also
shmctl(2), shmop(2), ftok(3)
shmget(2)