Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 9 Jun 2014 14:18:24 +0000 (UTC)
From:      Gleb Smirnoff <glebius@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r267270 - in projects/sendfile/sys: kern sys
Message-ID:  <201406091418.s59EIOZ9035586@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
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);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201406091418.s59EIOZ9035586>