Mon Dec 30 04:50:21 2013 UTC ()
Add flush_scheduled_work back.


(riastradh)
diff -r1.1.2.11 -r1.1.2.12 src/sys/external/bsd/drm2/include/linux/workqueue.h
diff -r1.1.2.1 -r1.1.2.2 src/sys/external/bsd/drm2/linux/linux_work.c

cvs diff -r1.1.2.11 -r1.1.2.12 src/sys/external/bsd/drm2/include/linux/Attic/workqueue.h (expand / switch to unified diff)

--- src/sys/external/bsd/drm2/include/linux/Attic/workqueue.h 2013/12/30 04:50:12 1.1.2.11
+++ src/sys/external/bsd/drm2/include/linux/Attic/workqueue.h 2013/12/30 04:50:21 1.1.2.12
@@ -1,14 +1,14 @@ @@ -1,14 +1,14 @@
1/* $NetBSD: workqueue.h,v 1.1.2.11 2013/12/30 04:50:12 riastradh Exp $ */ 1/* $NetBSD: workqueue.h,v 1.1.2.12 2013/12/30 04:50:21 riastradh Exp $ */
2 2
3/*- 3/*-
4 * Copyright (c) 2013 The NetBSD Foundation, Inc. 4 * Copyright (c) 2013 The NetBSD Foundation, Inc.
5 * All rights reserved. 5 * All rights reserved.
6 * 6 *
7 * This code is derived from software contributed to The NetBSD Foundation 7 * This code is derived from software contributed to The NetBSD Foundation
8 * by Taylor R. Campbell. 8 * by Taylor R. Campbell.
9 * 9 *
10 * Redistribution and use in source and binary forms, with or without 10 * Redistribution and use in source and binary forms, with or without
11 * modification, are permitted provided that the following conditions 11 * modification, are permitted provided that the following conditions
12 * are met: 12 * are met:
13 * 1. Redistributions of source code must retain the above copyright 13 * 1. Redistributions of source code must retain the above copyright
14 * notice, this list of conditions and the following disclaimer. 14 * notice, this list of conditions and the following disclaimer.
@@ -84,26 +84,27 @@ to_delayed_work(struct work_struct *work @@ -84,26 +84,27 @@ to_delayed_work(struct work_struct *work
84{ 84{
85 return container_of(work, struct delayed_work, work); 85 return container_of(work, struct delayed_work, work);
86} 86}
87 87
88extern struct workqueue_struct *system_wq; 88extern struct workqueue_struct *system_wq;
89 89
90int linux_workqueue_init(void); 90int linux_workqueue_init(void);
91void linux_workqueue_fini(void); 91void linux_workqueue_fini(void);
92 92
93struct workqueue_struct * 93struct workqueue_struct *
94 alloc_ordered_workqueue(const char *, int); 94 alloc_ordered_workqueue(const char *, int);
95void destroy_workqueue(struct workqueue_struct *); 95void destroy_workqueue(struct workqueue_struct *);
96void flush_workqueue(struct workqueue_struct *); 96void flush_workqueue(struct workqueue_struct *);
 97void flush_scheduled_work(void);
97 98
98void INIT_WORK(struct work_struct *, void (*)(struct work_struct *)); 99void INIT_WORK(struct work_struct *, void (*)(struct work_struct *));
99void schedule_work(struct work_struct *); 100void schedule_work(struct work_struct *);
100void queue_work(struct workqueue_struct *, struct work_struct *); 101void queue_work(struct workqueue_struct *, struct work_struct *);
101bool cancel_work_sync(struct work_struct *); 102bool cancel_work_sync(struct work_struct *);
102 103
103void INIT_DELAYED_WORK(struct delayed_work *, 104void INIT_DELAYED_WORK(struct delayed_work *,
104 void (*)(struct work_struct *)); 105 void (*)(struct work_struct *));
105void schedule_delayed_work(struct delayed_work *, unsigned long); 106void schedule_delayed_work(struct delayed_work *, unsigned long);
106void queue_delayed_work(struct workqueue_struct *, struct delayed_work *, 107void queue_delayed_work(struct workqueue_struct *, struct delayed_work *,
107 unsigned long ticks); 108 unsigned long ticks);
108bool cancel_delayed_work(struct delayed_work *); 109bool cancel_delayed_work(struct delayed_work *);
109bool cancel_delayed_work_sync(struct delayed_work *); 110bool cancel_delayed_work_sync(struct delayed_work *);

cvs diff -r1.1.2.1 -r1.1.2.2 src/sys/external/bsd/drm2/linux/Attic/linux_work.c (expand / switch to unified diff)

--- src/sys/external/bsd/drm2/linux/Attic/linux_work.c 2013/12/30 04:50:12 1.1.2.1
+++ src/sys/external/bsd/drm2/linux/Attic/linux_work.c 2013/12/30 04:50:21 1.1.2.2
@@ -1,14 +1,14 @@ @@ -1,14 +1,14 @@
1/* $NetBSD: linux_work.c,v 1.1.2.1 2013/12/30 04:50:12 riastradh Exp $ */ 1/* $NetBSD: linux_work.c,v 1.1.2.2 2013/12/30 04:50:21 riastradh Exp $ */
2 2
3/*- 3/*-
4 * Copyright (c) 2013 The NetBSD Foundation, Inc. 4 * Copyright (c) 2013 The NetBSD Foundation, Inc.
5 * All rights reserved. 5 * All rights reserved.
6 * 6 *
7 * This code is derived from software contributed to The NetBSD Foundation 7 * This code is derived from software contributed to The NetBSD Foundation
8 * by Taylor R. Campbell. 8 * by Taylor R. Campbell.
9 * 9 *
10 * Redistribution and use in source and binary forms, with or without 10 * Redistribution and use in source and binary forms, with or without
11 * modification, are permitted provided that the following conditions 11 * modification, are permitted provided that the following conditions
12 * are met: 12 * are met:
13 * 1. Redistributions of source code must retain the above copyright 13 * 1. Redistributions of source code must retain the above copyright
14 * notice, this list of conditions and the following disclaimer. 14 * notice, this list of conditions and the following disclaimer.
@@ -20,27 +20,27 @@ @@ -20,27 +20,27 @@
20 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 20 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
21 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 21 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 22 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
23 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 23 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 24 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 26 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 27 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 28 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29 * POSSIBILITY OF SUCH DAMAGE. 29 * POSSIBILITY OF SUCH DAMAGE.
30 */ 30 */
31 31
32#include <sys/cdefs.h> 32#include <sys/cdefs.h>
33__KERNEL_RCSID(0, "$NetBSD: linux_work.c,v 1.1.2.1 2013/12/30 04:50:12 riastradh Exp $"); 33__KERNEL_RCSID(0, "$NetBSD: linux_work.c,v 1.1.2.2 2013/12/30 04:50:21 riastradh Exp $");
34 34
35#include <sys/types.h> 35#include <sys/types.h>
36#include <sys/param.h> 36#include <sys/param.h>
37#include <sys/atomic.h> 37#include <sys/atomic.h>
38#include <sys/callout.h> 38#include <sys/callout.h>
39#include <sys/condvar.h> 39#include <sys/condvar.h>
40#include <sys/errno.h> 40#include <sys/errno.h>
41#include <sys/intr.h> 41#include <sys/intr.h>
42#include <sys/kmem.h> 42#include <sys/kmem.h>
43#include <sys/mutex.h> 43#include <sys/mutex.h>
44#include <sys/queue.h> 44#include <sys/queue.h>
45#include <sys/systm.h> 45#include <sys/systm.h>
46#include <sys/workqueue.h> 46#include <sys/workqueue.h>
@@ -162,26 +162,32 @@ destroy_workqueue(struct workqueue_struc @@ -162,26 +162,32 @@ destroy_workqueue(struct workqueue_struc
162 wq->wq_workqueue = NULL; 162 wq->wq_workqueue = NULL;
163 163
164 cv_destroy(&wq->wq_cv); 164 cv_destroy(&wq->wq_cv);
165 mutex_destroy(&wq->wq_lock); 165 mutex_destroy(&wq->wq_lock);
166} 166}
167  167
168/* 168/*
169 * Flush 169 * Flush
170 * 170 *
171 * Note: This doesn't cancel or wait for delayed work. This seems to 171 * Note: This doesn't cancel or wait for delayed work. This seems to
172 * match what Linux does (or, doesn't do). 172 * match what Linux does (or, doesn't do).
173 */ 173 */
174 174
 175void
 176flush_scheduled_work(void)
 177{
 178 flush_workqueue(system_wq);
 179}
 180
175struct wq_flush_work { 181struct wq_flush_work {
176 struct work_struct wqfw_work; 182 struct work_struct wqfw_work;
177 struct wq_flush *wqfw_flush; 183 struct wq_flush *wqfw_flush;
178}; 184};
179 185
180struct wq_flush { 186struct wq_flush {
181 kmutex_t wqf_lock; 187 kmutex_t wqf_lock;
182 kcondvar_t wqf_cv; 188 kcondvar_t wqf_cv;
183 unsigned int wqf_n; 189 unsigned int wqf_n;
184}; 190};
185 191
186void 192void
187flush_workqueue(struct workqueue_struct *wq) 193flush_workqueue(struct workqueue_struct *wq)