Re: svn commit: r366265 - head/sys/sys

2020-09-29 Thread Warner Losh
On Tue, Sep 29, 2020, 1:00 PM Hans Petter Selasky  wrote:

> On 2020-09-29 20:06, Warner Losh wrote:
> > Author: imp
> > Date: Tue Sep 29 18:06:02 2020
> > New Revision: 366265
> > URL: https://svnweb.freebsd.org/changeset/base/366265
> >
> > Log:
> >Standalone SX shims
> >
> >Create a do-nothing version of SX locks. OpenZFS needs them. However,
> >since the boot loader is single threaded, they can be nops.
> >
> > Modified:
> >head/sys/sys/sx.h
> >
> > Modified: head/sys/sys/sx.h
> >
> ==
> > --- head/sys/sys/sx.h Tue Sep 29 17:52:15 2020(r366264)
> > +++ head/sys/sys/sx.h Tue Sep 29 18:06:02 2020(r366265)
> > @@ -300,4 +300,26 @@ __sx_xunlock(struct sx *sx, struct thread *td,
> const c
> >
> >   #endif /* _KERNEL */
> >
> > +#ifdef _STANDALONE
> > +/* since we have no threads in the boot loader, trivially implement
> no-op version */
> > +#define sx_xlock(s) (1)
> > +#define sx_try_xlock(s) (1)
> > +#define sx_xunlock(s) (1)
> > +#define SX_DUPOK 0
> > +#define SX_NEW 0
> > +#define SX_NOWITNESS 0
> > +
> > +static __inline void
> > +sx_init_flags(struct sx *sx, const char *description, int opts)
> > +{
> > +
> > +}
> > +
> > +static __inline void
> > +sx_destroy(struct sx *sx)
> > +{
> > +
> > +}
> > +#endif /* _STANDALONE */
> > +
> >   #endif /* !_SYS_SX_H_ */
> >
>
> You may want to use:
>
> bsd_kernel.c:sx_init_flags(struct sx *sx, const char *name, int flags)
> bsd_kernel.c:   sx->owned = 0;
> bsd_kernel.c:sx_destroy(struct sx *sx)
> bsd_kernel.c:sx_xlock(struct sx *sx)
> bsd_kernel.c:   sx->owned++;
> bsd_kernel.c:sx_xunlock(struct sx *sx)
> bsd_kernel.c:   sx->owned--;
> bsd_kernel.c:sx_xlocked(struct sx *sx)
> bsd_kernel.c:   return (sx->owned != 0);
> bsd_kernel.h:struct sx {
> bsd_kernel.h:#definesx_assert(...) do { } while (0)
> bsd_kernel.h:#definesx_init(...) sx_init_flags(__VA_ARGS__, 0)
> bsd_kernel.h:void   sx_init_flags(struct sx *, const char *, int);
> bsd_kernel.h:void   sx_destroy(struct sx *);
> bsd_kernel.h:void   sx_xlock(struct sx *);
> bsd_kernel.h:void   sx_xunlock(struct sx *);
> bsd_kernel.h:intsx_xlocked(struct sx *);
>
> from "src/stand/kshim"
>

Yea. This, and other parts of the shims, need to be integrated into stand...

Warner

>
___
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


Re: svn commit: r366265 - head/sys/sys

2020-09-29 Thread Hans Petter Selasky

On 2020-09-29 20:06, Warner Losh wrote:

Author: imp
Date: Tue Sep 29 18:06:02 2020
New Revision: 366265
URL: https://svnweb.freebsd.org/changeset/base/366265

Log:
   Standalone SX shims
   
   Create a do-nothing version of SX locks. OpenZFS needs them. However,

   since the boot loader is single threaded, they can be nops.

Modified:
   head/sys/sys/sx.h

Modified: head/sys/sys/sx.h
==
--- head/sys/sys/sx.h   Tue Sep 29 17:52:15 2020(r366264)
+++ head/sys/sys/sx.h   Tue Sep 29 18:06:02 2020(r366265)
@@ -300,4 +300,26 @@ __sx_xunlock(struct sx *sx, struct thread *td, const c
  
  #endif /* _KERNEL */
  
+#ifdef _STANDALONE

+/* since we have no threads in the boot loader, trivially implement no-op 
version */
+#define sx_xlock(s) (1)
+#define sx_try_xlock(s) (1)
+#define sx_xunlock(s) (1)
+#define SX_DUPOK 0
+#define SX_NEW 0
+#define SX_NOWITNESS 0
+
+static __inline void
+sx_init_flags(struct sx *sx, const char *description, int opts)
+{
+
+}
+
+static __inline void
+sx_destroy(struct sx *sx)
+{
+
+}
+#endif /* _STANDALONE */
+
  #endif /* !_SYS_SX_H_ */



You may want to use:

bsd_kernel.c:sx_init_flags(struct sx *sx, const char *name, int flags)
bsd_kernel.c:   sx->owned = 0;
bsd_kernel.c:sx_destroy(struct sx *sx)
bsd_kernel.c:sx_xlock(struct sx *sx)
bsd_kernel.c:   sx->owned++;
bsd_kernel.c:sx_xunlock(struct sx *sx)
bsd_kernel.c:   sx->owned--;
bsd_kernel.c:sx_xlocked(struct sx *sx)
bsd_kernel.c:   return (sx->owned != 0);
bsd_kernel.h:struct sx {
bsd_kernel.h:#definesx_assert(...) do { } while (0)
bsd_kernel.h:#definesx_init(...) sx_init_flags(__VA_ARGS__, 0)
bsd_kernel.h:void   sx_init_flags(struct sx *, const char *, int);
bsd_kernel.h:void   sx_destroy(struct sx *);
bsd_kernel.h:void   sx_xlock(struct sx *);
bsd_kernel.h:void   sx_xunlock(struct sx *);
bsd_kernel.h:intsx_xlocked(struct sx *);

from "src/stand/kshim"

--HPS
___
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


svn commit: r366265 - head/sys/sys

2020-09-29 Thread Warner Losh
Author: imp
Date: Tue Sep 29 18:06:02 2020
New Revision: 366265
URL: https://svnweb.freebsd.org/changeset/base/366265

Log:
  Standalone SX shims
  
  Create a do-nothing version of SX locks. OpenZFS needs them. However,
  since the boot loader is single threaded, they can be nops.

Modified:
  head/sys/sys/sx.h

Modified: head/sys/sys/sx.h
==
--- head/sys/sys/sx.h   Tue Sep 29 17:52:15 2020(r366264)
+++ head/sys/sys/sx.h   Tue Sep 29 18:06:02 2020(r366265)
@@ -300,4 +300,26 @@ __sx_xunlock(struct sx *sx, struct thread *td, const c
 
 #endif /* _KERNEL */
 
+#ifdef _STANDALONE
+/* since we have no threads in the boot loader, trivially implement no-op 
version */
+#define sx_xlock(s) (1)
+#define sx_try_xlock(s) (1)
+#define sx_xunlock(s) (1)
+#define SX_DUPOK 0
+#define SX_NEW 0
+#define SX_NOWITNESS 0
+
+static __inline void
+sx_init_flags(struct sx *sx, const char *description, int opts)
+{
+
+}
+
+static __inline void
+sx_destroy(struct sx *sx)
+{
+
+}
+#endif /* _STANDALONE */
+
 #endif /* !_SYS_SX_H_ */
___
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"