summaryrefslogtreecommitdiffstats
path: root/freebsd
diff options
context:
space:
mode:
authorJennifer Averett <jennifer.averett@oarcorp.com>2012-04-18 10:03:59 -0500
committerJennifer Averett <jennifer.averett@oarcorp.com>2012-04-18 10:05:05 -0500
commit0287267353cbf778eeb8a9c7aff8eccfc0e0812b (patch)
treefb764b07b46660dc777c0a7458b0afd52fb1b5ac /freebsd
parentAdd generic implementation of __bswap64 (diff)
downloadrtems-libbsd-0287267353cbf778eeb8a9c7aff8eccfc0e0812b.tar.bz2
Moved uio_yield implementation into bsd file.
Diffstat (limited to 'freebsd')
-rw-r--r--freebsd/kern/kern_subr.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/freebsd/kern/kern_subr.c b/freebsd/kern/kern_subr.c
index 88615ab1..9ece7aac 100644
--- a/freebsd/kern/kern_subr.c
+++ b/freebsd/kern/kern_subr.c
@@ -70,6 +70,11 @@ __FBSDID("$FreeBSD$");
#include <freebsd/vm/vm_object.h>
#endif
+
+#ifdef __rtems__
+#include <rtems.h>
+#endif
+
#ifndef __rtems__
SYSCTL_INT(_kern, KERN_IOV_MAX, iov_max, CTLFLAG_RD, NULL, UIO_MAXIOV,
"Maximum number of elements in an I/O vector; sysconf(_SC_IOV_MAX)");
@@ -468,7 +473,6 @@ phashinit(int elements, struct malloc_type *type, u_long *nentries)
return (hashtbl);
}
-#ifndef __rtems__
void
uio_yield(void)
{
@@ -476,15 +480,18 @@ uio_yield(void)
td = curthread;
DROP_GIANT();
- thread_lock(td);
#ifndef __rtems__
+ thread_lock(td);
sched_prio(td, td->td_user_pri);
-#endif
mi_switch(SW_INVOL | SWT_RELINQUISH, NULL);
thread_unlock(td);
+#else
+ rtems_task_wake_after( RTEMS_YIELD_PROCESSOR );
+#endif
PICKUP_GIANT();
}
+#ifndef __rtems__
int
copyinfrom(const void * __restrict src, void * __restrict dst, size_t len,
int seg)