github.com/grumpyhome/grumpy@v0.3.1-0.20201208125205-7b775405bdf1/grumpy-runtime-src/lib/_syscall.py (about)

     1  # Copyright 2017 Google Inc. All Rights Reserved.
     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  from '__go__/syscall' import EINTR
    16  
    17  
    18  def invoke(func, *args):
    19    while True:
    20      result = func(*args)
    21      if isinstance(result, tuple):
    22        err = result[-1]
    23        result = result[:-1]
    24      else:
    25        err = result
    26        result = ()
    27      if err:
    28        if err == EINTR:
    29          continue
    30        raise OSError(err.Error())
    31      return result