Message ID | 20220106115741.3219-16-jgross@suse.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | mini-os: remove struct file dependency from config | expand |
Juergen Gross, le jeu. 06 janv. 2022 12:57:41 +0100, a ecrit: > Exporting the files[] array especially for components outside the > mini-os source tree is limiting the ability to change any file handling > in mini-os. > > Introduce a new function get_file_from_fd() to return the struct file > pointer (or NULL) for a given file descriptor. > > Signed-off-by: Juergen Gross <jgross@suse.com> Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org> > --- > include/lib.h | 1 + > lib/sys.c | 8 ++++++++ > 2 files changed, 9 insertions(+) > > diff --git a/include/lib.h b/include/lib.h > index 91364ba..7a0546b 100644 > --- a/include/lib.h > +++ b/include/lib.h > @@ -198,6 +198,7 @@ struct file { > > extern struct file files[]; > > +struct file *get_file_from_fd(int fd); > int alloc_fd(enum fd_type type); > void close_all_files(void); > extern struct thread *main_thread; > diff --git a/lib/sys.c b/lib/sys.c > index 6f2b026..0e6fe5d 100644 > --- a/lib/sys.c > +++ b/lib/sys.c > @@ -98,6 +98,14 @@ struct file files[NOFILE] = { > { .type = FTYPE_CONSOLE }, /* stderr */ > }; > > +struct file *get_file_from_fd(int fd) > +{ > + if ( fd < 0 || fd >= NOFILE ) > + return NULL; > + > + return (files[fd].type == FTYPE_NONE) ? NULL : files + fd; > +} > + > DECLARE_WAIT_QUEUE_HEAD(event_queue); > > int alloc_fd(enum fd_type type) > -- > 2.26.2 >
diff --git a/include/lib.h b/include/lib.h index 91364ba..7a0546b 100644 --- a/include/lib.h +++ b/include/lib.h @@ -198,6 +198,7 @@ struct file { extern struct file files[]; +struct file *get_file_from_fd(int fd); int alloc_fd(enum fd_type type); void close_all_files(void); extern struct thread *main_thread; diff --git a/lib/sys.c b/lib/sys.c index 6f2b026..0e6fe5d 100644 --- a/lib/sys.c +++ b/lib/sys.c @@ -98,6 +98,14 @@ struct file files[NOFILE] = { { .type = FTYPE_CONSOLE }, /* stderr */ }; +struct file *get_file_from_fd(int fd) +{ + if ( fd < 0 || fd >= NOFILE ) + return NULL; + + return (files[fd].type == FTYPE_NONE) ? NULL : files + fd; +} + DECLARE_WAIT_QUEUE_HEAD(event_queue); int alloc_fd(enum fd_type type)
Exporting the files[] array especially for components outside the mini-os source tree is limiting the ability to change any file handling in mini-os. Introduce a new function get_file_from_fd() to return the struct file pointer (or NULL) for a given file descriptor. Signed-off-by: Juergen Gross <jgross@suse.com> --- include/lib.h | 1 + lib/sys.c | 8 ++++++++ 2 files changed, 9 insertions(+)