making downcall downcall buffer static
now that readdir doesn't require memory allocation, we can use static memory for inbuf
This commit is contained in:
parent
27030b1764
commit
436df23cba
1 changed files with 1 additions and 12 deletions
|
|
@ -81,10 +81,7 @@ static unsigned int WINAPI thread_main(void *args)
|
||||||
HANDLE pipe;
|
HANDLE pipe;
|
||||||
// buffer used to process upcall, assumed to be fixed size.
|
// buffer used to process upcall, assumed to be fixed size.
|
||||||
// if we ever need to handle non-cached IO, need to make it dynamic
|
// if we ever need to handle non-cached IO, need to make it dynamic
|
||||||
unsigned char outbuf[UPCALL_BUF_SIZE];
|
unsigned char outbuf[UPCALL_BUF_SIZE], inbuf[UPCALL_BUF_SIZE];
|
||||||
// buffer used to send downcall content, need to dynamically allocated
|
|
||||||
// as we don't know the length of the buffer (ie. size of directory listing
|
|
||||||
unsigned char *inbuf = NULL;
|
|
||||||
DWORD inbuf_len = UPCALL_BUF_SIZE, outbuf_len;
|
DWORD inbuf_len = UPCALL_BUF_SIZE, outbuf_len;
|
||||||
nfs41_upcall upcall;
|
nfs41_upcall upcall;
|
||||||
|
|
||||||
|
|
@ -130,19 +127,11 @@ write_downcall:
|
||||||
"get_last_error=%d\n", upcall.xid, opcode2string(upcall.opcode),
|
"get_last_error=%d\n", upcall.xid, opcode2string(upcall.opcode),
|
||||||
upcall.status, upcall.last_error);
|
upcall.status, upcall.last_error);
|
||||||
|
|
||||||
inbuf = malloc(inbuf_len);
|
|
||||||
if (inbuf == NULL) {
|
|
||||||
upcall.status = GetLastError();
|
|
||||||
upcall_cancel(&upcall);
|
|
||||||
eprintf("Failed to allocate memory for downcall buffer... Exiting\n");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
upcall_marshall(&upcall, inbuf, (uint32_t)inbuf_len, (uint32_t*)&outbuf_len);
|
upcall_marshall(&upcall, inbuf, (uint32_t)inbuf_len, (uint32_t*)&outbuf_len);
|
||||||
|
|
||||||
dprintf(2, "making a downcall: outbuf_len %ld\n\n", outbuf_len);
|
dprintf(2, "making a downcall: outbuf_len %ld\n\n", outbuf_len);
|
||||||
status = DeviceIoControl(pipe, IOCTL_NFS41_WRITE,
|
status = DeviceIoControl(pipe, IOCTL_NFS41_WRITE,
|
||||||
inbuf, inbuf_len, NULL, 0, (LPDWORD)&outbuf_len, NULL);
|
inbuf, inbuf_len, NULL, 0, (LPDWORD)&outbuf_len, NULL);
|
||||||
free(inbuf);
|
|
||||||
if (!status) {
|
if (!status) {
|
||||||
eprintf("IOCTL_NFS41_WRITE failed with %d xid=%d opcode=%s\n",
|
eprintf("IOCTL_NFS41_WRITE failed with %d xid=%d opcode=%s\n",
|
||||||
GetLastError(), upcall.xid, opcode2string(upcall.opcode));
|
GetLastError(), upcall.xid, opcode2string(upcall.opcode));
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue