Sponsored Content
Top Forums Programming Shared library with acces to shared memory. Post 302657657 by iamjag on Monday 18th of June 2012 07:06:06 AM
Old 06-18-2012
Shared library with acces to shared memory.

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 requirement, the access to the variables should be as quick as posible, which means that variables should be load in memory and made available to the libray.

I think I can create a program using IPC shared memory (shmget functions) to create a shared memory region available to the process using the library.
This process would read a file with the variables and would write them in the shared memory.
As I have read, one you create the shared memory, the process can be stopped and the region should be still available to other process.
Also, the progam would be executed to apply changes in the configuration file, changing the shared memory.
What do you think about this solution? Is this feasible?

I have also read about mmap as a modern solution? Would you recommend it?

Thank you very much for your comments.
 

10 More Discussions You Might Find Interesting

1. Programming

Shared Library

hello all I want to work in shared libraries how can i work in Linux Environment ? (2 Replies)
Discussion started by: rajashekaran
2 Replies

2. UNIX for Advanced & Expert Users

Shared memory shortage but lots of unused memory

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

3. UNIX for Advanced & Expert Users

shared library

What is the primary difference between static library and dynamic library? and how to write static shared library? (1 Reply)
Discussion started by: areef4u
1 Replies

4. Programming

Shared memory in shared library

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

5. Programming

Shared memory for shared library

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

6. Shell Programming and Scripting

How to change a Makefile from building static library to shared library?

Hi: I have a library that it only offers Makefile for building static library. It built libxxx.a file. How do I in any way build a shared library? (either changin the Makefile or direct script or command to build shared library) Thanks. (1 Reply)
Discussion started by: cpthk
1 Replies

7. Programming

Makefile shared library g++

I'm having trouble with my makefile, I'm trying to code a shared library to be used by another program *EDIT* Found the solution: CC = g++ MODULES= readconfig.o ReadConfigLib.o OBJECTS= RCLOBJECTS= ReadConfigLib.cpp readconfig.cpp configDefinitions.h readconfig.h ReadConfigLib.h... (0 Replies)
Discussion started by: james2432
0 Replies

8. UNIX for Dummies Questions & Answers

Which sections of a shared library should be loaded in the physical memory?

Each shared library may contain sections with allocatable flag as below: ... .hash .gnu.hash .dynsym .dynstr .gnu.version .gnu.version_d .rel.dyn .rel.plt .plt ... My questions is that: among above sections, which of them should be loaded in the physical memory by run-time linker... (3 Replies)
Discussion started by: Dongping84
3 Replies

9. UNIX for Dummies Questions & Answers

Shared static library

Hello Please what does mean shared static library and LD-Preload? Thank you (3 Replies)
Discussion started by: chercheur857
3 Replies

10. AIX

Add shared members from library to same library in a different directory

I'm trying to install libiconv to AIX 7.1 from an rpm off of the perzl site. The rpm appears to install but I get this error message. add shr4.o shared members from /usr/lib/libiconv.a to /opt/freeware/lib/libiconv.a add shr.o shared members from /usr/lib/libiconv.a to ... (5 Replies)
Discussion started by: kneemoe
5 Replies
shmid_ds(4)						     Kernel Interfaces Manual						       shmid_ds(4)

NAME
shmid_ds - Defines a shared memory region SYNOPSIS
#include <sys/shm.h> struct shmid_ds{ struct ipc_perm shm_perm; int shm_segsz; u_short shm_lpid; u_short shm_cpid; u_short shm_nattch; time_t shm_atime; time_t shm_dtime; time_t shm_ctime; }; DESCRIPTION
The shmid_ds structure defines a shared memory region associated with a shared memory region ID. There is one shared memory region per ID. Collectively, the shared memory regions are maintained in a shared memory table, with the shared memory region IDs identifying the entries in the table. The IPC permissions for the shared memory regions are implemented in a separate, but associated, ipc_perm structure. A shared memory region is created indirectly via the shmget() call. If shmget() is called with a non-existent shared memory region ID, the kernel allocates a new shmid_ds structure, initializes it, and returns the ID that is to be associated with the region. The kernel allocates actual memory of shm_segsz bytes only when a process attaches a region to its address space. Attached regions are maintained in a separate region table. The entries in the shared memory table point to the associated attached regions in the region ta- ble. The same shared memory region can be attached multiple times, by the same or different processes. Each attachment of the region cre- ates a new entry in the region table. After a process attaches a shared memory region, the region becomes part of the process's virtual address space. Processes access shared memory regions by using the same machine instructions used to access any virtual address. FIELDS
The ipc_perm structure that defines permissions for shared memory operations. See NOTES. The size of the shared memory region, in bytes. The process ID of the process that created the shared memory region ID. The process ID of the last process that performed a shmat() or shmdt() operation on the shared memory region. The number of processes that currently have this region attached. The time of the last shmat() operation. The time of the last shmdt() operation. The time of the last shmctl() operation that changed a member of the shmid_ds structure. NOTES
The shm_perm field identifies the associated ipc_perm structure that defines the permissions for operations on the shared memory region. The ipc_perm structure (from the sys/ipc.h header file) is shown here. struct ipc_perm { ushort uid; /* owner's user id */ ushort gid; /* owner's group id */ ushort cuid; /* creator's user id */ ushort cgid; /* creator's group id */ ushort mode; /* access modes */ ushort seq; /* slot usage sequence number */ key_t key; /* key */ }; The mode field is a nine-bit field that contains the permissions for shared memory operations. The first three bits identify owner permis- sions; the second three bits identify group permissions; and the last three bits identify other permissions. In each group, the first bit indicates read permission; the second bit indicates write permission; and the third bit is not used. RELATED INFORMATION
Functions: shmat(2), shmdt(2), shmctl(2), shmget(2) delim off shmid_ds(4)
All times are GMT -4. The time now is 05:05 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy