# rpmio/rpmsq.h File Reference

`#include <rpmsw.h>`
Include dependency graph for rpmsq.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

## Typedefs

typedef struct rpmsig_s * | rpmsig
typedef struct rpmsqElem * | rpmsq
typedef void(* | rpmsqAction_t )(int signum, void *info, void *context)
| Default signal handler prototype.

## Functions

int | rpmsqInsert (void *elem, void *prev)
| Insert node into from queue.
int | rpmsqRemove (void *elem)
| Remove node from queue.
void | rpmsqAction (int signum, void *info, void *context)
| Default signal handler.
int | rpmsqEnable (int signum, rpmsqAction_t handler)
| Enable or disable a signal handler.
pid_t | rpmsqFork (rpmsq sq)
| Fork a child process.
pid_t | rpmsqWait (rpmsq sq)
| Wait for child process to be reaped.
void * | rpmsqThread (void *(*start)(void *arg), void *arg)
| Call a function in a thread.
int | rpmsqJoin (void *thread)
| Wait for thread to terminate.
int | rpmsqThreadEqual (void *thread)
| Compare thread with current thread.
int | rpmsqExecve (const char **argv)
| Execute a command, returning its status.

## Variables

int | _rpmsq_debug
rpmsq | rpmsqQueue
sigset_t | rpmsqCaught

## Detailed Description

Definition in file rpmsq.h.

## Typedef Documentation

typedef struct rpmsig_s* rpmsig

Definition at line 13 of file rpmsq.h.

typedef struct rpmsqElem* rpmsq

Definition at line 17 of file rpmsq.h.

typedef void(* rpmsqAction_t)(int signum, void *info, void *context)

Default signal handler prototype.

Parameters:

  | signum | signal number
  | info | (siginfo_t) signal info
  | context | signal context

Definition at line 25 of file rpmsq.h.

## Function Documentation

void rpmsqAction | ( | int | signum,
|  | void * | info,
|  | void * | context |
| ) |  |  |

Default signal handler.

Parameters:

  | signum | signal number
  | info | (siginfo_t) signal info
  | context | signal context

Definition at line 371 of file rpmsq.c.

References errno, rpmsigTbl, save(), and rpmsig_s::signum.

Referenced by rpmsqEnable().

int rpmsqEnable | ( | int | signum,
|  | rpmsqAction_t | handler |
| ) |  |  |

Enable or disable a signal handler.

Parameters:

  | signum | signal to enable (or disable if negative)
  | handler | sa_sigaction handler (or NULL to use rpmsqHandler())

Returns:
  no. of refs, -1 on error

Definition at line 420 of file rpmsq.c.

References ADD_REF, DO_LOCK, DO_UNLOCK, ME, rpmsigTbl, rpmsqAction(), rpmsig_s::signum, and SUB_REF.

Referenced by rpmdbClose(), rpmdbOpenDatabase(), rpmsqExecve(), rpmsqFork(), and rpmsqWaitUnregister().

int rpmsqExecve | ( | const char ** | argv | ) |

Execute a command, returning its status.

Definition at line 703 of file rpmsq.c.

References ADD_REF, alloca(), CLEANUP_HANDLER, CLEANUP_RESET, DO_LOCK, DO_UNLOCK, errno, INIT_LOCK, rpmsigTbl_sigchld, rpmsigTbl_sigint, rpmsigTbl_sigquit, rpmsqEnable(), and SUB_REF.

pid_t rpmsqFork | ( | rpmsq | sq | ) |

Fork a child process.

Parameters:

  | sq | scriptlet queue element

Returns:
  fork(2) pid

Definition at line 475 of file rpmsq.c.

References ME, rpmsqEnable(), and rpmsqInsert().

Referenced by runScript().

int rpmsqInsert | ( | void * | elem,
|  | void * | prev |
| ) |  |  |

Insert node into from queue.

Parameters:

  | elem | node to link
  | prev | previous node from queue

Returns:
  0 on success

Definition at line 284 of file rpmsq.c.

References ME.

Referenced by rpmsqFork().

int rpmsqJoin | ( | void * | thread | ) |

Wait for thread to terminate.

Parameters:

  | thread | thread

Returns:
  0 on success

Definition at line 649 of file rpmsq.c.

Referenced by fsmNext(), and rpmpsmNext().

int rpmsqRemove | ( | void * | elem | ) |

Remove node from queue.

Parameters:

  | elem | node to link

Returns:
  0 on success

Definition at line 313 of file rpmsq.c.

References ME.

Referenced by rpmsqWaitUnregister().

void* rpmsqThread | ( | void *(*)(void *arg) | start,
|  | void * | arg |
| ) |  |  |

Call a function in a thread.

Parameters:

  | start | function
  | arg | function argument

Returns:
  thread pointer (NULL on error)

Definition at line 636 of file rpmsq.c.

Referenced by fsmNext(), and rpmpsmNext().

int rpmsqThreadEqual | ( | void * | thread | ) |

Compare thread with current thread.

Parameters:

  | thread | thread

Returns:
  0 if not equal

Definition at line 661 of file rpmsq.c.

pid_t rpmsqWait | ( | rpmsq | sq | ) |

Wait for child process to be reaped.

Parameters:

  | sq | scriptlet queue element

Returns:
  reaped child pid

Definition at line 604 of file rpmsq.c.

References ME, and rpmsqWaitUnregister().

Referenced by psmWait().

## Variable Documentation

int _rpmsq_debug

Definition at line 274 of file rpmsq.c.

sigset_t rpmsqCaught

Definition at line 345 of file rpmsq.c.

rpmsq rpmsqQueue

Definition at line 281 of file rpmsq.c.