blob: 99317bf63956dd40998ed84e0cd451ba1065fccf (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
#ifndef _PCILIB_MEMCPY_H
#define _PCILIB_MEMCPY_H
#include <stdio.h>
#include <stdint.h>
#ifdef __cplusplus
extern "C" {
#endif
/**
* The collection of slow memcpy functions to move the data between BAR and system memory.
*
* The hardware may restrict access width or expose different behavior depending on the
* access width. These functions access memory using the specified word width only.
* 8-, 16-, 32-, and 64-bit wide access is supported.
*
* @param[out] dst - the destination memory region
* @param[in] src - the source memory region
* @param[in] access - the size of word (a single memory access) in bytes
* @param[in] n - the number of words to copy (\p n * \p access bytes are copied).
* @return - `dst` or NULL on error
*/
void *pcilib_memcpy(void * dst, void const * src, uint8_t access, size_t n);
/**
* The collection of slow memcpy functions to move the data between BAR and system memory.
*
* The hardware may restrict access width or expose different behavior depending on the
* access width. This function only perform 8-bit memory accesses.
*
* @param[out] dst - the destination memory region
* @param[in] src - the source memory region
* @param[in] len - the number of bytes to copy
* @return - `dst` or NULL on error
*/
void *pcilib_memcpy8(void * dst, void const * src, size_t len);
/**
* The collection of slow memcpy functions to move the data between BAR and system memory.
*
* The hardware may restrict access width or expose different behavior depending on the
* access width. This function only perform 32-bit memory accesses.
*
* @param[out] dst - the destination memory region
* @param[in] src - the source memory region
* @param[in] len - the number of bytes to copy
* @return - `dst` or NULL on error
*/
void *pcilib_memcpy32(void * dst, void const * src, size_t len);
/**
* The collection of slow memcpy functions to move the data between BAR and system memory.
*
* The hardware may restrict access width or expose different behavior depending on the
* access width. This function only perform 64-bit memory accesses.
*
* @param[out] dst - the destination memory region
* @param[in] src - the source memory region
* @param[in] len - the number of bytes to copy
* @return - `dst` or NULL on error
*/
void *pcilib_memcpy64(void * dst, void const * src, size_t len);
#ifdef __cplusplus
}
#endif
#endif /* _PCILIB_MEMCPY_H */
|