From owner-freebsd-net@freebsd.org Wed Jul 31 20:36:22 2019 Return-Path: Delivered-To: freebsd-net@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id B71B5A81B3 for ; Wed, 31 Jul 2019 20:36:22 +0000 (UTC) (envelope-from dkandula@gmail.com) Received: from mail-io1-xd2c.google.com (mail-io1-xd2c.google.com [IPv6:2607:f8b0:4864:20::d2c]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "GTS CA 1O1" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 45zQF15rmSz4KNJ for ; Wed, 31 Jul 2019 20:36:21 +0000 (UTC) (envelope-from dkandula@gmail.com) Received: by mail-io1-xd2c.google.com with SMTP id z3so20405487iog.0 for ; Wed, 31 Jul 2019 13:36:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=xMBLRe5eJPBFPo7Equ+uy7GHi+Jvz3m2aRYYiZ1k6LE=; b=jyPUlGIT19ky7P7mIMlhwLGoTNB3E1+FsDbYGv8b4rgCEk+sghzAAvT0BlTJz1sdAc XctiQWIUc2T7m9CcMN85zQrmlq2w40zcPF7JDTN9of6EGCu8AaER3VYLIW6TVlVxIhVm yBj1GUR3RUVrS/+dwxJJmqEHAv5wLZjcq1b+wlm7pBafg15jmHjCbQCQiSWRQeTmAFTD krqPNQpMiqujHTmWiNQibdBmZnsR09s0vJd8BNLNY5cXedvi7Y3NUdpdgLgfMl9Edug4 3vS1ocyiW3wle+GJZT/HWk3stFW5iah38v5HThK0GlwVC6Em48ltzwGjDt5iUZxwsGlW p9/g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=xMBLRe5eJPBFPo7Equ+uy7GHi+Jvz3m2aRYYiZ1k6LE=; b=GiaHoaJaTYwvXLsJIYebdasSweeylry7Yv9cmgbQRvlW0Jxw1VDt1AJ8zHZU/2t385 xuBL9+jisRkp9tCFXfxkPjOvXLzLGD8S9v78rH2T+P2ZvybjPDZ73oJkOpV6UZY5WndM XeTTaA/sRJeJYrksRQ5NgC4588dSY6v6cykPLlVSuouX7xAdCYp4OlUKbL9bCISnDRPV 0peEo20oHqC4CI11T3syNvLjF8AEbL0Q70KVBP44WlJVeqVcIpFY7CGo2mR0abZUOnwO ZuZlFy3XJNC3sfUEFTx/3Y9mHDupjwXPQNw5FY4SZyDH4X8Z2M7QZ7vVmxg/BIquHSjg +PmQ== X-Gm-Message-State: APjAAAVJU6ewpDO3j3waEnxn3RgPbtzf6OjoYpaNUqJkDvnbOtE7EG7L EWj4H4TMwaleXGDt3KHwDyeotENKyGa491kjcJsk7Vx/ X-Google-Smtp-Source: APXvYqzrqUOJxdJxd3DKZki0946K1d51lUv9GIWrlwXXKL50s+LE6bIQdmFzC7orXz8s0efgUg9lUDoKISqjct5kIkw= X-Received: by 2002:a5d:83cd:: with SMTP id u13mr110297406ior.297.1564605380341; Wed, 31 Jul 2019 13:36:20 -0700 (PDT) MIME-Version: 1.0 From: Dheeraj Kandula Date: Wed, 31 Jul 2019 16:36:08 -0400 Message-ID: Subject: Socket Sleep and Wakeup clarification To: freebsd-net@freebsd.org X-Rspamd-Queue-Id: 45zQF15rmSz4KNJ X-Spamd-Bar: - Authentication-Results: mx1.freebsd.org; dkim=pass header.d=gmail.com header.s=20161025 header.b=jyPUlGIT; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (mx1.freebsd.org: domain of dkandula@gmail.com designates 2607:f8b0:4864:20::d2c as permitted sender) smtp.mailfrom=dkandula@gmail.com X-Spamd-Result: default: False [-1.96 / 15.00]; ARC_NA(0.00)[]; R_DKIM_ALLOW(-0.20)[gmail.com:s=20161025]; FROM_HAS_DN(0.00)[]; R_SPF_ALLOW(-0.20)[+ip6:2607:f8b0:4000::/36]; FREEMAIL_FROM(0.00)[gmail.com]; MIME_GOOD(-0.10)[multipart/alternative,text/plain]; PREVIOUSLY_DELIVERED(0.00)[freebsd-net@freebsd.org]; TO_DN_NONE(0.00)[]; IP_SCORE_FREEMAIL(0.00)[]; RCPT_COUNT_ONE(0.00)[1]; IP_SCORE(0.00)[ip: (-5.12), ipnet: 2607:f8b0::/32(-3.09), asn: 15169(-2.45), country: US(-0.05)]; TO_MATCH_ENVRCPT_ALL(0.00)[]; DKIM_TRACE(0.00)[gmail.com:+]; MX_GOOD(-0.01)[cached: alt3.gmail-smtp-in.l.google.com]; RCVD_IN_DNSWL_NONE(0.00)[c.2.d.0.0.0.0.0.0.0.0.0.0.0.0.0.0.2.0.0.4.6.8.4.0.b.8.f.7.0.6.2.list.dnswl.org : 127.0.5.0]; NEURAL_HAM_SHORT(-0.95)[-0.955,0]; DMARC_POLICY_ALLOW(-0.50)[gmail.com,none]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+,1:+,2:~]; FREEMAIL_ENVFROM(0.00)[gmail.com]; ASN(0.00)[asn:15169, ipnet:2607:f8b0::/32, country:US]; RCVD_COUNT_TWO(0.00)[2]; RCVD_TLS_ALL(0.00)[]; DWL_DNSWL_NONE(0.00)[gmail.com.dwl.dnswl.org : 127.0.5.0] Content-Type: text/plain; charset="UTF-8" X-Content-Filtered-By: Mailman/MimeDel 2.1.29 X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 31 Jul 2019 20:36:22 -0000 Hi All, I am reading through the socket code in uipc_socket.c file of FreeBSD 12. The code invokes wakeup with the channel as so->so_timeo in the following functions: soisconnected soisdisconnected soisdisconnecting and soshutdown The callers of soconnect invoke sleep so that the thread that invokes soconnect wakes up when the TCP 3 way handshake is done. The soconnect in kernel returns immediately unlike user space connect which sleeps. I also see tsleep in soclose when the socket's state is SS_ISCONNECTED. My questions: 1. Is it possible to close a socket when the application is sleeping after the application invokes soconnect. Basically I am trying to figure out how multiple threads can access the same socket for soconnect and soclose to happen at the same time. 2. soshutdown also invokes wakeup. This wakeup again corresponds to the sleep by soconnect. Isn't it? How can we have two threads accessing the same socket with one thread sleeping on a socket for the soconnect, while another shuts down the same socket in either the RD or WR or RW direction. Dheeraj