USENET Premium
 USENET Archives Select Content
   Reviewed by Anonymous Insider
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
Newsgroups: comp.os.linux,alt.os.linux
Subject: pre-0.96 (was Re: gdb still isn't working)
Date: 21 Apr 92 23:15:10 GMT
Organization: University of Helsinki

In article <1992Apr20.085143.23027@klaava.Helsinki.FI> 
torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds) writes:
> [ trace not working in gdb ]
>
>My personal version handles this correctly (as well as doing some other
>things in a cleaner manner), but I'm not quite ready for a new release
>yet.  I could make YAAR (yet another alpha-release) or just mail
>interested parties the fixes needed - mail me if you're interested, and
>depending on the number of messages I get I'll make it a new release. 

Ok, the response seems to make a new pre-release appropriate: I have
uploaded "pre-0.96.tar.Z" to tsx-11 and nic. 

Here is what the pre-release contains:

- truncate/ftruncate/fchmod/fchown system calls

	note that there aren't any library functions for these, so they
	aren't very useful yet...

	[f]truncate needed a change in the logic of the internal
	truncate VFS call - anybody that has any nonstandard filesystem
	probably needs to look it up. 

- io-bitmap syscalls giving root-processes access to selected io ports
  from user space.  There is a "ioperm()" system call that lets the
  process select which ports it wants to enable/disable (all ports
  disabled as default) as well as a (standard sysv?) ioctl interface
  that X uses.

	again, no library stubs, but it allows things like reading and
	setting the cmos clock without using /dev/port, as well as
	control over the VGA registers... 

- mmap for /dev/mem

	more things needed for X...

- the signal-handling fixes needed for gdb

	These aren't yet complete: serial lines still send signals under
	interrupts that can result in problems (ie ptrace doesn't
	correctly get them), but that's pretty unlikely (and will be
	fixed in the final 0.96).  Breakpoints should work etc.. 

- multiple shared libraries

	Up to 6 simultaneous shared libraries/process: the patches were
	originally by pmacdona, but they were heavily changed by me, and
	I think they work in a more natural manner now.  One user-level
	change is that the libraries are now checked for read and
	execute permissions for safety-reasons.

- cleaned up special files.

	read/write/ioctl no longer has special-case code: it is all
	handled with tables to functions.  This will mean that the SCSI
	patches won't patch in quite cleanly into 0.96: you'll need to
	add the code that sets up the functions. 

	Again: device drivers and vfs-filesystem hackers need to look
	into the changes, although they are pretty logical (earlier
	versions just didn't implement all the vfs-routines)

	Note that the vfs-code for select is still not used: select is
	hardcoded for the devices it supports right now. 

- ptrace() has a new interface

	as gdb for versions < 0.95c don't work on the new version, and
	gdb won't work very well at all on 0.95c[+], there was no reason
	not to break ptrace.  Thus 0.96 has a new calling convention for
	ptrace, and the old ptrace library function no longer works. 
	I'm including the new ptrace library function at the end of this
	post. 

- mount() takes 4 arguments, and checks that only the super-user can
  mount/umount things. 

	Happily this shouldn't break any old binaries.

- some general cleanups

I've made the pre-release available only as pure source code: no diffs,
no binary. The reason is that most people that needed this release want
it for the gdb-fixes: and they should have no problem recompiling the
kernel.  Others just have to wait for the real 0.96.

Changes that are NOT in this pre-release, but which I hope to have in
the real 0.96:

	- more include-file cleanups - I'm still working on these

	- the wd8003 driver and hopefully some other parts of biro's
	  config.

	- select() using the vfs-tables.

And possibly bugfixes that people find in this pre-release...

		Linus

---------- library ptrace.c (wants gcc-2.1) ----------
#define __LIBRARY__
#include < time.h>
#include < unistd.h>

int ptrace(int request, int pid, int addr, int data)
{
	long ret;
	long res;

	if (request > 0 && request < 4)
		(long *)data = &ret;
	__asm__ volatile ("int $0x80"
		:"=a" (res)
		:"0" (__NR_ptrace),"b" (request), "c" (pid),
		 "d" (addr), "S" (data)
		: "si","bx","cx","dx");
	if (res >= 0) {
		if (request > 0 && request < 4) {
			errno = 0;
			return (ret);
		}
		return (int) res;
	}
	errno = -res;
	return -1;
}

From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
Newsgroups: comp.os.linux
Subject: 0.96 out next week
Date: 4 May 92 07:38:03 GMT
Organization: University of Helsinki

Ok, the subject says most of it: I'll send out 0.96 sometimes next week
(ie 92.05.11-17), and this is just an announcement to confirm that.

0.96 has a lot of changes (even relative to pre-0.96), and it's entirely
possible that making it available as cdiffs isn't feasible. It contains
a lot of new files, as well as some re-organizations in the old ones.

Main new things are:

- The SCSI distribution is now in the standard package. I (obviously)
  haven't been able to test my patchings, so there might be problems in
  this first release. I had to do some changes "blind" to the cdiffs,
  but most of them were pretty trivial.

- X11r5 as ported by obz is supported. It's still in beta-testing (join
  the X11-channel on the original mailing-list), but as I'm writing this
  from an xterm under linux, it works pretty well. Changes to pre-0.96
  are just the socket-code by obz, and some small tweaking by me.

- Hopefully better interrupt latency - I've changed select() not to use
  cli-sti, and most IRQ's to enable interrupts, and instead disable just
  their own interrupt-line. The interrupt latency has been noticeable at
  higher serial speeds, and I hope 0.96 will be better in this respect. 
  Again, I only have 2400bps, so I've never seen the problems, and
  cannot guarantee the new version will help.  (btw, I hope the problems
  with select are gone now)

- Reorganisation of the vfs routines and minix filesystem driver.  These
  shouldn't bother anyone but people that have implemented their own
  filesystems (I know of just 2 to date), but I hope the current
  vfs-interface will prove to be relatively stable.  The new vfs
  interface has made some things much cleaner, and the promised cleanup
  of special devices has happened. 

- ps/uptime patches + added readahead, so having computationally
  intensive background processes isn't as noticeable any more when doing
  IO. 

Additionally, there /might/ be a new floppy-driver that supports
formatting and autodetecting floppies, but I haven't had time to check
into it yet.

There are probably any number of minor changes: I've lost track.  People
have sent me some diffs, and some of them went in, depending on how
energetic I was that day.  I've tried to correct all the bugs I've
gotten reports on, and hopefully 0.96 will work with just about
everything (gdb etc). 

Things I wanted, but didn't have time for:

- The config patches aren't there. Sorry everybody. That means still no
  wd8003 driver etc.

- Any number of minor patches (quota, auto-SVGA etc)

Generally, 0.96 is cleaning some things up, but on the other hand the
new features can have their share of problems.  We'll see.  Anyway, most
things seem to work, and I hope there won't be the same type of problems
as with the first 0.95 release.

		Linus