sync code with last improvements from OpenBSD

This commit is contained in:
purplerain 2023-10-08 20:10:59 +00:00
parent 3252c81e6b
commit cb73df2d98
Signed by: purplerain
GPG Key ID: F42C07F07E2E35B7
8 changed files with 82 additions and 34 deletions

View File

@ -1 +1 @@
# SecBSD 1.4-7869b2f: Fri Oct 6 03:12:48 UTC 2023 (Tezcatlipoca)
# SecBSD 1.4-772e31c: Sun Oct 8 04:19:53 UTC 2023 (Tezcatlipoca)

View File

@ -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.

View File

@ -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)
{

View File

@ -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 */

View File

@ -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.
*

View File

@ -1,5 +1,5 @@
# ex:ts=8 sw=4:
# $OpenBSD: AddCreateDelete.pm,v 1.52 2023/06/13 09:07:16 espie Exp $
# $OpenBSD: AddCreateDelete.pm,v 1.55 2023/10/08 12:44:58 espie Exp $
#
# Copyright (c) 2007-2014 Marc Espie <espie@openbsd.org>
#
@ -55,6 +55,34 @@ sub add_interactive_options($self)
return $self;
}
my $setup = {
nowantlib => sub() {
eval '
use OpenBSD::Dependencies::SolverBase;
no warnings qw(redefine);
package OpenBSD::Dependencies::SolverBase;
sub solve_wantlibs($, $) { 1 }
';
},
nosystemwantlib => sub() {
eval '
use OpenBSD::LibSpec;
package OpenBSD::Library::System;
sub no_match_dispatch($library, $spec, $base)
{
return $spec->no_match_name($library, $base);
}
';
},
norun => sub() {
eval '
package OpenBSD::State;
sub _system(@) { 0 }
';
},
};
sub handle_options($state, $opt_string, @usage)
{
my $i;
@ -78,6 +106,14 @@ sub handle_options($state, $opt_string, @usage)
}
}
$state->{interactive} = $state->interactive_class($i)->new($state, $i);
if ($state->defines('REGRESSION_TESTING')) {
for my $i (split(',', $state->defines('REGRESSION_TESTING'))) {
$state->{regression}{$i} = 1;
if (defined $setup->{$i}) {
&{$setup->{$i}}();
}
}
}
}
sub interactive_class($, $i)

View File

@ -1,5 +1,5 @@
# ex:ts=8 sw=4:
# $OpenBSD: LibSpec.pm,v 1.20 2023/06/13 09:07:17 espie Exp $
# $OpenBSD: LibSpec.pm,v 1.21 2023/10/08 12:45:31 espie Exp $
#
# Copyright (c) 2010 Marc Espie <espie@openbsd.org>
#
@ -19,6 +19,11 @@ use v5.36;
package OpenBSD::LibObject;
sub systemlibraryclass($self)
{
return ref($self);
}
sub key($self)
{
if (defined $self->{dir}) {
@ -142,6 +147,11 @@ sub find_best($repo, $stem)
package OpenBSD::Library;
our @ISA = qw(OpenBSD::LibObject);
sub systemlibraryclass($)
{
"OpenBSD::Library::System";
}
sub from_string($class, $filename)
{
if (my ($dir, $stem, $major, $minor) = $filename =~ m/^(.*)\/lib([^\/]+)\.so\.(\d+)\.(\d+)$/o) {
@ -160,6 +170,9 @@ sub to_string($self)
sub set_origin($self, $origin)
{
$self->{origin} = $origin;
if ($origin eq 'system') {
bless $self, $self->systemlibraryclass;
}
return $self;
}
@ -187,6 +200,11 @@ sub is_better($self, $other)
return 0;
}
# could be used for better reporting
# is used for regression testing
package OpenBSD::Library::System;
our @ISA = qw(OpenBSD::Library);
package OpenBSD::LibSpec;
our @ISA = qw(OpenBSD::LibObject);

View File

@ -1,5 +1,5 @@
# ex:ts=8 sw=4:
# $OpenBSD: Tracker.pm,v 1.32 2023/10/07 09:10:03 espie Exp $
# $OpenBSD: Tracker.pm,v 1.33 2023/10/08 09:16:39 espie Exp $
#
# Copyright (c) 2009 Marc Espie <espie@openbsd.org>
#
@ -53,7 +53,7 @@ sub dump2($set)
join(",", $set->hint_names));
}
sub dump()
sub dump($)
{
return unless defined $s;
for my $l ('to_install', 'to_update') {