FIO: Add sim_byte_swap_data routine to byte swap
This is an unconditional swap which may not be dependent on the particular endian orientation of the simulated or host system.
This commit is contained in:
parent
efc79d710a
commit
4e729165ee
2 changed files with 11 additions and 1 deletions
11
sim_fio.c
11
sim_fio.c
|
@ -50,7 +50,8 @@
|
||||||
sim_fsize_ex - get file size as a t_offset
|
sim_fsize_ex - get file size as a t_offset
|
||||||
sim_fsize_name_ex - get file size as a t_offset of named file
|
sim_fsize_name_ex - get file size as a t_offset of named file
|
||||||
sim_buf_copy_swapped - copy data swapping elements along the way
|
sim_buf_copy_swapped - copy data swapping elements along the way
|
||||||
sim_buf_swap_data - swap data elements inplace in buffer
|
sim_buf_swap_data - swap data elements inplace in buffer if needed
|
||||||
|
sim_byte_swap_data - swap data elements inplace in buffer
|
||||||
sim_shmem_open create or attach to a shared memory region
|
sim_shmem_open create or attach to a shared memory region
|
||||||
sim_shmem_close close a shared memory region
|
sim_shmem_close close a shared memory region
|
||||||
|
|
||||||
|
@ -109,8 +110,16 @@ sim_taddr_64 = sim_toffset_64 && (sizeof(t_addr) > sizeof(int32));
|
||||||
return sim_end;
|
return sim_end;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Copy little endian data to local buffer swapping if needed */
|
||||||
void sim_buf_swap_data (void *bptr, size_t size, size_t count)
|
void sim_buf_swap_data (void *bptr, size_t size, size_t count)
|
||||||
{
|
{
|
||||||
|
if (sim_end || (count == 0) || (size == sizeof (char)))
|
||||||
|
return;
|
||||||
|
sim_byte_swap_data (bptr, size, count);
|
||||||
|
}
|
||||||
|
|
||||||
|
void sim_byte_swap_data (void *bptr, size_t size, size_t count)
|
||||||
|
{
|
||||||
uint32 j;
|
uint32 j;
|
||||||
int32 k;
|
int32 k;
|
||||||
unsigned char by, *sptr, *dptr;
|
unsigned char by, *sptr, *dptr;
|
||||||
|
|
|
@ -88,6 +88,7 @@ typedef void (*DIR_ENTRY_CALLBACK)(const char *directory,
|
||||||
t_stat sim_dir_scan (const char *cptr, DIR_ENTRY_CALLBACK entry, void *context);
|
t_stat sim_dir_scan (const char *cptr, DIR_ENTRY_CALLBACK entry, void *context);
|
||||||
|
|
||||||
void sim_buf_swap_data (void *bptr, size_t size, size_t count);
|
void sim_buf_swap_data (void *bptr, size_t size, size_t count);
|
||||||
|
void sim_byte_swap_data (void *bptr, size_t size, size_t count);
|
||||||
void sim_buf_copy_swapped (void *dptr, const void *bptr, size_t size, size_t count);
|
void sim_buf_copy_swapped (void *dptr, const void *bptr, size_t size, size_t count);
|
||||||
const char *sim_get_os_error_text (int error);
|
const char *sim_get_os_error_text (int error);
|
||||||
typedef struct SHMEM SHMEM;
|
typedef struct SHMEM SHMEM;
|
||||||
|
|
Loading…
Add table
Reference in a new issue