#ifndef _REQ_CTX_H #define _REQ_CTX_H #define RCTX_SIZE_LARGE 2048 #define RCTX_SIZE_SMALL 128 #define MAX_HDRSIZE sizeof(struct openpcd_hdr) #define MAX_REQSIZE (64-MAX_HDRSIZE) #define req_buf_payload(x) (x->data[x->hdr_len]) #define req_buf_hdr(x) (x->data[0]) #include #include struct req_ctx { volatile u_int32_t state; u_int16_t size; u_int16_t tot_len; u_int8_t *data; }; #define RCTX_STATE_FREE 0xfe #define RCTX_STATE_UDP_RCV_BUSY 0x01 #define RCTX_STATE_UDP_RCV_DONE 0x02 #define RCTX_STATE_MAIN_PROCESSING 0x03 #define RCTX_STATE_RC632IRQ_BUSY 0x04 #define RCTX_STATE_UDP_EP2_PENDING 0x10 #define RCTX_STATE_UDP_EP2_BUSY 0x11 #define RCTX_STATE_UDP_EP3_PENDING 0x12 #define RCTX_STATE_UDP_EP3_BUSY 0x13 #define RCTX_STATE_SSC_RX_BUSY 0x20 #define RCTX_STATE_LIBRFID_BUSY 0x30 #define RCTX_STATE_PIOIRQ_BUSY 0x80 #define RCTX_STATE_INVALID 0xff extern struct req_ctx __ramfunc *req_ctx_find_get(int large, unsigned long old_state, unsigned long new_state); extern struct req_ctx *req_ctx_find_busy(void); extern void req_ctx_set_state(struct req_ctx *ctx, unsigned long new_state); extern void req_ctx_put(struct req_ctx *ctx); extern u_int8_t req_ctx_num(struct req_ctx *ctx); #endif /* _REQ_CTX_H */