Skip to content

Commit d7e4036

Browse files
author
pbrook
committed
Fix build failure with old kernel headers (loop.h is incompatible with
glibc headers). git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@4543 c046a42c-6fe2-441c-8c8c-71466251a162
1 parent 225b437 commit d7e4036

File tree

2 files changed

+96
-1
lines changed

2 files changed

+96
-1
lines changed

linux-user/linux_loop.h

+95
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
/* Copied from 2.6.25 kernel headers to avoid problems on older hosts. */
2+
#ifndef _LINUX_LOOP_H
3+
#define _LINUX_LOOP_H
4+
5+
/*
6+
* include/linux/loop.h
7+
*
8+
* Written by Theodore Ts'o, 3/29/93.
9+
*
10+
* Copyright 1993 by Theodore Ts'o. Redistribution of this file is
11+
* permitted under the GNU General Public License.
12+
*/
13+
14+
#define LO_NAME_SIZE 64
15+
#define LO_KEY_SIZE 32
16+
17+
18+
/*
19+
* Loop flags
20+
*/
21+
enum {
22+
LO_FLAGS_READ_ONLY = 1,
23+
LO_FLAGS_USE_AOPS = 2,
24+
LO_FLAGS_AUTOCLEAR = 4,
25+
};
26+
27+
#include <linux/version.h>
28+
#include <asm/posix_types.h> /* for __kernel_old_dev_t */
29+
#include <asm/types.h> /* for __u64 */
30+
31+
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0) /* This is a guess. */
32+
#define __kernel_old_dev_t __kernel_dev_t
33+
#endif
34+
35+
/* Backwards compatibility version */
36+
struct loop_info {
37+
int lo_number; /* ioctl r/o */
38+
__kernel_old_dev_t lo_device; /* ioctl r/o */
39+
unsigned long lo_inode; /* ioctl r/o */
40+
__kernel_old_dev_t lo_rdevice; /* ioctl r/o */
41+
int lo_offset;
42+
int lo_encrypt_type;
43+
int lo_encrypt_key_size; /* ioctl w/o */
44+
int lo_flags; /* ioctl r/o */
45+
char lo_name[LO_NAME_SIZE];
46+
unsigned char lo_encrypt_key[LO_KEY_SIZE]; /* ioctl w/o */
47+
unsigned long lo_init[2];
48+
char reserved[4];
49+
};
50+
51+
struct loop_info64 {
52+
__u64 lo_device; /* ioctl r/o */
53+
__u64 lo_inode; /* ioctl r/o */
54+
__u64 lo_rdevice; /* ioctl r/o */
55+
__u64 lo_offset;
56+
__u64 lo_sizelimit;/* bytes, 0 == max available */
57+
__u32 lo_number; /* ioctl r/o */
58+
__u32 lo_encrypt_type;
59+
__u32 lo_encrypt_key_size; /* ioctl w/o */
60+
__u32 lo_flags; /* ioctl r/o */
61+
__u8 lo_file_name[LO_NAME_SIZE];
62+
__u8 lo_crypt_name[LO_NAME_SIZE];
63+
__u8 lo_encrypt_key[LO_KEY_SIZE]; /* ioctl w/o */
64+
__u64 lo_init[2];
65+
};
66+
67+
/*
68+
* Loop filter types
69+
*/
70+
71+
#define LO_CRYPT_NONE 0
72+
#define LO_CRYPT_XOR 1
73+
#define LO_CRYPT_DES 2
74+
#define LO_CRYPT_FISH2 3 /* Twofish encryption */
75+
#define LO_CRYPT_BLOW 4
76+
#define LO_CRYPT_CAST128 5
77+
#define LO_CRYPT_IDEA 6
78+
#define LO_CRYPT_DUMMY 9
79+
#define LO_CRYPT_SKIPJACK 10
80+
#define LO_CRYPT_CRYPTOAPI 18
81+
#define MAX_LO_CRYPT 20
82+
83+
/*
84+
* IOCTL commands --- we will commandeer 0x4C ('L')
85+
*/
86+
87+
#define LOOP_SET_FD 0x4C00
88+
#define LOOP_CLR_FD 0x4C01
89+
#define LOOP_SET_STATUS 0x4C02
90+
#define LOOP_GET_STATUS 0x4C03
91+
#define LOOP_SET_STATUS64 0x4C04
92+
#define LOOP_GET_STATUS64 0x4C05
93+
#define LOOP_CHANGE_FD 0x4C06
94+
95+
#endif

linux-user/syscall.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@
6868
#include <linux/soundcard.h>
6969
#include <linux/dirent.h>
7070
#include <linux/kd.h>
71-
#include <linux/loop.h>
71+
#include "linux_loop.h"
7272

7373
#include "qemu.h"
7474

0 commit comments

Comments
 (0)