iPXE
mlx_memory_priv.c
Go to the documentation of this file.
1/*
2 * MemoryPriv.c
3 *
4 * Created on: Jan 21, 2015
5 * Author: maord
6 */
7
8#include <ipxe/malloc.h>
9#include <stddef.h>
10#include <string.h>
11#include <byteswap.h>
12#include <ipxe/io.h>
14
15
20 OUT mlx_void **ptr
21 )
22{
24 *ptr = malloc(size);
25 if(*ptr == NULL){
27 }
28 return status;
29}
30
35 OUT mlx_void **ptr
36 )
37{
39 *ptr = zalloc(size);
40 if(*ptr == NULL){
42 }
43 return status;
44}
45
49 IN mlx_void *ptr
50 )
51{
53 free(ptr);
54 return status;
55}
60 IN mlx_size align,
61 OUT mlx_void **ptr
62 )
63{
65 *ptr = malloc_phys(size, align);
66 if (*ptr == NULL) {
68 } else {
69 memset(*ptr, 0, size);
70 }
71 return status;
72}
73
78 IN mlx_void *ptr
79 )
80{
82 free_phys(ptr, size);
83 return status;
84}
89 IN mlx_size number_of_bytes __attribute__ ((unused)),
90 OUT mlx_physical_address *phys_addr,
91 OUT mlx_void **mapping __attribute__ ((unused))
92 )
93{
95 *phys_addr = virt_to_bus(addr);
96 return status;
97}
98
101 IN mlx_utils *utils __attribute__ ((unused)),
102 IN mlx_void *mapping __attribute__ ((unused))
103 )
104{
106 return status;
107}
108
111 IN mlx_utils *utils __unused,
112 IN mlx_void *first_block,
113 IN mlx_void *second_block,
116 )
117{
119 *out = memcmp(first_block, second_block, size);
120 return status;
121}
122
135
138 IN mlx_utils *utils __unused,
139 OUT mlx_void *destination_buffer,
140 IN mlx_void *source_buffer,
142 )
143{
145 memcpy(destination_buffer, source_buffer, length);
146 return status;
147}
148
151 IN mlx_utils *utils __unused,
152 IN mlx_uint32 source,
153 IN mlx_uint32 *destination
154 )
155{
157 *destination = cpu_to_be32(source);
158 return status;
159}
160
161
164 IN mlx_utils *utils __unused,
165 IN mlx_uint32 source,
166 IN mlx_uint32 *destination
167 )
168{
170 *destination = be32_to_cpu(source);
171 return status;
172}
173
#define NULL
NULL pointer (VOID *)
Definition Base.h:322
__be32 out[4]
Definition CIB_PRM.h:8
pseudo_bit_t value[0x00020]
Definition arbel.h:2
uint32_t addr
Buffer address.
Definition dwmac.h:9
uint8_t status
Status.
Definition ena.h:5
#define __unused
Declare a variable or data structure as unused.
Definition compiler.h:573
uint16_t size
Buffer size.
Definition dwmac.h:3
#define be32_to_cpu(value)
Definition byteswap.h:117
#define cpu_to_be32(value)
Definition byteswap.h:111
#define __attribute__(x)
Definition compiler.h:10
iPXE I/O API
static __always_inline unsigned long virt_to_bus(volatile const void *addr)
Convert virtual address to a bus address.
Definition io.h:184
String functions.
void * memcpy(void *dest, const void *src, size_t len) __nonnull
void * memset(void *dest, int character, size_t len) __nonnull
uint8_t unused
Unused.
Definition librm.h:5
void * zalloc(size_t size)
Allocate cleared memory.
Definition malloc.c:662
void * malloc_phys(size_t size, size_t phys_align)
Allocate memory with specified physical alignment.
Definition malloc.c:707
void * malloc(size_t size)
Allocate memory.
Definition malloc.c:621
void free_phys(void *ptr, size_t size)
Free memory allocated with malloc_phys()
Definition malloc.c:723
Dynamic memory allocation.
mlx_status mlx_memory_map_dma_priv(IN mlx_utils *utils, IN mlx_void *addr, IN mlx_size number_of_bytes, OUT mlx_physical_address *phys_addr, OUT mlx_void **mapping)
mlx_status mlx_memory_cmp_priv(IN mlx_utils *utils, IN mlx_void *first_block, IN mlx_void *second_block, IN mlx_size size, OUT mlx_uint32 *out)
mlx_status mlx_memory_alloc_dma_priv(IN mlx_utils *utils, IN mlx_size size, IN mlx_size align, OUT mlx_void **ptr)
mlx_status mlx_memory_free_priv(IN mlx_utils *utils, IN mlx_void *ptr)
mlx_status mlx_memory_set_priv(IN mlx_utils *utils, IN mlx_void *block, IN mlx_int32 value, IN mlx_size size)
mlx_status mlx_memory_be32_to_cpu_priv(IN mlx_utils *utils, IN mlx_uint32 source, IN mlx_uint32 *destination)
mlx_status mlx_memory_free_dma_priv(IN mlx_utils *utils, IN mlx_size size, IN mlx_void *ptr)
mlx_status mlx_memory_zalloc_priv(IN mlx_utils *utils, IN mlx_size size, OUT mlx_void **ptr)
mlx_status mlx_memory_cpy_priv(IN mlx_utils *utils, OUT mlx_void *destination_buffer, IN mlx_void *source_buffer, IN mlx_size length)
mlx_status mlx_memory_ummap_dma_priv(IN mlx_utils *utils, IN mlx_void *mapping)
mlx_status mlx_memory_alloc_priv(IN mlx_utils *utils, IN mlx_size size, OUT mlx_void **ptr)
mlx_status mlx_memory_cpu_to_be32_priv(IN mlx_utils *utils, IN mlx_uint32 source, IN mlx_uint32 *destination)
uint32_t mlx_uint32
size_t mlx_size
unsigned long mlx_physical_address
void mlx_void
#define MLX_SUCCESS
int mlx_status
int32_t mlx_int32
#define MLX_OUT_OF_RESOURCES
#define IN
Definition mlx_utils.h:28
#define OUT
Definition mlx_utils.h:29
uint8_t block[3][8]
DES-encrypted blocks.
Definition mschapv2.h:1
static void(* free)(struct refcnt *refcnt))
Definition refcnt.h:55
u16 length
Definition sky2.h:1
int memcmp(const void *first, const void *second, size_t len)
Compare memory regions.
Definition string.c:115