|
@@ -12,10 +12,13 @@ int main(void) {
|
|
|
size_t sample_realloc_size = sample_alloc_size + 1;
|
|
|
|
|
|
/* ensure values are mapped to variables */
|
|
|
+ size_t zero = 0;
|
|
|
size_t max_size = SIZE_MAX;
|
|
|
size_t aligned_alloc_alignment = 128;
|
|
|
size_t aligned_alloc_goodsize = 256;
|
|
|
size_t aligned_alloc_badsize = 257;
|
|
|
+ size_t nonpow2_mul_voidptr_size = 3*sizeof(void *);
|
|
|
+ size_t pow2_mul_voidptr_size = 4*sizeof(void *);
|
|
|
|
|
|
int i;
|
|
|
|
|
@@ -139,4 +142,74 @@ int main(void) {
|
|
|
printf("valloc (SIZE_MAX) : %p, errno: %d = %s\n",
|
|
|
ptr_valloc_maxsize, valloc_maxsize_errno,
|
|
|
strerror(valloc_maxsize_errno));
|
|
|
+
|
|
|
+ errno = 0;
|
|
|
+ void * ptr_posix_memalign = NULL;
|
|
|
+ int posix_memalign_return = posix_memalign(&ptr_posix_memalign, pow2_mul_voidptr_size, sample_alloc_size);
|
|
|
+ int posix_memalign_errno = errno;
|
|
|
+ printf("posix_memalign:\n");
|
|
|
+ printf(" %p, return value: %d = %s,\n",
|
|
|
+ ptr_posix_memalign,
|
|
|
+ posix_memalign_return, strerror(posix_memalign_return));
|
|
|
+ /* strerror() can only be called once in a printf call for correct
|
|
|
+ * results */
|
|
|
+ printf(" errno: %d = %s\n",
|
|
|
+ posix_memalign_errno,
|
|
|
+ strerror(posix_memalign_errno));
|
|
|
+
|
|
|
+ errno = 0;
|
|
|
+ void * ptr_posix_memalign_align0 = NULL;
|
|
|
+ int posix_memalign_align0_return = posix_memalign(&ptr_posix_memalign_align0, zero, sample_alloc_size);
|
|
|
+ int posix_memalign_align0_errno = errno;
|
|
|
+ printf("posix_memalign (alignment 0):\n");
|
|
|
+ printf(" %p, return value: %d = %s,\n",
|
|
|
+ ptr_posix_memalign_align0,
|
|
|
+ posix_memalign_align0_return,
|
|
|
+ strerror(posix_memalign_align0_return));
|
|
|
+
|
|
|
+ printf(" errno: %d = %s\n",
|
|
|
+ posix_memalign_align0_errno,
|
|
|
+ strerror(posix_memalign_align0_errno));
|
|
|
+
|
|
|
+ errno = 0;
|
|
|
+ void * ptr_posix_memalign_nonpow2mul = NULL;
|
|
|
+ int posix_memalign_nonpow2mul_return = posix_memalign(&ptr_posix_memalign_nonpow2mul, nonpow2_mul_voidptr_size, sample_alloc_size);
|
|
|
+ int posix_memalign_nonpow2mul_errno = errno;
|
|
|
+ printf("posix_memalign (non-power-of-two multiple of sizeof(void *)):\n");
|
|
|
+ printf(" %p, return value: %d = %s,\n",
|
|
|
+ ptr_posix_memalign_nonpow2mul,
|
|
|
+ posix_memalign_nonpow2mul_return,
|
|
|
+ strerror(posix_memalign_nonpow2mul_return));
|
|
|
+
|
|
|
+ printf(" errno: %d = %s\n",
|
|
|
+ posix_memalign_nonpow2mul_errno,
|
|
|
+ strerror(posix_memalign_nonpow2mul_errno));
|
|
|
+
|
|
|
+ errno = 0;
|
|
|
+ void * ptr_posix_memalign_size0 = NULL;
|
|
|
+ int posix_memalign_size0_return = posix_memalign(&ptr_posix_memalign_size0, pow2_mul_voidptr_size, zero);
|
|
|
+ int posix_memalign_size0_errno = errno;
|
|
|
+ printf("posix_memalign (size 0):\n");
|
|
|
+ printf(" %p, return value: %d = %s,\n",
|
|
|
+ ptr_posix_memalign_size0,
|
|
|
+ posix_memalign_size0_return,
|
|
|
+ strerror(posix_memalign_size0_return));
|
|
|
+
|
|
|
+ printf(" errno: %d = %s\n",
|
|
|
+ posix_memalign_size0_errno,
|
|
|
+ strerror(posix_memalign_size0_errno));
|
|
|
+
|
|
|
+ errno = 0;
|
|
|
+ void * ptr_posix_memalign_maxsize = NULL;
|
|
|
+ int posix_memalign_maxsize_return = posix_memalign(&ptr_posix_memalign_maxsize, pow2_mul_voidptr_size, max_size);
|
|
|
+ int posix_memalign_maxsize_errno = errno;
|
|
|
+ printf("posix_memalign (SIZE_MAX):\n");
|
|
|
+ printf(" %p, return value: %d = %s,\n",
|
|
|
+ ptr_posix_memalign_maxsize,
|
|
|
+ posix_memalign_maxsize_return,
|
|
|
+ strerror(posix_memalign_maxsize_return));
|
|
|
+
|
|
|
+ printf(" errno: %d = %s\n",
|
|
|
+ posix_memalign_maxsize_errno,
|
|
|
+ strerror(posix_memalign_maxsize_errno));
|
|
|
}
|