summaryrefslogtreecommitdiffstats
path: root/drivers/s390/cio/css.h
diff options
context:
space:
mode:
authorPeter Oberparleiter <peter.oberparleiter@de.ibm.com>2008-01-26 14:10:48 +0100
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2008-01-26 14:11:03 +0100
commite82a1567e4b22eb035da2499d20ddd573c9acf75 (patch)
tree0cf697f96e734a846ee1cbc598beebcc7be10117 /drivers/s390/cio/css.h
parent[S390] cio: Set driver->owner on css, ccw and ccwgroup busses. (diff)
downloadlinux-e82a1567e4b22eb035da2499d20ddd573c9acf75.tar.xz
linux-e82a1567e4b22eb035da2499d20ddd573c9acf75.zip
[S390] cio: reduce cpu utilization during device scan
Minimize calls to cpu intensive function get_subchannel_by_schid() by introducing function for_each_subchannel_staged() which temporarily caches the information about registered subchannels in a bitmap. Signed-off-by: Peter Oberparleiter <peter.oberparleiter@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'drivers/s390/cio/css.h')
-rw-r--r--drivers/s390/cio/css.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/s390/cio/css.h b/drivers/s390/cio/css.h
index 40598b8ee27d..b70554523552 100644
--- a/drivers/s390/cio/css.h
+++ b/drivers/s390/cio/css.h
@@ -91,6 +91,9 @@ extern void css_driver_unregister(struct css_driver *);
extern void css_sch_device_unregister(struct subchannel *);
extern struct subchannel * get_subchannel_by_schid(struct subchannel_id);
extern int css_init_done;
+int for_each_subchannel_staged(int (*fn_known)(struct subchannel *, void *),
+ int (*fn_unknown)(struct subchannel_id,
+ void *), void *data);
extern int for_each_subchannel(int(*fn)(struct subchannel_id, void *), void *);
extern void css_process_crw(int, int);
extern void css_reiterate_subchannels(void);