sync code with last improvements from OpenBSD
This commit is contained in:
parent
3252c81e6b
commit
cb73df2d98
8 changed files with 82 additions and 34 deletions
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: kern_clockintr.c,v 1.58 2023/09/25 00:29:31 cheloha Exp $ */
|
||||
/* $OpenBSD: kern_clockintr.c,v 1.59 2023/10/08 21:08:00 cheloha Exp $ */
|
||||
/*
|
||||
* Copyright (c) 2003 Dale Rahn <drahn@openbsd.org>
|
||||
* Copyright (c) 2020 Mark Kettenis <kettenis@openbsd.org>
|
||||
|
@ -41,6 +41,8 @@ void clockqueue_pend_delete(struct clockintr_queue *, struct clockintr *);
|
|||
void clockqueue_pend_insert(struct clockintr_queue *, struct clockintr *,
|
||||
uint64_t);
|
||||
void clockqueue_reset_intrclock(struct clockintr_queue *);
|
||||
void intrclock_rearm(struct intrclock *, uint64_t);
|
||||
void intrclock_trigger(struct intrclock *);
|
||||
uint64_t nsec_advance(uint64_t *, uint64_t, uint64_t);
|
||||
|
||||
/*
|
||||
|
@ -492,6 +494,18 @@ clockqueue_reset_intrclock(struct clockintr_queue *cq)
|
|||
intrclock_trigger(&cq->cq_intrclock);
|
||||
}
|
||||
|
||||
void
|
||||
intrclock_rearm(struct intrclock *ic, uint64_t nsecs)
|
||||
{
|
||||
ic->ic_rearm(ic->ic_cookie, nsecs);
|
||||
}
|
||||
|
||||
void
|
||||
intrclock_trigger(struct intrclock *ic)
|
||||
{
|
||||
ic->ic_trigger(ic->ic_cookie);
|
||||
}
|
||||
|
||||
/*
|
||||
* Advance *next in increments of period until it exceeds now.
|
||||
* Returns the number of increments *next was advanced.
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: ifq.c,v 1.51 2023/10/05 11:08:56 bluhm Exp $ */
|
||||
/* $OpenBSD: ifq.c,v 1.52 2023/10/08 07:44:52 claudio Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2015 David Gwynne <dlg@openbsd.org>
|
||||
|
@ -529,14 +529,6 @@ ifq_hdatalen(struct ifqueue *ifq)
|
|||
return (len);
|
||||
}
|
||||
|
||||
void
|
||||
ifq_set_maxlen(struct ifqueue *ifq, unsigned int maxlen)
|
||||
{
|
||||
mtx_enter(&ifq->ifq_mtx);
|
||||
ifq->ifq_maxlen = maxlen;
|
||||
mtx_leave(&ifq->ifq_mtx);
|
||||
}
|
||||
|
||||
unsigned int
|
||||
ifq_purge(struct ifqueue *ifq)
|
||||
{
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: ifq.h,v 1.39 2023/10/05 11:08:56 bluhm Exp $ */
|
||||
/* $OpenBSD: ifq.h,v 1.40 2023/10/08 07:44:52 claudio Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2015 David Gwynne <dlg@openbsd.org>
|
||||
|
@ -435,7 +435,6 @@ void ifq_deq_commit(struct ifqueue *, struct mbuf *);
|
|||
void ifq_deq_rollback(struct ifqueue *, struct mbuf *);
|
||||
struct mbuf *ifq_dequeue(struct ifqueue *);
|
||||
int ifq_hdatalen(struct ifqueue *);
|
||||
void ifq_set_maxlen(struct ifqueue *, unsigned int);
|
||||
void ifq_mfreem(struct ifqueue *, struct mbuf *);
|
||||
void ifq_mfreeml(struct ifqueue *, struct mbuf_list *);
|
||||
unsigned int ifq_purge(struct ifqueue *);
|
||||
|
@ -449,8 +448,9 @@ int ifq_deq_sleep(struct ifqueue *, struct mbuf **, int, int,
|
|||
const char *, volatile unsigned int *,
|
||||
volatile unsigned int *);
|
||||
|
||||
#define ifq_len(_ifq) READ_ONCE((_ifq)->ifq_len)
|
||||
#define ifq_empty(_ifq) (ifq_len(_ifq) == 0)
|
||||
#define ifq_len(_ifq) ((_ifq)->ifq_len)
|
||||
#define ifq_empty(_ifq) (ifq_len(_ifq) == 0)
|
||||
#define ifq_set_maxlen(_ifq, _l) ((_ifq)->ifq_maxlen = (_l))
|
||||
|
||||
static inline int
|
||||
ifq_is_priq(struct ifqueue *ifq)
|
||||
|
@ -490,8 +490,8 @@ int ifiq_input(struct ifiqueue *, struct mbuf_list *);
|
|||
int ifiq_enqueue(struct ifiqueue *, struct mbuf *);
|
||||
void ifiq_add_data(struct ifiqueue *, struct if_data *);
|
||||
|
||||
#define ifiq_len(_ifiq) READ_ONCE(ml_len(&(_ifiq)->ifiq_ml))
|
||||
#define ifiq_empty(_ifiq) (ifiq_len(_ifiq) == 0)
|
||||
#define ifiq_len(_ifiq) ml_len(&(_ifiq)->ifiq_ml)
|
||||
#define ifiq_empty(_ifiq) ml_empty(&(_ifiq)->ifiq_ml)
|
||||
|
||||
#endif /* _KERNEL */
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: clockintr.h,v 1.20 2023/09/17 15:24:35 cheloha Exp $ */
|
||||
/* $OpenBSD: clockintr.h,v 1.21 2023/10/08 21:08:00 cheloha Exp $ */
|
||||
/*
|
||||
* Copyright (c) 2020-2022 Scott Cheloha <cheloha@openbsd.org>
|
||||
*
|
||||
|
@ -47,18 +47,6 @@ struct intrclock {
|
|||
void (*ic_trigger)(void *);
|
||||
};
|
||||
|
||||
static inline void
|
||||
intrclock_rearm(struct intrclock *ic, uint64_t nsecs)
|
||||
{
|
||||
ic->ic_rearm(ic->ic_cookie, nsecs);
|
||||
}
|
||||
|
||||
static inline void
|
||||
intrclock_trigger(struct intrclock *ic)
|
||||
{
|
||||
ic->ic_trigger(ic->ic_cookie);
|
||||
}
|
||||
|
||||
/*
|
||||
* Schedulable clock interrupt callback.
|
||||
*
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue