I/O Managment (Derived from Cheops-NG) More...
#include "asterisk.h"
#include <termios.h>
#include <sys/ioctl.h>
#include "asterisk/io.h"
#include "asterisk/utils.h"
Go to the source code of this file.
Data Structures | |
struct | io_context |
Global IO variables are now in a struct in order to be made threadsafe. More... | |
struct | io_rec |
Kept for each file descriptor. More... | |
Macros | |
#define | DEBUG(a) |
#define | GROW_SHRINK_SIZE 512 |
Functions | |
int | ast_get_termcols (int fd) |
int | ast_hide_password (int fd) |
int * | ast_io_add (struct io_context *ioc, int fd, ast_io_cb callback, short events, void *data) |
Add a new I/O entry for this file descriptor with the given event mask, to call callback with data as an argument. More... | |
int * | ast_io_change (struct io_context *ioc, int *id, int fd, ast_io_cb callback, short events, void *data) |
Changes an IO handler. More... | |
void | ast_io_dump (struct io_context *ioc) |
Dumps the IO array. Debugging: Dump everything in the I/O array. More... | |
int | ast_io_remove (struct io_context *ioc, int *_id) |
Removes an IO context. More... | |
int | ast_io_wait (struct io_context *ioc, int howlong) |
Make the poll call, and call the callbacks for anything that needs to be handled. More... | |
int | ast_restore_tty (int fd, int oldstate) |
Restores TTY mode. Call with result from previous ast_hide_password. More... | |
struct io_context * | io_context_create (void) |
Create an I/O context. More... | |
void | io_context_destroy (struct io_context *ioc) |
Destroys a context. More... | |
static int | io_grow (struct io_context *ioc) |
Grow the size of our arrays. More... | |
static int | io_shrink (struct io_context *ioc) |
I/O Managment (Derived from Cheops-NG)
Definition in file io.c.
#define DEBUG | ( | a | ) |
Definition at line 43 of file io.c.
Referenced by ast_io_add(), ast_io_wait(), and io_grow().
#define GROW_SHRINK_SIZE 512 |
Definition at line 62 of file io.c.
Referenced by io_context_create(), and io_grow().
int ast_get_termcols | ( | int | fd | ) |
Definition at line 368 of file io.c.
References isatty().
Referenced by ast_cli_display_match_list().
int ast_hide_password | ( | int | fd | ) |
int* ast_io_add | ( | struct io_context * | ioc, |
int | fd, | ||
ast_io_cb | callback, | ||
short | events, | ||
void * | data | ||
) |
Add a new I/O entry for this file descriptor with the given event mask, to call callback with data as an argument.
Adds an IO context.
Definition at line 157 of file io.c.
References ast_debug, ast_malloc, io_rec::callback, io_rec::data, DEBUG, events, io_context::fdcnt, io_context::fds, io_rec::id, io_grow(), io_context::ior, and io_context::maxfdcnt.
Referenced by ast_netsock_bindaddr(), ast_udptl_new_with_bindaddr(), do_monitor(), and network_thread().
int* ast_io_change | ( | struct io_context * | ioc, |
int * | id, | ||
int | fd, | ||
ast_io_cb | callback, | ||
short | events, | ||
void * | data | ||
) |
Changes an IO handler.
ioc | which context to use |
id | |
fd | the fd you wish it to contain now |
callback | new callback function |
events | event mask to wait for |
data | data to pass to the callback function Change an I/O handler, updating fd if > -1, callback if non-null, and revents if >-1, and data if non-null. |
a | pointer to the ID of the IO event |
NULL | on failure |
Definition at line 195 of file io.c.
References io_rec::callback, io_rec::data, events, io_context::fdcnt, io_context::fds, id, and io_context::ior.
Referenced by do_monitor().
void ast_io_dump | ( | struct io_context * | ioc | ) |
Dumps the IO array. Debugging: Dump everything in the I/O array.
Definition at line 307 of file io.c.
References ast_debug, io_rec::callback, io_rec::data, io_context::fdcnt, io_context::fds, io_rec::id, io_context::ior, and io_context::maxfdcnt.
int ast_io_remove | ( | struct io_context * | ioc, |
int * | id | ||
) |
Removes an IO context.
ioc | which io_context to remove it from |
id | which ID to remove Remove an I/O id from consideration |
0 | on success |
-1 | on failure |
Definition at line 240 of file io.c.
References ast_free, ast_log(), io_context::current_ioc, io_context::fdcnt, io_context::fds, io_rec::id, io_shrink(), io_context::ior, LOG_NOTICE, LOG_WARNING, and io_context::needshrink.
Referenced by ast_io_wait(), ast_netsock_destroy(), ast_udptl_destroy(), do_monitor(), network_thread(), reload_config(), and unload_module().
int ast_io_wait | ( | struct io_context * | ioc, |
int | howlong | ||
) |
Make the poll call, and call the callbacks for anything that needs to be handled.
Waits for IO.
Definition at line 273 of file io.c.
References ast_debug, ast_io_remove(), ast_poll, io_rec::callback, io_context::current_ioc, io_rec::data, DEBUG, io_context::fdcnt, io_context::fds, io_rec::id, io_shrink(), io_context::ior, and io_context::needshrink.
Referenced by do_monitor(), network_thread(), and reload_config().
int ast_restore_tty | ( | int | fd, |
int | oldstate | ||
) |
struct io_context* io_context_create | ( | void | ) |
Create an I/O context.
Creates a context Create a context for I/O operations Basically mallocs an IO structure and sets up some default values.
Definition at line 76 of file io.c.
References ast_calloc, ast_free, ast_malloc, io_context::current_ioc, io_context::fdcnt, io_context::fds, GROW_SHRINK_SIZE, io_context::ior, io_context::maxfdcnt, and io_context::needshrink.
Referenced by load_module().
void io_context_destroy | ( | struct io_context * | ioc | ) |
Destroys a context.
ioc | structure to destroy Destroy a context for I/O operations Frees all memory associated with the given io_context structure along with the structure itself |
Definition at line 102 of file io.c.
References ast_free, io_context::fds, and io_context::ior.
Referenced by load_module(), and unload_module().
|
static |
Grow the size of our arrays.
Definition at line 117 of file io.c.
References ast_debug, ast_realloc, DEBUG, io_context::fds, GROW_SHRINK_SIZE, io_context::ior, and io_context::maxfdcnt.
Referenced by ast_io_add().
|
static |
Definition at line 213 of file io.c.
References io_context::fdcnt, io_context::fds, io_rec::id, io_context::ior, and io_context::needshrink.
Referenced by ast_io_remove(), and ast_io_wait().