????Attr:

???????????????

?????????:

???????:????ID

???????:-1

????int asyncmsg_connect_detach( int coid );

??????????

????coid ??????ID

?????????

?????????????????????????????????????????????????????????е????????????????????????asyncmsg_flush()????

???????????

?????????EOK

????????-1

????int asyncmsg_flush( int coid??

????int mode );

?????????????

????Coid??????ID

????Mode??

????0?????????ú?????????????ASYNCMSG_FLUSH_NONBLOCK

???????????

?????????EOK

????????-1

int asyncmsg_connect_attr (
int coid??
struct _asyncmsg_connection_attr *old_attr??
const struct _asyncmsg_connection_attr *new_attr);

?????????????

????coid??????ID

????Old_attr?????????

????new_attr???μ?????

???????????

?????????EOK

????????-1

int asyncmsg_put( int coid??
const void *buff??
size_t size??
unsigned handle)??
int (*call_back) (
int err??
void* buf??
unsigned handle ));
int asyncmsg_putv( int coid??
const iov_t* iov??
int parts??
unsigned handle??
int (*call_back) (
int err??
void* buf??
unsigned handle ));

?????????????

????Coid:????ID

????Buff:???????

????Size:?????С

????Iov:???IOV?????????

????Parts:IOV?????С

????Handle:??????????????????????????????????????

????call_back??NULL??????????????????????????????NULL??

????_asyncmsg_connection_attr ?????asyncmsg_connect_attach?????á?

????struct _asyncmsg_get_header *asyncmsg_get( int chid );

?????????????

????Chid:???ID

??????????????????5????????????????????????????????????????????????NULL????errno?EAGAIN???????ζ????????

?????????????

struct _asyncmsg_get_header {
struct _msg_info info;
int err;
iov_t *iov;
int parts;
struct _asyncmsg_get_header *next;
unsigned reserve[2];
};

?????????

????Info:??????????

????err????????

????Ivo??????????

????Parts:ivo?????С

????Next:???????????????

???????????

????????????????

????????NULL

????void asyncmsg_free( void *buf);

?????????????

????buf????????????

?????????

????asyncmsg_get()????????????

????void *asyncmsg_malloc( size_t size );

?????????

??????????????????????