Ensure that the second LWP of a new process uses a free LWP ID.

Document overflow behavior.
This commit is contained in:
joerg 2019-11-10 23:39:03 +00:00
parent 2ce1a612c2
commit ffac73eb32
1 changed files with 7 additions and 2 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: kern_lwp.c,v 1.206 2019/11/07 19:45:18 joerg Exp $ */
/* $NetBSD: kern_lwp.c,v 1.207 2019/11/10 23:39:03 joerg Exp $ */
/*-
* Copyright (c) 2001, 2006, 2007, 2008, 2009 The NetBSD Foundation, Inc.
@ -211,7 +211,7 @@
*/
#include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: kern_lwp.c,v 1.206 2019/11/07 19:45:18 joerg Exp $");
__KERNEL_RCSID(0, "$NetBSD: kern_lwp.c,v 1.207 2019/11/10 23:39:03 joerg Exp $");
#include "opt_ddb.h"
#include "opt_lockdebug.h"
@ -904,6 +904,11 @@ lwp_create(lwp_t *l1, proc_t *p2, vaddr_t uaddr, int flags,
l2->l_pflag |= LP_PIDLID;
} else if (p2->p_nlwps == 0) {
lid = l1->l_lid;
/*
* Update next LWP ID, too. If this overflows to LID_SCAN,
* the slow path of scanning will be used for the next LWP.
*/
p2->p_nlwpid = lid + 1;
} else {
lid = 0;
}