summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHelge Deller <deller@localhost>2022-08-08 14:48:06 +0000
committerHelge Deller <deller@gmx.de>2022-08-08 16:59:10 +0200
commit333295c1cec9e36fbce81084804b9c1f3f4f0717 (patch)
tree311d7ba10a7de9b20f186e0e9884269015f333a8
parent71501b8d1652b553fc91d22745ebe40694c7bef9 (diff)
downloadpalo-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.h1
-rw-r--r--ipl/fileio.c14
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;