github.com/mergetb/u-root@v4.0.1-0.20190719191109-b70b86b73e5b+incompatible/pkg/abi/abi.go (about)

     1  // Copyright 2018 Google LLC.
     2  //
     3  // Licensed under the Apache License, Version 2.0 (the "License");
     4  // you may not use this file except in compliance with the License.
     5  // You may obtain a copy of the License at
     6  //
     7  //     http://www.apache.org/licenses/LICENSE-2.0
     8  //
     9  // Unless required by applicable law or agreed to in writing, software
    10  // distributed under the License is distributed on an "AS IS" BASIS,
    11  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    12  // See the License for the specific language governing permissions and
    13  // limitations under the License.
    14  
    15  // Package abi describes the interface between a kernel and userspace.
    16  // Most of this is from gvisor but I've reordered it a bit as some things
    17  // are common to OSX. I've also followed Go practice for these mostly
    18  // never-viewed files and put them into a small number of largish files.
    19  package abi
    20  
    21  import (
    22  	"fmt"
    23  )
    24  
    25  // OS describes the target operating system for an ABI.
    26  //
    27  // Note that OS is architecture-independent. The details of the OS ABI will
    28  // vary between architectures.
    29  type OS int
    30  
    31  const (
    32  	// Linux is the Linux ABI.
    33  	Linux OS = iota
    34  )
    35  
    36  // String implements fmt.Stringer.
    37  func (o OS) String() string {
    38  	switch o {
    39  	case Linux:
    40  		return "linux"
    41  	default:
    42  		return fmt.Sprintf("OS(%d)", o)
    43  	}
    44  }