2004-03-28 tml-1.0.0rc3 for Linux-2.4.18 ... 2.4.25. 2004-03-24 tml-1.0.0rc2 for Linux-2.4.18 ... 2.4.25. 2004-03-24 tmm-1.0.0rc2 for tml-1.0.0rc2. 2004-03-16 tml-1.0.0rc1 for Linux-2.4.18, 2.4.19, 2.4.20, 2.4.21, 2.4.22 2.4.23, 2.4.24 and 2.4.25 !! 2004-03-16 tmm-1.0.0rc1 for tml-1.0.0rc1. 2002-06-01 New release: tml-0.10.6a for Linux-2.4.18. 2002-04-15 First Time Machine Manager (tmm) public release, 0.1.7a., available 2002-04-15 New release: tml-0.10.5a for Linux-2.4.18. 2002-04-15 Home page updated. 2002-04-11 New release: tml-0.9.10a for Linux-2.4.18. 2002-04-10 Here you have very first public release of the Time Machine for Linux, v0.9.6a. 2002-04-09 Home page created.
This is the home page of the Time Machine for Linux. It is an experimental kernel patch that let users create their own Time Machines.
What is a Time Machine? ... it is a little artifact that offers the possibility to run processes on a different date or time than the current one, without having to change the global system date/time.
This project consist of two related parts: the kernel patch and the user command. That is, the Time Machine for Linux (AKA tml) and the Time Machine Manager (AKA tmm).
Some features of Time Machines (TMs) are:
- Every TM can have attached one or more processes. All processes attached to it will see the same date and time.
- TMs can be shared between users/groups, in the same way files can be shared or accessed (default access mode is 0x754).
- Any process can be attached or detached dynamically to a TM, if the user has the right permissions to do it.
- TMs are inherited. That is, a process forked from a process attached to a TM will be created attached to that TM.
- Users can create several TMs, as many as the number of processes they can create, but no more.
- The date command can be used to set the date or time of a TM.
- Imperceptible performance degradation (if any).
- Released under the terms of the GNU Public License.
These are latest releases of both tml and tmm.
Time Machine for Linuxstable: tml-1.0.0rc3 for Linux-2.4.18 .. Linux-2.4.25 / 2004-03-28
Time Machine Managerstable: tmm-1.0.0rc2 for tml-1.0.0 / 2004-03-24
- 'settimeofday' computes new parameters values.
- 'EPERM' returned when permission denied.
- User space locks removed.
- Few cheks improved.
- TM type 'random' removed.
- Locking: more bugs fixed.
- New ioctl call: GET_XTIME.
- /proc fs: little bugs fixed.
- TM type: possible types are 'delta', 'linear' or 'random'.
- TM status: possible status are 'run' or 'hold'.
- Threads: operations involving a process can be recursively applied to all its threads.
- IOCTL: renewed interface.
- Locking: few bugs fixed.
- /proc fs: better support.
- timex: bugs fixed.
- Path 'drivers' corrected in previous patch.
- Types of TMs changed: now a TM can be DISCRETE, CONSTANT or LINEAL.
- The date command can be used to set the time of TMs.
- Few general enhancements.
- Few bugs fixed.
- Bugs fixed affecting 'stime' and 'settimeofday'.
- Enhanced /proc file system support.
- Few bugs fixed.
- First public release.
DiffStatThe following files were changed in the latest tml release:CREDITS | 8 Documentation/Configure.help | 37 + Documentation/devices.txt | 1 Documentation/ioctl-number.txt | 1 Documentation/tml.txt | 155 +++++ MAINTAINERS | 6 arch/i386/kernel/apm.c | 2 drivers/char/Config.in | 10 drivers/char/Makefile | 3 drivers/char/tm.c | 1111 +++++++++++++++++++++++++++++++++++++++++ drivers/char/tm_proc.c | 219 ++++++++ fs/proc/array.c | 17 fs/proc/base.c | 11 include/linux/miscdevice.h | 1 include/linux/sched.h | 13 include/linux/tm.h | 188 ++++++ include/linux/tm_proc.h | 53 + kernel/exit.c | 4 kernel/fork.c | 6 kernel/time.c | 27 20 files changed, 1859 insertions(+), 14 deletions(-)
- Adapted to tml-1.0.0rc2. Also valid for latest tml version.
- First public stable release.
- First public (pre-)alpha release. Just to check that tml works.
All you need to download is:
- A new, fresh copy of the latest kernel source code from your nearest kernel mirror. See http://mirrors.kernel.org for more information.
- A release of the Time Machine patch (tml) for your kernel version. Get it from here.
- The Time Machine Manager (tmm). Get it from here.
tml -- quick install --
Proceed as usual to compile and boot your new kernel.
- Get the TM patch corresponding to your kernel version.
- Apply it to the corresponding kernel and configure it.
- Under Code maturity level options, say Y to Prompt for development and/or incomplete code/drivers.
- Under Character devices, say Y to Time Machine Support (EXPERIMENTAL).
- Say Y to Time Machine /proc file system support.
- Say N to Time Machine debugging (adds 3K) unless you know what you are doing.
tmm installation procedure is really easy. Simply login as root, untar-gzip tmm source and run:# ./configure # make # make installThis will install tmm executable and its man page. Read it carefully to figure out what sort of things you can do with a time machine.
You need tml installed before installing tmm. Its configure script lets you specify an alternative path to your include/linux path. By default, it is supposed to be at /usr/include/linux.
Francesc Rocher is the author of the Time Machine for Linux. He can be reached (among others) at email@example.com. Feel free to send him comments, sugesstions, bug fixes, improvements, etc.
Many thanks goes to (in chronological order):
- Oswald Buddenhagen, who sent me tons and tons of valuable comments and suggestions.
- Ricard Torres, who kindly and patiently installed and tested the Time Machine for Linux. He also discovered and reported a serious mistake at the "Installation" section of this page. Thanks.
- D. Vicente Rubio y Diaz, who drew a beautiful illustration of a Time Machine in his book:(seriously speaking, the figure illustrates a microphone ... ?:-/ ).
Elementos de Física Esperimental, 2a Edición (aumentada con 10 grabados nuevos). Cádiz, 1886.
Finally, here you have a practical scheme of the Time Machine implementation. Read carefully instructions below to understand what the hell are these little artifacts of Figure 1.
Linux is the base of the Time Machine implementation, represented (on figure 1) by that stable, solid base. The shaded area represents the kernel space.
J and K are two different instances of Time Machines. The first one, J, is attached to process T which, in turn, is the parent process of process P. That process, P, is attached to the second instance of TM, K. For more clarity, follow the pointers on the figure.
G, V, E and A are kernel functions with little changes in order to allow process access their TMs. To be precise, these changes correspond to files time.c, sched.h, fork.c and exit.c (see diffstat above).
M is the main system time, which is not altered by the existence of as many Time Machines as you like.
C and B are internal routines of the main tml implementation, while F is the entry point of ioctl calls (note that TMs are connected to F through the device driver, represented by R).
In case of doubt, don't hesitate to look at the source code of the implementation.
Figure 1 Time Machine Implementation Scheme.
Last update: 2004-03-28