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