cachepc-qemu

Fork of AMDESE/qemu with changes for cachepc side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-qemu
Log | Files | Refs | Submodules | LICENSE | sfeed.txt

channel-file.h (2876B)


      1/*
      2 * QEMU I/O channels files driver
      3 *
      4 * Copyright (c) 2015 Red Hat, Inc.
      5 *
      6 * This library is free software; you can redistribute it and/or
      7 * modify it under the terms of the GNU Lesser General Public
      8 * License as published by the Free Software Foundation; either
      9 * version 2.1 of the License, or (at your option) any later version.
     10 *
     11 * This library is distributed in the hope that it will be useful,
     12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
     13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     14 * Lesser General Public License for more details.
     15 *
     16 * You should have received a copy of the GNU Lesser General Public
     17 * License along with this library; if not, see <http://www.gnu.org/licenses/>.
     18 *
     19 */
     20
     21#ifndef QIO_CHANNEL_FILE_H
     22#define QIO_CHANNEL_FILE_H
     23
     24#include "io/channel.h"
     25#include "qom/object.h"
     26
     27#define TYPE_QIO_CHANNEL_FILE "qio-channel-file"
     28OBJECT_DECLARE_SIMPLE_TYPE(QIOChannelFile, QIO_CHANNEL_FILE)
     29
     30
     31/**
     32 * QIOChannelFile:
     33 *
     34 * The QIOChannelFile object provides a channel implementation
     35 * that is able to perform I/O on block devices, character
     36 * devices, FIFOs, pipes and plain files. While it is technically
     37 * able to work on sockets too on the UNIX platform, this is not
     38 * portable to Windows and lacks some extra sockets specific
     39 * functionality. So the QIOChannelSocket object is recommended
     40 * for that use case.
     41 *
     42 */
     43
     44struct QIOChannelFile {
     45    QIOChannel parent;
     46    int fd;
     47};
     48
     49
     50/**
     51 * qio_channel_file_new_fd:
     52 * @fd: the file descriptor
     53 *
     54 * Create a new IO channel object for a file represented
     55 * by the @fd parameter. @fd can be associated with a
     56 * block device, character device, fifo, pipe, or a
     57 * regular file. For sockets, the QIOChannelSocket class
     58 * should be used instead, as this provides greater
     59 * functionality and cross platform portability.
     60 *
     61 * The channel will own the passed in file descriptor
     62 * and will take responsibility for closing it, so the
     63 * caller must not close it. If appropriate the caller
     64 * should dup() its FD before opening the channel.
     65 *
     66 * Returns: the new channel object
     67 */
     68QIOChannelFile *
     69qio_channel_file_new_fd(int fd);
     70
     71/**
     72 * qio_channel_file_new_path:
     73 * @path: the file path
     74 * @flags: the open flags (O_RDONLY|O_WRONLY|O_RDWR, etc)
     75 * @mode: the file creation mode if O_CREAT is set in @flags
     76 * @errp: pointer to initialized error object
     77 *
     78 * Create a new IO channel object for a file represented
     79 * by the @path parameter. @path can point to any
     80 * type of file on which sequential I/O can be
     81 * performed, whether it be a plain file, character
     82 * device or block device.
     83 *
     84 * Returns: the new channel object
     85 */
     86QIOChannelFile *
     87qio_channel_file_new_path(const char *path,
     88                          int flags,
     89                          mode_t mode,
     90                          Error **errp);
     91
     92#endif /* QIO_CHANNEL_FILE_H */