summaryrefslogtreecommitdiffstats
path: root/sys/kern/sys_generic.c
diff options
context:
space:
mode:
authorandre <andre@FreeBSD.org>2004-08-27 21:23:50 +0000
committerandre <andre@FreeBSD.org>2004-08-27 21:23:50 +0000
commitbae83b759590a5d9571a431d37dc5514d52d1d4a (patch)
tree0b88d5350fc0bdf1452bdd74f86b8c2b4fabf835 /sys/kern/sys_generic.c
parent26d581a5d1dcbb7c814babc1bb36633a52778de6 (diff)
downloadFreeBSD-src-bae83b759590a5d9571a431d37dc5514d52d1d4a.zip
FreeBSD-src-bae83b759590a5d9571a431d37dc5514d52d1d4a.tar.gz
Poll() uses the array smallbits that is big enough to hold 32 struct
pollfd's to avoid calling malloc() on small numbers of fd's. Because smalltype's members have type char, its address might be misaligned for a struct pollfd. Change the array of char to an array of struct pollfd. PR: kern/58214 Submitted by: Stefan Farfeleder <stefan@fafoe.narf.at> Reviewed by: bde (a long time ago) MFC after: 3 days
Diffstat (limited to 'sys/kern/sys_generic.c')
-rw-r--r--sys/kern/sys_generic.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/sys/kern/sys_generic.c b/sys/kern/sys_generic.c
index 13b5125..d329460 100644
--- a/sys/kern/sys_generic.c
+++ b/sys/kern/sys_generic.c
@@ -848,8 +848,8 @@ poll(td, uap)
struct thread *td;
struct poll_args *uap;
{
- caddr_t bits;
- char smallbits[32 * sizeof(struct pollfd)];
+ struct pollfd *bits;
+ struct pollfd smallbits[32];
struct timeval atv, rtv, ttv;
int error = 0, timo;
u_int ncoll, nfds;
@@ -908,7 +908,7 @@ retry:
mtx_unlock_spin(&sched_lock);
mtx_unlock(&sellock);
- error = pollscan(td, (struct pollfd *)bits, nfds);
+ error = pollscan(td, bits, nfds);
mtx_lock(&sellock);
if (error || td->td_retval[0])
goto done;
OpenPOWER on IntegriCloud