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>
13 #include "../../mlx_utils/include/private/mlx_memory_priv.h"
14 
15 
18  IN mlx_utils *utils __attribute__ ((unused)),
20  OUT mlx_void **ptr
21  )
22 {
24  *ptr = malloc(size);
25  if(*ptr == NULL){
27  }
28  return status;
29 }
30 
33  IN mlx_utils *utils __attribute__ ((unused)),
35  OUT mlx_void **ptr
36  )
37 {
39  *ptr = zalloc(size);
40  if(*ptr == NULL){
42  }
43  return status;
44 }
45 
48  IN mlx_utils *utils __attribute__ ((unused)),
49  IN mlx_void *ptr
50  )
51 {
53  free(ptr);
54  return status;
55 }
58  IN mlx_utils *utils __attribute__ ((unused)),
59  IN mlx_size size ,
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 
76  IN mlx_utils *utils __attribute__ ((unused)),
77  IN mlx_size size ,
78  IN mlx_void *ptr
79  )
80 {
82  free_phys(ptr, size);
83  return status;
84 }
87  IN mlx_utils *utils __attribute__ ((unused)),
88  IN mlx_void *addr ,
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,
114  IN mlx_size size,
116  )
117 {
119  *out = memcmp(first_block, second_block, size);
120  return status;
121 }
122 
125  IN mlx_utils *utils __unused,
126  IN mlx_void *block,
129  )
130 {
132  memset(block, value, size);
133  return status;
134 }
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 
u16 length
Definition: sky2.h:9
iPXE I/O API
mlx_status mlx_memory_cmp_priv(IN mlx_utils *utils __attribute__((unused)), IN mlx_void *first_block, IN mlx_void *second_block, IN mlx_size size, OUT mlx_uint32 *out)
uint16_t size
Buffer size.
Definition: dwmac.h:14
mlx_status mlx_memory_free_priv(IN mlx_utils *utils, IN mlx_void *ptr)
mlx_status mlx_memory_cpy_priv(IN mlx_utils *utils __attribute__((unused)), OUT mlx_void *destination_buffer, IN mlx_void *source_buffer, IN mlx_size length)
mlx_status mlx_memory_free_dma_priv(IN mlx_utils *utils, IN mlx_size size, IN mlx_void *ptr)
__be32 out[4]
Definition: CIB_PRM.h:36
mlx_status mlx_memory_set_priv(IN mlx_utils *utils __attribute__((unused)), IN mlx_void *block, IN mlx_int32 value, IN mlx_size size)
Dynamic memory allocation.
uint32_t mlx_uint32
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)
void * memcpy(void *dest, const void *src, size_t len) __nonnull
static __always_inline unsigned long virt_to_bus(volatile const void *addr)
Convert virtual address to a bus address.
Definition: io.h:183
#define OUT
Definition: mlx_utils.h:29
#define be32_to_cpu(value)
Definition: byteswap.h:116
int32_t mlx_int32
mlx_status mlx_memory_ummap_dma_priv(IN mlx_utils *utils, IN mlx_void *mapping)
pseudo_bit_t value[0x00020]
Definition: arbel.h:13
mlx_status mlx_memory_alloc_dma_priv(IN mlx_utils *utils, IN mlx_size size, IN mlx_size align, OUT mlx_void **ptr)
#define __unused
Declare a variable or data structure as unused.
Definition: compiler.h:573
A 16-bit general register.
Definition: registers.h:24
#define MLX_SUCCESS
mlx_status mlx_memory_alloc_priv(IN mlx_utils *utils, IN mlx_size size, OUT mlx_void **ptr)
static void(* free)(struct refcnt *refcnt))
Definition: refcnt.h:54
void * zalloc(size_t size)
Allocate cleared memory.
Definition: malloc.c:661
uint32_t addr
Buffer address.
Definition: dwmac.h:20
size_t mlx_size
void * malloc(size_t size)
Allocate memory.
Definition: malloc.c:620
uint8_t unused
Unused.
Definition: librm.h:140
uint8_t status
Status.
Definition: ena.h:16
void mlx_void
#define IN
Definition: mlx_utils.h:28
mlx_status mlx_memory_be32_to_cpu_priv(IN mlx_utils *utils __attribute__((unused)), IN mlx_uint32 source, IN mlx_uint32 *destination)
#define cpu_to_be32(value)
Definition: byteswap.h:110
#define MLX_OUT_OF_RESOURCES
uint8_t block[3][8]
DES-encrypted blocks.
Definition: mschapv2.h:12
void free_phys(void *ptr, size_t size)
Free memory allocated with malloc_phys()
Definition: malloc.c:722
int mlx_status
int memcmp(const void *first, const void *second, size_t len)
Compare memory regions.
Definition: string.c:114
#define NULL
NULL pointer (VOID *)
Definition: Base.h:321
String functions.
unsigned long mlx_physical_address
void * malloc_phys(size_t size, size_t phys_align)
Allocate memory with specified physical alignment.
Definition: malloc.c:706
mlx_status mlx_memory_zalloc_priv(IN mlx_utils *utils, IN mlx_size size, OUT mlx_void **ptr)
void * memset(void *dest, int character, size_t len) __nonnull
mlx_status mlx_memory_cpu_to_be32_priv(IN mlx_utils *utils __attribute__((unused)), IN mlx_uint32 source, IN mlx_uint32 *destination)