Listing 1. Registering an Interrupt Source
/* fd_set variable required to use select() */
static fd_set set_of_pipes;
/* A structure to maintain a linked list of
processes... */
struct list_proc{
int p_num;
void (*rout_hndl)();
struct list_proc *next;
};
static struct list_proc *ini_list=NULL;
/* A list of processes will be created and
maintained by the reg_process function,
containing processes information who are
using interrupts */
void reg_process(int num_pipe, void (*routine)())
{
struct list_proc *element;
element = (struct list_proc *)
malloc(sizeof(struct list_proc));
element->p_num = num_pipe;
element->rout_hndl = routine;
element->next = ini_list;
ini_list = element;
/* Bring up to date file descriptors' group of
the pipes connected to a process that is using
signals */
FD_SET(num_pipe, &set_of_pipes);
}
Copyright © 1994 - 2019 Linux Journal. All rights reserved.