Print this page
8115 parallel zfs mount
@@ -9,23 +9,26 @@
* http://www.illumos.org/license/CDDL.
*/
/*
* Copyright 2014 Nexenta Systems, Inc. All rights reserved.
+ * Copyright 2017 RackTop Systems.
*/
#include <sys/types.h>
#include <sys/time.h>
#include <sys/thread.h>
#include <sys/proc.h>
#include <sys/zone.h>
+#include <sys/cyclic.h>
#include <sys/poll.h>
#include <time.h>
#include <stdlib.h>
#include <unistd.h>
+#include <errno.h>
#include <fakekernel.h>
pri_t minclsyspri = 60;
@@ -53,24 +56,95 @@
ddi_get_pid(void)
{
return ((pid_t)getpid());
}
+/*
+ * Find highest one bit set.
+ * Returns bit number + 1 of highest bit that is set, otherwise returns 0.
+ */
int
+highbit64(uint64_t i)
+{
+ int h = 1;
+
+ if (i == 0)
+ return (0);
+ if (i & 0xffffffff00000000ULL) {
+ h += 32; i >>= 32;
+ }
+ if (i & 0xffff0000) {
+ h += 16; i >>= 16;
+ }
+ if (i & 0xff00) {
+ h += 8; i >>= 8;
+ }
+ if (i & 0xf0) {
+ h += 4; i >>= 4;
+ }
+ if (i & 0xc) {
+ h += 2; i >>= 2;
+ }
+ if (i & 0x2) {
+ h += 1;
+ }
+ return (h);
+}
+
+int
ddi_strtoul(const char *str, char **endp, int base, unsigned long *res)
{
*res = strtoul(str, endp, base);
+ if (*res == 0)
+ return (errno);
return (0);
}
+int
+ddi_strtoull(const char *str, char **nptr, int base, u_longlong_t *res)
+{
+ char *end;
+
+ *res = strtoull(str, &end, base);
+ if (*res == 0)
+ return (errno);
+ return (0);
+}
+
void
delay(clock_t ticks)
{
int msec = ticks; /* NB: hz==1000 */
(void) poll(0, 0, msec);
}
+int
+issig(int why)
+{
+ return (0);
+}
+
+/* ARGSUSED */
+cyclic_id_t
+cyclic_add(cyc_handler_t *hdlr, cyc_time_t *when)
+{
+ return (1);
+}
+
+/* ARGSUSED */
+void
+cyclic_remove(cyclic_id_t id)
+{
+}
+
+/* ARGSUSED */
+int
+cyclic_reprogram(cyclic_id_t id, hrtime_t expiration)
+{
+ return (1);
+}
+
/*
* This library does not really need an "init" function, but
* providing one the main program can call is an easy way to
* make sure this library is loaded into the debugger, and
* gives us a way to avoid elfcheck complaints in the build.