diff --git a/example/main.c b/example/main.c index 0e2fcd05..983b1b5d 100644 --- a/example/main.c +++ b/example/main.c @@ -105,7 +105,7 @@ int main(int argc, char * argv[]) { ff_init(argc, argv); - int sockfd = ff_socket(AF_INET, SOCK_STREAM, 0); + sockfd = ff_socket(AF_INET, SOCK_STREAM, 0); printf("sockfd:%d\n", sockfd); if (sockfd < 0) printf("ff_socket failed\n"); diff --git a/freebsd/kern/kern_descrip.c b/freebsd/kern/kern_descrip.c index 6326867e..27d8ee6e 100644 --- a/freebsd/kern/kern_descrip.c +++ b/freebsd/kern/kern_descrip.c @@ -4122,12 +4122,12 @@ ff_fdisused(int fd) * the kernel's descriptor space */ void -ff_fdused_range(struct filedesc *fdp, int max) +ff_fdused_range(int max) { - int i; - + int i, result; + struct thread *td = curthread; for (i = 0; i < max; i++) - fdused(fdp, i); + fdalloc(td, 0, &result); } #endif diff --git a/lib/ff_config.c b/lib/ff_config.c index 4ac57bbe..53f6f0c9 100644 --- a/lib/ff_config.c +++ b/lib/ff_config.c @@ -285,6 +285,8 @@ ini_parse_handler(void* user, const char* section, const char* name, pconfig->freebsd.hz = atoi(value); } else if (strcmp(name, "physmem") == 0) { pconfig->freebsd.physmem = atol(value); + } else if (strcmp(name, "fd_reserve") == 0) { + pconfig->freebsd.fd_reserve = atoi(value); } else { return freebsd_conf_handler(pconfig, "boot", name, value); } diff --git a/lib/ff_freebsd_init.c b/lib/ff_freebsd_init.c index 7d9fd021..220d2abb 100644 --- a/lib/ff_freebsd_init.c +++ b/lib/ff_freebsd_init.c @@ -112,7 +112,7 @@ ff_freebsd_init(void) mutex_init(); mi_startup(); sx_init(&proctree_lock, "proctree"); - ff_fdused_range(curthread->td_proc->p_fd, ff_global_cfg.freebsd.fd_reserve); + ff_fdused_range(ff_global_cfg.freebsd.fd_reserve); cur = ff_global_cfg.freebsd.sysctl; while (cur) { diff --git a/lib/include/sys/filedesc.h b/lib/include/sys/filedesc.h index db07bcef..96a0f613 100644 --- a/lib/include/sys/filedesc.h +++ b/lib/include/sys/filedesc.h @@ -30,7 +30,7 @@ #include_next -void ff_fdused_range(struct filedesc *fdp, int max); +void ff_fdused_range(int max); int ff_fdisused(int fd); #endif /* _FSTACK_SYS_FILEDESC_H_ */