Skip site navigation (1)Skip section navigation (2)
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>