diff options
author | Dan Williams <dan.j.williams@intel.com> | 2011-05-08 22:15:10 -0700 |
---|---|---|
committer | Dan Williams <dan.j.williams@intel.com> | 2011-07-03 04:04:47 -0700 |
commit | 3bff9d54ecba84e538da822349a9a6fd6e534539 (patch) | |
tree | 9a780a1ed7f1a82c1d381a6676ff742b904ea4be | |
parent | 63a3a15fb00ef49e50e98ff675094afcd92f113a (diff) |
isci: uplevel state machine
unify core/sci_base_state.h and core/sci_base_state_machine.[ch] into
state_machine.[ch]
Reported-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
-rw-r--r-- | drivers/scsi/isci/Makefile | 2 | ||||
-rw-r--r-- | drivers/scsi/isci/core/sci_base_state.h | 84 | ||||
-rw-r--r-- | drivers/scsi/isci/core/scic_sds_phy.c | 3 | ||||
-rw-r--r-- | drivers/scsi/isci/core/scic_sds_phy.h | 2 | ||||
-rw-r--r-- | drivers/scsi/isci/core/scic_sds_port.h | 2 | ||||
-rw-r--r-- | drivers/scsi/isci/core/scic_sds_request.h | 2 | ||||
-rw-r--r-- | drivers/scsi/isci/core/scic_sds_smp_request.c | 2 | ||||
-rw-r--r-- | drivers/scsi/isci/core/scic_sds_ssp_request.c | 2 | ||||
-rw-r--r-- | drivers/scsi/isci/core/scic_sds_stp_pio_request.h | 1 | ||||
-rw-r--r-- | drivers/scsi/isci/core/scic_sds_stp_request.c | 3 | ||||
-rw-r--r-- | drivers/scsi/isci/host.h | 2 | ||||
-rw-r--r-- | drivers/scsi/isci/remote_node_context.c | 2 | ||||
-rw-r--r-- | drivers/scsi/isci/remote_node_context.h | 3 | ||||
-rw-r--r-- | drivers/scsi/isci/state_machine.c (renamed from drivers/scsi/isci/core/sci_base_state_machine.c) | 13 | ||||
-rw-r--r-- | drivers/scsi/isci/state_machine.h (renamed from drivers/scsi/isci/core/sci_base_state_machine.h) | 24 |
15 files changed, 31 insertions, 116 deletions
diff --git a/drivers/scsi/isci/Makefile b/drivers/scsi/isci/Makefile index 0153b0fe13b..cfc640f9dc3 100644 --- a/drivers/scsi/isci/Makefile +++ b/drivers/scsi/isci/Makefile @@ -3,6 +3,7 @@ obj-$(CONFIG_SCSI_ISCI) += isci.o isci-objs := init.o phy.o request.o sata.o \ remote_device.o port.o timers.o \ host.o task.o probe_roms.o \ + state_machine.o \ remote_node_context.o \ remote_node_table.o \ unsolicited_frame_control.o \ @@ -13,5 +14,4 @@ isci-objs := init.o phy.o request.o sata.o \ core/scic_sds_phy.o \ core/scic_sds_ssp_request.o \ core/scic_sds_smp_request.o \ - core/sci_base_state_machine.o \ core/sci_util.o diff --git a/drivers/scsi/isci/core/sci_base_state.h b/drivers/scsi/isci/core/sci_base_state.h deleted file mode 100644 index d64efac1f09..00000000000 --- a/drivers/scsi/isci/core/sci_base_state.h +++ /dev/null @@ -1,84 +0,0 @@ -/* - * This file is provided under a dual BSD/GPLv2 license. When using or - * redistributing this file, you may do so under either license. - * - * GPL LICENSE SUMMARY - * - * Copyright(c) 2008 - 2011 Intel Corporation. All rights reserved. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of version 2 of the GNU General Public License as - * published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. - * The full GNU General Public License is included in this distribution - * in the file called LICENSE.GPL. - * - * BSD LICENSE - * - * Copyright(c) 2008 - 2011 Intel Corporation. All rights reserved. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * 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. - * * Neither the name of Intel Corporation nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "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 COPYRIGHT - * OWNER OR CONTRIBUTORS 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. - */ - -#ifndef _SCI_BASE_STATE_H_ -#define _SCI_BASE_STATE_H_ - -typedef void (*sci_base_state_handler_t)(void); - -typedef void (*sci_state_transition_t)(void *base_object); - -/** - * struct sci_base_state - The base state object abstracts the fields common to - * all state objects defined in SCI. - * - * - */ -struct sci_base_state { - /** - * This field is a function pointer that defines the method to be - * invoked when the state is entered. - */ - sci_state_transition_t enter_state; - - /** - * This field is a function pointer that defines the method to be - * invoked when the state is exited. - */ - sci_state_transition_t exit_state; - -}; - -#endif /* _SCI_BASE_STATE_H_ */ diff --git a/drivers/scsi/isci/core/scic_sds_phy.c b/drivers/scsi/isci/core/scic_sds_phy.c index c82ccb93fd9..6b49d94bc9c 100644 --- a/drivers/scsi/isci/core/scic_sds_phy.c +++ b/drivers/scsi/isci/core/scic_sds_phy.c @@ -56,8 +56,7 @@ #include <scsi/sas.h> #include "sas.h" #include "host.h" -#include "sci_base_state.h" -#include "sci_base_state_machine.h" +#include "state_machine.h" #include "scic_phy.h" #include "scic_sds_phy.h" #include "scic_sds_port.h" diff --git a/drivers/scsi/isci/core/scic_sds_phy.h b/drivers/scsi/isci/core/scic_sds_phy.h index 472718d2f44..0d7bab3fc93 100644 --- a/drivers/scsi/isci/core/scic_sds_phy.h +++ b/drivers/scsi/isci/core/scic_sds_phy.h @@ -59,7 +59,7 @@ #include "sas.h" #include "scic_phy.h" #include "registers.h" -#include "sci_base_state_machine.h" +#include "state_machine.h" #include <scsi/libsas.h> struct scic_sds_port; diff --git a/drivers/scsi/isci/core/scic_sds_port.h b/drivers/scsi/isci/core/scic_sds_port.h index 4b28c5acd75..a351525b1c4 100644 --- a/drivers/scsi/isci/core/scic_sds_port.h +++ b/drivers/scsi/isci/core/scic_sds_port.h @@ -60,7 +60,7 @@ #include "isci.h" #include "sas.h" #include "registers.h" -#include "sci_base_state_machine.h" +#include "state_machine.h" struct scic_sds_controller; struct scic_sds_phy; diff --git a/drivers/scsi/isci/core/scic_sds_request.h b/drivers/scsi/isci/core/scic_sds_request.h index 5ce7ff2aed9..a8d74a15a86 100644 --- a/drivers/scsi/isci/core/scic_sds_request.h +++ b/drivers/scsi/isci/core/scic_sds_request.h @@ -58,7 +58,7 @@ #include "isci.h" #include "scic_io_request.h" -#include "sci_base_state_machine.h" +#include "state_machine.h" #include "scu_task_context.h" #include "scic_sds_stp_request.h" #include "sas.h" diff --git a/drivers/scsi/isci/core/scic_sds_smp_request.c b/drivers/scsi/isci/core/scic_sds_smp_request.c index 7f338948ae0..6a2b65b9cf0 100644 --- a/drivers/scsi/isci/core/scic_sds_smp_request.c +++ b/drivers/scsi/isci/core/scic_sds_smp_request.c @@ -54,7 +54,7 @@ */ #include <scsi/sas.h> -#include "sci_base_state_machine.h" +#include "state_machine.h" #include "remote_device.h" #include "scic_sds_request.h" #include "scic_sds_smp_request.h" diff --git a/drivers/scsi/isci/core/scic_sds_ssp_request.c b/drivers/scsi/isci/core/scic_sds_ssp_request.c index 137f6ddac82..3fdf68be7a4 100644 --- a/drivers/scsi/isci/core/scic_sds_ssp_request.c +++ b/drivers/scsi/isci/core/scic_sds_ssp_request.c @@ -54,7 +54,7 @@ */ #include "host.h" -#include "sci_base_state_machine.h" +#include "state_machine.h" #include "scic_sds_request.h" #include "scu_completion_codes.h" #include "scu_task_context.h" diff --git a/drivers/scsi/isci/core/scic_sds_stp_pio_request.h b/drivers/scsi/isci/core/scic_sds_stp_pio_request.h index d0ae5909aee..e015a111476 100644 --- a/drivers/scsi/isci/core/scic_sds_stp_pio_request.h +++ b/drivers/scsi/isci/core/scic_sds_stp_pio_request.h @@ -56,7 +56,6 @@ #ifndef _SCIC_SDS_SATA_PIO_REQUEST_H_ #define _SCIC_SDS_SATA_PIO_REQUEST_H_ -#include "sci_base_state.h" #include "scic_sds_request.h" #include "scu_task_context.h" diff --git a/drivers/scsi/isci/core/scic_sds_stp_request.c b/drivers/scsi/isci/core/scic_sds_stp_request.c index 9a787e25b48..308f486514e 100644 --- a/drivers/scsi/isci/core/scic_sds_stp_request.c +++ b/drivers/scsi/isci/core/scic_sds_stp_request.c @@ -55,8 +55,7 @@ #include <scsi/sas.h> #include "sas.h" -#include "sci_base_state.h" -#include "sci_base_state_machine.h" +#include "state_machine.h" #include "scic_io_request.h" #include "remote_device.h" #include "scic_sds_request.h" diff --git a/drivers/scsi/isci/host.h b/drivers/scsi/isci/host.h index 64edac8ccce..9c5d121ce79 100644 --- a/drivers/scsi/isci/host.h +++ b/drivers/scsi/isci/host.h @@ -59,7 +59,7 @@ #include "remote_device.h" #include "phy.h" #include "pool.h" -#include "sci_base_state_machine.h" +#include "state_machine.h" #include "remote_node_table.h" #include "registers.h" #include "scu_unsolicited_frame.h" diff --git a/drivers/scsi/isci/remote_node_context.c b/drivers/scsi/isci/remote_node_context.c index af4759383db..5891f3d5017 100644 --- a/drivers/scsi/isci/remote_node_context.c +++ b/drivers/scsi/isci/remote_node_context.c @@ -54,7 +54,7 @@ */ #include "host.h" -#include "sci_base_state_machine.h" +#include "state_machine.h" #include "scic_sds_port.h" #include "remote_device.h" #include "remote_node_context.h" diff --git a/drivers/scsi/isci/remote_node_context.h b/drivers/scsi/isci/remote_node_context.h index 540a49a9c94..a763468fa74 100644 --- a/drivers/scsi/isci/remote_node_context.h +++ b/drivers/scsi/isci/remote_node_context.h @@ -64,8 +64,7 @@ * */ -#include "sci_base_state.h" -#include "sci_base_state_machine.h" +#include "state_machine.h" /** * diff --git a/drivers/scsi/isci/core/sci_base_state_machine.c b/drivers/scsi/isci/state_machine.c index a704709eed8..6057782af8c 100644 --- a/drivers/scsi/isci/core/sci_base_state_machine.c +++ b/drivers/scsi/isci/state_machine.c @@ -60,7 +60,7 @@ * */ -#include "sci_base_state_machine.h" +#include "state_machine.h" static void sci_state_machine_exit_state(struct sci_base_state_machine *sm) { @@ -121,9 +121,6 @@ void sci_base_state_machine_construct(struct sci_base_state_machine *sm, void sci_base_state_machine_start(struct sci_base_state_machine *sm) { sm->current_state_id = sm->initial_state_id; -#if defined(SCI_BASE_ENABLE_SUBJECT_NOTIFICATION) - sci_base_subject_notify(&sm->parent); -#endif sci_state_machine_enter_state(sm); } @@ -137,9 +134,6 @@ void sci_base_state_machine_stop( struct sci_base_state_machine *sm) { sci_state_machine_exit_state(sm); -#if defined(SCI_BASE_ENABLE_SUBJECT_NOTIFICATION) - sci_base_subject_notify(&sm->parent); -#endif } /** @@ -158,11 +152,6 @@ void sci_base_state_machine_change_state( sm->previous_state_id = sm->current_state_id; sm->current_state_id = next_state; -#if defined(SCI_BASE_ENABLE_SUBJECT_NOTIFICATION) - /* Notify of the state change prior to entering the state. */ - sci_base_subject_notify(&sm->parent); -#endif - sci_state_machine_enter_state(sm); } diff --git a/drivers/scsi/isci/core/sci_base_state_machine.h b/drivers/scsi/isci/state_machine.h index c0cf33bbecc..c29eb4271d0 100644 --- a/drivers/scsi/isci/core/sci_base_state_machine.h +++ b/drivers/scsi/isci/state_machine.h @@ -56,18 +56,32 @@ #ifndef _SCI_BASE_STATE_MACHINE_H_ #define _SCI_BASE_STATE_MACHINE_H_ -#include <linux/string.h> +#include <linux/types.h> + +typedef void (*sci_base_state_handler_t)(void); + +typedef void (*sci_state_transition_t)(void *base_object); /** - * This file contains all structures, constants, or method declarations common - * to all state machines defined in SCI. + * struct sci_base_state - The base state object abstracts the fields common to + * all state objects defined in SCI. * * */ +struct sci_base_state { + /** + * This field is a function pointer that defines the method to be + * invoked when the state is entered. + */ + sci_state_transition_t enter_state; + /** + * This field is a function pointer that defines the method to be + * invoked when the state is exited. + */ + sci_state_transition_t exit_state; -#include "sci_base_state.h" - +}; /** * SET_STATE_HANDLER() - |