From owner-svn-src-projects@FreeBSD.ORG Mon Jun 9 14:18:25 2014 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 55C04D3C; Mon, 9 Jun 2014 14:18:25 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 2855828D8; Mon, 9 Jun 2014 14:18:25 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.8/8.14.8) with ESMTP id s59EIP9Q035589; Mon, 9 Jun 2014 14:18:25 GMT (envelope-from glebius@svn.freebsd.org) Received: (from glebius@localhost) by svn.freebsd.org (8.14.8/8.14.8/Submit) id s59EIOZ9035586; Mon, 9 Jun 2014 14:18:24 GMT (envelope-from glebius@svn.freebsd.org) Message-Id: <201406091418.s59EIOZ9035586@svn.freebsd.org> From: Gleb Smirnoff Date: Mon, 9 Jun 2014 14:18:24 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r267270 - in projects/sendfile/sys: kern sys X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 09 Jun 2014 14:18:25 -0000 Author: glebius Date: Mon Jun 9 14:18:24 2014 New Revision: 267270 URL: http://svnweb.freebsd.org/changeset/base/267270 Log: Add new protocol method pru_ready. The method is used to wake up a socket after pru_send with not ready data had been done before. The arguments should be pointer to mbuf that is already in the socket buffer, and a count of mbufs to set ready. Sponsored by: Netflix Sponsored by: Nginx, Inc. Modified: projects/sendfile/sys/kern/uipc_domain.c projects/sendfile/sys/kern/uipc_socket.c projects/sendfile/sys/sys/protosw.h Modified: projects/sendfile/sys/kern/uipc_domain.c ============================================================================== --- projects/sendfile/sys/kern/uipc_domain.c Mon Jun 9 13:53:37 2014 (r267269) +++ projects/sendfile/sys/kern/uipc_domain.c Mon Jun 9 14:18:24 2014 (r267270) @@ -152,6 +152,7 @@ protosw_init(struct protosw *pr) DEFAULT(pu->pru_sosend, sosend_generic); DEFAULT(pu->pru_soreceive, soreceive_generic); DEFAULT(pu->pru_sopoll, sopoll_generic); + DEFAULT(pu->pru_ready, pru_ready_notsupp); #undef DEFAULT if (pr->pr_init) (*pr->pr_init)(); Modified: projects/sendfile/sys/kern/uipc_socket.c ============================================================================== --- projects/sendfile/sys/kern/uipc_socket.c Mon Jun 9 13:53:37 2014 (r267269) +++ projects/sendfile/sys/kern/uipc_socket.c Mon Jun 9 14:18:24 2014 (r267270) @@ -3086,6 +3086,13 @@ pru_send_notsupp(struct socket *so, int return EOPNOTSUPP; } +int +pru_ready_notsupp(struct socket *so, struct mbuf *m, int count) +{ + + return (EOPNOTSUPP); +} + /* * This isn't really a ``null'' operation, but it's the default one and * doesn't do anything destructive. Modified: projects/sendfile/sys/sys/protosw.h ============================================================================== --- projects/sendfile/sys/sys/protosw.h Mon Jun 9 13:53:37 2014 (r267269) +++ projects/sendfile/sys/sys/protosw.h Mon Jun 9 14:18:24 2014 (r267270) @@ -210,6 +210,7 @@ struct pr_usrreqs { #define PRUS_EOF 0x2 #define PRUS_MORETOCOME 0x4 #define PRUS_NOTREADY 0x8 + int (*pru_ready)(struct socket *so, struct mbuf *m, int count); int (*pru_sense)(struct socket *so, struct stat *sb); int (*pru_shutdown)(struct socket *so); int (*pru_flush)(struct socket *so, int direction); @@ -253,6 +254,7 @@ int pru_rcvd_notsupp(struct socket *so, int pru_rcvoob_notsupp(struct socket *so, struct mbuf *m, int flags); int pru_send_notsupp(struct socket *so, int flags, struct mbuf *m, struct sockaddr *addr, struct mbuf *control, struct thread *td); +int pru_ready_notsupp(struct socket *so, struct mbuf *m, int count); int pru_sense_null(struct socket *so, struct stat *sb); int pru_shutdown_notsupp(struct socket *so); int pru_sockaddr_notsupp(struct socket *so, struct sockaddr **nam);