[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v2 17/18] mini-os: use function vectors instead of switch for file operations
On 12/01/2022 07:34, Juergen Gross wrote: > On 11.01.22 19:08, Andrew Cooper wrote: >> On 11/01/2022 14:58, Juergen Gross wrote: >>> + >>> +off_t lseek_default(int fd, off_t offset, int whence); >>> +bool select_yes(int fd); >>> +bool select_read_flag(int fd); >>> + >>> LIST_HEAD(evtchn_port_list, evtchn_port_info); >>> struct evtchn_port_info { >>> @@ -183,7 +210,7 @@ struct evtchn_port_info { >>> }; >>> struct file { >>> - enum fd_type type; >>> + unsigned int type; >>> bool read; /* maybe available for read */ >>> off_t offset; >>> union { >>> @@ -199,7 +226,7 @@ struct file { >>> extern struct file files[]; >>> struct file *get_file_from_fd(int fd); >>> -int alloc_fd(enum fd_type type); >>> +int alloc_fd(unsigned int type); >>> void close_all_files(void); >>> extern struct thread *main_thread; >>> void sparse(unsigned long data, size_t size); >>> diff --git a/lib/sys.c b/lib/sys.c >>> index 323a7cd..c327247 100644 >>> --- a/lib/sys.c >>> +++ b/lib/sys.c >>> @@ -98,6 +98,39 @@ struct file files[NOFILE] = { >>> { .type = FTYPE_CONSOLE }, /* stderr */ >>> }; >>> +static struct file_ops file_ops_none = { >>> + .name = "none", >>> +}; >>> + >>> +static struct file_ops *file_ops[FTYPE_N + FTYPE_SPARE] = { >>> + [FTYPE_NONE] = &file_ops_none, >>> +}; >> >> Both want to be const, because all file_ops ought to live in rodata. > > file_ops[] can't be const, it will just point to const data. Oh, of course. >>> @@ -709,6 +805,18 @@ static void dump_pollfds(struct pollfd *pfd, >>> int nfds, int timeout) >>> #define dump_pollfds(pfds, nfds, timeout) >>> #endif >>> +bool select_yes(int fd) >>> +{ >>> + return true; >>> +} >>> + >>> +bool select_read_flag(int fd) >>> +{ >>> + struct file *file = get_file_from_fd(fd); >>> + >>> + return file->read; >>> +} >> >> I don't see these getting used, even in a fallback case. > > They will be used in later patches. Yeah - I found them in later patches. It's probably worth a note in the commit message saying "provide some functions useful for file_ops in future patches", particularly as it's actually a later series which takes them (due to the ordering constraints). ~Andrew
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |