s2n_io.h 1.1 KB

1234567891011121314151617181920212223242526272829
  1. /*
  2. * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License").
  5. * You may not use this file except in compliance with the License.
  6. * A copy of the License is located at
  7. *
  8. * http://aws.amazon.com/apache2.0
  9. *
  10. * or in the "license" file accompanying this file. This file is distributed
  11. * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
  12. * express or implied. See the License for the specific language governing
  13. * permissions and limitations under the License.
  14. */
  15. #pragma once
  16. #include "utils/s2n_result.h"
  17. /* While we shouldn't need to reset errno before executing `action`,
  18. * we do so just in case action doesn't set errno properly on failure.
  19. */
  20. #define S2N_IO_RETRY_EINTR(result, action) \
  21. do { \
  22. errno = 0; \
  23. result = action; \
  24. } while (result < 0 && errno == EINTR)
  25. S2N_RESULT s2n_io_check_write_result(ssize_t result);
  26. S2N_RESULT s2n_io_check_read_result(ssize_t result);