Thank you mario for your answer.
I can’t influence usage of write/fwrite
Okay, I think the 2GB-limit is okay for my device.
I hope . I have take the example (see below) of ResMgr and io_write() form “Writing a Resource Manager” to “emulate” my problem. It will be the same. IO_WRITE-Msgs are divided into 4K Buffers by ResMgrLib. Now, I have found following comment in io_write(). I delete it before I read it ;(
Okay, I sounds possible that I have to do it manually to get the extra data. Can you give me a short hint? Must I use MsgReceive…?
I’m not sure that I understand the comment right. Mean it
- the sender (application) don’t send the data complete before the ResMgrLib transmit it to the device
- the sender send data complete to ResMgrLib, but ResMgrLib divided into a multiple buffer msg (IOV), with the result that io_write() is multible called by ResMgrLib.
The only thing I must known is the total payload size of multiple buffer msg.
int io_write (resmgr_context_t *ctp, io_write_t *msg, RESMGR_OCB_T *ocb)
if ((status = iofunc_write_verify(ctp, msg, ocb, NULL)) != EOK)
if (msg->i.xtype & _IO_XTYPE_MASK != _IO_XTYPE_NONE)
/* set up the number of bytes (returned by client's write()) */
_IO_SET_WRITE_NBYTES (ctp, msg->i.nbytes);
buf = (char *) malloc(msg->i.nbytes + 1);
if (buf == NULL)
resmgr_msgread(ctp, buf, msg->i.nbytes, sizeof(msg->i));
printf ("Received %d bytes = \n", msg -> i.nbytes);
if (msg->i.nbytes > 0)
ocb->attr->flags |= IOFUNC_ATTR_MTIME | IOFUNC_ATTR_CTIME;
return (_RESMGR_NPARTS (0));