u-boot/include/semihosting.h
Sean Anderson eff77c3a24 arm: smh: Use numeric modes for smh_open
There's no point in using string constants for smh_open if we are just
going to have to parse them. Instead, use numeric modes. The user needs
to be a bit careful with these, since they are much closer semantically
to string modes used by fopen(3) than the numeric modes used with
open(2).

Signed-off-by: Sean Anderson <sean.anderson@seco.com>
2022-04-01 15:03:13 -04:00

37 lines
1 KiB
C

/* SPDX-License-Identifier: GPL-2.0+ */
/*
* Copyright (C) 2022 Sean Anderson <sean.anderson@seco.com>
*/
#ifndef _SEMIHOSTING_H
#define _SEMIHOSTING_H
/**
* enum smh_open_mode - Numeric file modes for use with smh_open()
* MODE_READ: 'r'
* MODE_BINARY: 'b'
* MODE_PLUS: '+'
* MODE_WRITE: 'w'
* MODE_APPEND: 'a'
*
* These modes represent the mode string used by fopen(3) in a form which can
* be passed to smh_open(). These do NOT correspond directly to %O_RDONLY,
* %O_CREAT, etc; see fopen(3) for details. In particular, @MODE_PLUS
* effectively results in adding %O_RDWR, and @MODE_WRITE will add %O_TRUNC.
* For compatibility, @MODE_BINARY should be added when opening non-text files
* (such as images).
*/
enum smh_open_mode {
MODE_READ = 0x0,
MODE_BINARY = 0x1,
MODE_PLUS = 0x2,
MODE_WRITE = 0x4,
MODE_APPEND = 0x8,
};
long smh_open(const char *fname, enum smh_open_mode mode);
long smh_read(long fd, void *memp, size_t len);
long smh_close(long fd);
long smh_flen(long fd);
#endif /* _SEMIHOSTING_H */