fdstream.h 2.4 KB
Newer Older
1 2 3
/*
 * fdstream.h: generic streams impl for file descriptors
 *
4
 * Copyright (C) 2009-2012 Red Hat, Inc.
5 6 7 8 9 10 11 12 13 14 15 16
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
17
 * License along with this library.  If not, see
O
Osier Yang 已提交
18
 * <http://www.gnu.org/licenses/>.
19 20 21 22 23 24 25 26
 *
 */


#ifndef __VIR_FDSTREAM_H_
# define __VIR_FDSTREAM_H_

# include "internal.h"
27
# include "vircommand.h"
28

29 30 31 32 33 34 35
/* internal callback, the generic one is used up by daemon stream driver */
/* the close callback is called with fdstream private data locked */
typedef void (*virFDStreamInternalCloseCb)(virStreamPtr st, void *opaque);

typedef void (*virFDStreamInternalCloseCbFreeOpaque)(void *opaque);


36 37 38
/* Only for use by test suite */
void virFDStreamSetIOHelper(const char *path);

39 40 41 42 43 44 45 46 47
int virFDStreamOpen(virStreamPtr st,
                    int fd);

int virFDStreamConnectUNIX(virStreamPtr st,
                           const char *path,
                           bool abstract);

int virFDStreamOpenFile(virStreamPtr st,
                        const char *path,
48 49
                        unsigned long long offset,
                        unsigned long long length,
E
Eric Blake 已提交
50
                        int oflags);
51 52
int virFDStreamCreateFile(virStreamPtr st,
                          const char *path,
53 54
                          unsigned long long offset,
                          unsigned long long length,
55
                          int oflags,
E
Eric Blake 已提交
56
                          mode_t mode);
R
Roman Bogorodskiy 已提交
57 58 59 60 61
int virFDStreamOpenPTY(virStreamPtr st,
                       const char *path,
                       unsigned long long offset,
                       unsigned long long length,
                       int oflags);
62

63 64 65 66
int virFDStreamSetInternalCloseCb(virStreamPtr st,
                                  virFDStreamInternalCloseCb cb,
                                  void *opaque,
                                  virFDStreamInternalCloseCbFreeOpaque fcb);
67
#endif /* __VIR_FDSTREAM_H_ */