您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ sockfd_put函数代码示例

51自学网 2021-06-03 08:06:30
  C++
这篇教程C++ sockfd_put函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中sockfd_put函数的典型用法代码示例。如果您正苦于以下问题:C++ sockfd_put函数的具体用法?C++ sockfd_put怎么用?C++ sockfd_put使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了sockfd_put函数的25个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: ncp_put_super

static void ncp_put_super(struct super_block *sb){	struct ncp_server *server = NCP_SBP(sb);	ncp_lock_server(server);	ncp_disconnect(server);	ncp_unlock_server(server);	ncp_stop_tasks(server);	mutex_destroy(&server->rcv.creq_mutex);	mutex_destroy(&server->root_setup_lock);	mutex_destroy(&server->mutex);	if (server->info_sock)		sockfd_put(server->info_sock);	sockfd_put(server->ncp_sock);	kill_pid(server->m.wdog_pid, SIGTERM, 1);	put_pid(server->m.wdog_pid);	bdi_destroy(&server->bdi);	kfree(server->priv.data);	kfree(server->auth.object_name);	vfree(server->rxbuf);	vfree(server->txbuf);	vfree(server->packet);	call_rcu(&server->rcu, delayed_free);}
开发者ID:020gzh,项目名称:linux,代码行数:28,


示例2: compat_sys_getsockopt

asmlinkage long compat_sys_getsockopt(int fd, int level, int optname,				char __user *optval, int __user *optlen){	int err;	struct socket *sock = sockfd_lookup(fd, &err);	if (sock) {		err = security_socket_getsockopt(sock, level, optname);		if (err) {			sockfd_put(sock);			return err;		}		if (level == SOL_SOCKET)			err = compat_sock_getsockopt(sock, level,					optname, optval, optlen);		else if (sock->ops->compat_getsockopt)			err = sock->ops->compat_getsockopt(sock, level,					optname, optval, optlen);		else			err = sock->ops->getsockopt(sock, level,					optname, optval, optlen);		sockfd_put(sock);	}	return err;}
开发者ID:AdrianHuang,项目名称:linux-3.8.13,代码行数:26,


示例3: vhost_net_reset_owner

static long vhost_net_reset_owner(struct vhost_net *n){	struct socket *tx_sock = NULL;	struct socket *rx_sock = NULL;	long err;	struct vhost_memory *memory;	mutex_lock(&n->dev.mutex);	err = vhost_dev_check_owner(&n->dev);	if (err)		goto done;	memory = vhost_dev_reset_owner_prepare();	if (!memory) {		err = -ENOMEM;		goto done;	}	vhost_net_stop(n, &tx_sock, &rx_sock);	vhost_net_flush(n);	vhost_dev_reset_owner(&n->dev, memory);	vhost_net_vq_reset(n);done:	mutex_unlock(&n->dev.mutex);	if (tx_sock)		sockfd_put(tx_sock);	if (rx_sock)		sockfd_put(rx_sock);	return err;}
开发者ID:383530895,项目名称:linux,代码行数:28,


示例4: nbd_xmit_timeout

static enum blk_eh_timer_return nbd_xmit_timeout(struct request *req,        bool reserved){    struct nbd_cmd *cmd = blk_mq_rq_to_pdu(req);    struct nbd_device *nbd = cmd->nbd;    struct socket *sock = NULL;    spin_lock(&nbd->sock_lock);    set_bit(NBD_TIMEDOUT, &nbd->runtime_flags);    if (nbd->sock) {        sock = nbd->sock;        get_file(sock->file);    }    spin_unlock(&nbd->sock_lock);    if (sock) {        kernel_sock_shutdown(sock, SHUT_RDWR);        sockfd_put(sock);    }    req->errors++;    dev_err(nbd_to_dev(nbd), "Connection timed out, shutting down connection/n");    return BLK_EH_HANDLED;}
开发者ID:ivecera,项目名称:linux-odroid,代码行数:26,


示例5: handle_varp_sock

