| |
| /* |
| * Copyright (c) 2003, Intel Corporation. All rights reserved. |
| * Created by: crystal.xiong REMOVE-THIS AT intel DOT com |
| * This file is licensed under the GPL license. For the full content |
| * of this license, see the COPYING file at the top level of this |
| * source tree. |
| */ |
| |
| #include <sys/time.h> |
| #include <string.h> |
| #include "test.h" |
| |
| #define PROTOCOL PTHREAD_PRIO_INHERIT |
| |
| static inline |
| double seconds_read(void) |
| { |
| struct timeval tv; |
| gettimeofday(&tv, 0); |
| return tv.tv_sec + 1e-6 * tv.tv_usec; |
| } |
| |
| static inline |
| int test_set_priority(pthread_t pid, unsigned policy, unsigned prio) |
| { |
| struct sched_param sched_param; |
| memset(&sched_param, 0, sizeof(sched_param)); |
| sched_param.sched_priority = prio; |
| if (pthread_setschedparam(pid, policy, &sched_param) == -1) |
| { |
| EPRINTF("UNRESOLVED: Can't set policy to %d and prio to %d", |
| policy, prio); |
| exit(UNRESOLVED); |
| } |
| return 0; |
| } |
| |
| static inline |
| void mutex_attr_init(pthread_mutexattr_t *attr) |
| { |
| unsigned rc; |
| |
| rc = pthread_mutexattr_init(attr); |
| if (rc != 0) { |
| EPRINTF("UNRESOLVED: pthread_mutexattr_init: %d %s", |
| rc, strerror(rc)); |
| exit(UNRESOLVED); |
| } |
| |
| rc = pthread_mutexattr_setprotocol(attr, PROTOCOL); |
| if (rc != 0) { |
| EPRINTF("UNRESOLVED: pthread_mutexattr_setprotocol: %d %s", |
| rc, strerror(rc)); |
| exit(UNRESOLVED); |
| } |
| } |
| |
| static inline |
| int mutex_init(pthread_mutex_t *mutex, pthread_mutexattr_t *attr) |
| { |
| unsigned rc; |
| |
| rc = pthread_mutex_init(mutex, attr); |
| if (rc != 0) { |
| EPRINTF("UNRESOLVED: pthread_mutex_init: %d %s", |
| rc, strerror(rc)); |
| exit(UNRESOLVED); |
| } |
| return 0; |
| } |
| |
| static inline |
| int threadattr_init(pthread_attr_t *threadattr) |
| { |
| unsigned rc; |
| rc = pthread_attr_init(threadattr); |
| if (rc != 0) { |
| EPRINTF("UNRESOLVED: pthread_attr_init: %d %s", |
| rc, strerror(rc)); |
| exit(UNRESOLVED); |
| } |
| return 0; |
| } |
| |