[LITMUS^RT] Updates to LITMUS^RT, liblitmus, and feather-trace-tools

Björn Brandenburg bbb at mpi-sws.org
Tue Mar 8 17:26:19 CET 2016


Dear all,

in preparation of a new release, I’ve pushed a whole bunch of little fixes and improvements to the master branches of LITMUS^RT, liblitmus, and feather-trace-tools. In the interest of ensuring a stable 2016.1 release, I’d appreciate any and all help with testing.

These are mostly patches that have accumulated at MPI-SWS in various projects over the last couple of months, and which I’ve now back-ported to master, plus a few outside contributions. In particular, I’d like to thank Pratyush Patel for contributing a cleaner, much more portable re-implementaiton of our release-master timer support.

For your convenience, I’m including a summary of the changes since 2015.1 below.

@UNC: can you please contribute to the testing effort, especially on ARM?

Thanks,
Björn


Changes to the kernel:

	14cc7377 LITMUS^RT core: be more careful when pull-migrating tasks
	5f594c7 LITMUS^RT core: add post-migration validation callback
	ff0e731 LITMUS^RT core: add next_became_invalid() callback
	a83a958 LITMUS^RT core: add should_wait_for_stack() callback
	5c3fc90 FP: add list-based ready queue
	4fb320b Feather-Trace: Add macros for message-passing timestamps
	11e7112 one-shot complete_job(): set completed flag
	32784b4 LITMUS^RT: Enable plugins to permit RT tasks to fork
	aa87f5a Plugin interface: add fork_task() callback
	9414feb LITMUS^RT: improve integration with fork()
	bd415c3 LITMUS^RT: split task admission into two functions
	5864d40 LITMUS^RT scheduling class: mark enqueued task as present
	7ee7163 Add void* plugin_state pointer to task_struct
	ffbaa24 Add new overhead tracing event IDs
	fa374d8 Patch hrtimer_wakeup() callback to record RELEASE overhead
	a2e09c5 Patch hrtimer_wakeup() callback to record RELEASE_LATENCY
	aed5435 TRACE(): add TRACE_WARN_ON() helper
	159a82f LITMUS^RT proc: fix wrong memset()
	0a3467c PSN-EDF: fix wrong memset()
	c608191 PFAIR: fix wrong memset()
	eb8666a GSN-EDF: fix wrong memset()
	5ba78d5 C-EDF: fix bad memset()
	1eb666d P-FP: fix wrong memset()
	8db6123 Don't preempt before time check in sleep_until_next_release()
	b4a0eda Pick non-zero syscall ID start range
	e2a7801 Expose LITMUS^RT system calls via control page ioctl()
	d2bdf41 Revamped hrtimer_start_on() support
	ce90c1d Revert "Add hrtimer_start_on() support"
	42dabcd Free before setting NULL to prevent memory leak
	3b68819 Fix RCU locking in sys_get_rt_task_param()
	3e0c32c Add alternate complete_job() default implementation
	b8438da Export job release time and job sequence number in ctrl page
	3ebb8ce ftdev: respect O_NONBLOCK flag in ftdev_read()
	7096677 sched_trace: record exec_time in ST_COMPLETION records
	6d61224 Adds control page deadline offset
	0ccca2e Adds deadline field to control page and updates it when setting up jobs for release.
	a17f532 Fix __NR_syscalls for ARM
	d126eb2 Add ARM syscall def for get_current_budget
	0ce2d95 Add x86 syscall defs for get_current_budget
	2971daf LITMUS^RT Core: add get_current_budget() system call
	
	 arch/arm/Kconfig                   |   3 -
	 arch/arm/include/asm/unistd.h      |   3 +-
	 arch/arm/kernel/calls.S            |   2 +
	 arch/x86/Kconfig                   |   3 -
	 arch/x86/include/asm/entry_arch.h  |   1 -
	 arch/x86/include/asm/hw_irq.h      |   4 -
	 arch/x86/include/asm/irq_vectors.h |   6 --
	 arch/x86/kernel/entry_64.S         |   2 -
	 arch/x86/kernel/irqinit.c          |   3 -
	 arch/x86/kernel/smp.c              |  35 ---------
	 arch/x86/syscalls/syscall_32.tbl   |   1 +
	 arch/x86/syscalls/syscall_64.tbl   |   2 +
	 include/linux/hrtimer.h            |  32 --------
	 include/linux/smp.h                |   5 --
	 include/litmus/budget.h            |   2 +
	 include/litmus/ctrlpage.h          |  99 ++++++++++++++++++++++++
	 include/litmus/debug_trace.h       |   5 ++
	 include/litmus/fp_common.h         |  78 +++++++++++++++++++
	 include/litmus/jobs.h              |   1 +
	 include/litmus/litmus.h            |  25 ++++++
	 include/litmus/rt_param.h          |  53 +------------
	 include/litmus/sched_plugin.h      |  35 +++++++++
	 include/litmus/sched_trace.h       |   5 +-
	 include/litmus/trace.h             |  27 ++++++-
	 include/litmus/unistd_32.h         |   3 +-
	 include/litmus/unistd_64.h         |   4 +-
	 kernel/fork.c                      |   3 -
	 kernel/sched/core.c                |   9 ++-
	 kernel/sched/litmus.c              | 102 ++++++++++++++++---------
	 kernel/time/hrtimer.c              | 104 +++----------------------
	 litmus/Kconfig                     |   2 +-
	 litmus/budget.c                    |  52 +++++++++++++
	 litmus/ctrldev.c                   |  97 +++++++++++++++++++++++
	 litmus/fp_common.c                 |  10 +++
	 litmus/ftdev.c                     |  11 +++
	 litmus/jobs.c                      |  60 +++++++++++++++
	 litmus/litmus.c                    | 152 ++++++++++++++++++++++++++++---------
	 litmus/litmus_proc.c               |   2 +-
	 litmus/rt_domain.c                 |   3 -
	 litmus/sched_cedf.c                |   2 +-
	 litmus/sched_gsn_edf.c             |   2 +-
	 litmus/sched_pfair.c               |   2 +-
	 litmus/sched_pfp.c                 |   2 +-
	 litmus/sched_plugin.c              |  28 +++++++
	 litmus/sched_psn_edf.c             |   2 +-
	 litmus/sched_task_trace.c          |   1 +
	 litmus/trace.c                     |  21 ++++-
	 47 files changed, 769 insertions(+), 337 deletions(-)
	 

