mirror of
https://git.hardenedbsd.org/hardenedbsd/HardenedBSD.git
synced 2024-11-23 11:21:09 +01:00
GEOM: Minor polishing in geom_event.
- Remove timeouts from msleep()'s. Those should always be woken up. - Move wakeup() under the lock to not call on possibly freed pointer. - Remove some dead code. MFC after: 2 weeks
This commit is contained in:
parent
e161dfa918
commit
f4bf48c25c
@ -268,7 +268,6 @@ int g_attr_changed(struct g_provider *pp, const char *attr, int flag);
|
|||||||
int g_media_changed(struct g_provider *pp, int flag);
|
int g_media_changed(struct g_provider *pp, int flag);
|
||||||
int g_media_gone(struct g_provider *pp, int flag);
|
int g_media_gone(struct g_provider *pp, int flag);
|
||||||
void g_orphan_provider(struct g_provider *pp, int error);
|
void g_orphan_provider(struct g_provider *pp, int error);
|
||||||
void g_waitidlelock(void);
|
|
||||||
struct g_event *g_alloc_event(int flag);
|
struct g_event *g_alloc_event(int flag);
|
||||||
void g_post_event_ep(g_event_t *func, void *arg, struct g_event *ep, ...);
|
void g_post_event_ep(g_event_t *func, void *arg, struct g_event *ep, ...);
|
||||||
|
|
||||||
|
@ -90,29 +90,12 @@ g_waitidle(void)
|
|||||||
TSWAIT("GEOM events");
|
TSWAIT("GEOM events");
|
||||||
while (!TAILQ_EMPTY(&g_events))
|
while (!TAILQ_EMPTY(&g_events))
|
||||||
msleep(&g_pending_events, &g_eventlock, PPAUSE,
|
msleep(&g_pending_events, &g_eventlock, PPAUSE,
|
||||||
"g_waitidle", hz/5);
|
"g_waitidle", 0);
|
||||||
TSUNWAIT("GEOM events");
|
TSUNWAIT("GEOM events");
|
||||||
mtx_unlock(&g_eventlock);
|
mtx_unlock(&g_eventlock);
|
||||||
curthread->td_pflags &= ~TDP_GEOM;
|
curthread->td_pflags &= ~TDP_GEOM;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
|
||||||
void
|
|
||||||
g_waitidlelock(void)
|
|
||||||
{
|
|
||||||
|
|
||||||
g_topology_assert();
|
|
||||||
mtx_lock(&g_eventlock);
|
|
||||||
while (!TAILQ_EMPTY(&g_events)) {
|
|
||||||
g_topology_unlock();
|
|
||||||
msleep(&g_pending_events, &g_eventlock, PPAUSE,
|
|
||||||
"g_waitidlel", hz/5);
|
|
||||||
g_topology_lock();
|
|
||||||
}
|
|
||||||
mtx_unlock(&g_eventlock);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
struct g_attrchanged_args {
|
struct g_attrchanged_args {
|
||||||
struct g_provider *pp;
|
struct g_provider *pp;
|
||||||
const char *attr;
|
const char *attr;
|
||||||
@ -254,10 +237,6 @@ one_event(void)
|
|||||||
wakeup(&g_pending_events);
|
wakeup(&g_pending_events);
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
if (ep->flag & EV_INPROGRESS) {
|
|
||||||
mtx_unlock(&g_eventlock);
|
|
||||||
return (1);
|
|
||||||
}
|
|
||||||
ep->flag |= EV_INPROGRESS;
|
ep->flag |= EV_INPROGRESS;
|
||||||
mtx_unlock(&g_eventlock);
|
mtx_unlock(&g_eventlock);
|
||||||
g_topology_assert();
|
g_topology_assert();
|
||||||
@ -269,8 +248,8 @@ one_event(void)
|
|||||||
ep->flag &= ~EV_INPROGRESS;
|
ep->flag &= ~EV_INPROGRESS;
|
||||||
if (ep->flag & EV_WAKEUP) {
|
if (ep->flag & EV_WAKEUP) {
|
||||||
ep->flag |= EV_DONE;
|
ep->flag |= EV_DONE;
|
||||||
mtx_unlock(&g_eventlock);
|
|
||||||
wakeup(ep);
|
wakeup(ep);
|
||||||
|
mtx_unlock(&g_eventlock);
|
||||||
} else {
|
} else {
|
||||||
mtx_unlock(&g_eventlock);
|
mtx_unlock(&g_eventlock);
|
||||||
g_free(ep);
|
g_free(ep);
|
||||||
@ -457,7 +436,7 @@ g_waitfor_event(g_event_t *func, void *arg, int flag, ...)
|
|||||||
|
|
||||||
mtx_lock(&g_eventlock);
|
mtx_lock(&g_eventlock);
|
||||||
while (!(ep->flag & EV_DONE))
|
while (!(ep->flag & EV_DONE))
|
||||||
msleep(ep, &g_eventlock, PRIBIO, "g_waitfor_event", hz);
|
msleep(ep, &g_eventlock, PRIBIO, "g_waitfor_event", 0);
|
||||||
if (ep->flag & EV_CANCELED)
|
if (ep->flag & EV_CANCELED)
|
||||||
error = EAGAIN;
|
error = EAGAIN;
|
||||||
mtx_unlock(&g_eventlock);
|
mtx_unlock(&g_eventlock);
|
||||||
|
Loading…
Reference in New Issue
Block a user