SIF RPC Structs and Definitions

Functions

  typedef void (*SifCmdHandler)(void *data, void *harg);
  typedef void* (*SifRpcFunc)(int fno, void *buff, int length);
  typedef void (*SifRpcEndFunc)(void *end_param);

Packet Headers

struct SifCmdHeader
{
  uint psize:8; //Size of the command packet
  uint dsize:24; //Size of the payload, if any
  void *dest; //Destination of the payload, if any
  int	cid; //Command ID
  uint opt;
}

struct SifRpcPktHeader
{
  struct SifCmdHeader	sifcmd;
  int	rec_id;
  void *pkt_addr;
  int	rpc_id;
}

Client

struct SifRpcClientData
{
  struct SifRpcHeader	hdr;
  u32	command;
  void *buff, *cbuff;
  SifRpcEndFunc end_function;
  void *end_param;
  struct SifRpcServerData *server;
}

Server

struct SifRpcServerData
{
  int	sid;

  SifRpcFunc func;
  void *buff;
  int	size;

  SifRpcFunc cfunc;
  void *cbuff;
  int	size2;

  struct SifRpcClientData *client;
  void *pkt_addr;
  int	rpc_number;

  void *receive;
  int	rsize;
  int	rmode;
  int	rid;

  struct SifRpcServerData *link;
  struct SifRpcServerData *next;
  struct SifRpcDataQueue *base;
}

Server Data Queue

struct SifRpcDataQueue
{
  int	thread_id, active;
  struct SifRpcServerData *link, *start, *end;
  struct SifRpcDataQueue *next;
}

DMA Packet

struct SifDmaTransfer
{
  void *src, *dest;
  int size;
  int attr;
}