Home | History | Annotate | Download | only in unix
      1 #!/usr/bin/env perl
      2 # Copyright 2009 The Go Authors. All rights reserved.
      3 # Use of this source code is governed by a BSD-style
      4 # license that can be found in the LICENSE file.
      5 #
      6 # Generate system call table for OpenBSD from master list
      7 # (for example, /usr/src/sys/kern/syscalls.master).
      8 
      9 use strict;
     10 
     11 if($ENV{'GOARCH'} eq "" || $ENV{'GOOS'} eq "") {
     12 	print STDERR "GOARCH or GOOS not defined in environment\n";
     13 	exit 1;
     14 }
     15 
     16 my $command = "mksysnum_openbsd.pl " . join(' ', @ARGV);
     17 
     18 print <<EOF;
     19 // $command
     20 // Code generated by the command above; see README.md. DO NOT EDIT.
     21 
     22 // +build $ENV{'GOARCH'},$ENV{'GOOS'}
     23 
     24 package unix
     25 
     26 const (
     27 EOF
     28 
     29 while(<>){
     30 	if(/^([0-9]+)\s+STD\s+(NOLOCK\s+)?({ \S+\s+\*?(\w+).*)$/){
     31 		my $num = $1;
     32 		my $proto = $3;
     33 		my $name = $4;
     34 		$name =~ y/a-z/A-Z/;
     35 
     36 		# There are multiple entries for enosys and nosys, so comment them out.
     37 		if($name =~ /^SYS_E?NOSYS$/){
     38 			$name = "// $name";
     39 		}
     40 		if($name eq 'SYS_SYS_EXIT'){
     41 			$name = 'SYS_EXIT';
     42 		}
     43 
     44 		print "	$name = $num;  // $proto\n";
     45 	}
     46 }
     47 
     48 print <<EOF;
     49 )
     50 EOF
     51