summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWarner Losh <imp@FreeBSD.org>2018-01-09 16:11:33 +0000
committerWarner Losh <imp@FreeBSD.org>2018-01-09 16:11:33 +0000
commit9c5a11488681b049d796ee42634d21a7bd436adf (patch)
treef03dede49345928b7974efca42d68cce0626d29e
parent8ab09f8a4e7e47cc83bcec1b599741f53c6b6172 (diff)
downloadsrc-test2-9c5a11488681b049d796ee42634d21a7bd436adf.tar.gz
src-test2-9c5a11488681b049d796ee42634d21a7bd436adf.zip
Notes
-rw-r--r--sys/cam/scsi/scsi_low.c59
-rw-r--r--sys/cam/scsi/scsi_low.h56
-rw-r--r--sys/i386/isa/ccbque.h124
3 files changed, 114 insertions, 125 deletions
diff --git a/sys/cam/scsi/scsi_low.c b/sys/cam/scsi/scsi_low.c
index daf088901a2e..eb65969bc93d 100644
--- a/sys/cam/scsi/scsi_low.c
+++ b/sys/cam/scsi/scsi_low.c
@@ -88,6 +88,65 @@ __FBSDID("$FreeBSD$");
#include <sys/cons.h>
/**************************************************************
+ * CCB Macros
+ **************************************************************/
+
+/* (II) static allocated memory */
+#define GENERIC_CCB_STATIC_ALLOC(DEV, CCBTYPE) \
+static struct CCBTYPE##que CCBTYPE##que;
+
+/* (III) functions */
+#define GENERIC_CCB(DEV, CCBTYPE, CHAIN) \
+ \
+void \
+DEV##_init_ccbque(int count) \
+{ \
+ if (CCBTYPE##que.maxccb == 0) \
+ TAILQ_INIT(&CCBTYPE##que.CCBTYPE##tab); \
+ CCBTYPE##que.maxccb += count; \
+} \
+ \
+struct CCBTYPE * \
+DEV##_get_ccb(void) \
+{ \
+ struct CCBTYPE *cb; \
+ \
+ if (CCBTYPE##que.count < CCBTYPE##que.maxccb) \
+ { \
+ CCBTYPE##que.count ++; \
+ cb = TAILQ_FIRST(&(CCBTYPE##que.CCBTYPE##tab)); \
+ if (cb != NULL) { \
+ TAILQ_REMOVE(&CCBTYPE##que.CCBTYPE##tab, cb, CHAIN);\
+ goto out; \
+ } else { \
+ cb = malloc(sizeof(*cb), M_DEVBUF, M_NOWAIT | M_ZERO); \
+ if (cb != NULL) \
+ goto out; \
+ } \
+ CCBTYPE##que.count --; \
+ } \
+ \
+ cb = NULL; \
+ \
+out: \
+ return cb; \
+} \
+ \
+void \
+DEV##_free_ccb(struct CCBTYPE *cb) \
+{ \
+ \
+ TAILQ_INSERT_TAIL(&CCBTYPE##que.CCBTYPE##tab, cb, CHAIN); \
+ CCBTYPE##que.count --; \
+ \
+ if (CCBTYPE##que.flags & CCB_MWANTED) \
+ { \
+ CCBTYPE##que.flags &= ~CCB_MWANTED; \
+ wakeup ((caddr_t) &CCBTYPE##que.count); \
+ } \
+}
+
+/**************************************************************
* Constants
**************************************************************/
#define SCSI_LOW_POLL_HZ 1000
diff --git a/sys/cam/scsi/scsi_low.h b/sys/cam/scsi/scsi_low.h
index 809ca2a8b943..c6c1776de71a 100644
--- a/sys/cam/scsi/scsi_low.h
+++ b/sys/cam/scsi/scsi_low.h
@@ -57,7 +57,61 @@
#include <cam/cam_debug.h>
#include <cam/scsi/scsi_dvcfg.h>
-#include <i386/isa/ccbque.h>
+/************ ccbque.h ***************************/
+
+/* $NetBSD$ */
+/*-
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
+ * [NetBSD for NEC PC98 series]
+ * Copyright (c) 1994, 1995, 1996 NetBSD/pc98 porting staff.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+/*
+ * Common command control queue funcs.
+ * Written by N. Honda.
+ */
+
+#define CCB_MWANTED 0x01
+
+/* (I) structure and prototype */
+#define GENERIC_CCB_ASSERT(DEV, CCBTYPE) \
+TAILQ_HEAD(CCBTYPE##tab, CCBTYPE); \
+struct CCBTYPE##que { \
+ struct CCBTYPE##tab CCBTYPE##tab; \
+ int count; \
+ int maxccb; \
+ u_int flags; \
+}; \
+ \
+void DEV##_init_ccbque(int); \
+struct CCBTYPE *DEV##_get_ccb(void); \
+void DEV##_free_ccb(struct CCBTYPE *);
/******** functions macro ************************/
diff --git a/sys/i386/isa/ccbque.h b/sys/i386/isa/ccbque.h
deleted file mode 100644
index 36def7034af5..000000000000
--- a/sys/i386/isa/ccbque.h
+++ /dev/null
@@ -1,124 +0,0 @@
-/* $NetBSD$ */
-/*-
- * SPDX-License-Identifier: BSD-3-Clause
- *
- * [NetBSD for NEC PC98 series]
- * Copyright (c) 1994, 1995, 1996 NetBSD/pc98 porting staff.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. The name of the author may not be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * $FreeBSD$
- */
-/*
- * Common command control queue funcs.
- * Written by N. Honda.
- */
-
-#ifndef _CCBQUE_H_
-#define _CCBQUE_H_
-
-#define CCB_MWANTED 0x01
-
-/* (I) structure and prototype */
-#define GENERIC_CCB_ASSERT(DEV, CCBTYPE) \
-TAILQ_HEAD(CCBTYPE##tab, CCBTYPE); \
-struct CCBTYPE##que { \
- struct CCBTYPE##tab CCBTYPE##tab; \
- int count; \
- int maxccb; \
- u_int flags; \
-}; \
- \
-void DEV##_init_ccbque(int); \
-struct CCBTYPE *DEV##_get_ccb(void); \
-void DEV##_free_ccb(struct CCBTYPE *);
-
-/* (II) static allocated memory */
-#define GENERIC_CCB_STATIC_ALLOC(DEV, CCBTYPE) \
-static struct CCBTYPE##que CCBTYPE##que;
-
-/* (III) functions */
-#define GENERIC_CCB(DEV, CCBTYPE, CHAIN) \
- \
-void \
-DEV##_init_ccbque(count) \
- int count; \
-{ \
- if (CCBTYPE##que.maxccb == 0) \
- TAILQ_INIT(&CCBTYPE##que.CCBTYPE##tab); \
- CCBTYPE##que.maxccb += count; \
-} \
- \
-struct CCBTYPE * \
-DEV##_get_ccb() \
-{ \
- struct CCBTYPE *cb; \
- int s = splcam(); \
- \
- if (CCBTYPE##que.count < CCBTYPE##que.maxccb) \
- { \
- CCBTYPE##que.count ++; \
- cb = TAILQ_FIRST(&(CCBTYPE##que.CCBTYPE##tab)); \
- if (cb != NULL) \
- { \
- TAILQ_REMOVE(&CCBTYPE##que.CCBTYPE##tab, cb, CHAIN);\
- goto out; \
- } \
- else \
- { \
- cb = malloc(sizeof(*cb), M_DEVBUF, M_NOWAIT); \
- if (cb != NULL) \
- { \
- bzero(cb, sizeof(*cb)); \
- goto out; \
- } \
- } \
- CCBTYPE##que.count --; \
- } \
- \
- cb = NULL; \
- \
-out: \
- splx(s); \
- return cb; \
-} \
- \
-void \
-DEV##_free_ccb(cb) \
- struct CCBTYPE *cb; \
-{ \
- int s = splcam(); \
- \
- TAILQ_INSERT_TAIL(&CCBTYPE##que.CCBTYPE##tab, cb, CHAIN); \
- CCBTYPE##que.count --; \
- \
- if (CCBTYPE##que.flags & CCB_MWANTED) \
- { \
- CCBTYPE##que.flags &= ~CCB_MWANTED; \
- wakeup ((caddr_t) &CCBTYPE##que.count); \
- } \
- splx(s); \
-}
-#endif /* !_CCBQUE_H_ */