Date: Thu, 30 May 2002 22:57:02 -0700 (PDT) From: Julian Elischer <julian@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 12179 for review Message-ID: <200205310557.g4V5v2E25112@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://people.freebsd.org/~peter/p4db/chv.cgi?CH=12179 Change 12179 by julian@julian_ref on 2002/05/30 22:56:19 Use fuword and suword instead of copyin/copyout when setting up thread completion mailboxes. needs fptr and sptr, which I will add soon. Affected files ... ... //depot/projects/kse/sys/i386/i386/trap.c#43 edit ... //depot/projects/kse/sys/kern/kern_thread.c#50 edit Differences ... ==== //depot/projects/kse/sys/i386/i386/trap.c#43 (text+ko) ==== @@ -955,10 +955,10 @@ * possibility that we could do this lazily (in sleep()), * but for now do it every time. */ - error = copyin((caddr_t)td->td_kse->ke_mailbox + - offsetof(struct kse_mailbox, current_thread), - &td->td_mailbox, sizeof(void *)); - if (error || td->td_mailbox == NULL) { + td->td_mailbox = fuword((caddr_t)td->td_kse->ke_mailbox + + offsetof(struct kse_mailbox, current_thread)); + if ((td->td_mailbox == NULL) || + (td->td_mailbox == (viod *)-1)) { td->td_mailbox = NULL; /* single thread it.. */ td->td_flags &= ~TDF_UNBOUND; } else { ==== //depot/projects/kse/sys/kern/kern_thread.c#50 (text+ko) ==== @@ -251,7 +251,7 @@ thread_export_context(struct thread *td) { struct kse *ke; - void *td2_mbx; + uint td2_mbx; /* XXXKSE */ void *addr1; void *addr2; int error; @@ -266,11 +266,17 @@ + offsetof(struct thread_mailbox , next_completed); /* Then link it into it's KSE's list of completed threads. */ if (!error) - error = copyin( addr1, &td2_mbx, sizeof(void *)); + error = td2_mbx = fuword(addr1); + if (error == -1) + error = EFAULT; + else + error = 0; if (!error) - error = copyout(&td2_mbx, addr2, sizeof(void *)); + error = suword(addr2, td2_mbx); if (!error) - error = copyout(&td->td_mailbox, addr1, sizeof(void *)); + error = suword(addr1, (uint)td->td_mailbox); + if (error == -1) + error = EFAULT; return (error); } To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe p4-projects" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200205310557.g4V5v2E25112>