/** Handle some skbs on a varp socket (if any). * * @param fd socket file descriptor * @param n maximum number of skbs to handle * @return number of skbs handled */static int handle_varp_sock(int fd, int n){    int ret = 0;    int err = 0;    struct sk_buff *skb;    struct socket *sock = NULL;    sock = sockfd_lookup(fd, &err);    if (!sock){        wprintf("> no sock for fd=%d/n", fd);        goto exit;    }    for( ; ret < n; ret++){        if(!sock->sk) break;        skb = skb_dequeue(&sock->sk->sk_receive_queue);        if(!skb) break;        // Call the skb destructor so it isn't charged to the socket anymore.        // An skb from a socket receive queue is charged to the socket        // by skb_set_owner_r() until its destructor is called.        // If the destructor is not called the socket will run out of        // receive queue space and be unable to accept incoming skbs.        // The destructor used is sock_rfree(), see 'include/net/sock.h'.        // Other destructors: sock_wfree, sk_stream_rfree.        skb_orphan(skb);        handle_varp_skb(skb);    }    sockfd_put(sock);  exit:    dprintf("< ret=%d/n", ret);    return ret;}
开发者ID:Angel666,项目名称:android_hardware_intel,代码行数:36,


示例6: sockfd_lookup

static struct socket *get_raw_socket(int fd){	struct {		struct sockaddr_ll sa;		char  buf[MAX_ADDR_LEN];	} uaddr;	int uaddr_len = sizeof uaddr, r;	struct socket *sock = sockfd_lookup(fd, &r);	if (!sock)		return ERR_PTR(-ENOTSOCK);	/* Parameter checking */	if (sock->sk->sk_type != SOCK_RAW) {		r = -ESOCKTNOSUPPORT;		goto err;	}	r = sock->ops->getname(sock, (struct sockaddr *)&uaddr.sa,			       &uaddr_len, 0);	if (r)		goto err;	if (uaddr.sa.sll_family != AF_PACKET) {		r = -EPFNOSUPPORT;		goto err;	}	return sock;err:	sockfd_put(sock);	return ERR_PTR(r);}
开发者ID:383530895,项目名称:linux,代码行数:32,


示例7: usnic_transport_put_socket

void usnic_transport_put_socket(struct socket *sock){	char buf[100];	usnic_transport_sock_to_str(buf, sizeof(buf), sock);	usnic_dbg("Put sock %s/n", buf);	sockfd_put(sock);}
开发者ID:168519,项目名称:linux,代码行数:8,


示例8: hidp_sock_ioctl

static int hidp_sock_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg){	void __user *argp = (void __user *) arg;	struct hidp_connadd_req ca;	struct hidp_conndel_req cd;	struct hidp_connlist_req cl;	struct hidp_conninfo ci;	struct socket *csock;	struct socket *isock;	int err;	BT_DBG("cmd %x arg %lx", cmd, arg);	switch (cmd) {	case HIDPCONNADD:		if (!capable(CAP_NET_ADMIN))			return -EACCES;		if (copy_from_user(&ca, argp, sizeof(ca)))			return -EFAULT;		csock = sockfd_lookup(ca.ctrl_sock, &err);		if (!csock)			return err;		isock = sockfd_lookup(ca.intr_sock, &err);		if (!isock) {			sockfd_put(csock);			return err;		}<<<<<<< HEAD		if (csock->sk->sk_state != BT_CONNECTED ||				isock->sk->sk_state != BT_CONNECTED) {=======		if (csock->sk->sk_state != BT_CONNECTED || isock->sk->sk_state != BT_CONNECTED) {>>>>>>> 296c66da8a02d52243f45b80521febece5ed498a			sockfd_put(csock);			sockfd_put(isock);			return -EBADFD;		}
开发者ID:Core2idiot,项目名称:Kernel-Samsung-3.0...-,代码行数:41,


示例9: sock_remove_wait_queue

/** Remove a wait queue from a socket. * * @param fd socket file descriptor * @param waitq queue * @return 0 on success, error code otherwise */int sock_remove_wait_queue(int fd, wait_queue_t *waitq){    int err = -EINVAL;    struct socket *sock = NULL;    if(fd < 0) goto exit;    sock = sockfd_lookup(fd, &err);    if (!sock) goto exit;    remove_wait_queue(sock->sk->sk_sleep, waitq);    sockfd_put(sock);    err = 0;  exit:    return err;}
开发者ID:Angel666,项目名称:android_hardware_intel,代码行数:19,


示例10: sock_set_callback

/** Set the data ready callback on a socket. */int sock_set_callback(int fd){    int err = -EINVAL;    struct socket *sock = NULL;    if(fd < 0) goto exit;    sock = sockfd_lookup(fd, &err);    if (!sock) goto exit;    sock->sk->sk_data_ready = sock_data_ready;    sockfd_put(sock);    err = 0;  exit:    return err;}
开发者ID:Angel666,项目名称:android_hardware_intel,代码行数:15,


示例11: vhost_net_release

static int vhost_net_release(struct inode *inode, struct file *f){	struct vhost_net *n = f->private_data;	struct socket *tx_sock;	struct socket *rx_sock;	vhost_net_stop(n, &tx_sock, &rx_sock);	vhost_net_flush(n);	vhost_dev_stop(&n->dev);	vhost_dev_cleanup(&n->dev, false);	vhost_net_vq_reset(n);	if (tx_sock)		sockfd_put(tx_sock);	if (rx_sock)		sockfd_put(rx_sock);	/* Make sure no callbacks are outstanding */	synchronize_rcu_bh();	/* We do an extra flush before freeing memory,	 * since jobs can re-queue themselves. */	vhost_net_flush(n);	kfree(n->dev.vqs);	kvfree(n);	return 0;}
开发者ID:383530895,项目名称:linux,代码行数:24,


示例12: sock_shutdown

/* * Forcibly shutdown the socket causing all listeners to error */static void sock_shutdown(struct nbd_device *nbd){	spin_lock_irq(&nbd->sock_lock);	if (!nbd->sock) {		spin_unlock_irq(&nbd->sock_lock);		return;	}	dev_warn(disk_to_dev(nbd->disk), "shutting down socket/n");	kernel_sock_shutdown(nbd->sock, SHUT_RDWR);	sockfd_put(nbd->sock);	nbd->sock = NULL;	spin_unlock_irq(&nbd->sock_lock);	del_timer(&nbd->timeout_timer);}
开发者ID:AngleFork,项目名称:linux,代码行数:20,


示例13: p9_socket_open

static int p9_socket_open(struct p9_transport *trans, struct socket *csocket){	int fd, ret;	csocket->sk->sk_allocation = GFP_NOIO;	fd = sock_map_fd(csocket);	if (fd < 0) {		P9_EPRINTK(KERN_ERR, "p9_socket_open: failed to map fd/n");		return fd;	}	ret = p9_fd_open(trans, fd, fd);	if (ret < 0) {		P9_EPRINTK(KERN_ERR, "p9_socket_open: failed to open fd/n");		sockfd_put(csocket);		return ret;	}	((struct p9_trans_fd *)trans->priv)->rd->f_flags |= O_NONBLOCK;	return 0;}
开发者ID:cilynx,项目名称:dd-wrt,代码行数:22,


示例14: fd_to_socktuple

/* * Convert a connection tuple into our tuple representation and copy it to * targetbuf */u16 fd_to_socktuple(int fd,	struct sockaddr *usrsockaddr,	int ulen,	bool use_userdata,	bool is_inbound,	char *targetbuf,	u16 targetbufsize){	struct socket *sock;	int err = 0;	sa_family_t family;	struct unix_sock *us;	char *us_name;	struct sock *speer;	u32 sip;	u32 dip;	u8 *sip6;	u8 *dip6;	u16 sport;	u16 dport;	struct sockaddr_in *usrsockaddr_in;	struct sockaddr_in6 *usrsockaddr_in6;	struct sockaddr_un *usrsockaddr_un;	u16 size;	char *dest;	struct sockaddr_storage sock_address;	struct sockaddr_storage peer_address;	int sock_address_len;	int peer_address_len;	/*	 * Get the socket from the fd	 * NOTE: sockfd_lookup() locks the socket, so we don't need to worry when we dig in it	 */	sock = sockfd_lookup(fd, &err);	if (unlikely(!sock || !(sock->sk))) {		/*		 * This usually happens if the call failed without being able to establish a connection,		 * i.e. if it didn't return something like SE_EINPROGRESS.		 */		if (sock)			sockfd_put(sock);		return 0;	}	err = sock->ops->getname(sock, (struct sockaddr *)&sock_address, &sock_address_len, 0);	ASSERT(err == 0);	family = sock->sk->sk_family;	/*	 * Extract and pack the info, based on the family	 */	switch (family) {	case AF_INET:		if (!use_userdata) {			err = sock->ops->getname(sock, (struct sockaddr *)&peer_address, &peer_address_len, 1);			ASSERT(err == 0);			if (is_inbound) {				sip = ((struct sockaddr_in *) &peer_address)->sin_addr.s_addr;				sport = ntohs(((struct sockaddr_in *) &peer_address)->sin_port);				dip = ((struct sockaddr_in *) &sock_address)->sin_addr.s_addr;				dport = ntohs(((struct sockaddr_in *) &sock_address)->sin_port);			} else {				sip = ((struct sockaddr_in *) &sock_address)->sin_addr.s_addr;				sport = ntohs(((struct sockaddr_in *) &sock_address)->sin_port);				dip = ((struct sockaddr_in *) &peer_address)->sin_addr.s_addr;				dport = ntohs(((struct sockaddr_in *) &peer_address)->sin_port);			}		} else {			/*			 * Map the user-provided address to a sockaddr_in			 */			usrsockaddr_in = (struct sockaddr_in *)usrsockaddr;			if (is_inbound) {				sip = usrsockaddr_in->sin_addr.s_addr;				sport = ntohs(usrsockaddr_in->sin_port);				dip = ((struct sockaddr_in *) &sock_address)->sin_addr.s_addr;				dport = ntohs(((struct sockaddr_in *) &sock_address)->sin_port);			} else {				sip = ((struct sockaddr_in *) &sock_address)->sin_addr.s_addr;				sport = ntohs(((struct sockaddr_in *) &sock_address)->sin_port);				dip = usrsockaddr_in->sin_addr.s_addr;				dport = ntohs(usrsockaddr_in->sin_port);			}		}		/*		 * Pack the tuple info in the temporary buffer		 */		size = 1 + 4 + 4 + 2 + 2; /* family + sip + dip + sport + dport */		*targetbuf = socket_family_to_scap(family);//.........这里部分代码省略.........
开发者ID:17twenty,项目名称:sysdig,代码行数:101,


示例15: bnep_sock_ioctl

static int bnep_sock_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg){	struct bnep_connlist_req cl;	struct bnep_connadd_req  ca;	struct bnep_conndel_req  cd;	struct bnep_conninfo ci;	struct socket *nsock;	void __user *argp = (void __user *)arg;	int err;	BT_DBG("cmd %x arg %lx", cmd, arg);	switch (cmd) {	case BNEPCONNADD:		if (!capable(CAP_NET_ADMIN))			return -EPERM;		if (copy_from_user(&ca, argp, sizeof(ca)))			return -EFAULT;		nsock = sockfd_lookup(ca.sock, &err);		if (!nsock)			return err;		if (nsock->sk->sk_state != BT_CONNECTED) {			sockfd_put(nsock);			return -EBADFD;		}		ca.device[sizeof(ca.device)-1] = 0;		err = bnep_add_connection(&ca, nsock);		if (!err) {			if (copy_to_user(argp, &ca, sizeof(ca)))				err = -EFAULT;		} else			sockfd_put(nsock);		return err;	case BNEPCONNDEL:		if (!capable(CAP_NET_ADMIN))			return -EPERM;		if (copy_from_user(&cd, argp, sizeof(cd)))			return -EFAULT;		return bnep_del_connection(&cd);	case BNEPGETCONNLIST:		if (copy_from_user(&cl, argp, sizeof(cl)))			return -EFAULT;		if (cl.cnum <= 0)			return -EINVAL;		err = bnep_get_connlist(&cl);		if (!err && copy_to_user(argp, &cl, sizeof(cl)))			return -EFAULT;		return err;	case BNEPGETCONNINFO:		if (copy_from_user(&ci, argp, sizeof(ci)))			return -EFAULT;		err = bnep_get_conninfo(&ci);		if (!err && copy_to_user(argp, &ci, sizeof(ci)))			return -EFAULT;		return err;	default:		return -EINVAL;	}	return 0;}
开发者ID:Kratos1982,项目名称:UbuntuTouch,代码行数:77,


示例16: hidp_sock_compat_ioctl

static int hidp_sock_compat_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg){	void __user *argp = compat_ptr(arg);	int err;	if (cmd == HIDPGETCONNLIST) {		struct hidp_connlist_req cl;		u32 __user *p = argp;		u32 uci;		if (get_user(cl.cnum, p) || get_user(uci, p + 1))			return -EFAULT;		cl.ci = compat_ptr(uci);		if (cl.cnum <= 0)			return -EINVAL;		err = hidp_get_connlist(&cl);		if (!err && put_user(cl.cnum, p))			err = -EFAULT;		return err;	} else if (cmd == HIDPCONNADD) {		struct compat_hidp_connadd_req ca32;		struct hidp_connadd_req ca;		struct socket *csock;		struct socket *isock;		if (!capable(CAP_NET_ADMIN))			return -EPERM;		if (copy_from_user(&ca32, (void __user *) arg, sizeof(ca32)))			return -EFAULT;		ca.ctrl_sock = ca32.ctrl_sock;		ca.intr_sock = ca32.intr_sock;		ca.parser = ca32.parser;		ca.rd_size = ca32.rd_size;		ca.rd_data = compat_ptr(ca32.rd_data);		ca.country = ca32.country;		ca.subclass = ca32.subclass;		ca.vendor = ca32.vendor;		ca.product = ca32.product;		ca.version = ca32.version;		ca.flags = ca32.flags;		ca.idle_to = ca32.idle_to;		memcpy(ca.name, ca32.name, 128);		csock = sockfd_lookup(ca.ctrl_sock, &err);		if (!csock)			return err;		isock = sockfd_lookup(ca.intr_sock, &err);		if (!isock) {			sockfd_put(csock);			return err;		}		err = hidp_connection_add(&ca, csock, isock);		if (!err && copy_to_user(argp, &ca32, sizeof(ca32)))			err = -EFAULT;		sockfd_put(csock);		sockfd_put(isock);		return err;	}	return hidp_sock_ioctl(sock, cmd, arg);}
开发者ID:avagin,项目名称:linux,代码行数:72,


示例17: store_attach

/* * To start a new USB/IP attachment, a userland program needs to setup a TCP * connection and then write its socket descriptor with remote device * information into this sysfs file. * * A remote device is virtually attached to the root-hub port of @rhport with * @speed. @devid is embedded into a request to specify the remote device in a * server host. * * write() returns 0 on success, else negative errno. */static ssize_t store_attach(struct device *dev, struct device_attribute *attr,			    const char *buf, size_t count){	struct socket *socket;	int sockfd = 0;	__u32 port = 0, pdev_nr = 0, rhport = 0, devid = 0, speed = 0;	struct usb_hcd *hcd;	struct vhci_hcd *vhci_hcd;	struct vhci_device *vdev;	struct vhci *vhci;	int err;	unsigned long flags;	/*	 * @rhport: port number of vhci_hcd	 * @sockfd: socket descriptor of an established TCP connection	 * @devid: unique device identifier in a remote host	 * @speed: usb device speed in a remote host	 */	if (sscanf(buf, "%u %u %u %u", &port, &sockfd, &devid, &speed) != 4)		return -EINVAL;	pdev_nr = port_to_pdev_nr(port);	rhport = port_to_rhport(port);	usbip_dbg_vhci_sysfs("port(%u) pdev(%d) rhport(%u)/n",			     port, pdev_nr, rhport);	usbip_dbg_vhci_sysfs("sockfd(%u) devid(%u) speed(%u)/n",			     sockfd, devid, speed);	/* check received parameters */	if (!valid_args(pdev_nr, rhport, speed))		return -EINVAL;	hcd = platform_get_drvdata(vhcis[pdev_nr].pdev);	if (hcd == NULL) {		dev_err(dev, "port %d is not ready/n", port);		return -EAGAIN;	}	vhci_hcd = hcd_to_vhci_hcd(hcd);	vhci = vhci_hcd->vhci;	if (speed == USB_SPEED_SUPER)		vdev = &vhci->vhci_hcd_ss->vdev[rhport];	else		vdev = &vhci->vhci_hcd_hs->vdev[rhport];	/* Extract socket from fd. */	socket = sockfd_lookup(sockfd, &err);	if (!socket)		return -EINVAL;	/* now need lock until setting vdev status as used */	/* begin a lock */	spin_lock_irqsave(&vhci->lock, flags);	spin_lock(&vdev->ud.lock);	if (vdev->ud.status != VDEV_ST_NULL) {		/* end of the lock */		spin_unlock(&vdev->ud.lock);		spin_unlock_irqrestore(&vhci->lock, flags);		sockfd_put(socket);		dev_err(dev, "port %d already used/n", rhport);		return -EINVAL;	}	dev_info(dev, "pdev(%u) rhport(%u) sockfd(%d)/n",		 pdev_nr, rhport, sockfd);	dev_info(dev, "devid(%u) speed(%u) speed_str(%s)/n",		 devid, speed, usb_speed_string(speed));	vdev->devid         = devid;	vdev->speed         = speed;	vdev->ud.tcp_socket = socket;	vdev->ud.status     = VDEV_ST_NOTASSIGNED;	spin_unlock(&vdev->ud.lock);	spin_unlock_irqrestore(&vhci->lock, flags);	/* end the lock */	vdev->ud.tcp_rx = kthread_get_run(vhci_rx_loop, &vdev->ud, "vhci_rx");	vdev->ud.tcp_tx = kthread_get_run(vhci_tx_loop, &vdev->ud, "vhci_tx");	rh_port_connect(vdev, speed);	return count;//.........这里部分代码省略.........
开发者ID:mdamt,项目名称:linux,代码行数:101,


示例18: iscsi_sw_tcp_xmit_segment

//.........这里部分代码省略.........	tcp_conn->rx_hash = &tcp_sw_conn->rx_hash;	return cls_conn;free_tx_tfm:	crypto_free_hash(tcp_sw_conn->tx_hash.tfm);free_conn:	iscsi_conn_printk(KERN_ERR, conn,			  "Could not create connection due to crc32c "			  "loading error. Make sure the crc32c "			  "module is built as a module or into the "			  "kernel/n");	iscsi_tcp_conn_teardown(cls_conn);	return NULL;}static void iscsi_sw_tcp_release_conn(struct iscsi_conn *conn){	struct iscsi_session *session = conn->session;	struct iscsi_tcp_conn *tcp_conn = conn->dd_data;	struct iscsi_sw_tcp_conn *tcp_sw_conn = tcp_conn->dd_data;	struct socket *sock = tcp_sw_conn->sock;	if (!sock)		return;	sock_hold(sock->sk);	iscsi_sw_tcp_conn_restore_callbacks(tcp_sw_conn);	sock_put(sock->sk);	spin_lock_bh(&session->lock);	tcp_sw_conn->sock = NULL;	spin_unlock_bh(&session->lock);	sockfd_put(sock);}static void iscsi_sw_tcp_conn_destroy(struct iscsi_cls_conn *cls_conn){	struct iscsi_conn *conn = cls_conn->dd_data;	struct iscsi_tcp_conn *tcp_conn = conn->dd_data;	struct iscsi_sw_tcp_conn *tcp_sw_conn = tcp_conn->dd_data;	iscsi_sw_tcp_release_conn(conn);	if (tcp_sw_conn->tx_hash.tfm)		crypto_free_hash(tcp_sw_conn->tx_hash.tfm);	if (tcp_sw_conn->rx_hash.tfm)		crypto_free_hash(tcp_sw_conn->rx_hash.tfm);	iscsi_tcp_conn_teardown(cls_conn);}static void iscsi_sw_tcp_conn_stop(struct iscsi_cls_conn *cls_conn, int flag){	struct iscsi_conn *conn = cls_conn->dd_data;	struct iscsi_tcp_conn *tcp_conn = conn->dd_data;	struct iscsi_sw_tcp_conn *tcp_sw_conn = tcp_conn->dd_data;	/* userspace may have goofed up and not bound us */	if (!tcp_sw_conn->sock)		return;	/*	 * Make sure our recv side is stopped.	 * Older tools called conn stop before ep_disconnect	 * so IO could still be coming in.	 */
开发者ID:458941968,项目名称:mini2440-kernel-2.6.29,代码行数:67,


示例19: store_attach

/* * To start a new USB/IP attachment, a userland program needs to setup a TCP * connection and then write its socket descriptor with remote device * information into this sysfs file. * * A remote device is virtually attached to the root-hub port of @rhport with * @speed. @devid is embedded into a request to specify the remote device in a * server host. * * write() returns 0 on success, else negative errno. */static ssize_t store_attach(struct device *dev, struct device_attribute *attr,			    const char *buf, size_t count){	struct vhci_device *vdev;	struct socket *socket;	int sockfd = 0;	__u32 rhport = 0, devid = 0, speed = 0;	int err;	/*	 * @rhport: port number of vhci_hcd	 * @sockfd: socket descriptor of an established TCP connection	 * @devid: unique device identifier in a remote host	 * @speed: usb device speed in a remote host	 */	if (sscanf(buf, "%u %u %u %u", &rhport, &sockfd, &devid, &speed) != 4)		return -EINVAL;	usbip_dbg_vhci_sysfs("rhport(%u) sockfd(%u) devid(%u) speed(%u)/n",			     rhport, sockfd, devid, speed);	/* check received parameters */	if (valid_args(rhport, speed) < 0)		return -EINVAL;	/* Extract socket from fd. */	socket = sockfd_lookup(sockfd, &err);	if (!socket)		return -EINVAL;	/* now need lock until setting vdev status as used */	/* begin a lock */	spin_lock(&the_controller->lock);	vdev = port_to_vdev(rhport);	spin_lock(&vdev->ud.lock);	if (vdev->ud.status != VDEV_ST_NULL) {		/* end of the lock */		spin_unlock(&vdev->ud.lock);		spin_unlock(&the_controller->lock);		sockfd_put(socket);		dev_err(dev, "port %d already used/n", rhport);		return -EINVAL;	}	dev_info(dev,		 "rhport(%u) sockfd(%d) devid(%u) speed(%u) speed_str(%s)/n",		 rhport, sockfd, devid, speed, usb_speed_string(speed));	vdev->devid         = devid;	vdev->speed         = speed;	vdev->ud.tcp_socket = socket;	vdev->ud.status     = VDEV_ST_NOTASSIGNED;	spin_unlock(&vdev->ud.lock);	spin_unlock(&the_controller->lock);	/* end the lock */	vdev->ud.tcp_rx = kthread_get_run(vhci_rx_loop, &vdev->ud, "vhci_rx");	vdev->ud.tcp_tx = kthread_get_run(vhci_tx_loop, &vdev->ud, "vhci_tx");	rh_port_connect(rhport, speed);	return count;}
开发者ID:mikuhatsune001,项目名称:linux2.6.32,代码行数:79,


示例20: iscsi_sw_tcp_xmit_segment

//.........这里部分代码省略.........	tcp_conn->rx_hash = &tcp_sw_conn->rx_hash;	return cls_conn;free_tx_tfm:	crypto_free_hash(tcp_sw_conn->tx_hash.tfm);free_conn:	iscsi_conn_printk(KERN_ERR, conn,			  "Could not create connection due to crc32c "			  "loading error. Make sure the crc32c "			  "module is built as a module or into the "			  "kernel/n");	iscsi_tcp_conn_teardown(cls_conn);	return NULL;}static void iscsi_sw_tcp_release_conn(struct iscsi_conn *conn){	struct iscsi_session *session = conn->session;	struct iscsi_tcp_conn *tcp_conn = conn->dd_data;	struct iscsi_sw_tcp_conn *tcp_sw_conn = tcp_conn->dd_data;	struct socket *sock = tcp_sw_conn->sock;	if (!sock)		return;	sock_hold(sock->sk);	iscsi_sw_tcp_conn_restore_callbacks(conn);	sock_put(sock->sk);	spin_lock_bh(&session->frwd_lock);	tcp_sw_conn->sock = NULL;	spin_unlock_bh(&session->frwd_lock);	sockfd_put(sock);}static void iscsi_sw_tcp_conn_destroy(struct iscsi_cls_conn *cls_conn){	struct iscsi_conn *conn = cls_conn->dd_data;	struct iscsi_tcp_conn *tcp_conn = conn->dd_data;	struct iscsi_sw_tcp_conn *tcp_sw_conn = tcp_conn->dd_data;	iscsi_sw_tcp_release_conn(conn);	if (tcp_sw_conn->tx_hash.tfm)		crypto_free_hash(tcp_sw_conn->tx_hash.tfm);	if (tcp_sw_conn->rx_hash.tfm)		crypto_free_hash(tcp_sw_conn->rx_hash.tfm);	iscsi_tcp_conn_teardown(cls_conn);}static void iscsi_sw_tcp_conn_stop(struct iscsi_cls_conn *cls_conn, int flag){	struct iscsi_conn *conn = cls_conn->dd_data;	struct iscsi_tcp_conn *tcp_conn = conn->dd_data;	struct iscsi_sw_tcp_conn *tcp_sw_conn = tcp_conn->dd_data;	struct socket *sock = tcp_sw_conn->sock;	/* userspace may have goofed up and not bound us */	if (!sock)		return;	sock->sk->sk_err = EIO;	wake_up_interruptible(sk_sleep(sock->sk));
开发者ID:AkyZero,项目名称:wrapfs-latest,代码行数:66,


示例21: vhost_net_set_backend

static long vhost_net_set_backend(struct vhost_net *n, unsigned index, int fd){	struct socket *sock, *oldsock;	struct vhost_virtqueue *vq;	struct vhost_net_virtqueue *nvq;	struct vhost_net_ubuf_ref *ubufs, *oldubufs = NULL;	int r;	mutex_lock(&n->dev.mutex);	r = vhost_dev_check_owner(&n->dev);	if (r)		goto err;	if (index >= VHOST_NET_VQ_MAX) {		r = -ENOBUFS;		goto err;	}	vq = &n->vqs[index].vq;	nvq = &n->vqs[index];	mutex_lock(&vq->mutex);	/* Verify that ring has been setup correctly. */	if (!vhost_vq_access_ok(vq)) {		r = -EFAULT;		goto err_vq;	}	sock = get_socket(fd);	if (IS_ERR(sock)) {		r = PTR_ERR(sock);		goto err_vq;	}	/* start polling new socket */	oldsock = vq->private_data;	if (sock != oldsock) {		ubufs = vhost_net_ubuf_alloc(vq,					     sock && vhost_sock_zcopy(sock));		if (IS_ERR(ubufs)) {			r = PTR_ERR(ubufs);			goto err_ubufs;		}		vhost_net_disable_vq(n, vq);		vq->private_data = sock;		r = vhost_init_used(vq);		if (r)			goto err_used;		r = vhost_net_enable_vq(n, vq);		if (r)			goto err_used;		oldubufs = nvq->ubufs;		nvq->ubufs = ubufs;		n->tx_packets = 0;		n->tx_zcopy_err = 0;		n->tx_flush = false;	}	mutex_unlock(&vq->mutex);	if (oldubufs) {		vhost_net_ubuf_put_wait_and_free(oldubufs);		mutex_lock(&vq->mutex);		vhost_zerocopy_signal_used(n, vq);		mutex_unlock(&vq->mutex);	}	if (oldsock) {		vhost_net_flush_vq(n, index);		sockfd_put(oldsock);	}	mutex_unlock(&n->dev.mutex);	return 0;err_used:	vq->private_data = oldsock;	vhost_net_enable_vq(n, vq);	if (ubufs)		vhost_net_ubuf_put_wait_and_free(ubufs);err_ubufs:	sockfd_put(sock);err_vq:	mutex_unlock(&vq->mutex);err:	mutex_unlock(&n->dev.mutex);	return r;}
开发者ID:383530895,项目名称:linux,代码行数:89,


示例22: compute_snaplen

inline u32 compute_snaplen(struct event_filler_arguments *args, char *buf, u32 lookahead_size){	u32 res = args->consumer->snaplen;	int err;	struct socket *sock;	sa_family_t family;	struct sockaddr_storage sock_address;	struct sockaddr_storage peer_address;	int sock_address_len;	int peer_address_len;	u16 sport, dport;/*	if (args->event_type == PPME_SYSCALL_WRITE_X) {#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0)		struct fd f = fdget(args->fd);		if (f.file && f.file->f_op) {			if (THIS_MODULE == f.file->f_op->owner) {				res = RW_SNAPLEN_EVENT;				fdput(f);				return res;			}			fdput(f);		}#else		struct file* file = fget(args->fd);		if (file && file->f_op) {			if (THIS_MODULE == file->f_op->owner) {				res = RW_SNAPLEN_EVENT;				fput(file);				return res;			}			fput(file);		}#endif	}*/	if (!args->consumer->do_dynamic_snaplen)		return res;	sock = sockfd_lookup(args->fd, &err);	if (sock) {		if (sock->sk) {			err = sock->ops->getname(sock, (struct sockaddr *)&sock_address, &sock_address_len, 0);			if (err == 0) {				err = sock->ops->getname(sock, (struct sockaddr *)&peer_address, &peer_address_len, 1);				if (err == 0) {					family = sock->sk->sk_family;					if (family == AF_INET) {						sport = ntohs(((struct sockaddr_in *) &sock_address)->sin_port);						dport = ntohs(((struct sockaddr_in *) &peer_address)->sin_port);					} else if (family == AF_INET6) {						sport = ntohs(((struct sockaddr_in6 *) &sock_address)->sin6_port);						dport = ntohs(((struct sockaddr_in6 *) &peer_address)->sin6_port);					} else {						sport = 0;						dport = 0;					}					if (sport == PPM_PORT_MYSQL || dport == PPM_PORT_MYSQL) {						if (lookahead_size >= 5) {							if (buf[0] == 3 || buf[1] == 3 || buf[2] == 3 || buf[3] == 3 || buf[4] == 3) {								sockfd_put(sock);								return 2000;							} else if (buf[2] == 0 && buf[3] == 0) {								sockfd_put(sock);								return 2000;							}						}					} else if (sport == PPM_PORT_POSTGRES || dport == PPM_PORT_POSTGRES) {						if (lookahead_size >= 2) {							if ((buf[0] == 'Q' && buf[1] == 0) || /* SimpleQuery command */								(buf[0] == 'P' && buf[1] == 0) || /* Prepare statement commmand */								(buf[4] == 0 && buf[5] == 3 && buf[6] == 0) || /* startup command */								(buf[0] == 'E' && buf[1] == 0) /* error or execute command */							) {								sockfd_put(sock);								return 2000;							}						}					} else if ((lookahead_size >= 4 && buf[1] == 0 && buf[2] == 0 && buf[2] == 0) || /* matches command */								(lookahead_size >= 16 && (*(int32_t *)(buf+12) == 1 || /* matches header */									*(int32_t *)(buf+12) == 2001 ||									*(int32_t *)(buf+12) == 2002 ||									*(int32_t *)(buf+12) == 2003 ||									*(int32_t *)(buf+12) == 2004 ||									*(int32_t *)(buf+12) == 2005 ||									*(int32_t *)(buf+12) == 2006 ||									*(int32_t *)(buf+12) == 2007)							   )							) {//.........这里部分代码省略.........
开发者ID:DalianDragon,项目名称:sysdig,代码行数:101,


示例23: MksckPageDescToFd

static intMksckPageDescToFd(struct socket *sock,		  struct msghdr *msg,		  Mksck_PageDesc *pd,		  uint32 pages){	int retval;	int newfd;	struct socket *newsock;	struct sock *newsk;	struct sock *sk = sock->sk;	struct MksckPageDescInfo **pmpdi, *mpdi;	lock_sock(sk);	if (sk->sk_user_data) {		struct MksckPageDescInfo *mpdi2;				newfd = *((int *)sk->sk_user_data);				newsock = sockfd_lookup(newfd, &retval);		if (!newsock) {			retval = -EINVAL;			goto endProcessingReleaseSock;		}		newsk = newsock->sk;		lock_sock(newsk);		sockfd_put(newsock);		if (((struct sock *)newsk->sk_user_data) != sk) {			retval = -EINVAL;			release_sock(newsk);			goto endProcessingReleaseSock;		}		mpdi = kmalloc(sizeof(struct MksckPageDescInfo) +			       pages*sizeof(Mksck_PageDesc), GFP_KERNEL);		if (!mpdi) {			retval = -ENOMEM;			release_sock(newsk);			goto endProcessingReleaseSock;		}		retval = put_cmsg(msg, SOL_DECNET, 0, sizeof(int), &newfd);		if (retval < 0)			goto endProcessingKFreeReleaseSock;		release_sock(sk);		mpdi2 = (struct MksckPageDescInfo *)newsk->sk_protinfo;		while (mpdi2->next)			mpdi2 = mpdi2->next;		pmpdi = &(mpdi2->next);	} else {		retval = sock_create(sk->sk_family, sock->type, 0, &newsock);		if (retval < 0)			goto endProcessingReleaseSock;		newsk = newsock->sk;		lock_sock(newsk);		newsk->sk_destruct = &MksckPageDescSkDestruct;		newsk->sk_user_data = sk;		sock_hold(sk); 		newsock->ops = &mksckPageDescOps;		mpdi = kmalloc(sizeof(struct MksckPageDescInfo) +			       pages*sizeof(Mksck_PageDesc), GFP_KERNEL);		if (!mpdi) {			retval = -ENOMEM;			goto endProcessingFreeNewSock;		}		sk->sk_user_data = sock_kmalloc(sk, sizeof(int), GFP_KERNEL);		if (sk->sk_user_data == NULL) {			retval = -ENOMEM;			goto endProcessingKFreeAndNewSock;		}		newfd = sock_map_fd(newsock, O_CLOEXEC);		if (newfd < 0) {			retval = newfd;			sock_kfree_s(sk, sk->sk_user_data, sizeof(int));			sk->sk_user_data = NULL;			goto endProcessingKFreeAndNewSock;		}		retval = put_cmsg(msg, SOL_DECNET, 0, sizeof(int), &newfd);		if (retval < 0) {			sock_kfree_s(sk, sk->sk_user_data, sizeof(int));			sk->sk_user_data = NULL;			kfree(mpdi);			release_sock(newsk);			sockfd_put(newsock);			sock_release(newsock);			put_unused_fd(newfd);//.........这里部分代码省略.........
开发者ID:Alex-V2,项目名称:One_M8_4.4.3_kernel,代码行数:101,


示例24: ncp_fill_super

//.........这里部分代码省略.........	ncp_lock_server(server);	error = ncp_connect(server);	ncp_unlock_server(server);	if (error < 0)		goto out_rxbuf;	ncp_dbg(1, "NCP_SBP(sb) = %p/n", NCP_SBP(sb));	error = -EMSGSIZE;	/* -EREMOTESIDEINCOMPATIBLE */#ifdef CONFIG_NCPFS_PACKET_SIGNING	if (ncp_negotiate_size_and_options(server, default_bufsize,		NCP_DEFAULT_OPTIONS, &(server->buffer_size), &options) == 0)	{		if (options != NCP_DEFAULT_OPTIONS)		{			if (ncp_negotiate_size_and_options(server, 				default_bufsize,				options & 2, 				&(server->buffer_size), &options) != 0)							{				goto out_disconnect;			}		}		ncp_lock_server(server);		if (options & 2)			server->sign_wanted = 1;		ncp_unlock_server(server);	}	else #endif	/* CONFIG_NCPFS_PACKET_SIGNING */	if (ncp_negotiate_buffersize(server, default_bufsize,  				     &(server->buffer_size)) != 0)		goto out_disconnect;	ncp_dbg(1, "bufsize = %d/n", server->buffer_size);	memset(&finfo, 0, sizeof(finfo));	finfo.i.attributes	= aDIR;	finfo.i.dataStreamSize	= 0;	/* ignored */	finfo.i.dirEntNum	= 0;	finfo.i.DosDirNum	= 0;#ifdef CONFIG_NCPFS_SMALLDOS	finfo.i.NSCreator	= NW_NS_DOS;#endif	finfo.volume		= NCP_NUMBER_OF_VOLUMES;	/* set dates of mountpoint to Jan 1, 1986; 00:00 */	finfo.i.creationTime	= finfo.i.modifyTime				= cpu_to_le16(0x0000);	finfo.i.creationDate	= finfo.i.modifyDate				= finfo.i.lastAccessDate				= cpu_to_le16(0x0C21);	finfo.i.nameLen		= 0;	finfo.i.entryName[0]	= '/0';	finfo.opened		= 0;	finfo.ino		= 2;	/* tradition */	server->name_space[finfo.volume] = NW_NS_DOS;	error = -ENOMEM;        root_inode = ncp_iget(sb, &finfo);        if (!root_inode)		goto out_disconnect;	ncp_dbg(1, "root vol=%d/n", NCP_FINFO(root_inode)->volNumber);	sb->s_root = d_make_root(root_inode);        if (!sb->s_root)		goto out_disconnect;	return 0;out_disconnect:	ncp_lock_server(server);	ncp_disconnect(server);	ncp_unlock_server(server);out_rxbuf:	ncp_stop_tasks(server);	vfree(server->rxbuf);out_txbuf:	vfree(server->txbuf);out_packet:	vfree(server->packet);out_nls:#ifdef CONFIG_NCPFS_NLS	unload_nls(server->nls_io);	unload_nls(server->nls_vol);#endif	mutex_destroy(&server->rcv.creq_mutex);	mutex_destroy(&server->root_setup_lock);	mutex_destroy(&server->mutex);out_fput2:	if (server->info_sock)		sockfd_put(server->info_sock);out_bdi:	bdi_destroy(&server->bdi);out_fput:	sockfd_put(sock);out:	put_pid(data.wdog_pid);	sb->s_fs_info = NULL;	kfree(server);	return error;}
开发者ID:020gzh,项目名称:linux,代码行数:101,


示例25: hidp_sock_ioctl

static int hidp_sock_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg){    void __user *argp = (void __user *) arg;    struct hidp_connadd_req ca;    struct hidp_conndel_req cd;    struct hidp_connlist_req cl;    struct hidp_conninfo ci;    struct socket *csock;    struct socket *isock;    int err;    BT_DBG("cmd %x arg %lx", cmd, arg);    switch (cmd) {    case HIDPCONNADD:        if (!capable(CAP_NET_ADMIN))            return -EPERM;        if (copy_from_user(&ca, argp, sizeof(ca)))            return -EFAULT;        csock = sockfd_lookup(ca.ctrl_sock, &err);        if (!csock)            return err;        isock = sockfd_lookup(ca.intr_sock, &err);        if (!isock) {            sockfd_put(csock);            return err;        }        err = hidp_connection_add(&ca, csock, isock);        if (!err && copy_to_user(argp, &ca, sizeof(ca)))            err = -EFAULT;        sockfd_put(csock);        sockfd_put(isock);        return err;    case HIDPCONNDEL:        if (!capable(CAP_NET_ADMIN))            return -EPERM;        if (copy_from_user(&cd, argp, sizeof(cd)))            return -EFAULT;        return hidp_connection_del(&cd);    case HIDPGETCONNLIST:        if (copy_from_user(&cl, argp, sizeof(cl)))            return -EFAULT;        if (cl.cnum <= 0)            return -EINVAL;        err = hidp_get_connlist(&cl);        if (!err && copy_to_user(argp, &cl, sizeof(cl)))            return -EFAULT;        return err;    case HIDPGETCONNINFO:        if (copy_from_user(&ci, argp, sizeof(ci)))            return -EFAULT;        err = hidp_get_conninfo(&ci);        if (!err && copy_to_user(argp, &ci, sizeof(ci)))            return -EFAULT;        return err;    }    return -EINVAL;}
开发者ID:Nomad280279,项目名称:vendor_intel_hardware_wlan_iwlwifi,代码行数:75,



注:本文中的sockfd_put函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ socle_scu_write函数代码示例
C++ sockfd_lookup函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。