Changes to liblitmus:

	0d733e2 release_t: add -W option
	322eaad Read the whole word from domain for cpu_set
	c820535 Switch syscalls to use new LITMUS^RT ioctl() interface
	69ddb96 Add test case for get_rt_task_param()
	69ee1ed Remove sched_{s,g}etscheduler syscall stubs
	54dfe42 Implement get_job_no() via control page
	68849a8 Add offset checks for release and job index in control page
	cdbdc02 rtspin -v: report deadline, current time, and slack
	93f417f Add monotime() wrapper for CLOCK_MONOTONIC
	5184b9f Adds build bug check for deadline in control_page
	7efbfc0 Add -i option to rtspin (report interrupts)
	ae1d5e7 Add syscall get_current_budget()
	0394bde Remove outdated mention of rtsched from README

	 Makefile           |  1 +
	 README             |  9 ++++----
	 bin/release_ts.c   | 15 ++++++++++---
	 bin/rtspin.c       | 29 +++++++++++++++++++++++--
	 include/internal.h |  2 ++
	 include/litmus.h   | 19 +++++++++++++++++
	 src/clocks.c       | 11 ++++++++++
	 src/kernel_iface.c | 31 ++++++++++++++++++++++-----
	 src/migration.c    |  2 +-
	 src/syscalls.c     | 62 +++++++++++++++++++++++++++++++++++-------------------
	 tests/core_api.c   | 33 +++++++++++++++++++++++++----
	 11 files changed, 173 insertions(+), 41 deletions(-)


Changes to feather-trace-tools:

	3bbd0fa st_trace: don't busy-wait
	bc038ae st_trace: use ftcat -p to await initialization
	10537e1 ft-trace-overheads: don't busy-wait
	4d6773e ft-trace-overheads: make use ftcat -p to await initialization
	d085e70 ftcat: add -p (ping) option
	b990a32 Keep track of active scheduler in ft-trace-overheads
	fefbdbf ft2csv: add -l (list IDs in trace) option
	017b981 Support new event IDs

	 ft-trace-overheads  | 43 ++++++++++++++++++++++++++++++-------
	 include/timestamp.h |  9 ++++++++
	 src/ft2csv.c        | 62 ++++++++++++++++++++++++++++++++++++++++++++---------
	 src/ftcat.c         | 18 +++++++++++++++-
	 src/timestamp.c     |  4 ++++
	 st_trace            | 18 ++++++++++++++--
	 6 files changed, 133 insertions(+), 21 deletions(-)

	 



More information about the litmus-dev mailing list