arch: sandbox: Add function to create temporary files

When working with sparse data buffers that may be larger than the address
space, it is convenient to work with files instead. Add a function to create
temporary files of a certain size.

Signed-off-by: Sean Anderson <seanga2@gmail.com>
This commit is contained in:
Sean Anderson 2023-11-04 16:37:51 -04:00 committed by Tom Rini
parent 333d43f6a3
commit 9181cb0507
2 changed files with 30 additions and 0 deletions

View file

@ -282,6 +282,23 @@ int os_persistent_file(char *buf, int maxsize, const char *fname)
return 0;
}
int os_mktemp(char *fname, off_t size)
{
int fd;
fd = mkostemp(fname, O_CLOEXEC);
if (fd < 0)
return -errno;
if (unlink(fname) < 0)
return -errno;
if (ftruncate(fd, size))
return -errno;
return fd;
}
/* Restore tty state when we exit */
static struct termios orig_term;
static bool term_setup;

View file

@ -108,6 +108,19 @@ int os_unlink(const char *pathname);
*/
int os_persistent_file(char *buf, int maxsize, const char *fname);
/**
* os_mktemp() - Create a temporary file
* @fname: The template to use for the file name. This must end with 6 Xs. It
* will be modified to the opened filename on success.
* @size: The size of the file
*
* Create a temporary file using @fname as a template, unlink it, and truncate
* it to @size.
*
* Return: A file descriptor, or negative errno on error
*/
int os_mktemp(char *fname, off_t size);
/**
* os_exit() - access to the OS exit() system call
*