rasProject_01 / weSweetHome  R. 240
process control       /     RasPi software         by   weinert-automation
Loading...
Searching...
No Matches
weShareMem.h File Reference

Shared memory on Raspberry Pis. More...

#include "weUtil.h"
#include <sys/shm.h>
#include <sys/stat.h>
#include <sys/sem.h>
#include <errno.h>

Data Structures

union  semCtlPar_t
 Parameter type for semctl(). More...
 

Macros

#define PERM
 access rights
 

Functions

int deleteSemas ()
 Delete the one semaphore set. More...
 
int deleteSharedMem ()
 Delete and detach the shared memory. More...
 
int detachSharedMem ()
 Detach the shared memory.
 
int getSemas ()
 Get the one semaphore set. More...
 
int initialiseSemas ()
 Initialise the one semaphore set. More...
 
void * initialiseSharedMem ()
 Initialise shared memory. More...
 
int semaphoreClt (int const semNum, int const op, semCtlPar_t par)
 Control semaphores of the set. More...
 
int semaphoreLock (int const semNum, int ms)
 Lock one semaphore of the set. More...
 
int semaphoreOperation (int const semNum, int const op, int ms)
 Operation on one semaphore of the set. More...
 
int semaphoreUnlock (int const semNum)
 Unlock one semaphore of the set. More...
 

Variables

const semCtlPar_t VAL0
 value 0 for SETVAL
 
const semCtlPar_t VAL1
 value 1 for SETVAL
 
const semCtlPar_t VAL9
 value 9 for SETVAL
 

Detailed Description

Shared memory on Raspberry Pis.

Copyright (c) 2018 Albrecht Weinert
weinert-automation.de a-weinert.de
/ / /\
/ /___ / \ |
\ /____\ /____\ | _|__
\ /\ / \ / \| |
\/ \/ \__/ \__/|_

Revision history

Rev. 236 2.02.2021
Rev. 80 11.11.2017 : new
Rev. 175 28.07.2018 : beauty
Rev. 191 15.02.2019 : minor comment text changes

Provide one shared memory range of size ... to be used by one or more C (or PHP or ...) programs on a Raspberry Pi3.

Function Documentation

◆ getSemas()

int getSemas ( )

Get the one semaphore set.

The one semaphore set, if existing, will be registered and used as is.

Returns
0: OK found existing semaphore set; -1: error (errno set and errorText generated)

◆ initialiseSemas()

int initialiseSemas ( )

Initialise the one semaphore set.

The number of semaphores in the set is ANZ_SEMAS (default three). The one semaphore set, if existing, will be registered and used as is. If this is not possible it will be made and initialised.

Hint: This function has two OK return values!

Returns
1: OK semaphore set made new; 0: OK found existing semaphore set; -1: error (errno set and errorText generated)

◆ semaphoreOperation()

int semaphoreOperation ( int const  semNum,
int const  op,
int  ms 
)

Operation on one semaphore of the set.

Parameters
semNumthe semaphore number in the set (0..ANZ_SEMAS -1)
opthe semaphore operation
msif 2..20000 a timeout in ms
Returns
0: OK; -1: error (errno set and errorText generated)

◆ semaphoreLock()

int semaphoreLock ( int const  semNum,
int  ms 
)

Lock one semaphore of the set.

Parameters
semNumthe semaphore number in the set (0..ANZ_SEMAS -1)
msif 2..20000 a timeout in ms
Returns
0: OK; -1: error (errno set and errorText generated)

◆ semaphoreUnlock()

int semaphoreUnlock ( int const  semNum)

Unlock one semaphore of the set.

Parameters
semNumthe semaphore number in the set (0..ANZ_SEMAS -1)
Returns
0: OK; -1: error (errno set and errorText generated)

◆ semaphoreClt()

int semaphoreClt ( int const  semNum,
int const  op,
semCtlPar_t  par 
)

Control semaphores of the set.

Parameters
semNumthe semaphore number in the set (0..ANZ_SEMAS -1)
opthe semaphore operation, like e.g. SETVAL
parop's parameter if any
Returns
0: OK; -1: error (errno set and errorText generated)

◆ deleteSemas()

int deleteSemas ( )

Delete the one semaphore set.

Server operation only.

Returns
0: OK; -1: error (errno set and errorText generated)

◆ initialiseSharedMem()

void * initialiseSharedMem ( )

Initialise shared memory.

Make or get and attach. return pointer to attached shared memory or (void *)-1

◆ deleteSharedMem()

int deleteSharedMem ( )

Delete and detach the shared memory.

Server operation only.