from small one page howto to huge articles all in one place

search text in:




Other .linuxhowtos.org sites:gentoo.linuxhowtos.org



Last additions:
using iotop to find disk usage hogs

using iotop to find disk usage hogs

words:

887

views:

209580

userrating:


May 25th. 2007:
Words

486

Views

258587

why adblockers are bad


Workaround and fixes for the current Core Dump Handling vulnerability affected kernels

Workaround and fixes for the current Core Dump Handling vulnerability affected kernels

words:

161

views:

149876

userrating:


April, 26th. 2006:

Druckversion
You are here: manpages





iv_fd_pump

Section: ivykis programmer's manual (3)
Updated: 201-0-05
Index Return to Main Contents
 

NAME

IV_FD_PUMP_INIT, iv_fd_pump_init, iv_fd_pump_destroy, iv_fd_pump_pump, iv_fd_pump_is_done - pump data between file descriptors  

SYNOPSIS

#include <iv_fd_pump.h>

struct iv_fd_pump {
        int             from_fd;
        int             to_fd;
        void            *cookie;
        void            (*set_bands)(void *cookie, int pollin, int pollout);
        unsigned int    flags;
};

void IV_FD_PUMP_INIT(struct iv_fd_pump *this);
void iv_fd_pump_init(struct iv_fd_pump *this);
void iv_fd_pump_destroy(struct iv_fd_pump *this);
int iv_fd_pump_pump(struct iv_fd_pump *this);
int iv_fd_pump_is_done(const struct iv_fd_pump *this);
 

DESCRIPTION

iv_fd_pump provides a way for moving data between two file descriptors.

To set up iv_fd_pump for moving data, call IV_FD_PUMP_INIT on a struct iv_fd_pump object, fill in the ->from_fd,->to_fd,->cookie,->set_bands and ->flags members, and then call iv_fd_pump_init on the object.

Conversely, to destroy a struct iv_fd_pump object, call iv_fd_pump_destroy. There are no restrictions on when this function can be called.

A call to iv_fd_pump_pump will attempt to move data from ->from_fd to ->to_fd via an internal buffer associated with the struct iv_fd_pump object.

During calls to iv_fd_pump_init, iv_fd_pump_destroy and iv_fd_pump_pump, the callback function specified by ->set_bands may be invoked (with ->cookie as its first argument), by which iv_fd_pump indicates under which circumstances it wishes for future invocations of iv_fd_pump_pump to be done.

If the pollin argument to ->set_bands is true, there is space left in the internal buffer (and we have not yet seen an en-o-file condition on input), and so you should call iv_fd_pump_pump again when there is a POLLIN condition on ->from_fd.

If the pollout argument to ->set_bands is true, there is data in the internal buffer that could not all be transferred to ->to_fd, and so you should call iv_fd_pump_pump again when there is a POLLOUT condition on ->to_fd.

If IV_FD_PUMP_FLAG_RELAY_EOF is set in ->flags, iv_fd_pump_pump will call shutdown(2) on ->to_fd with SHUT_WR as its second argument upon seeing an en-o-file condition on ->from_fd (but only after all data from the internal buffer has been drained into ->to_fd first).

iv_fd_pump_pump will return -1 if there was an error, 0 if we're done pumping data (meaning that an en-o-file condition was seen on the input file descriptor and that all data in the internal buffer has been drained into the output file descriptor), or 1 if there is more data left to be pumped.

iv_fd_pump_is_done will return a true value if iv_fd_pump_pump has previously returned 0, otherwise it will return false.

Internally, iv_fd_pump_pump will use splice(2) if it is available, otherwise it will fall back to read(2) and write(2).

 

SEE ALSO

ivykis(3), splice(2)


 

Index

NAME
SYNOPSIS
DESCRIPTION
SEE ALSO





Support us on Content Nation
rdf newsfeed | rss newsfeed | Atom newsfeed
- Powered by LeopardCMS - Running on Gentoo -
Copyright 2004-2025 Sascha Nitsch Unternehmensberatung GmbH
Valid XHTML1.1 : Valid CSS
- Level Triple-A Conformance to Web Content Accessibility Guidelines 1.0 -
- Copyright and legal notices -
Time to create this page: 13.6 ms