⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hostchan.h

📁 这个是LINUX下的GDB调度工具的源码
💻 H
字号:
/*  * Copyright (C) 1995 Advanced RISC Machines Limited. All rights reserved. *  * This software may be freely used, copied, modified, and distributed * provided that the above copyright notice is preserved in all copies of the * software. *//* -*-C-*- * * $Revision: 1.6 $ *     $Date: 1999/11/01 12:11:39 $ * */#ifndef angsd_hostchan_h#define angsd_hostchan_h/* A temporary sop to older compilers */#if defined (__NetBSD__) || defined (unix)#  ifndef __unix              /* (good for long-term portability?)  */#    define __unix    1#  endif#endif/* struct timeval */#if defined(__unix) || defined(__CYGWIN__)#  include <sys/time.h>#else#  include "winsock.h"#  include "time.h"#endif#include "chandefs.h"#include "adperr.h"#include "devsw.h"/* * asynchronous processing modes */enum AsyncMode{    async_block_on_nothing,    async_block_on_read,    async_block_on_write};#ifndef __cplusplustypedef enum AsyncMode AsyncMode;#endif/* * prototype for channels callback function */typedef void (*ChannelCallback)(Packet *packet, void *state);/* *  Function: Adp_initSeq *   Purpose: initialise the channel protocol and sequence numbers * *    Params: none * *   Returns: Nothing */extern void Adp_initSeq(void);/* *  Function: Adp_addToQueue *   Purpose: chain a Packet to the end of a linked list of such structures * *    Params: *      In/Out: head    Head of the linked list * *              newpkt  Packet to be chained onto the list * *   Returns: Nothing */extern void Adp_addToQueue(Packet **head, Packet *newpkt);/* *  Function: removeFromQueue *   Purpose: remove a Packet from the head of a linked list of such structures * *    Params: *      In/Out: head    Head of the linked list * *   Returns: Old head from the linked list * * Post-conditions: Second element in the list will be the new head. */extern Packet *Adp_removeFromQueue(Packet **head);/* * Set log file and Enable/disable logging of ADP packets to file. */void Adp_SetLogfile(const char *filename);void Adp_SetLogEnable(int logEnableFlag);/* *  Function: Adp_OpenDevice *   Purpose: Open a device to use for channels communication.  This is a *              very thin veneer to the device drivers: what hostchan.c *              will do is call DeviceMatch for each device driver until it *              finds a driver that will accept name and arg, then call *              DeviceOpen for that device. * *  Pre-conditions: No previous open is still active * *    Params: *       Input: name    Identifies which device to open.  This can either be *                      a host specific identifier (e.g. "/dev/ttya", *                      "COM1:"), or a number which is used to refer to *                      `standard' interfaces, so "1" would be the first host *                      interface, "2" the second, and so on. * *              arg     Driver specific arguments.  For example, some serial *                      drivers accept speed and control arguments such as *                      "9600" or "19200/NO_BREAK".  These arguments are *                      completely free-form: it is the individual drivers *                      which do the necessary interpretation. * *              heartbeat_on  Incicates if the heartbeat is configured to be  *                      used or not, true if it is, false otherwise * *   Returns: *          OK: adp_ok *       Error: adp_device_not_known, *              adp_device_open_failed *              adp_device_already_open */AdpErrs Adp_OpenDevice(const char *name, const char *arg,                       unsigned int heartbeat_on);/* *  Function: Adp_CloseDevice *   Purpose: Close the device used for channels communication. * *    Params: None * *   Returns: *          OK: adp_ok *       Error: adp_device_not_open */AdpErrs Adp_CloseDevice(void);/* *  Function: Adp_Ioctl *   Purpose: Perform miscellaneous control operations on *              the device used for channels communication. *              This is a minimal veneer to DevSW_Ioctl. * *    Params: *       Input: opcode  Reason code indicating the operation to perform. *      In/Out: args    Pointer to opcode-sensitive arguments/result space. * * *   Returns: *          OK: adp_ok *       Error: adp_device_not_open, adp_failed */AdpErrs Adp_Ioctl(int opcode, void *args);/* *  Function: Adp_ChannelRegisterRead *   Purpose: Register a callback function for received packets on a given *              channel * *    Params: *       Input: chan    The channel the callback function is for. * *              cbfunc  The callback function.  If NULL, then the current *                      callback is removed. * *              cbstate State pointer to pass into the callback function * *   Returns: *          OK: adp_ok *       Error: adp_device_not_open *              adp_bad_channel_id * * Post-conditions: The callback function is responsible for freeing the *                      packet that is passed to it, when that packet is *                      no longer needed. */#ifdef __cplusplus    extern "C" {#endif    extern AdpErrs Adp_ChannelRegisterRead(const ChannelID chan,                               const ChannelCallback cbfunc,                                void *cbstate);#ifdef __cplusplus    }#endif/* *  Function: Adp_ChannelRead *   Purpose: Wait until a packet has been read for a given channel, and *              then return it.  Callbacks for other channels are still *              active while this read is blocking. * *  Pre-conditions: No callback has been already been registered for *                      the channel. * *    Params: *       Input: chan    The channel to read. * *      Output: packet  The received packet. * *   Returns: *          OK: adp_ok *       Error: adp_device_not_open *              adp_bad_channel_id *              adp_callback_already_registered * * Post-conditions: The calling function is responsible for freeing the *                      received packet, when that packet is no longer *                      needed. */AdpErrs Adp_ChannelRead(const ChannelID chan, Packet **packet);/* *  Function: Adp_ChannelWrite *   Purpose: Write a packet to the given channel * *  Pre-conditions: Channel must have been previously opened. * *    Params: *       Input: chan    The channel to write. * *              packet  The packet to write. * *   Returns: *          OK: adp_ok *       Error: adp_device_not_open *              adp_bad_channel_id * * Post-conditions: The packet being written becomes the "property" of *                      Adp_ChannelWrite, which is responsible for freeing *                      the packet when it is no longer needed. */AdpErrs Adp_ChannelWrite(const ChannelID chan, Packet *packet);/* *  Function: Adp_ChannelWriteAsync *   Purpose: Write a packet to the given channel, but don't wait *            for the write to complete before returning. * *  Pre-conditions: Channel must have been previously opened. * *    Params: *       Input: chan    The channel to write. * *              packet  The packet to write. * *   Returns: *          OK: adp_ok *       Error: adp_device_not_open *              adp_bad_channel_id * * Post-conditions: The packet being written becomes the "property" of *                      Adp_ChannelWrite, which is responsible for freeing *                      the packet when it is no longer needed. */AdpErrs Adp_ChannelWriteAsync(const ChannelID chan, Packet *packet);/* *  Function: Adp_AsynchronousProcessing *   Purpose: This routine should be called from persistent any idle loop *              to give the data I/O routines a chance to poll for packet *              activity.  Depending upon the requested mode, this routine *              may, or may not, block. * *    Params: *       Input: mode    Specifies whether to block until a complete packet *                      has been read, all pending writes have completed, *                      or not to block at all. * *   Returns: Nothing. */void Adp_AsynchronousProcessing(const AsyncMode mode);/* * prototype for DC_APPL packet handler */typedef void (*DC_Appl_Handler)(const DeviceDescr *device, Packet *packet);/* * install a handler for DC_APPL packets (can be NULL), returning old one. */DC_Appl_Handler Adp_Install_DC_Appl_Handler(const DC_Appl_Handler handler);/* * prototype for asynchronous processing callback */typedef void (*Adp_Async_Callback)(const DeviceDescr *device,                                   const struct timeval *const time_now);/* * add an asynchronous processing callback to the list * TRUE == okay, FALSE == no more async processing slots */bool Adp_Install_Async_Callback( const Adp_Async_Callback callback_proc );/* * delay for a given period (in microseconds) */void Adp_delay(unsigned int period);#endif /* ndef angsd_hostchan_h *//* EOF hostchan.h */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -