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

📄 channels.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.2 $ *     $Date: 1998/01/08 11:11:40 $ * * *   Project: ANGEL * *     Title: User interface to the channels layer */#ifndef angel_channels_h#define angel_channels_h/* * This provides the public interface to the channels layer read and write * routines, and buffer management routines. *//* Nested header files, if required */#include "devices.h"#include "chandefs.h"#include "adperr.h"/* General purpose constants, macros, enums, typedefs *//* use the default device */#define CH_DEFAULT_DEV ((DeviceID)-1)/* return codes */typedef enum ChanError {  CE_OKAY,                      /* no error */  CE_ABANDONED,                 /* abandoned due to device switch */  CE_DEV_ERROR,                 /* unexpected error from device driver */  CE_BUSY,                      /* channel in use */  CE_BUFF_ERROR,                /* unable to get buffer */  CE_PRIVATE                    /* start of internal error codes */} ChanError;/* Publically-accessible globals *//* * The following two globals are only valid after angel_InitialiseChannels() * has been called. *//* the default size of a channel buffer, for global use */extern unsigned Angel_ChanBuffSize;/* the size of a long buffer, for global use */extern unsigned Angel_ChanLongSize;#ifdef TARGETAdpErrs send_resend_msg(DeviceID devid);#endif/* * Function: angel_InitialiseChannels *  Purpose: initialise the channels layer * *   Params: *              Input: - *             Output: - *             In/Out: - * *            Returns: - * *      Reads globals: - *   Modifies globals: - * * Other side effects: - */void angel_InitialiseChannels( void );/* * Function: adp_init_seq *  Purpose: initialise sequence numbers and free anyt leftover buffers * *   Params: *              Input: - *             Output: - *             In/Out: - * *            Returns: - adp_ok if things went ok else an error code * *      Reads globals: - *   Modifies globals: - * * Other side effects: - */AdpErrs adp_init_seq(void);/* * Function: angel_ChannelAllocBuffer *  Purpose: allocate a buffer that is at least req_size bytes long * *   Params: *              Input: req_size        the minimum size required *             Output: - *             In/Out: - * *            Returns: pointer to allocated buffer, or *                     NULL if unable to allocate suitable buffer * *      Reads globals: - *   Modifies globals: - * * Other side effects: - */p_Buffer angel_ChannelAllocBuffer(unsigned req_size);/* * Function: angel_ChannelReleaseBuffer *  Purpose: release a buffer back to the free pool * *   Params: *              Input: buffer   the buffer to release *             Output: - *             In/Out: - * *            Returns: - * *      Reads globals: - *   Modifies globals: - * * Other side effects: - */void angel_ChannelReleaseBuffer(p_Buffer buffer);/* * Function: angel_ChannelSend *  Purpose: blocking send of a packet via a channel * *   Params: *              Input: devid         Device to use, or CH_DEFAULT_DEV *                     chanid        Channel to use for tx  *                     buffer        Pointer to data to send *                     len           Length of data to send *             Output: - *             In/Out: - * *            Returns: CE_OKAY       Transmission completed *                     CE_BAD_CHAN   Channel id invalid *                     CE_ABANDONED  Tx abandoned due to device switch * *      Reads globals: - *   Modifies globals: - * * Other side effects: - */ChanError angel_ChannelSend(DeviceID devid, ChannelID chanid,                            const p_Buffer buffer, unsigned len);/* * Function: angel_ChannelSendAsync *  Purpose: asynchronous send of a packet via a channel * *   Params: *              Input: devid         Device to use, or CH_DEFAULT_DEV *                     chanid        Channel to use for tx  *                     buffer        Pointer to data to send *                     len           Length of data to send *                     callback      Function to call on completion *                     callback_data Pointer to pass to callback *             Output: - *             In/Out: - * *            Returns: CE_OKAY       Transmission underway *                     CE_BAD_CHAN   Channel id invalid *                     CE_ABANDONED  Tx abandoned due to device switch * *      Reads globals: - *   Modifies globals: - * * Other side effects: - * * register an asynchronous send on the given channel * (blocks until send can be commenced) */typedef void (*ChanTx_CB_Fn)(ChannelID  chanid,         /* which channel  */                             void      *callback_data); /* as supplied... */                             ChanError angel_ChannelSendAsync(          DeviceID      devid,                                           ChannelID     chanid,                                     const p_Buffer      buffer,                                           unsigned      len,                                            ChanTx_CB_Fn  callback,                                            void         *callback_data);/* * Function: angel_ChannelRead *  Purpose: blocking read of a packet from a channel * *   Params: *              Input: devid         Device to use, or CH_DEFAULT_DEV *                     chanid        Channel to use for rx *             Output: buffer        The buffer, supplied and filled *                     len           How many bytes there are in the buffer *             In/Out: - * *            Returns: CE_OKAY       Reception successful *                     CE_BAD_CHAN   Channel id invalid *                     CE_ABANDONED  Tx abandoned due to device switch * *      Reads globals: - *   Modifies globals: - * * Other side effects: - * * Note that in the present version, if an asynchronous read has been * registered, a blocking read will be refused with CE_BUSY. */ChanError angel_ChannelRead(DeviceID      devid,                            ChannelID     chanid,                            p_Buffer     *buffer,                             unsigned     *len);/* * Function: angel_ChannelReadAsync *  Purpose: asynchronous read of a packet via a channel * *   Params: *              Input: devid         Device to use, or CH_DEFAULT_DEV *                     chanid        Channel to wait on *                     callback      Function to call on completion, or NULL *                     callback_data Pointer to pass to callback *             Output: - *             In/Out: - * *            Returns: CE_OKAY       Read request registered *                     CE_BAD_CHAN   Channel id invalid *                     CE_BUSY       Someone else is using the channel *                                   (in a single threaded world) * *      Reads globals: - *   Modifies globals: - * * Other side effects: - * * Register an asynchronous read on the given channel.  There can only be one * async. reader per channel, and blocking reads are not permitted whilst * an async. reader is registered. * * Reader can unregister by specifying NULL as the callback function. */typedef void (*ChanRx_CB_Fn)(DeviceID   devID,   /* ID of receiving device  */                             ChannelID  chanID,  /* ID of receiving channel */                             p_Buffer   buff,    /* pointer to buffer       */                             unsigned   len,     /* length of data          */                             void      *cb_data  /* callback data           */                             );ChanError angel_ChannelReadAsync(DeviceID      devid,                                 ChannelID     chanid,                                 ChanRx_CB_Fn  callback,                                  void         *callback_data);/* * Function: angel_ChannelReadAll *  Purpose: register an asynchronous read across all devices * *   Params: *              Input: chanid        Channel to look for (usually HBOOT) *                     callback      Function to call on completion *                     callback_data Pointer to pass to callback *             Output: - *             In/Out: - * *            Returns: CE_OKAY       Read request registered *                     CE_BAD_CHAN   Channel id invalid *                     CE_BUSY       Someone else is reading all devices * *      Reads globals: - *   Modifies globals: - * * Other side effects: - * * Register an asynchronous read across all devices.  This is a 'fallback', * which will be superseded (temporarily) by a registered reader or blocking  * read on a specific device. */ChanError angel_ChannelReadAll(         ChannelID     chanid,                                        ChanRx_CB_Fn  callback,                                        void         *callback_data);/* * Function: angel_ChannelSendThenRead *  Purpose: blocking write to followed by read from a channel * *   Params: *              Input: devid         Device to use, or CH_DEFAULT_DEV *                     chanid        Channel to use for rx *             In/Out: buffer        On entry:  the packet to be sent *                                   On return: the packet received *                     len           On entry:  length of packet to be sent *                                   On return: length of packet rx'd *             In/Out: - * *            Returns: CE_OKAY       Tx and Reception successful *                     CE_BAD_CHAN   Channel id invalid *                     CE_ABANDONED  Tx abandoned due to device switch * *      Reads globals: - *   Modifies globals: - * * Other side effects: - * * Note that in the present version, if an asynchronous read has been * registered, this will be refused with CE_BUSY. */ChanError angel_ChannelSendThenRead(DeviceID      devid,                                    ChannelID     chanid,                                    p_Buffer     *buffer,                                     unsigned     *len);/* * Function: angel_ChannelSelectDevice *  Purpose: select the device to be used for all channel comms * *   Params: *              Input: device        ID of device to use as the default *             Output: - *             In/Out: - * *            Returns: CE_OKAY       Default device selected *                     CE_BAD_DEV    Invalid device ID * *      Reads globals: - *   Modifies globals: - * * Other side effects: Any channel operations in progress are *                     abandoned. * * select the device for all channels comms */ChanError angel_ChannelSelectDevice(DeviceID device);/* * Function: angel_ChannelReadActiveDevice *  Purpose: reads the device id of the currently active device * *   Params: *              Input: device        address of a DeviceID variable *             Output: *device       ID of device currently being used *             In/Out: - * *            Returns: CE_OKAY       Default device selected */ChanError angel_ChannelReadActiveDevice(DeviceID *device);#endif /* ndef angel_channels_h *//* EOF channels.h */

⌨️ 快捷键说明

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