1b819cea2SGordon Ross /*
2b819cea2SGordon Ross  * This file and its contents are supplied under the terms of the
3b819cea2SGordon Ross  * Common Development and Distribution License ("CDDL"), version 1.0.
4b819cea2SGordon Ross  * You may only use this file in accordance with the terms of version
5b819cea2SGordon Ross  * 1.0 of the CDDL.
6b819cea2SGordon Ross  *
7b819cea2SGordon Ross  * A full copy of the text of the CDDL should have accompanied this
8b819cea2SGordon Ross  * source.  A copy of the CDDL is also available via the Internet at
9b819cea2SGordon Ross  * http://www.illumos.org/license/CDDL.
10b819cea2SGordon Ross  */
11b819cea2SGordon Ross 
12b819cea2SGordon Ross /*
13*8329232eSGordon Ross  * Copyright 2017 Nexenta Systems, Inc.  All rights reserved.
14b819cea2SGordon Ross  */
15b819cea2SGordon Ross 
16b819cea2SGordon Ross 
17b819cea2SGordon Ross #include <sys/types.h>
18b819cea2SGordon Ross #include <sys/time.h>
19b819cea2SGordon Ross #include <sys/systm.h>
20b819cea2SGordon Ross #include <sys/errno.h>
21b819cea2SGordon Ross 
22*8329232eSGordon Ross int
copyin(const void * u,void * k,size_t s)23*8329232eSGordon Ross copyin(const void *u, void *k, size_t s)
24*8329232eSGordon Ross {
25*8329232eSGordon Ross 	bcopy(u, k, s);
26*8329232eSGordon Ross 	return (0);
27*8329232eSGordon Ross }
28*8329232eSGordon Ross 
29*8329232eSGordon Ross int
copyout(const void * k,void * u,size_t s)30*8329232eSGordon Ross copyout(const void *k, void *u, size_t s)
31*8329232eSGordon Ross {
32*8329232eSGordon Ross 	bcopy(k, u, s);
33*8329232eSGordon Ross 	return (0);
34*8329232eSGordon Ross }
35*8329232eSGordon Ross 
36b819cea2SGordon Ross int
copyinstr(const char * src,char * dst,size_t max_len,size_t * copied)37b819cea2SGordon Ross copyinstr(const char *src, char *dst, size_t max_len, size_t *copied)
38b819cea2SGordon Ross {
39b819cea2SGordon Ross 	return (copystr(src, dst, max_len, copied));
40b819cea2SGordon Ross }
41b819cea2SGordon Ross 
42b819cea2SGordon Ross int
copystr(const char * src,char * dst,size_t max_len,size_t * outlen)43b819cea2SGordon Ross copystr(const char *src, char *dst, size_t max_len, size_t *outlen)
44b819cea2SGordon Ross {
45b819cea2SGordon Ross 	size_t copied;
46b819cea2SGordon Ross 
47b819cea2SGordon Ross 	if (max_len == 0)
48b819cea2SGordon Ross 		return (ENAMETOOLONG);
49b819cea2SGordon Ross 
50b819cea2SGordon Ross 	copied = strlcpy(dst, src, max_len) + 1;
51b819cea2SGordon Ross 	if (copied >= max_len)
52b819cea2SGordon Ross 		return (ENAMETOOLONG);
53b819cea2SGordon Ross 
54b819cea2SGordon Ross 	if (outlen != NULL)
55b819cea2SGordon Ross 		*outlen = copied;
56b819cea2SGordon Ross 
57b819cea2SGordon Ross 	return (0);
58b819cea2SGordon Ross }
59b819cea2SGordon Ross 
60b819cea2SGordon Ross void
ovbcopy(const void * src,void * dst,size_t len)61b819cea2SGordon Ross ovbcopy(const void *src, void *dst, size_t len)
62b819cea2SGordon Ross {
63b819cea2SGordon Ross 	(void) memmove(dst, src, len);
64b819cea2SGordon Ross }
65*8329232eSGordon Ross 
66*8329232eSGordon Ross /* ARGSUSED */
67*8329232eSGordon Ross int
ddi_copyin(const void * buf,void * kernbuf,size_t size,int flags)68*8329232eSGordon Ross ddi_copyin(const void *buf, void *kernbuf, size_t size, int flags)
69*8329232eSGordon Ross {
70*8329232eSGordon Ross 	return (copyin(buf, kernbuf, size));
71*8329232eSGordon Ross }
72*8329232eSGordon Ross 
73*8329232eSGordon Ross /* ARGSUSED */
74*8329232eSGordon Ross int
ddi_copyout(const void * buf,void * kernbuf,size_t size,int flags)75*8329232eSGordon Ross ddi_copyout(const void *buf, void *kernbuf, size_t size, int flags)
76*8329232eSGordon Ross {
77*8329232eSGordon Ross 	return (copyout(buf, kernbuf, size));
78*8329232eSGordon Ross }
79