net: tcp: Fix TSO for incoming connections
[akaros.git] / kern / include / cpio.h
1 #pragma once
2
3 #define CPIO_NEW_ASCII  070701
4 #define CPIO_CRC_ASCII  070702
5 /* Mode bits */
6 #define CPIO_FILE_MASK  0170000
7 #define CPIO_SOCKET             0120000
8 #define CPIO_SYMLINK    0120000
9 #define CPIO_REG_FILE   0100000
10 #define CPIO_BLK_SPEC   0060000
11 #define CPIO_DIRECTORY  0040000
12 #define CPIO_CHAR_SPEC  0020000
13 #define CPIO_FIFO_PIPE  0010000
14 #define CPIO_SUID               0004000
15 #define CPIO_SGID               0002000
16 #define CPIO_STICKY             0001000
17 #define CPIO_PERM_MASK  0000777
18
19 struct cpio_newc_header
20 {
21         char c_magic[6];
22         char c_ino[8];
23         char c_mode[8];
24         char c_uid[8];
25         char c_gid[8];
26         char c_nlink[8];
27         char c_mtime[8];
28         char c_filesize[8];     /* must be 0 for FIFOs and directories */
29         char c_dev_maj[8];
30         char c_dev_min[8];
31         char c_rdev_maj[8];     /* only valid for chr and blk special files */
32         char c_rdev_min[8];     /* only valid for chr and blk special files */
33         char c_namesize[8];     /* count includes terminating NUL in pathname */
34         char c_chksum[8];       /* for CRC format the sum of all the bytes in the file*/
35 };
36
37 /* Header passed around when initing a FS based on a CPIO archive */
38 struct cpio_bin_hdr
39 {
40         unsigned long   c_ino;  /* FYI: we ignore this */
41         int                             c_mode;
42         uid_t                   c_uid;
43         gid_t                   c_gid;
44         unsigned int    c_nlink; /* not sure how this makes CPIO-sense, ignoring */
45         unsigned long   c_mtime;
46         size_t                  c_filesize;
47         unsigned long   c_dev_maj;
48         unsigned long   c_dev_min;
49         unsigned long   c_rdev_maj;
50         unsigned long   c_rdev_min;
51         char                    *c_filename;
52         void                    *c_filestart;
53 };
54
55 void parse_cpio_entries(struct super_block *sb, void *cpio_b);
56
57 /* Helper function: converts src non-null-term string's n bytes from base 16 to
58  * a long, using buf as space.  Make sure buf is n + 1. */
59 static inline long cpio_strntol(char *buf, char *src, size_t n)
60 {
61         memcpy(buf, src, n);
62         buf[n] = '\0';
63         return strtol(buf, 0, 16);
64 }