Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
G
golang
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
go
golang
Commits
8dee8729
Commit
8dee8729
authored
Mar 23, 2011
by
Russ Cox
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
runtime: os-specific types and code for setitimer
R=r CC=golang-dev
https://golang.org/cl/4273097
parent
ccdbb8a6
Show whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
158 additions
and
22 deletions
+158
-22
defs.h
src/pkg/runtime/darwin/386/defs.h
+22
-7
sys.s
src/pkg/runtime/darwin/386/sys.s
+5
-0
defs.h
src/pkg/runtime/darwin/amd64/defs.h
+25
-9
sys.s
src/pkg/runtime/darwin/amd64/sys.s
+9
-1
defs.c
src/pkg/runtime/darwin/defs.c
+6
-0
os.h
src/pkg/runtime/darwin/os.h
+4
-0
sys.s
src/pkg/runtime/freebsd/386/sys.s
+5
-0
sys.s
src/pkg/runtime/freebsd/amd64/sys.s
+8
-0
defs.c
src/pkg/runtime/freebsd/defs.c
+5
-0
os.h
src/pkg/runtime/freebsd/os.h
+4
-0
defs.h
src/pkg/runtime/linux/386/defs.h
+11
-1
sys.s
src/pkg/runtime/linux/386/sys.s
+9
-0
defs.h
src/pkg/runtime/linux/amd64/defs.h
+11
-2
sys.s
src/pkg/runtime/linux/amd64/sys.s
+8
-0
sys.s
src/pkg/runtime/linux/arm/sys.s
+9
-0
defs.c
src/pkg/runtime/linux/defs.c
+7
-0
defs2.c
src/pkg/runtime/linux/defs2.c
+6
-2
os.h
src/pkg/runtime/linux/os.h
+4
-0
No files found.
src/pkg/runtime/darwin/386/defs.h
View file @
8dee8729
...
...
@@ -89,6 +89,9 @@ enum {
BUS_OBJERR
=
0x3
,
SEGV_MAPERR
=
0x1
,
SEGV_ACCERR
=
0x2
,
ITIMER_REAL
=
0
,
ITIMER_VIRTUAL
=
0x1
,
ITIMER_PROF
=
0x2
,
};
// Types
...
...
@@ -139,14 +142,14 @@ struct StackT {
typedef
union
Sighandler
Sighandler
;
union
Sighandler
{
void
*
__sa_handler
;
void
*
__sa_sigaction
;
uint32
__sa_handler
;
uint32
__sa_sigaction
;
};
typedef
struct
Sigaction
Sigaction
;
struct
Sigaction
{
Sighandler
__sigaction_u
;
void
*
sa_tramp
;
uint32
sa_tramp
;
uint32
sa_mask
;
int32
sa_flags
;
};
...
...
@@ -171,14 +174,26 @@ struct Siginfo {
uint32
__pad
[
7
];
};
typedef
struct
Timeval
Timeval
;
struct
Timeval
{
int32
tv_sec
;
int32
tv_usec
;
};
typedef
struct
Itimerval
Itimerval
;
struct
Itimerval
{
Timeval
it_interval
;
Timeval
it_value
;
};
typedef
struct
FPControl
FPControl
;
struct
FPControl
{
byte
pad0
[
2
];
byte
pad
_godefs_
0
[
2
];
};
typedef
struct
FPStatus
FPStatus
;
struct
FPStatus
{
byte
pad0
[
2
];
byte
pad
_godefs_
0
[
2
];
};
typedef
struct
RegMMST
RegMMST
;
...
...
@@ -214,7 +229,7 @@ struct Regs {
typedef
struct
FloatState
FloatState
;
struct
FloatState
{
int32
fpu_reserved
[
2
]
;
uint64
fpu_reserved
;
FPControl
fpu_fcw
;
FPStatus
fpu_fsw
;
uint8
fpu_ftw
;
...
...
@@ -267,7 +282,7 @@ struct Ucontext {
int32
uc_onstack
;
uint32
uc_sigmask
;
StackT
uc_stack
;
Ucontext
*
uc_link
;
uint32
uc_link
;
uint32
uc_mcsize
;
Mcontext
*
uc_mcontext
;
};
...
...
src/pkg/runtime/darwin/386/sys.s
View file @
8dee8729
...
...
@@ -45,6 +45,11 @@ TEXT runtime·munmap(SB),7,$0
CALL runtime·notok(SB)
RET
TEXT runtime·setitimer(SB),7,$0
MOVL $83, AX
INT $0x80
RET
// void gettime(int64 *sec, int32 *usec)
TEXT runtime·gettime(SB), 7, $32
LEAL 12(SP), AX // must be non-nil, unused
...
...
src/pkg/runtime/darwin/amd64/defs.h
View file @
8dee8729
...
...
@@ -89,6 +89,9 @@ enum {
BUS_OBJERR
=
0x3
,
SEGV_MAPERR
=
0x1
,
SEGV_ACCERR
=
0x2
,
ITIMER_REAL
=
0
,
ITIMER_VIRTUAL
=
0x1
,
ITIMER_PROF
=
0x2
,
};
// Types
...
...
@@ -135,19 +138,19 @@ struct StackT {
void
*
ss_sp
;
uint64
ss_size
;
int32
ss_flags
;
byte
pad0
[
4
];
byte
pad
_godefs_
0
[
4
];
};
typedef
union
Sighandler
Sighandler
;
union
Sighandler
{
void
*
__sa_handler
;
void
*
__sa_sigaction
;
uint64
__sa_handler
;
uint64
__sa_sigaction
;
};
typedef
struct
Sigaction
Sigaction
;
struct
Sigaction
{
Sighandler
__sigaction_u
;
void
*
sa_tramp
;
uint64
sa_tramp
;
uint32
sa_mask
;
int32
sa_flags
;
};
...
...
@@ -172,14 +175,27 @@ struct Siginfo {
uint64
__pad
[
7
];
};
typedef
struct
Timeval
Timeval
;
struct
Timeval
{
int64
tv_sec
;
int32
tv_usec
;
byte
pad_godefs_0
[
4
];
};
typedef
struct
Itimerval
Itimerval
;
struct
Itimerval
{
Timeval
it_interval
;
Timeval
it_value
;
};
typedef
struct
FPControl
FPControl
;
struct
FPControl
{
byte
pad0
[
2
];
byte
pad
_godefs_
0
[
2
];
};
typedef
struct
FPStatus
FPStatus
;
struct
FPStatus
{
byte
pad0
[
2
];
byte
pad
_godefs_
0
[
2
];
};
typedef
struct
RegMMST
RegMMST
;
...
...
@@ -220,7 +236,7 @@ struct Regs {
typedef
struct
FloatState
FloatState
;
struct
FloatState
{
int32
fpu_reserved
[
2
]
;
uint64
fpu_reserved
;
FPControl
fpu_fcw
;
FPStatus
fpu_fsw
;
uint8
fpu_ftw
;
...
...
@@ -274,7 +290,7 @@ struct Mcontext {
ExceptionState
es
;
Regs
ss
;
FloatState
fs
;
byte
pad0
[
4
];
byte
pad
_godefs_
0
[
4
];
};
typedef
struct
Ucontext
Ucontext
;
...
...
@@ -282,7 +298,7 @@ struct Ucontext {
int32
uc_onstack
;
uint32
uc_sigmask
;
StackT
uc_stack
;
Ucontext
*
uc_link
;
uint64
uc_link
;
uint64
uc_mcsize
;
Mcontext
*
uc_mcontext
;
};
...
...
src/pkg/runtime/darwin/amd64/sys.s
View file @
8dee8729
...
...
@@ -38,11 +38,19 @@ TEXT runtime·write(SB),7,$0
SYSCALL
RET
TEXT runtime·setitimer(SB), 7, $0
MOVL 8(SP), DI
MOVQ 16(SP), SI
MOVQ 24(SP), DX
MOVL $(0x2000000+83), AX // syscall entry
SYSCALL
RET
// void gettime(int64 *sec, int32 *usec)
TEXT runtime·gettime(SB), 7, $32
MOVQ SP, DI // must be non-nil, unused
MOVQ $0, SI
MOV
Q
$(0x2000000+116), AX
MOV
L
$(0x2000000+116), AX
SYSCALL
MOVQ sec+0(FP), DI
MOVQ AX, (DI)
...
...
src/pkg/runtime/darwin/defs.c
View file @
8dee8729
...
...
@@ -116,6 +116,10 @@ enum {
$
SEGV_MAPERR
=
SEGV_MAPERR
,
$
SEGV_ACCERR
=
SEGV_ACCERR
,
$
ITIMER_REAL
=
ITIMER_REAL
,
$
ITIMER_VIRTUAL
=
ITIMER_VIRTUAL
,
$
ITIMER_PROF
=
ITIMER_PROF
,
};
typedef
mach_msg_body_t
$
MachBody
;
...
...
@@ -130,6 +134,8 @@ typedef struct __sigaction $Sigaction; // used in syscalls
// typedef struct sigaction $Sigaction; // used by the C library
typedef
union
sigval
$
Sigval
;
typedef
siginfo_t
$
Siginfo
;
typedef
struct
timeval
$
Timeval
;
typedef
struct
itimerval
$
Itimerval
;
typedef
struct
fp_control
$
FPControl
;
typedef
struct
fp_status
$
FPStatus
;
...
...
src/pkg/runtime/darwin/os.h
View file @
8dee8729
...
...
@@ -2,6 +2,9 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
#define SIG_DFL ((void*)0)
#define SIG_IGN ((void*)1)
int32
runtime
·
bsdthread_create
(
void
*
,
M
*
,
G
*
,
void
(
*
)(
void
));
void
runtime
·
bsdthread_register
(
void
);
int32
runtime
·
mach_msg_trap
(
MachHeader
*
,
int32
,
uint32
,
uint32
,
uint32
,
uint32
,
uint32
);
...
...
@@ -23,3 +26,4 @@ struct StackT;
void
runtime
·
sigaltstack
(
struct
StackT
*
,
struct
StackT
*
);
void
runtime
·
sigtramp
(
void
);
void
runtime
·
sigpanic
(
void
);
void
runtime
·
setitimer
(
int32
,
Itimerval
*
,
Itimerval
*
);
src/pkg/runtime/freebsd/386/sys.s
View file @
8dee8729
...
...
@@ -87,6 +87,11 @@ TEXT runtime·munmap(SB),7,$-4
CALL runtime·notok(SB)
RET
TEXT runtime·setitimer(SB), 7, $-4
MOVL $83, AX
INT $0x80
RET
TEXT runtime·gettime(SB), 7, $32
MOVL $116, AX
LEAL 12(SP), BX
...
...
src/pkg/runtime/freebsd/amd64/sys.s
View file @
8dee8729
...
...
@@ -65,6 +65,14 @@ TEXT runtime·write(SB),7,$-8
SYSCALL
RET
TEXT runtime·setitimer(SB), 7, $-8
MOVL 8(SP), DI
MOVQ 16(SP), SI
MOVQ 24(SP), DX
MOVL $83, AX
SYSCALL
RET
TEXT runtime·gettime(SB), 7, $32
MOVL $116, AX
LEAQ 8(SP), DI
...
...
src/pkg/runtime/freebsd/defs.c
View file @
8dee8729
...
...
@@ -86,6 +86,10 @@ enum {
$
SEGV_MAPERR
=
SEGV_MAPERR
,
$
SEGV_ACCERR
=
SEGV_ACCERR
,
$
ITIMER_REAL
=
ITIMER_REAL
,
$
ITIMER_VIRTUAL
=
ITIMER_VIRTUAL
,
$
ITIMER_PROF
=
ITIMER_PROF
,
};
typedef
struct
rtprio
$
Rtprio
;
...
...
@@ -99,3 +103,4 @@ typedef siginfo_t $Siginfo;
typedef
mcontext_t
$
Mcontext
;
typedef
ucontext_t
$
Ucontext
;
typedef
struct
itimerval
$
Itimerval
;
src/pkg/runtime/freebsd/os.h
View file @
8dee8729
#define SIG_DFL ((void*)0)
#define SIG_IGN ((void*)1)
int32
runtime
·
thr_new
(
ThrParam
*
,
int32
);
void
runtime
·
sigpanic
(
void
);
void
runtime
·
sigaltstack
(
Sigaltstack
*
,
Sigaltstack
*
);
struct
sigaction
;
void
runtime
·
sigaction
(
int32
,
struct
sigaction
*
,
struct
sigaction
*
);
void
runtiem
·
setitimerval
(
int32
,
Itimerval
*
,
Itimerval
*
);
src/pkg/runtime/linux/386/defs.h
View file @
8dee8729
...
...
@@ -58,6 +58,9 @@ enum {
BUS_OBJERR
=
0x3
,
SEGV_MAPERR
=
0x1
,
SEGV_ACCERR
=
0x2
,
ITIMER_REAL
=
0
,
ITIMER_VIRTUAL
=
0x1
,
ITIMER_PROF
=
0x2
,
};
// Types
...
...
@@ -98,7 +101,8 @@ struct Fpstate {
uint32
reserved
;
Fpxreg
_fxsr_st
[
8
];
Xmmreg
_xmm
[
8
];
uint32
padding
[
56
];
uint32
padding1
[
44
];
byte
Pad_godefs_0
[
48
];
};
typedef
struct
Timespec
Timespec
;
...
...
@@ -176,4 +180,10 @@ struct Ucontext {
Sigcontext
uc_mcontext
;
uint32
uc_sigmask
;
};
typedef
struct
Itimerval
Itimerval
;
struct
Itimerval
{
Timeval
it_interval
;
Timeval
it_value
;
};
#pragma pack off
src/pkg/runtime/linux/386/sys.s
View file @
8dee8729
...
...
@@ -30,6 +30,15 @@ TEXT runtime·write(SB),7,$0
INT $0x80
RET
TEXT runtime·setitimer(SB),7,$0-24
MOVL $104, AX // syscall - setitimer
MOVL 4(SP), BX
MOVL 8(SP), CX
MOVL 12(SP), DX
INT $0x80
RET
TEXT runtime·gettime(SB), 7, $32
MOVL $78, AX // syscall - gettimeofday
LEAL 8(SP), BX
...
...
src/pkg/runtime/linux/amd64/defs.h
View file @
8dee8729
...
...
@@ -58,6 +58,9 @@ enum {
BUS_OBJERR
=
0x3
,
SEGV_MAPERR
=
0x1
,
SEGV_ACCERR
=
0x2
,
ITIMER_REAL
=
0
,
ITIMER_VIRTUAL
=
0x1
,
ITIMER_PROF
=
0x2
,
};
// Types
...
...
@@ -88,9 +91,15 @@ struct Siginfo {
int32
si_signo
;
int32
si_errno
;
int32
si_code
;
byte
pad0
[
4
];
byte
pad
_godefs_
0
[
4
];
byte
_sifields
[
112
];
};
typedef
struct
Itimerval
Itimerval
;
struct
Itimerval
{
Timeval
it_interval
;
Timeval
it_value
;
};
#pragma pack off
// godefs -f -m64 defs1.c
...
...
@@ -170,7 +179,7 @@ typedef struct Sigaltstack Sigaltstack;
struct
Sigaltstack
{
void
*
ss_sp
;
int32
ss_flags
;
byte
pad0
[
4
];
byte
pad
_godefs_
0
[
4
];
uint64
ss_size
;
};
...
...
src/pkg/runtime/linux/amd64/sys.s
View file @
8dee8729
...
...
@@ -36,6 +36,14 @@ TEXT runtime·write(SB),7,$0-24
SYSCALL
RET
TEXT runtime·setitimer(SB),7,$0-24
MOVL 8(SP), DI
MOVQ 16(SP), SI
MOVQ 24(SP), DX
MOVL $38, AX // syscall entry
SYSCALL
RET
TEXT runtime·gettime(SB), 7, $32
LEAQ 8(SP), DI
MOVQ $0, SI
...
...
src/pkg/runtime/linux/arm/sys.s
View file @
8dee8729
...
...
@@ -26,6 +26,7 @@
#define SYS_futex (SYS_BASE + 240)
#define SYS_exit_group (SYS_BASE + 248)
#define SYS_munmap (SYS_BASE + 91)
#define SYS_setitimer (SYS_BASE + 104)
#define ARM_BASE (SYS_BASE + 0x0f0000)
#define SYS_ARM_cacheflush (ARM_BASE + 2)
...
...
@@ -72,6 +73,14 @@ TEXT runtime·munmap(SB),7,$0
SWI $0
RET
TEXT runtime·getitimer(SB),7,$0
MOVW 0(FP), R0
MOVW 4(FP), R1
MOWW 8(FP), R2
MOVW $SYS_setitimer, R7
SWI $0
RET
TEXT runtime·gettime(SB),7,$32
/* dummy version - return 0,0 */
MOVW $0, R1
...
...
src/pkg/runtime/linux/defs.c
View file @
8dee8729
...
...
@@ -15,6 +15,8 @@
// headers for things like ucontext_t, so that happens in
// a separate file, defs1.c.
#include <asm/posix_types.h>
#define size_t __kernel_size_t
#include <asm/signal.h>
#include <asm/siginfo.h>
#include <asm/mman.h>
...
...
@@ -80,9 +82,14 @@ enum {
$
SEGV_MAPERR
=
SEGV_MAPERR
,
$
SEGV_ACCERR
=
SEGV_ACCERR
,
$
ITIMER_REAL
=
ITIMER_REAL
,
$
ITIMER_VIRTUAL
=
ITIMER_VIRTUAL
,
$
ITIMER_PROF
=
ITIMER_PROF
,
};
typedef
struct
timespec
$
Timespec
;
typedef
struct
timeval
$
Timeval
;
typedef
struct
sigaction
$
Sigaction
;
typedef
siginfo_t
$
Siginfo
;
typedef
struct
itimerval
$
Itimerval
;
src/pkg/runtime/linux/defs2.c
View file @
8dee8729
...
...
@@ -8,7 +8,7 @@
-f -I/home/rsc/pub/linux-2.6/arch/x86/include \
-f -I/home/rsc/pub/linux-2.6/include \
-f -D_LOOSE_KERNEL_NAMES \
-f -D__ARCH_SI_UID_T
=
__kernel_uid32_t \
-f -D__ARCH_SI_UID_T
'='
__kernel_uid32_t \
defs2.c >386/defs.h
* The asm header tricks we have to use for Linux on amd64
...
...
@@ -100,6 +100,10 @@ enum {
$
SEGV_MAPERR
=
SEGV_MAPERR
,
$
SEGV_ACCERR
=
SEGV_ACCERR
,
$
ITIMER_REAL
=
ITIMER_REAL
,
$
ITIMER_VIRTUAL
=
ITIMER_VIRTUAL
,
$
ITIMER_PROF
=
ITIMER_PROF
,
};
typedef
struct
_fpreg
$
Fpreg
;
...
...
@@ -113,4 +117,4 @@ typedef siginfo_t $Siginfo;
typedef
struct
sigaltstack
$
Sigaltstack
;
typedef
struct
sigcontext
$
Sigcontext
;
typedef
struct
ucontext
$
Ucontext
;
typedef
struct
itimerval
$
Itimerval
;
src/pkg/runtime/linux/os.h
View file @
8dee8729
...
...
@@ -2,6 +2,9 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
#define SIG_DFL ((void*)0)
#define SIG_IGN ((void*)1)
// Linux-specific system calls
int32
runtime
·
futex
(
uint32
*
,
int32
,
uint32
,
Timespec
*
,
uint32
*
,
uint32
);
int32
runtime
·
clone
(
int32
,
void
*
,
M
*
,
G
*
,
void
(
*
)(
void
));
...
...
@@ -11,3 +14,4 @@ void runtime·rt_sigaction(uintptr, struct Sigaction*, void*, uintptr);
void
runtime
·
sigaltstack
(
Sigaltstack
*
,
Sigaltstack
*
);
void
runtime
·
sigpanic
(
void
);
void
runtime
·
setitimer
(
int32
,
Itimerval
*
,
Itimerval
*
);
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment