Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/arch/powerpc/include/asm/compat.h
26481 views
1
/* SPDX-License-Identifier: GPL-2.0 */
2
#ifndef _ASM_POWERPC_COMPAT_H
3
#define _ASM_POWERPC_COMPAT_H
4
#ifdef __KERNEL__
5
/*
6
* Architecture specific compatibility types
7
*/
8
#include <linux/types.h>
9
#include <linux/sched.h>
10
11
#define compat_ipc_pid_t compat_ipc_pid_t
12
typedef u16 compat_ipc_pid_t;
13
14
#define compat_ipc64_perm compat_ipc64_perm
15
16
#include <asm-generic/compat.h>
17
18
#ifdef __BIG_ENDIAN__
19
#define COMPAT_UTS_MACHINE "ppc\0\0"
20
#else
21
#define COMPAT_UTS_MACHINE "ppcle\0\0"
22
#endif
23
24
typedef s16 compat_nlink_t;
25
26
struct compat_stat {
27
compat_dev_t st_dev;
28
compat_ino_t st_ino;
29
compat_mode_t st_mode;
30
compat_nlink_t st_nlink;
31
__compat_uid32_t st_uid;
32
__compat_gid32_t st_gid;
33
compat_dev_t st_rdev;
34
compat_off_t st_size;
35
compat_off_t st_blksize;
36
compat_off_t st_blocks;
37
old_time32_t st_atime;
38
u32 st_atime_nsec;
39
old_time32_t st_mtime;
40
u32 st_mtime_nsec;
41
old_time32_t st_ctime;
42
u32 st_ctime_nsec;
43
u32 __unused4[2];
44
};
45
46
/*
47
* ipc64_perm is actually 32/64bit clean but since the compat layer refers to
48
* it we may as well define it.
49
*/
50
struct compat_ipc64_perm {
51
compat_key_t key;
52
__compat_uid_t uid;
53
__compat_gid_t gid;
54
__compat_uid_t cuid;
55
__compat_gid_t cgid;
56
compat_mode_t mode;
57
unsigned int seq;
58
unsigned int __pad2;
59
unsigned long __unused1; /* yes they really are 64bit pads */
60
unsigned long __unused2;
61
};
62
63
struct compat_semid64_ds {
64
struct compat_ipc64_perm sem_perm;
65
unsigned int sem_otime_high;
66
unsigned int sem_otime;
67
unsigned int sem_ctime_high;
68
unsigned int sem_ctime;
69
compat_ulong_t sem_nsems;
70
compat_ulong_t __unused3;
71
compat_ulong_t __unused4;
72
};
73
74
struct compat_msqid64_ds {
75
struct compat_ipc64_perm msg_perm;
76
unsigned int msg_stime_high;
77
unsigned int msg_stime;
78
unsigned int msg_rtime_high;
79
unsigned int msg_rtime;
80
unsigned int msg_ctime_high;
81
unsigned int msg_ctime;
82
compat_ulong_t msg_cbytes;
83
compat_ulong_t msg_qnum;
84
compat_ulong_t msg_qbytes;
85
compat_pid_t msg_lspid;
86
compat_pid_t msg_lrpid;
87
compat_ulong_t __unused4;
88
compat_ulong_t __unused5;
89
};
90
91
struct compat_shmid64_ds {
92
struct compat_ipc64_perm shm_perm;
93
unsigned int shm_atime_high;
94
unsigned int shm_atime;
95
unsigned int shm_dtime_high;
96
unsigned int shm_dtime;
97
unsigned int shm_ctime_high;
98
unsigned int shm_ctime;
99
unsigned int __unused4;
100
compat_size_t shm_segsz;
101
compat_pid_t shm_cpid;
102
compat_pid_t shm_lpid;
103
compat_ulong_t shm_nattch;
104
compat_ulong_t __unused5;
105
compat_ulong_t __unused6;
106
};
107
108
static inline int is_compat_task(void)
109
{
110
return is_32bit_task();
111
}
112
113
#endif /* __KERNEL__ */
114
#endif /* _ASM_POWERPC_COMPAT_H */
115
116