sync with OpenBSD -current
This commit is contained in:
parent
62ccfe7163
commit
39858ff105
5 changed files with 73 additions and 109 deletions
|
@ -1,4 +1,4 @@
|
|||
.\" $OpenBSD: cargo-module.5,v 1.9 2024/01/06 08:03:31 semarie Exp $
|
||||
.\" $OpenBSD: cargo-module.5,v 1.10 2025/01/13 18:20:47 kirill Exp $
|
||||
.\"
|
||||
.\" Copyright (c) 2008 Marc Espie
|
||||
.\" Copyright (c) 2017 Daniel Jakots
|
||||
|
@ -25,7 +25,7 @@
|
|||
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
.\"
|
||||
.Dd $Mdocdate: January 6 2024 $
|
||||
.Dd $Mdocdate: January 13 2025 $
|
||||
.Dt CARGO-MODULE 5
|
||||
.Os
|
||||
.Sh NAME
|
||||
|
@ -93,6 +93,14 @@ This module defines:
|
|||
Path to cargo manifest.
|
||||
Defaults to
|
||||
.Pa ${WRKSRC}/Cargo.toml .
|
||||
.It Ev MODCARGO_CARGOLOCK
|
||||
Path to
|
||||
.Pa Cargo.lock ,
|
||||
which is used only by the
|
||||
.Cm modcargo-gen-crates
|
||||
target.
|
||||
Defaults to
|
||||
.Pa ${MODCARGO_CARGOTOML:toml=lock} .
|
||||
.It Ev MODCARGO_CRATES
|
||||
Crates that will be downloaded by the module.
|
||||
.It Ev MODCARGO_CRATES_UPDATE
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: kern_sysctl.c,v 1.460 2025/01/04 09:26:01 mvs Exp $ */
|
||||
/* $OpenBSD: kern_sysctl.c,v 1.461 2025/01/13 18:09:24 mvs Exp $ */
|
||||
/* $NetBSD: kern_sysctl.c,v 1.17 1996/05/20 17:49:05 mrg Exp $ */
|
||||
|
||||
/*-
|
||||
|
@ -1672,9 +1672,10 @@ sysctl_file(int *name, u_int namelen, char *where, size_t *sizep,
|
|||
|
||||
kf = malloc(sizeof(*kf), M_TEMP, M_WAITOK);
|
||||
|
||||
#define FILLIT2(fp, fdp, i, vp, pr, so) do { \
|
||||
#define FILLIT(fp, fdp, i, vp, pr) do { \
|
||||
if (buflen >= elem_size && elem_count > 0) { \
|
||||
fill_file(kf, fp, fdp, i, vp, pr, p, so, show_pointers);\
|
||||
fill_file(kf, fp, fdp, i, vp, pr, p, NULL, \
|
||||
show_pointers); \
|
||||
error = copyout(kf, dp, outsize); \
|
||||
if (error) \
|
||||
break; \
|
||||
|
@ -1684,62 +1685,59 @@ sysctl_file(int *name, u_int namelen, char *where, size_t *sizep,
|
|||
} \
|
||||
needed += elem_size; \
|
||||
} while (0)
|
||||
#define FILLIT(fp, fdp, i, vp, pr) \
|
||||
FILLIT2(fp, fdp, i, vp, pr, NULL)
|
||||
#define FILLSO(so) \
|
||||
FILLIT2(NULL, NULL, 0, NULL, NULL, so)
|
||||
|
||||
#define FILLINPTABLE(table) \
|
||||
do { \
|
||||
struct inpcb_iterator iter = { .inp_table = NULL }; \
|
||||
struct inpcb *inp = NULL; \
|
||||
struct socket *so; \
|
||||
\
|
||||
mtx_enter(&(table)->inpt_mtx); \
|
||||
while ((inp = in_pcb_iterator(table, inp, &iter)) != NULL) { \
|
||||
if (buflen >= elem_size && elem_count > 0) { \
|
||||
mtx_enter(&inp->inp_sofree_mtx); \
|
||||
so = soref(inp->inp_socket); \
|
||||
mtx_leave(&inp->inp_sofree_mtx); \
|
||||
if (so == NULL) \
|
||||
continue; \
|
||||
mtx_leave(&(table)->inpt_mtx); \
|
||||
solock_shared(so); \
|
||||
fill_file(kf, NULL, NULL, 0, NULL, NULL, p, \
|
||||
so, show_pointers); \
|
||||
sounlock_shared(so); \
|
||||
sorele(so); \
|
||||
error = copyout(kf, dp, outsize); \
|
||||
mtx_enter(&(table)->inpt_mtx); \
|
||||
if (error) { \
|
||||
in_pcb_iterator_abort((table), inp, \
|
||||
&iter); \
|
||||
break; \
|
||||
} \
|
||||
dp += elem_size; \
|
||||
buflen -= elem_size; \
|
||||
elem_count--; \
|
||||
} \
|
||||
needed += elem_size; \
|
||||
} \
|
||||
mtx_leave(&(table)->inpt_mtx); \
|
||||
} while (0)
|
||||
|
||||
switch (op) {
|
||||
case KERN_FILE_BYFILE:
|
||||
/* use the inp-tables to pick up closed connections, too */
|
||||
if (arg == DTYPE_SOCKET) {
|
||||
struct inpcb *inp;
|
||||
|
||||
NET_LOCK();
|
||||
mtx_enter(&tcbtable.inpt_mtx);
|
||||
TAILQ_FOREACH(inp, &tcbtable.inpt_queue, inp_queue)
|
||||
FILLSO(inp->inp_socket);
|
||||
mtx_leave(&tcbtable.inpt_mtx);
|
||||
FILLINPTABLE(&tcbtable);
|
||||
#ifdef INET6
|
||||
mtx_enter(&tcb6table.inpt_mtx);
|
||||
TAILQ_FOREACH(inp, &tcb6table.inpt_queue, inp_queue)
|
||||
FILLSO(inp->inp_socket);
|
||||
mtx_leave(&tcb6table.inpt_mtx);
|
||||
FILLINPTABLE(&tcb6table);
|
||||
#endif
|
||||
mtx_enter(&udbtable.inpt_mtx);
|
||||
TAILQ_FOREACH(inp, &udbtable.inpt_queue, inp_queue) {
|
||||
if (in_pcb_is_iterator(inp))
|
||||
continue;
|
||||
FILLSO(inp->inp_socket);
|
||||
}
|
||||
mtx_leave(&udbtable.inpt_mtx);
|
||||
FILLINPTABLE(&udbtable);
|
||||
#ifdef INET6
|
||||
mtx_enter(&udb6table.inpt_mtx);
|
||||
TAILQ_FOREACH(inp, &udb6table.inpt_queue, inp_queue) {
|
||||
if (in_pcb_is_iterator(inp))
|
||||
continue;
|
||||
FILLSO(inp->inp_socket);
|
||||
}
|
||||
mtx_leave(&udb6table.inpt_mtx);
|
||||
FILLINPTABLE(&udb6table);
|
||||
#endif
|
||||
mtx_enter(&rawcbtable.inpt_mtx);
|
||||
TAILQ_FOREACH(inp, &rawcbtable.inpt_queue, inp_queue) {
|
||||
if (in_pcb_is_iterator(inp))
|
||||
continue;
|
||||
FILLSO(inp->inp_socket);
|
||||
}
|
||||
mtx_leave(&rawcbtable.inpt_mtx);
|
||||
FILLINPTABLE(&rawcbtable);
|
||||
#ifdef INET6
|
||||
mtx_enter(&rawin6pcbtable.inpt_mtx);
|
||||
TAILQ_FOREACH(inp, &rawin6pcbtable.inpt_queue,
|
||||
inp_queue) {
|
||||
if (in_pcb_is_iterator(inp))
|
||||
continue;
|
||||
FILLSO(inp->inp_socket);
|
||||
}
|
||||
mtx_leave(&rawin6pcbtable.inpt_mtx);
|
||||
FILLINPTABLE(&rawin6pcbtable);
|
||||
#endif
|
||||
NET_UNLOCK();
|
||||
}
|
||||
fp = NULL;
|
||||
while ((fp = fd_iterfile(fp, p)) != NULL) {
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: subr_hibernate.c,v 1.150 2025/01/09 19:22:39 mglocker Exp $ */
|
||||
/* $OpenBSD: subr_hibernate.c,v 1.151 2025/01/13 17:50:54 krw Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2011 Ariane van der Steldt <ariane@stack.nl>
|
||||
|
@ -405,49 +405,11 @@ hiballoc_init(struct hiballoc_arena *arena, void *p_ptr, size_t p_len)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Zero all free memory.
|
||||
*/
|
||||
void
|
||||
uvm_pmr_zero_everything(void)
|
||||
{
|
||||
struct uvm_pmemrange *pmr;
|
||||
struct vm_page *pg;
|
||||
int i;
|
||||
|
||||
uvm_lock_fpageq();
|
||||
TAILQ_FOREACH(pmr, &uvm.pmr_control.use, pmr_use) {
|
||||
/* Zero single pages. */
|
||||
while ((pg = TAILQ_FIRST(&pmr->single[UVM_PMR_MEMTYPE_DIRTY]))
|
||||
!= NULL) {
|
||||
uvm_pmr_remove(pmr, pg);
|
||||
uvm_pagezero(pg);
|
||||
atomic_setbits_int(&pg->pg_flags, PG_ZERO);
|
||||
uvmexp.zeropages++;
|
||||
uvm_pmr_insert(pmr, pg, 0);
|
||||
}
|
||||
|
||||
/* Zero multi page ranges. */
|
||||
while ((pg = RBT_ROOT(uvm_pmr_size,
|
||||
&pmr->size[UVM_PMR_MEMTYPE_DIRTY])) != NULL) {
|
||||
pg--; /* Size tree always has second page. */
|
||||
uvm_pmr_remove(pmr, pg);
|
||||
for (i = 0; i < pg->fpgsz; i++) {
|
||||
uvm_pagezero(&pg[i]);
|
||||
atomic_setbits_int(&pg[i].pg_flags, PG_ZERO);
|
||||
uvmexp.zeropages++;
|
||||
}
|
||||
uvm_pmr_insert(pmr, pg, 0);
|
||||
}
|
||||
}
|
||||
uvm_unlock_fpageq();
|
||||
}
|
||||
|
||||
/*
|
||||
* Mark all memory as dirty.
|
||||
*
|
||||
* Used to inform the system that the clean memory isn't clean for some
|
||||
* reason, for example because we just came back from hibernate.
|
||||
* Used to inform the system that there are no pre-zero'd (PG_ZERO) free pages
|
||||
* when we came back from hibernate.
|
||||
*/
|
||||
void
|
||||
uvm_pmr_dirty_everything(void)
|
||||
|
@ -1534,7 +1496,6 @@ hibernate_write_chunks(union hibernate_info *hib)
|
|||
}
|
||||
|
||||
uvm_pmr_dirty_everything();
|
||||
uvm_pmr_zero_everything();
|
||||
|
||||
/* Compress and write the chunks in the chunktable */
|
||||
for (i = 0; i < hib->chunk_ctr; i++) {
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: uipc_socket.c,v 1.359 2025/01/09 17:43:33 mvs Exp $ */
|
||||
/* $OpenBSD: uipc_socket.c,v 1.360 2025/01/13 18:10:20 mvs Exp $ */
|
||||
/* $NetBSD: uipc_socket.c,v 1.21 1996/02/04 02:17:52 christos Exp $ */
|
||||
|
||||
/*
|
||||
|
@ -1604,15 +1604,11 @@ somove(struct socket *so, int wait)
|
|||
long space;
|
||||
int error = 0, maxreached = 0, unsplice = 0;
|
||||
unsigned int rcvstate;
|
||||
int sockdgram = ((so->so_proto->pr_flags &
|
||||
PR_WANTRCVD) == 0);
|
||||
|
||||
sbassertlocked(&so->so_rcv);
|
||||
|
||||
if (!sockdgram) {
|
||||
if (so->so_proto->pr_flags & PR_WANTRCVD)
|
||||
sblock(&so->so_snd, SBL_WAIT | SBL_NOINTR);
|
||||
solock(so);
|
||||
}
|
||||
|
||||
mtx_enter(&so->so_rcv.sb_mtx);
|
||||
mtx_enter(&sosp->so_snd.sb_mtx);
|
||||
|
@ -1682,7 +1678,9 @@ somove(struct socket *so, int wait)
|
|||
if (so->so_proto->pr_flags & PR_WANTRCVD) {
|
||||
mtx_leave(&sosp->so_snd.sb_mtx);
|
||||
mtx_leave(&so->so_rcv.sb_mtx);
|
||||
solock_shared(so);
|
||||
pru_rcvd(so);
|
||||
sounlock_shared(so);
|
||||
mtx_enter(&so->so_rcv.sb_mtx);
|
||||
mtx_enter(&sosp->so_snd.sb_mtx);
|
||||
}
|
||||
|
@ -1793,7 +1791,9 @@ somove(struct socket *so, int wait)
|
|||
if (so->so_proto->pr_flags & PR_WANTRCVD) {
|
||||
mtx_leave(&sosp->so_snd.sb_mtx);
|
||||
mtx_leave(&so->so_rcv.sb_mtx);
|
||||
solock_shared(so);
|
||||
pru_rcvd(so);
|
||||
sounlock_shared(so);
|
||||
mtx_enter(&so->so_rcv.sb_mtx);
|
||||
mtx_enter(&sosp->so_snd.sb_mtx);
|
||||
}
|
||||
|
@ -1826,7 +1826,9 @@ somove(struct socket *so, int wait)
|
|||
if (o) {
|
||||
mtx_leave(&sosp->so_snd.sb_mtx);
|
||||
mtx_leave(&so->so_rcv.sb_mtx);
|
||||
solock_shared(sosp);
|
||||
error = pru_send(sosp, m, NULL, NULL);
|
||||
sounlock_shared(sosp);
|
||||
mtx_enter(&so->so_rcv.sb_mtx);
|
||||
mtx_enter(&sosp->so_snd.sb_mtx);
|
||||
|
||||
|
@ -1850,7 +1852,9 @@ somove(struct socket *so, int wait)
|
|||
|
||||
mtx_leave(&sosp->so_snd.sb_mtx);
|
||||
mtx_leave(&so->so_rcv.sb_mtx);
|
||||
solock_shared(sosp);
|
||||
error = pru_sendoob(sosp, o, NULL, NULL);
|
||||
sounlock_shared(sosp);
|
||||
mtx_enter(&so->so_rcv.sb_mtx);
|
||||
mtx_enter(&sosp->so_snd.sb_mtx);
|
||||
|
||||
|
@ -1877,13 +1881,9 @@ somove(struct socket *so, int wait)
|
|||
|
||||
mtx_leave(&sosp->so_snd.sb_mtx);
|
||||
mtx_leave(&so->so_rcv.sb_mtx);
|
||||
|
||||
if (sockdgram)
|
||||
solock_shared(sosp);
|
||||
solock_shared(sosp);
|
||||
error = pru_send(sosp, m, NULL, NULL);
|
||||
if (sockdgram)
|
||||
sounlock_shared(sosp);
|
||||
|
||||
sounlock_shared(sosp);
|
||||
mtx_enter(&so->so_rcv.sb_mtx);
|
||||
mtx_enter(&sosp->so_snd.sb_mtx);
|
||||
|
||||
|
@ -1916,10 +1916,8 @@ somove(struct socket *so, int wait)
|
|||
mtx_leave(&sosp->so_snd.sb_mtx);
|
||||
mtx_leave(&so->so_rcv.sb_mtx);
|
||||
|
||||
if (!sockdgram) {
|
||||
if (so->so_proto->pr_flags & PR_WANTRCVD)
|
||||
sbunlock(&so->so_snd);
|
||||
sounlock(so);
|
||||
}
|
||||
|
||||
if (unsplice) {
|
||||
soref(sosp);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: hibernate.h,v 1.48 2024/12/24 14:24:58 krw Exp $ */
|
||||
/* $OpenBSD: hibernate.h,v 1.49 2025/01/13 17:50:54 krw Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2011 Ariane van der Steldt <ariane@stack.nl>
|
||||
|
@ -115,7 +115,6 @@ union hibernate_info {
|
|||
void *hib_alloc(struct hiballoc_arena*, size_t);
|
||||
void hib_free(struct hiballoc_arena*, void*);
|
||||
int hiballoc_init(struct hiballoc_arena*, void*, size_t len);
|
||||
void uvm_pmr_zero_everything(void);
|
||||
void uvm_pmr_dirty_everything(void);
|
||||
int uvm_pmr_alloc_pig(paddr_t*, psize_t, paddr_t);
|
||||
int uvm_pmr_alloc_piglet(vaddr_t*, paddr_t*, vsize_t, paddr_t);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue