1*0258f566SSiva Chandra Reddy //===-- Implementation of the pthread_attr_setguardsize -----------------===//
2*0258f566SSiva Chandra Reddy //
3*0258f566SSiva Chandra Reddy // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*0258f566SSiva Chandra Reddy // See https://llvm.org/LICENSE.txt for license information.
5*0258f566SSiva Chandra Reddy // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6*0258f566SSiva Chandra Reddy //
7*0258f566SSiva Chandra Reddy //===----------------------------------------------------------------------===//
8*0258f566SSiva Chandra Reddy 
9*0258f566SSiva Chandra Reddy #include "pthread_attr_setguardsize.h"
10*0258f566SSiva Chandra Reddy 
11*0258f566SSiva Chandra Reddy #include "src/__support/common.h"
12*0258f566SSiva Chandra Reddy 
13*0258f566SSiva Chandra Reddy #include <errno.h>
14*0258f566SSiva Chandra Reddy #include <linux/param.h> // For EXEC_PAGESIZE.
15*0258f566SSiva Chandra Reddy #include <pthread.h>
16*0258f566SSiva Chandra Reddy 
17*0258f566SSiva Chandra Reddy namespace __llvm_libc {
18*0258f566SSiva Chandra Reddy 
19*0258f566SSiva Chandra Reddy LLVM_LIBC_FUNCTION(int, pthread_attr_setguardsize,
20*0258f566SSiva Chandra Reddy                    (pthread_attr_t *__restrict attr, size_t guardsize)) {
21*0258f566SSiva Chandra Reddy   if (guardsize % EXEC_PAGESIZE != 0)
22*0258f566SSiva Chandra Reddy     return EINVAL;
23*0258f566SSiva Chandra Reddy   attr->__guardsize = guardsize;
24*0258f566SSiva Chandra Reddy   return 0;
25*0258f566SSiva Chandra Reddy }
26*0258f566SSiva Chandra Reddy 
27*0258f566SSiva Chandra Reddy } // namespace __llvm_libc
28