Move definition of struct sched_attr to a separate header file

Avoid multiple defintions of struct sched_attr by creating a separate
header file with its definition and using it in other places.

* sched_attr.h: New file.
* Makefile.am (strace_SOURCES): Add it.
* sched.c: Include it.
(print_sched_attr): Use it.
* tests/sched_xetattr.c: Include it.
(main): Use it.
This commit is contained in:
Дмитрий Левин 2017-02-18 09:58:52 +00:00
parent 6e9ad7be61
commit 3e80074350
4 changed files with 24 additions and 20 deletions

View File

@ -211,6 +211,7 @@ strace_SOURCES = \
resource.c \
rtc.c \
sched.c \
sched_attr.h \
scsi.c \
seccomp.c \
seccomp_fprog.h \

12
sched.c
View File

@ -30,6 +30,7 @@
#include "defs.h"
#include <sched.h>
#include "sched_attr.h"
#include "xlat/schedulers.h"
#include "xlat/sched_flags.h"
@ -97,16 +98,7 @@ static void
print_sched_attr(struct tcb *const tcp, const kernel_ulong_t addr,
unsigned int size)
{
struct {
uint32_t size;
uint32_t sched_policy;
uint64_t sched_flags;
uint32_t sched_nice;
uint32_t sched_priority;
uint64_t sched_runtime;
uint64_t sched_deadline;
uint64_t sched_period;
} attr = {};
struct sched_attr attr = {};
if (size > sizeof(attr))
size = sizeof(attr);

19
sched_attr.h Normal file
View File

@ -0,0 +1,19 @@
#ifndef STRACE_SCHED_ATTR_H
#define STRACE_SCHED_ATTR_H
# include <stdint.h>
struct sched_attr {
uint32_t size;
uint32_t sched_policy;
uint64_t sched_flags;
uint32_t sched_nice;
uint32_t sched_priority;
uint64_t sched_runtime;
uint64_t sched_deadline;
uint64_t sched_period;
};
# define SCHED_ATTR_MIN_SIZE 48
#endif /* !STRACE_SCHED_ATTR_H */

View File

@ -34,6 +34,7 @@
# include <stdio.h>
# include <sched.h>
# include <unistd.h>
# include "sched_attr.h"
# include "xlat.h"
# include "xlat/schedulers.h"
@ -66,16 +67,7 @@ main(void)
static const kernel_ulong_t bogus_flags =
(kernel_ulong_t) 0xdefaceddeadc0deULL;
struct {
uint32_t size;
uint32_t sched_policy;
uint64_t sched_flags;
int32_t sched_nice;
uint32_t sched_priority;
uint64_t sched_runtime;
uint64_t sched_deadline;
uint64_t sched_period;
} *const attr = tail_alloc(sizeof(*attr));
struct sched_attr *const attr = tail_alloc(sizeof(*attr));
void *const efault = attr + 1;
sys_sched_getattr(bogus_pid, 0, 0, 0);