mirror of
https://github.com/golang/go
synced 2024-11-25 06:07:58 -07:00
make readfile work on darwin
parameterize the system interface a bit SVN=124981
This commit is contained in:
parent
2b8db5a439
commit
66b240c7a4
@ -19,7 +19,8 @@ LIBOFILES=\
|
||||
sys_file.$O\
|
||||
|
||||
OFILES=$(RT0OFILES) $(LIBOFILES)
|
||||
HFILES=runtime.h
|
||||
OS_H=$(GOARCH)_$(GOOS).h
|
||||
HFILES=runtime.h $(OS_H_)
|
||||
|
||||
install: rt0 $(LIB)
|
||||
cp $(RT0OFILES) $(GOROOT)/lib
|
||||
@ -38,5 +39,8 @@ clean:
|
||||
%.$O: %.c
|
||||
$(CC) $<
|
||||
|
||||
sys_file.$O: sys_file.c $(OS_H)
|
||||
$(CC) -D$(GOARCH)_$(GOOS) $<
|
||||
|
||||
%.$O: %.s
|
||||
$(AS) $<
|
||||
|
43
src/runtime/amd64_darwin.h
Normal file
43
src/runtime/amd64_darwin.h
Normal file
@ -0,0 +1,43 @@
|
||||
// Copyright 2009 The Go Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
/*
|
||||
* System structs for Darwin, amd64
|
||||
*/
|
||||
|
||||
typedef uint32 dev_t;
|
||||
typedef uint64 ino_t;
|
||||
typedef uint16 mode_t;
|
||||
typedef uint16 nlink_t;
|
||||
typedef uint32 uid_t;
|
||||
typedef uint32 gid_t;
|
||||
typedef int64 off_t;
|
||||
typedef int32 blksize_t;
|
||||
typedef int64 blkcnt_t;
|
||||
typedef int64 time_t;
|
||||
|
||||
struct timespec {
|
||||
time_t tv_sec;
|
||||
int64 tv_nsec;
|
||||
};
|
||||
|
||||
struct stat { // really a stat64
|
||||
dev_t st_dev;
|
||||
mode_t st_mode;
|
||||
nlink_t st_nlink;
|
||||
ino_t st_ino;
|
||||
uid_t st_uid;
|
||||
gid_t st_gid;
|
||||
dev_t st_rdev;
|
||||
struct timespec st_atimespec;
|
||||
struct timespec st_mtimespec;
|
||||
struct timespec st_ctimespec;
|
||||
struct timespec st_birthtimespec;
|
||||
off_t st_size;
|
||||
blkcnt_t st_blocks;
|
||||
blksize_t st_blksize;
|
||||
uint32 st_flags;
|
||||
uint32 st_gen;
|
||||
int64 st_qspare[2];
|
||||
};
|
40
src/runtime/amd64_linux.h
Normal file
40
src/runtime/amd64_linux.h
Normal file
@ -0,0 +1,40 @@
|
||||
// Copyright 2009 The Go Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
/*
|
||||
* System structs for Darwin, amd64
|
||||
*/
|
||||
|
||||
typedef uint64 dev_t;
|
||||
typedef uint64 ino_t;
|
||||
typedef uint32 mode_t;
|
||||
typedef uint64 nlink_t;
|
||||
typedef uint32 uid_t;
|
||||
typedef uint32 gid_t;
|
||||
typedef int64 off_t;
|
||||
typedef int64 blksize_t;
|
||||
typedef int64 blkcnt_t;
|
||||
typedef int64 time_t;
|
||||
|
||||
struct timespec {
|
||||
time_t tv_sec;
|
||||
int64 tv_nsec;
|
||||
};
|
||||
|
||||
struct stat {
|
||||
dev_t st_dev; /* ID of device containing file */
|
||||
ino_t st_ino; /* inode number */
|
||||
mode_t st_mode; /* protection */
|
||||
nlink_t st_nlink; /* number of hard links */
|
||||
uid_t st_uid; /* user ID of owner */
|
||||
gid_t st_gid; /* group ID of owner */
|
||||
dev_t st_rdev;
|
||||
dev_t st_rdev; /* device ID (if special file) */
|
||||
struct timespec st_atime; /* time of last access */
|
||||
struct timespec st_mtime; /* time of last modification */
|
||||
struct timespec st_ctime; /* time of last status change */
|
||||
off_t st_size; /* total size, in bytes */
|
||||
blkcnt_t st_blocks; /* number of blocks allocated */
|
||||
blksize_t st_blksize; /* blocksize for filesystem I/O */
|
||||
};
|
@ -60,20 +60,21 @@ TEXT sys·write(SB),1,$-8
|
||||
TEXT open(SB),1,$-8
|
||||
MOVQ 8(SP), DI
|
||||
MOVL 16(SP), SI
|
||||
MOVL $5, AX // syscall entry
|
||||
MOVQ $0, R10
|
||||
MOVL $(0x2000000+5), AX // syscall entry
|
||||
SYSCALL
|
||||
RET
|
||||
|
||||
TEXT close(SB),1,$-8
|
||||
MOVL 8(SP), DI
|
||||
MOVL $6, AX // syscall entry
|
||||
MOVL $(0x2000000+6), AX // syscall entry
|
||||
SYSCALL
|
||||
RET
|
||||
|
||||
TEXT fstat(SB),1,$-8
|
||||
MOVL 8(SP), DI
|
||||
MOVQ 16(SP), SI
|
||||
MOVL $189, AX // syscall entry
|
||||
MOVL $(0x2000000+339), AX // syscall entry; really fstat64
|
||||
SYSCALL
|
||||
RET
|
||||
|
||||
@ -81,7 +82,7 @@ TEXT read(SB),1,$-8
|
||||
MOVL 8(SP), DI
|
||||
MOVQ 16(SP), SI
|
||||
MOVL 24(SP), DX
|
||||
MOVL $3, AX // syscall entry
|
||||
MOVL $(0x2000000+3), AX // syscall entry
|
||||
SYSCALL
|
||||
RET
|
||||
|
||||
|
@ -3,39 +3,7 @@
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
#include "runtime.h"
|
||||
|
||||
typedef uint64 dev_t;
|
||||
typedef uint64 ino_t;
|
||||
typedef uint32 mode_t;
|
||||
typedef uint64 nlink_t;
|
||||
typedef uint32 uid_t;
|
||||
typedef uint32 gid_t;
|
||||
typedef int64 off_t;
|
||||
typedef int64 blksize_t;
|
||||
typedef int64 blkcnt_t;
|
||||
typedef int64 time_t;
|
||||
|
||||
struct timespec {
|
||||
time_t tv_sec;
|
||||
int64 tv_nsec;
|
||||
};
|
||||
|
||||
struct stat {
|
||||
dev_t st_dev; /* ID of device containing file */
|
||||
ino_t st_ino; /* inode number */
|
||||
nlink_t st_nlink; /* number of hard links */
|
||||
mode_t st_mode; /* protection */
|
||||
uid_t st_uid; /* user ID of owner */
|
||||
gid_t st_gid; /* group ID of owner */
|
||||
int32 pad0;
|
||||
dev_t st_rdev; /* device ID (if special file) */
|
||||
off_t st_size; /* total size, in bytes */
|
||||
blksize_t st_blksize; /* blocksize for filesystem I/O */
|
||||
blkcnt_t st_blocks; /* number of blocks allocated */
|
||||
struct timespec st_atime; /* time of last access */
|
||||
struct timespec st_mtime; /* time of last modification */
|
||||
struct timespec st_ctime; /* time of last status change */
|
||||
};
|
||||
#include "sys_structs.h"
|
||||
|
||||
void
|
||||
sys·readfile(string filein, string fileout, bool okout)
|
||||
|
13
src/runtime/sys_structs.h
Normal file
13
src/runtime/sys_structs.h
Normal file
@ -0,0 +1,13 @@
|
||||
// Copyright 2009 The Go Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
#ifdef amd64_linux
|
||||
#include "amd64_linux.h"
|
||||
#else
|
||||
#ifdef amd64_darwin
|
||||
#include "amd64_darwin.h"
|
||||
#endif
|
||||
#else
|
||||
You_need_to_write_the_syscall_header
|
||||
#endif
|
Loading…
Reference in New Issue
Block a user