rasProject_01 / weSweetHome  R. 116 2026-05-14
process control       /     RasPi software         by   weinert-automation
Loading...
Searching...
No Matches
weShareMem.c File Reference

One chunk of shared memory on a Raspberry Pi. More...

#include "weShareMem.h"

Functions

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

Variables

int semLckErrCnt
 Semaphore lock error count.
int shMemErrno
 Last error number of (some ) semaphore operations.
int shMemSem
 Semaphore set identifier.
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

One chunk of shared memory on a Raspberry Pi.

Revision history

cross-compile by:

For documentation see also the include file weShareMem.h

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)

◆ deleteSemas()

int deleteSemas ( )

Delete the one semaphore set.

Server operation only.

Returns
0: OK; -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)

◆ 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.

Variable Documentation

◆ shMemSem

int shMemSem

Semaphore set identifier.

The value returned by e.g. semget() (within getSemas() etc.) On success, semget() returns the semaphore set identifier (a nonnegative integer). On failure, -1 is returned, and errno is set to indicate the error.

◆ semLckErrCnt

int semLckErrCnt

Semaphore lock error count.

Reset to 0 on success.