util/nvmutil: nicer typedefs

now that i'm not using stdint, i can use sane
typedef names

Signed-off-by: Leah Rowe <leah@libreboot.org>
This commit is contained in:
Leah Rowe
2026-03-13 19:42:00 +00:00
parent 9cfae27bf4
commit 23fee345fd
+70 -70
View File
@@ -22,7 +22,7 @@
* Make most of nvmutil a *library* for re-use * Make most of nvmutil a *library* for re-use
* *
* TODO: gettimeofday not posible - use portable functions. * TODO: gettimeofday not posible - use portable functions.
* TODO: uint32_t fallback: modify the program instead * TODO: u32 fallback: modify the program instead
* to run on 16-bit systems: smaller buffers, and do * to run on 16-bit systems: smaller buffers, and do
* operations byte-based instead of word-based. * operations byte-based instead of word-based.
* *
@@ -163,15 +163,15 @@ also consider:
#include <time.h> #include <time.h>
#include <unistd.h> #include <unistd.h>
typedef unsigned char uint8_t; typedef unsigned char u8;
typedef unsigned short uint16_t; typedef unsigned short u16;
typedef unsigned int uint32_t; typedef unsigned int u32;
/* type asserts */ /* type asserts */
typedef char static_assert_char_is_8_bits[(CHAR_BIT == 8) ? 1 : -1]; typedef char static_assert_char_is_8_bits[(CHAR_BIT == 8) ? 1 : -1];
typedef char static_assert_uint8_is_1[(sizeof(uint8_t) == 1) ? 1 : -1]; typedef char static_assert_uint8_is_1[(sizeof(u8) == 1) ? 1 : -1];
typedef char static_assert_uint16_is_2[(sizeof(uint16_t) == 2) ? 1 : -1]; typedef char static_assert_uint16_is_2[(sizeof(u16) == 2) ? 1 : -1];
typedef char static_assert_uint32_is_4[(sizeof(uint32_t) == 4) ? 1 : -1]; typedef char static_assert_uint32_is_4[(sizeof(u32) == 4) ? 1 : -1];
typedef char static_assert_int_ge_32[(sizeof(int) >= 4) ? 1 : -1]; typedef char static_assert_int_ge_32[(sizeof(int) >= 4) ? 1 : -1];
typedef char static_assert_twos_complement[ typedef char static_assert_twos_complement[
((-1 & 3) == 3) ? 1 : -1 ((-1 & 3) == 3) ? 1 : -1
@@ -262,7 +262,7 @@ static int good_checksum(size_t partnum);
*/ */
static void run_cmd(size_t c); static void run_cmd(size_t c);
static void check_command_num(size_t c); static void check_command_num(size_t c);
static uint8_t valid_command(size_t c); static u8 valid_command(size_t c);
/* /*
* Helper functions for command: setmac * Helper functions for command: setmac
@@ -273,9 +273,9 @@ static size_t xstrxlen(const char *scmp, size_t maxlen);
static void set_mac_byte(size_t mac_byte_pos); static void set_mac_byte(size_t mac_byte_pos);
static void set_mac_nib(size_t mac_str_pos, static void set_mac_nib(size_t mac_str_pos,
size_t mac_byte_pos, size_t mac_nib_pos); size_t mac_byte_pos, size_t mac_nib_pos);
static uint16_t hextonum(char ch_s); static u16 hextonum(char ch_s);
static uint16_t rhex(void); static u16 rhex(void);
static uint16_t fallback_rand(void); static u16 fallback_rand(void);
static unsigned long entropy_jitter(void); static unsigned long entropy_jitter(void);
static void write_mac_part(size_t partnum); static void write_mac_part(size_t partnum);
@@ -291,7 +291,7 @@ static void hexdump(size_t partnum);
* cat, cat16 and cat128 * cat, cat16 and cat128
*/ */
static void cmd_helper_cat(void); static void cmd_helper_cat(void);
static void gbe_cat_buf(uint8_t *b); static void gbe_cat_buf(u8 *b);
/* /*
* After command processing, write * After command processing, write
@@ -303,14 +303,14 @@ static void gbe_cat_buf(uint8_t *b);
static void write_gbe_file(void); static void write_gbe_file(void);
static void override_part_modified(void); static void override_part_modified(void);
static void set_checksum(size_t part); static void set_checksum(size_t part);
static uint16_t calculated_checksum(size_t p); static u16 calculated_checksum(size_t p);
/* /*
* Helper functions for accessing * Helper functions for accessing
* the NVM area during operation. * the NVM area during operation.
*/ */
static uint16_t nvm_word(size_t pos16, size_t part); static u16 nvm_word(size_t pos16, size_t part);
static void set_nvm_word(size_t pos16, size_t part, uint16_t val16); static void set_nvm_word(size_t pos16, size_t part, u16 val16);
static void set_part_modified(size_t p); static void set_part_modified(size_t p);
static void check_nvm_bound(size_t pos16, size_t part); static void check_nvm_bound(size_t pos16, size_t part);
static void check_bin(size_t a, const char *a_name); static void check_bin(size_t a, const char *a_name);
@@ -321,16 +321,16 @@ static void check_bin(size_t a, const char *a_name);
*/ */
static void rw_gbe_file_part(size_t p, int rw_type, static void rw_gbe_file_part(size_t p, int rw_type,
const char *rw_type_str); const char *rw_type_str);
static uint8_t *gbe_mem_offset(size_t part, const char *f_op); static u8 *gbe_mem_offset(size_t part, const char *f_op);
static off_t gbe_file_offset(size_t part, const char *f_op); static off_t gbe_file_offset(size_t part, const char *f_op);
static off_t gbe_x_offset(size_t part, const char *f_op, static off_t gbe_x_offset(size_t part, const char *f_op,
const char *d_type, off_t nsize, off_t ncmp); const char *d_type, off_t nsize, off_t ncmp);
static ssize_t rw_file_exact(int fd, uint8_t *mem, size_t len, static ssize_t rw_file_exact(int fd, u8 *mem, size_t len,
off_t off, int rw_type); off_t off, int rw_type);
static ssize_t rw_file_once(int fd, uint8_t *mem, size_t len, static ssize_t rw_file_once(int fd, u8 *mem, size_t len,
off_t off, int rw_type, size_t rc); off_t off, int rw_type, size_t rc);
static ssize_t do_rw(int fd, static ssize_t do_rw(int fd,
uint8_t *mem, size_t len, off_t off, int rw_type); u8 *mem, size_t len, off_t off, int rw_type);
static ssize_t prw(int fd, void *mem, size_t nrw, static ssize_t prw(int fd, void *mem, size_t nrw,
off_t off, int rw_type); off_t off, int rw_type);
static off_t lseek_eintr(int fd, off_t off, int whence); static off_t lseek_eintr(int fd, off_t off, int whence);
@@ -343,7 +343,7 @@ static int io_args(int fd, void *mem, size_t nrw,
static void err(int nvm_errval, const char *msg, ...); static void err(int nvm_errval, const char *msg, ...);
static void close_files(void); static void close_files(void);
static const char *getnvmprogname(void); static const char *getnvmprogname(void);
static void usage(uint8_t usage_exit); static void usage(u8 usage_exit);
/* /*
* Sizes in bytes: * Sizes in bytes:
@@ -374,7 +374,7 @@ static void usage(uint8_t usage_exit);
#define NVM_CHECKSUM_WORD (NVM_WORDS - 1) #define NVM_CHECKSUM_WORD (NVM_WORDS - 1)
#define NUM_RANDOM_BYTES 12 #define NUM_RANDOM_BYTES 12
static uint8_t rnum[NUM_RANDOM_BYTES]; static u8 rnum[NUM_RANDOM_BYTES];
/* /*
* Portable macro based on BSD nitems. * Portable macro based on BSD nitems.
@@ -394,17 +394,17 @@ static const char *rname = NULL;
* *
* The code will handle this properly. * The code will handle this properly.
*/ */
static uint8_t buf[GBE_FILE_SIZE]; static u8 buf[GBE_FILE_SIZE];
static uint8_t pad[GBE_PART_SIZE]; /* the file that wouldn't die */ static u8 pad[GBE_PART_SIZE]; /* the file that wouldn't die */
static uint16_t mac_buf[3]; static u16 mac_buf[3];
static off_t gbe_file_size; static off_t gbe_file_size;
static int urandom_fd = -1; static int urandom_fd = -1;
static int gbe_fd = -1; static int gbe_fd = -1;
static size_t part; static size_t part;
static uint8_t part_modified[2]; static u8 part_modified[2];
static uint8_t part_valid[2]; static u8 part_valid[2];
static const char rmac[] = "xx:xx:xx:xx:xx:xx"; static const char rmac[] = "xx:xx:xx:xx:xx:xx";
static const char *mac_str; static const char *mac_str;
@@ -481,11 +481,11 @@ struct commands {
const char *str; const char *str;
void (*run)(void); void (*run)(void);
int argc; int argc;
uint8_t invert; u8 invert;
uint8_t set_modified; u8 set_modified;
uint8_t arg_part; u8 arg_part;
uint8_t chksum_read; u8 chksum_read;
uint8_t chksum_write; u8 chksum_write;
size_t rw_size; /* within the 4KB GbE part */ size_t rw_size; /* within the 4KB GbE part */
int flags; /* e.g. O_RDWR or O_RDONLY */ int flags; /* e.g. O_RDWR or O_RDONLY */
}; };
@@ -687,7 +687,7 @@ sanitize_command_list(void)
static void static void
sanitize_command_index(size_t c) sanitize_command_index(size_t c)
{ {
uint8_t mod_type; u8 mod_type;
size_t gbe_rw_size; size_t gbe_rw_size;
check_command_num(c); check_command_num(c);
@@ -768,7 +768,7 @@ set_cmd(int argc, char *argv[])
static void static void
set_cmd_args(int argc, char *argv[]) set_cmd_args(int argc, char *argv[])
{ {
uint8_t arg_part; u8 arg_part;
if (!valid_command(cmd_index) || argc < 3) if (!valid_command(cmd_index) || argc < 3)
usage(1); usage(1);
@@ -908,7 +908,7 @@ static void
read_gbe_file(void) read_gbe_file(void)
{ {
size_t p; size_t p;
uint8_t do_read[2] = {1, 1}; u8 do_read[2] = {1, 1};
/* /*
* Commands specifying a partnum only * Commands specifying a partnum only
@@ -928,10 +928,10 @@ read_checksums(void)
{ {
size_t p; size_t p;
size_t skip_part; size_t skip_part;
uint8_t invert; u8 invert;
uint8_t arg_part; u8 arg_part;
uint8_t num_invalid; u8 num_invalid;
uint8_t max_invalid; u8 max_invalid;
part_valid[0] = 0; part_valid[0] = 0;
part_valid[1] = 0; part_valid[1] = 0;
@@ -977,8 +977,8 @@ read_checksums(void)
static int static int
good_checksum(size_t partnum) good_checksum(size_t partnum)
{ {
uint16_t expected_checksum = calculated_checksum(partnum); u16 expected_checksum = calculated_checksum(partnum);
uint16_t current_checksum = nvm_word(NVM_CHECKSUM_WORD, partnum); u16 current_checksum = nvm_word(NVM_CHECKSUM_WORD, partnum);
if (current_checksum == expected_checksum) if (current_checksum == expected_checksum)
return 1; return 1;
@@ -1002,7 +1002,7 @@ check_command_num(size_t c)
(unsigned long)c); (unsigned long)c);
} }
static uint8_t static u8
valid_command(size_t c) valid_command(size_t c)
{ {
if (c >= N_COMMANDS) if (c >= N_COMMANDS)
@@ -1096,7 +1096,7 @@ set_mac_nib(size_t mac_str_pos,
size_t mac_byte_pos, size_t mac_nib_pos) size_t mac_byte_pos, size_t mac_nib_pos)
{ {
char mac_ch; char mac_ch;
uint16_t hex_num; u16 hex_num;
mac_ch = mac_str[mac_str_pos + mac_nib_pos]; mac_ch = mac_str[mac_str_pos + mac_nib_pos];
@@ -1121,7 +1121,7 @@ set_mac_nib(size_t mac_str_pos,
| ((mac_nib_pos ^ 1) << 2)); /* left or right nib? */ | ((mac_nib_pos ^ 1) << 2)); /* left or right nib? */
} }
static uint16_t static u16
hextonum(char ch_s) hextonum(char ch_s)
{ {
unsigned char ch = (unsigned char)ch_s; unsigned char ch = (unsigned char)ch_s;
@@ -1140,7 +1140,7 @@ hextonum(char ch_s)
return 16; /* invalid character */ return 16; /* invalid character */
} }
static uint16_t static u16
rhex(void) rhex(void)
{ {
static size_t n = 0; static size_t n = 0;
@@ -1154,10 +1154,10 @@ rhex(void)
err(errno, "Randomisation failed"); err(errno, "Randomisation failed");
} }
return (uint16_t)(rnum[--n] & 0xf); return (u16)(rnum[--n] & 0xf);
} }
static uint16_t static u16
fallback_rand(void) fallback_rand(void)
{ {
struct timeval tv; struct timeval tv;
@@ -1181,7 +1181,7 @@ fallback_rand(void)
mix ^= (unsigned long)&tv; mix ^= (unsigned long)&tv;
mix ^= (unsigned long)&counter; mix ^= (unsigned long)&counter;
return (uint16_t)(mix & 0xf); return (u16)(mix & 0xf);
} }
static unsigned long static unsigned long
@@ -1256,7 +1256,7 @@ static void
print_mac_from_nvm(size_t partnum) print_mac_from_nvm(size_t partnum)
{ {
size_t c; size_t c;
uint16_t val16; u16 val16;
for (c = 0; c < 3; c++) { for (c = 0; c < 3; c++) {
val16 = nvm_word(c, partnum); val16 = nvm_word(c, partnum);
@@ -1275,7 +1275,7 @@ hexdump(size_t partnum)
{ {
size_t c; size_t c;
size_t row; size_t row;
uint16_t val16; u16 val16;
for (row = 0; row < 8; row++) { for (row = 0; row < 8; row++) {
printf("%08lx ", (unsigned long)((size_t)row << 4)); printf("%08lx ", (unsigned long)((size_t)row << 4));
@@ -1316,7 +1316,7 @@ cmd_helper_cat(void)
} }
static void static void
gbe_cat_buf(uint8_t *b) gbe_cat_buf(u8 *b)
{ {
ssize_t rval; ssize_t rval;
@@ -1347,7 +1347,7 @@ write_gbe_file(void)
size_t p; size_t p;
size_t partnum; size_t partnum;
uint8_t update_checksum; u8 update_checksum;
if (command[cmd_index].flags == O_RDONLY) if (command[cmd_index].flags == O_RDONLY)
return; return;
@@ -1381,7 +1381,7 @@ write_gbe_file(void)
static void static void
override_part_modified(void) override_part_modified(void)
{ {
uint8_t mod_type = command[cmd_index].set_modified; u8 mod_type = command[cmd_index].set_modified;
switch (mod_type) { switch (mod_type) {
case SET_MOD_0: case SET_MOD_0:
@@ -1412,16 +1412,16 @@ set_checksum(size_t p)
set_nvm_word(NVM_CHECKSUM_WORD, p, calculated_checksum(p)); set_nvm_word(NVM_CHECKSUM_WORD, p, calculated_checksum(p));
} }
static uint16_t static u16
calculated_checksum(size_t p) calculated_checksum(size_t p)
{ {
size_t c; size_t c;
uint32_t val16 = 0; u32 val16 = 0;
for (c = 0; c < NVM_CHECKSUM_WORD; c++) for (c = 0; c < NVM_CHECKSUM_WORD; c++)
val16 += (uint32_t)nvm_word(c, p); val16 += (u32)nvm_word(c, p);
return (uint16_t)((NVM_CHECKSUM - val16) & 0xffff); return (u16)((NVM_CHECKSUM - val16) & 0xffff);
} }
/* /*
@@ -1432,7 +1432,7 @@ calculated_checksum(size_t p)
* file, but we assume otherwise and adapt accordingly. * file, but we assume otherwise and adapt accordingly.
*/ */
static uint16_t static u16
nvm_word(size_t pos16, size_t p) nvm_word(size_t pos16, size_t p)
{ {
size_t pos; size_t pos;
@@ -1440,20 +1440,20 @@ nvm_word(size_t pos16, size_t p)
check_nvm_bound(pos16, p); check_nvm_bound(pos16, p);
pos = (pos16 << 1) + (p * GBE_PART_SIZE); pos = (pos16 << 1) + (p * GBE_PART_SIZE);
return (uint16_t)buf[pos] | return (u16)buf[pos] |
((uint16_t)buf[pos + 1] << 8); ((u16)buf[pos + 1] << 8);
} }
static void static void
set_nvm_word(size_t pos16, size_t p, uint16_t val16) set_nvm_word(size_t pos16, size_t p, u16 val16)
{ {
size_t pos; size_t pos;
check_nvm_bound(pos16, p); check_nvm_bound(pos16, p);
pos = (pos16 << 1) + (p * GBE_PART_SIZE); pos = (pos16 << 1) + (p * GBE_PART_SIZE);
buf[pos] = (uint8_t)(val16 & 0xff); buf[pos] = (u8)(val16 & 0xff);
buf[pos + 1] = (uint8_t)(val16 >> 8); buf[pos + 1] = (u8)(val16 >> 8);
set_part_modified(p); set_part_modified(p);
} }
@@ -1494,9 +1494,9 @@ rw_gbe_file_part(size_t p, int rw_type,
const char *rw_type_str) const char *rw_type_str)
{ {
size_t gbe_rw_size = command[cmd_index].rw_size; size_t gbe_rw_size = command[cmd_index].rw_size;
uint8_t invert = command[cmd_index].invert; u8 invert = command[cmd_index].invert;
uint8_t *mem_offset; u8 *mem_offset;
if (rw_type < IO_PREAD || rw_type > IO_PWRITE) if (rw_type < IO_PREAD || rw_type > IO_PWRITE)
err(errno, "%s: %s: part %lu: invalid rw_type, %d", err(errno, "%s: %s: part %lu: invalid rw_type, %d",
@@ -1523,13 +1523,13 @@ rw_gbe_file_part(size_t p, int rw_type,
* but used to check Gbe bounds in memory, * but used to check Gbe bounds in memory,
* and it is *also* used during file I/O. * and it is *also* used during file I/O.
*/ */
static uint8_t * static u8 *
gbe_mem_offset(size_t p, const char *f_op) gbe_mem_offset(size_t p, const char *f_op)
{ {
off_t gbe_off = gbe_x_offset(p, f_op, "mem", off_t gbe_off = gbe_x_offset(p, f_op, "mem",
GBE_PART_SIZE, GBE_FILE_SIZE); GBE_PART_SIZE, GBE_FILE_SIZE);
return (uint8_t *)(buf + gbe_off); return (u8 *)(buf + gbe_off);
} }
/* /*
@@ -1587,7 +1587,7 @@ gbe_x_offset(size_t p, const char *f_op, const char *d_type,
* means that EOF is also considered fatal. * means that EOF is also considered fatal.
*/ */
static ssize_t static ssize_t
rw_file_exact(int fd, uint8_t *mem, size_t nrw, rw_file_exact(int fd, u8 *mem, size_t nrw,
off_t off, int rw_type) off_t off, int rw_type)
{ {
ssize_t rv; ssize_t rv;
@@ -1613,7 +1613,7 @@ rw_file_exact(int fd, uint8_t *mem, size_t nrw,
* Use rw_file_exact for guaranteed length. * Use rw_file_exact for guaranteed length.
*/ */
static ssize_t static ssize_t
rw_file_once(int fd, uint8_t *mem, size_t nrw, rw_file_once(int fd, u8 *mem, size_t nrw,
off_t off, int rw_type, size_t rc) off_t off, int rw_type, size_t rc)
{ {
ssize_t rv; ssize_t rv;
@@ -1648,7 +1648,7 @@ err_rw_file_once:
} }
static ssize_t static ssize_t
do_rw(int fd, uint8_t *mem, do_rw(int fd, u8 *mem,
size_t nrw, off_t off, int rw_type) size_t nrw, off_t off, int rw_type)
{ {
if (io_args(fd, mem, nrw, off, rw_type) == -1) if (io_args(fd, mem, nrw, off, rw_type) == -1)
@@ -1837,7 +1837,7 @@ getnvmprogname(void)
} }
static void static void
usage(uint8_t usage_exit) usage(u8 usage_exit)
{ {
const char *util = getnvmprogname(); const char *util = getnvmprogname();