Subversion Repositories HelenOS

Compare Revisions

Ignore whitespace Rev 2659 → Rev 2660

/trunk/kernel/generic/src/ipc/sysipc.c
49,8 → 49,11
#include <mm/as.h>
#include <print.h>
 
/** Maximum buffer size allowed for IPC_M_DATA_SEND requests. */
#define DATA_SEND_LIMIT (64 * 1024)
/**
* Maximum buffer size allowed for IPC_M_DATA_WRITE and IPC_M_DATA_READ
* requests.
*/
#define DATA_XFER_LIMIT (64 * 1024)
 
#define GET_CHECK_PHONE(phone, phoneid, err) \
{ \
111,7 → 114,8
switch (method) {
case IPC_M_AS_AREA_SEND:
case IPC_M_AS_AREA_RECV:
case IPC_M_DATA_SEND:
case IPC_M_DATA_WRITE:
case IPC_M_DATA_READ:
return 1;
break;
default:
139,7 → 143,8
case IPC_M_CONNECT_ME_TO:
case IPC_M_AS_AREA_SEND:
case IPC_M_AS_AREA_RECV:
case IPC_M_DATA_SEND:
case IPC_M_DATA_WRITE:
case IPC_M_DATA_READ:
return 1;
default:
return 0;
230,7 → 235,7
IPC_GET_ARG2(answer->data));
IPC_SET_RETVAL(answer->data, rc);
}
} else if (IPC_GET_METHOD(*olddata) == IPC_M_DATA_SEND) {
} else if (IPC_GET_METHOD(*olddata) == IPC_M_DATA_WRITE) {
if (!IPC_GET_RETVAL(answer->data)) {
int rc;
uintptr_t dst;
280,11 → 285,11
return EPERM;
IPC_SET_ARG2(call->data, size);
break;
case IPC_M_DATA_SEND:
case IPC_M_DATA_WRITE:
src = IPC_GET_ARG2(call->data);
size = IPC_GET_ARG3(call->data);
if ((size <= 0) || (size > DATA_SEND_LIMIT))
if ((size <= 0) || (size > DATA_XFER_LIMIT))
return ELIMIT;
call->buffer = (uint8_t *) malloc(size, 0);