]> git.ozlabs.org Git - yaboot.git/blobdiff - include/file.h
Commit yaboot 1.3.0
[yaboot.git] / include / file.h
diff --git a/include/file.h b/include/file.h
new file mode 100644 (file)
index 0000000..c68d84f
--- /dev/null
@@ -0,0 +1,90 @@
+/*
+    Definitions for talking to the Open Firmware PROM on
+    Power Macintosh computers.
+
+    Copyright (C) 1999 Benjamin Herrenschmidt
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program 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 General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+*/
+
+#ifndef FILE_H
+#define FILE_H
+
+#include "types.h"
+#include "stddef.h"
+#include "prom.h"
+
+struct boot_file_t;
+#include "fs.h"
+
+#define FILE_MAX_PATH          1024
+
+/* Simple error codes */
+#define FILE_ERR_OK            0
+#define FILE_ERR_EOF           -1
+#define FILE_ERR_NOTFOUND      -2
+#define FILE_CANT_SEEK         -3
+#define FILE_IOERR             -4
+#define FILE_BAD_PATH          -5
+#define FILE_ERR_BAD_TYPE       -6
+#define FILE_ERR_BAD_FSYS       -7
+#define FILE_ERR_SYMLINK_LOOP   -8
+#define FILE_ERR_LENGTH         -9
+
+/* Device kind */
+#define FILE_DEVICE_BLOCK      1
+#define FILE_DEVICE_NET                2
+
+struct boot_fspec_t {
+       char*   dev;            /* OF device path */
+       int     part;           /* Partition number or -1 */
+       char*   file;           /* File path */
+};
+
+struct boot_file_t {
+
+       /* File access methods */
+        const struct fs_t *fs;
+
+       /* Filesystem private (to be broken once we have a
+        * better malloc'ator)
+        */
+
+       int             device_kind;
+       ihandle         of_device;
+       ino_t           inode;
+       __u64           pos;
+       unsigned char*  buffer;
+       __u64           len;
+//     unsigned int    dev_blk_size;
+//     unsigned int    part_start;
+//     unsigned int    part_count;
+};
+
+extern int open_file(  const struct boot_fspec_t*      spec,
+                       struct boot_file_t*             file);
+
+extern int validate_fspec(
+                       struct boot_fspec_t*    spec,
+                       char*                   default_device,
+                       int                     default_part);
+extern char *parse_device_path(
+                       char*                   of_device,
+                       char**                  file_spec,
+                       int*                    partition);
+
+
+
+#endif