diff options
author | Helge Deller <deller@localhost> | 2022-08-08 14:48:06 +0000 |
---|---|---|
committer | Helge Deller <deller@gmx.de> | 2022-08-08 16:59:10 +0200 |
commit | 333295c1cec9e36fbce81084804b9c1f3f4f0717 (patch) | |
tree | 311d7ba10a7de9b20f186e0e9884269015f333a8 | |
parent | 71501b8d1652b553fc91d22745ebe40694c7bef9 (diff) | |
download | palo-333295c1cec9e36fbce81084804b9c1f3f4f0717.tar.gz |
ipl: Add fileio_close() function to close file handles
The "list directory" function uses file handles to open the directories.
Since there is a limited number of file handles available, add the fileio_close() function to
free them up after usage.
Signed-off-by: Helge Deller <deller@gmx.de>
-rw-r--r-- | ipl/bootloader.h | 1 | ||||
-rw-r--r-- | ipl/fileio.c | 14 |
2 files changed, 15 insertions, 0 deletions
diff --git a/ipl/bootloader.h b/ipl/bootloader.h index 8871d87..af4733f 100644 --- a/ipl/bootloader.h +++ b/ipl/bootloader.h @@ -45,6 +45,7 @@ int byteio_open(int otherfd); /* fileio.c */ int fileio_open(describe_t describef, read_t readf); +void fileio_close(unsigned int fd); int seekread(int fd, char *buf, unsigned nbytes, __u64 devaddr); void describe(int fd, int *bufalign, int *blocksize); diff --git a/ipl/fileio.c b/ipl/fileio.c index 7b31a69..29dddfd 100644 --- a/ipl/fileio.c +++ b/ipl/fileio.c @@ -41,9 +41,23 @@ int fileio_open(describe_t describef, read_t readf) } } + if (Debug) + printf("assigning fd # %d\n", d); + return d; } +void fileio_close(unsigned int fd) +{ + if (fd > MAX_FD) + return; + + if (Debug) + printf("closing fd # %d\n", fd); + + memset(&fileio[fd], 0, sizeof(fileio[0])); +} + int seekread(int fd, char *buf, unsigned nbytes, __u64 devaddr) { int r = -1; |