示例#1
0
EXPORT ID _tk_wai_dev_u( ID dd, ID reqid, W *asize, ER *ioer, TMO_U tmout )
{
	ER	ercd;

	ercd = ChkSpaceRW(asize, sizeof(W));
	if ( ercd < E_OK ) {
		goto err_ret;
	}

	ercd = ChkSpaceRW(ioer, sizeof(ER));
	if ( ercd < E_OK ) {
		goto err_ret;
	}

	ercd = waitcomplete(dd, reqid, asize, ioer, tmout, AsyncReq);
	if ( ercd < E_OK ) {
		goto err_ret;
	}

	return ercd;

err_ret:
	DEBUG_PRINT(("_tk_wai_dev_u ercd = %d\n", ercd));
	return ercd;
}
示例#2
0
EXPORT ER _tk_swri_dev_d( ID dd, D start, CONST void *buf, W size, W *asize )
{
	ER	ercd, ioercd;

	ercd = ChkSpaceRW(asize, sizeof(W));
	if ( ercd < E_OK ) {
		goto err_ret;
	}

	ercd = request(dd, start, (void*)buf, size, TMO_FEVR,
							TDC_WRITE, SyncReq);
	if ( ercd < E_OK ) {
		goto err_ret;
	}

	ercd = waitcomplete(dd, ercd, asize, &ioercd, TMO_FEVR, SyncReq);
	if ( ercd < E_OK ) {
		goto err_ret;
	}

	return ioercd;

err_ret:
	DEBUG_PRINT(("_tk_swri_dev ercd = %d\n", ercd));
	return ercd;
}
示例#3
0
int
sys_rtlist(struct lwp *l, const struct sys_rtlist_args *uap, register_t *retval)
{
	int error;
	size_t len;

	(void)l;

	if ( SCARG(uap, buf) != NULL ) {
		error = ChkSpaceRW(SCARG(uap, buf), SCARG(uap, bufsz));
		if ( error < E_OK ) {
			return EFAULT;
		}
	}

	len = SCARG(uap, bufsz);
	error = sysctl_rtable(SCARG(uap,af), SCARG(uap,cmd), SCARG(uap,flags),
			      SCARG(uap,buf), &len );

	if (error == 0) {
		*retval = len;
	}

	return error;
}
示例#4
0
/*
 * Get system timezone
 */
EXPORT	ER	_dt_getsystz(struct tzinfo* tz)
{
	ER	er;

	er = ChkSpaceRW(tz, sizeof(*tz));
	if (er < E_OK) {
		return er;
	}

	*tz = systemTimeZone;
	return E_OK;
}
示例#5
0
int
sys_gethostname(struct lwp *l,  const struct sys_gethostname_args *uap, register_t *retval)
{
	ER ercd;

	(void)l;

	ercd = ChkSpaceRW(SCARG(uap, name), SCARG(uap, len));
	if ( ercd < E_OK ) {
		return EFAULT;
	}

	strlcpy(SCARG(uap, name), sys_hostname, SCARG(uap, len));

	*retval = 0;
	return 0;
}
示例#6
0
int
sys_getifaddrs(struct lwp *l, const struct sys_getifaddrs_args *uap, register_t *retval)
{
	int error;
	size_t asize;

	(void)l;

	if ( SCARG(uap, buf) != NULL ) {
		error = ChkSpaceRW(SCARG(uap, buf), SCARG(uap, bufsz));
		if ( error < E_OK ) {
			return EFAULT;
		}
	}

	error = getifaddrs(SCARG(uap,ifap), SCARG(uap,buf), SCARG(uap,bufsz),
			   &asize);

	if (error == 0) {
		*retval = asize;
	}

	return error;
}
示例#7
0
文件: bchkspc.c 项目: kidasan/tkernel
EXPORT ER CheckSpaceRW( VP address, W len )
{
	return ChkSpaceRW(address, len);
}