Commit Graph

237 Commits

Author SHA1 Message Date
Marc G. Fournier
2523e82c8b Made the src code match the man page.
Removed dev_link() and dev_linkf(), replacing dev_linkf() with devfs_link()
1996-04-02 04:53:05 +00:00
Marc G. Fournier
0d5b12e38e Added dev_linkf() function (dev_link() + printf-style arguments)
Reviewed by:	julian@freebsd.org
1996-03-28 14:32:27 +00:00
Julian Elischer
54a5291b37 Submitted by: "Marc G. Fournier" <scrappy@ki.net>
allows correct creation of subdirectories in devfs_add_devswf()
1996-03-25 21:56:59 +00:00
John Dyson
ad5dd2341c Fix the problem that unmounting filesystems that are backed by a VMIO
device have reference count problems.  We mark the underlying object
ono-persistent, and account for the reference count that the VM system
maintainsfor the special device close.  This should fix the removable
device problem.
1996-03-19 05:13:22 +00:00
Peter Wemm
89be462c47 This commit was generated by cvs2svn to compensate for changes in r14557,
which included commits to RCS files with non-trunk default branches.
1996-03-11 19:29:25 +00:00
Peter Wemm
5e5861b9c6 Import 4.4BSD-Lite2 onto the vendor branch, note that in the kernel, all
files are off the vendor branch, so this should not change anything.

A "U" marker generally means that the file was not changed in between
the 4.4Lite and Lite-2 releases, and does not need a merge.  "C" generally
means that there was a change.
[two new auxillary files in miscfs/union]
1996-03-11 19:29:25 +00:00
Jeffrey Hsu
5a18c60a63 For Lite2: proc LIST changes.
Reviewed by:	davidg & bde
1996-03-11 06:13:09 +00:00
John Dyson
46d66d275b Make sure that the zero flag is cleared upon completion of paging I/O. 1996-03-09 07:02:52 +00:00
Julian Elischer
e9ee430593 really stupid mistake that stopped devices from appearing on the fly in mounted
DEVFS filesystems..

- 		if ( error = dev_add_name(child->name,parent->dnp
+ 		if ( error = dev_add_name(child->name,falias->dnp

Ok bruce, this is the one you were seeing..
1996-02-18 07:29:53 +00:00
Garrett Wollman
dc915e7cfc Kill XNS.
While we're at it, fix socreate() to take a process argument.  (This
was supposed to get committed days ago...)
1996-02-13 18:16:31 +00:00
Wolfram Schneider
1d08058f65 add ruid and rgid to file 'status' 1996-02-02 05:19:20 +00:00
Mike Pritchard
6c5e9bbdf5 Fix a bunch of spelling errors in the comment fields of
a bunch of system include files.
1996-01-30 23:02:38 +00:00
Poul-Henning Kamp
02ae573ca8 make devfs_add_devswf a little smarter about '/'; 1996-01-28 10:07:55 +00:00
Poul-Henning Kamp
831e28a67a Make devfs_add_devfsf() which takes printf style args. 1996-01-25 07:17:31 +00:00
Peter Wemm
f863805df0 This time, really make the procfs work when reading stuff from the UPAGES.
This is a really ugly bandaid on the problem, but it works well enough for
'ps -u' to start working again.  The problem was caused by the user
address space shrinking by a little bit and the UPAGES being "cast off" to
become a seperate entity rather than being at the top of the process's
vmspace.  That optimization was part of John's most recent VM speedups.

Now, rather than decoding the VM space, it merely ensures the pages are
in core and accesses them the same way the ptrace(PT_READ_U..) code does,
ie: off the p->p_addr pointer.
1996-01-25 06:05:38 +00:00
Peter Wemm
0cc7521383 Major fixes for procfs..
Implement a "variable" directory structure. Files that do not make
sense for the given process do not "appear" and cannot be opened.
For example, "system" processes do not have "file", "regs" or "fpregs",
because they do not have a user area.

"attempt" to fill in the user area of a given process when it is being
accessed via /proc/pid/mem (the user struct is just after
VM_MAXUSER_ADDRESS in the process address space.)

Dont do IO to the U area while it's swapped, hold it in place if possible.

Lock off access to the "ctl" file if it's done a setuid like the other
pseudo-files in there.
1996-01-24 18:41:41 +00:00
Julian Elischer
da798be901 Slightly improved debug messages for inserting new items 1996-01-21 09:43:31 +00:00
Julian Elischer
b10669ebad oops.
get the last edit right
1996-01-21 09:07:58 +00:00
Julian Elischer
3daaa0c3bc Submitted by: Bruce Evans (bde)
better naming for  exported devfs function
and better place for the prototype
1996-01-21 09:03:15 +00:00
John Dyson
bd7e5f992e Eliminated many redundant vm_map_lookup operations for vm_mmap.
Speed up for vfs_bio -- addition of a routine bqrelse to greatly diminish
	overhead for merged cache.
Efficiency improvement for vfs_cluster.  It used to do alot of redundant
	calls to cluster_rbuild.
Correct the ordering for vrele of .text and release of credentials.
Use the selective tlb update for 486/586/P6.
Numerous fixes to the size of objects allocated for files.  Additionally,
	fixes in the various pagers.
Fixes for proper positioning of vnode_pager_setsize in msdosfs and ext2fs.
Fixes in the swap pager for exhausted resources.  The pageout code
	will not as readily thrash.
Change the page queue flags (PG_ACTIVE, PG_INACTIVE, PG_FREE, PG_CACHE) into
	page queue indices (PQ_ACTIVE, PQ_INACTIVE, PQ_FREE, PQ_CACHE),
	thereby improving efficiency of several routines.
Eliminate even more unnecessary vm_page_protect operations.
Significantly speed up process forks.
Make vm_object_page_clean more efficient, thereby eliminating the pause
	that happens every 30seconds.
Make sequential clustered writes B_ASYNC instead of B_DELWRI even in the
	case of filesystems mounted async.
Fix a panic with busy pages when write clustering is done for non-VMIO
	buffers.
1996-01-19 04:00:31 +00:00
Peter Wemm
689d68d9c2 Remove unnecessary debug printf's ("no references", "bad-id") - these
were development aids :-) and normal events.

Initialise the "hidden" blueprint mount "mnt_op" and "mnt_vfc" fields so
that a statfs() on a devfs file would not panic anymore. Fixes PR#911.

Head-scratching by: Julian and Peter
1996-01-02 09:14:49 +00:00
Poul-Henning Kamp
18e73f4fb6 I have some problem here, which shows up in the ahc0 driver. It isn't where
it originates, so I catch it here and fail.
This may expose the same bug on other disk controllers (both scsi & ide).
1996-01-01 20:20:45 +00:00
Peter Wemm
a5b996a7ec recording cvs-1.6 file death 1995-12-30 19:02:48 +00:00
Bruce Evans
f2c6b65bab Fixed 1TB filesize changes. Some pindexes had bogus names and types
but worked because vm_pindex_t is indistinuishable from vm_offset_t.
1995-12-17 07:19:58 +00:00
Bruce Evans
a899362e40 Restored lost prototypes. 1995-12-14 19:04:09 +00:00
Julian Elischer
e9fc6a73db another case where cdevsw becoming a pointer makes it neccesary to
check if it's NULL
1995-12-14 18:26:55 +00:00
Poul-Henning Kamp
f708ef1b9e Another mega commit to staticize things. 1995-12-14 09:55:16 +00:00
Julian Elischer
6ba9ebce28 devsw tables are now arrays of POINTERS to struct [cb]devsw
seems to work hre just fine though  I can't check every file
that changed due to limmited h/w, however I've checked enught to be petty
happy withe hte code..

WARNING... struct lkm[mumble] has changed
so it might be an idea to recompile any lkm related programs
1995-12-13 15:13:57 +00:00
Poul-Henning Kamp
3724793e05 Back out this one, must have screwed up somewhere :-( 1995-12-11 10:26:34 +00:00
Poul-Henning Kamp
d4b7a3694b Staticize. 1995-12-11 09:24:58 +00:00
John Dyson
a316d390bd Changes to support 1Tb filesizes. Pages are now named by an
(object,index) pair instead of (object,offset) pair.
1995-12-11 04:58:34 +00:00
Julian Elischer
4d92e19833 clean a few DEVFS things..
fix a bug where you couldn't place devices in the root directory
of devfs

remove deprecated routines

On my machine devfs now shows:
julian@erf.tfs.com:
julian@erf.tfs.com: ls -RF
bpf0            mem             ptypb           spkr            ttyp8
bpf1            null            ptypc           stderr          ttyp9
bpf2            pcaudio         ptypd           stdin           ttypa
bpf3            pcaudioctl      ptype           stdout          ttypb
console         pt              ptypf           tty             ttypc
cuaa0           ptyp0           random          ttyd0           ttypd
cuaia0          ptyp1           rsd0            ttyid0          ttype
cuala0          ptyp2           rsd1            ttyld0          ttypf
fd/             ptyp3           rvn             ttyp0           tun0
fd0.1440        ptyp4           rworm           ttyp1           urandom
fd1.1200        ptyp5           scsi/           ttyp2           vn
io              ptyp6           sd0             ttyp3           zero
kmem            ptyp7           sd1             ttyp4
lkm             ptyp8           snp0            ttyp5
log             ptyp9           snp1            ttyp6
lpt0            ptypa           snp2            ttyp7

./fd:
0       15      21      28      34      40      47      53      6       9
1       16      22      29      35      41      48      54      60
10      17      23      3       36      42      49      55      61
11      18      24      30      37      43      5       56      62
12      19      25      31      38      44      50      57      63
13      2       26      32      39      45      51      58      7
14      20      27      33      4       46      52      59      8

./scsi:
sctarg  ssc
julian@erf.tfs.com:

which is all devices really there except for disk slices/partitions..
(if I don't have it it's not there, which has GOT to be an improvement..)

no DEVFS fixes from device maintainers yet?
1995-12-09 09:11:25 +00:00
Julian Elischer
87f6c6625d Pass 3 of the great devsw changes
most devsw referenced functions are now static, as they are
in the same file as their devsw structure. I've also added DEVFS
support for nearly every device in the system, however
many of the devices have 'incorrect' names under DEVFS
because I couldn't quickly work out the correct naming conventions.
(but devfs won't be coming on line for a month or so anyhow so that doesn't
matter)

If you "OWN" a device which would normally have an entry in /dev
then search for the devfs_add_devsw() entries and munge to make them right..
check out similar devices to see what I might have done in them in you
can't see what's going on..
for a laugh compare conf.c conf.h defore and after... :)
I have not doen DEVFS entries for any DISKSLICE devices yet as that will be
a much more complicated job.. (pass 5 :)

pass 4 will be to make the devsw tables of type (cdevsw * )
rather than (cdevsw)
seems to work here..
complaints to the usual places.. :)
1995-12-08 11:19:42 +00:00
David Greenman
efeaf95a41 Untangled the vm.h include file spaghetti. 1995-12-07 12:48:31 +00:00
Bruce Evans
4cb03b1b55 Include <vm/vm.h> or <vm/vm_page.h> explicitly to avoid breaking when
vnode_if.h doesn't include vm stuff.
1995-12-05 21:51:45 +00:00
Bruce Evans
c66c72d1b4 Restored #include of <sys/tty.h>. fdesc_vnops.c needs to know too much
about tty_tty.c's cdevswitch functions.
1995-12-05 19:12:05 +00:00
Bruce Evans
9b5e8b3aa5 Added prototypes.
Removed some unnecessary #includes.
1995-12-03 14:54:48 +00:00
Bruce Evans
2e52c1f9e5 null_node_find() and umap_node_find() were sometimes called without a
`struct mount *' arg.  I don't know what the effects of this were.
1995-12-03 14:38:57 +00:00
Poul-Henning Kamp
a20e0ea8d7 staticize. 1995-12-02 17:14:34 +00:00
Julian Elischer
adb2dc299a #ifdef out nearly the entire file of conf.c when JREMOD is defined
add a few safety checks in specfs because
now it's possible to get entries in [cd]devsw[] which are ALL NULL
so it's better to discover this BEFORE jumping into the d_open() entry..

more check to come later.. this getsthe code to the stage where I
can start testing it, even if I haven't caught every little error case...
I guess I'll find them quick enough..
1995-11-29 12:38:49 +00:00
Julian Elischer
53ac6efbd8 OK, that's it..
That's EVERY SINGLE driver that has an entry in conf.c..
my next trick will be to define cdevsw[] and bdevsw[]
as empty arrays and remove all those DAMNED defines as well..

Each of these drivers has a SYSINIT linker set entry
that comes in very early.. and asks teh driver to add it's own
entry to the two devsw[] tables.

some slight reworking of the commits from yesterday (added the SYSINIT
stuff and some usually wrong but token DEVFS entries to all these
devices.

BTW does anyone know where the 'ata' entries in conf.c actually reside?
seems we don't actually have a 'ataopen() etc...

If you want to add a new device in conf.c
please  make sure I know
so I can keep it up to date too..

as before, this is all dependent on #if defined(JREMOD)
(and #ifdef DEVFS in parts)
1995-11-29 10:49:16 +00:00
Bruce Evans
512fef80a9 Completed function declarations and/or added prototypes. 1995-11-21 12:55:26 +00:00
Bruce Evans
cfa542ad34 KNFized spec_getpages_idone() and spec_getpages().
Moved misplaced #includes.

Completed function pointer declarations.
1995-11-18 12:49:14 +00:00
Bruce Evans
fcf985ad5d Moved declarations for static functions to the correct place (not in a
header).

Removed stupid comments.
1995-11-16 11:39:11 +00:00
Bruce Evans
d77206b33b Fixed the type of procfs_sync(). Trailing args were missing.
Fixed the type of procfs_fhtovp().  The args had little resemblance to
the correct ones.

Added prototypes.
1995-11-16 11:34:51 +00:00
Bruce Evans
10639ce2c0 Fixed the type of portal_sync(). Trailing args were missing.
Fixed the type of portal_fhtovp().  The args had little resemblance to
the correct ones.

Added prototypes.
1995-11-16 11:24:06 +00:00
Bruce Evans
9f3a4cd083 Fixed the type of kernfs_sync(). Trailing args were missing.
Fixed the type of kernfs_fhtovp().  The args had little resemblance to
the correct ones.

Added prototypes.
1995-11-16 11:16:13 +00:00
Bruce Evans
84cac4647f Fixed the type of fdesc_sync(). Trailing args were missing.
Fixed the type of fdesc_fhtovp().  The args had little resemblance to
the correct ones.

Added prototypes.
1995-11-16 10:58:35 +00:00
Poul-Henning Kamp
9565c0e60d Get rid of hostnamelen variable. 1995-11-14 09:37:22 +00:00
Bruce Evans
dace5f55ca Removed unsed function dead_nullop().
Converted incomplete function declarations to prototypes.
1995-11-11 03:36:07 +00:00
Bruce Evans
f57e65478d Introduced a type `vop_t' for vnode operation functions and used
it 1138 times (:-() in casts and a few more times in declarations.
This change is null for the i386.

The type has to be `typedef int vop_t(void *)' and not `typedef
int vop_t()' because `gcc -Wstrict-prototypes' warns about the
latter.  Since vnode op functions are called with args of different
(struct pointer) types, neither of these function types is any use
for type checking of the arg, so it would be preferable not to use
the complete function type, especially since using the complete
type requires adding 1138 casts to avoid compiler warnings and
another 40+ casts to reverse the function pointer conversions before
calling the functions.
1995-11-09 08:17:23 +00:00
Poul-Henning Kamp
159a024357 Make a lot of private stuff static.
Should anybody out there wonder about this vendetta against global
variables, it is basically to make it more visible what our interfaces
in the kernel really are.
I'm almost convinced we should have a
	#define PUBLIC /* public interface */
and use it in the #includes...
1995-11-07 13:39:31 +00:00
Poul-Henning Kamp
a98ca4699e Second batch of cleanup changes.
This time mostly making a lot of things static and some unused
variables here and there.
1995-10-29 15:33:36 +00:00
John Dyson
ff02cd98f2 Removal of unnecessary usage of PG_COPYONWRITE. 1995-10-23 04:28:59 +00:00
John Dyson
2c4488fce3 Finalize GETPAGES layering scheme. Move the device GETPAGES
interface into specfs code.  No need at this point to modify the
PUTPAGES stuff except in the layered-type (NULL/UNION) filesystems.
1995-10-23 02:23:29 +00:00
Julian Elischer
2279703911 almost entirely cosmetic changes
just keeping the sources in sync with my own set..
1995-10-10 07:12:27 +00:00
Steven Wallace
ab91e8eff2 Add #include <sys/sysproto.h> to get struct close_args and close
function prototype.
1995-10-08 00:09:00 +00:00
Poul-Henning Kamp
b67501dcda Avoid some 64bit divides. 1995-10-06 09:47:58 +00:00
Julian Elischer
56c3ab883e find some way of letting a node know where in its parent's directory structure
it was referenced from.. stops a rather annoying panic, but
introduces a rather interesting but "I can live with it" bug
`ln a b ; mv a b; echo ?`
returns a rather than b..
I know why but I need to think of the 'correct' answer. at least this is 'safe'
1995-10-04 11:05:09 +00:00
Julian Elischer
d51afe9d38 added support for link, and remove (unlink)
can now ln /devs/disks/floppy/fd1.1200 to fd1
and remove unwanted dirs and devices etc.
Still has a fatal bug.. don't use yet :)
1995-09-19 07:32:01 +00:00
Julian Elischer
55b7166d83 Submitted by: bde
prototype file follows the sources..
1995-09-14 06:17:28 +00:00
David Greenman
4590fd3a2a Fixed init functions argument type - caddr_t -> void *. Fixed a couple of
compiler warnings.
1995-09-09 18:10:37 +00:00
Julian Elischer
564643c636 More hacking on devfs..
I can  now do an mv on devices and directories in devfs
This was the hardest part.. link, delete and symlink will follow in
short order.
This code works but has definitly got vnode locking problems
I am electing to get the structure of it working before
spending too much time on the vnode confusion
so it's probably not reliable at the moment..
never-the less it looks good.
 :)
1995-09-09 12:51:56 +00:00
Julian Elischer
7090c38afc added the dev_link external registration
used to produce a second link to an already exixting device
e.g.
dev_add /disks/sd0
dev_link /scsi/bus0/targ0/lun0 to /disks/sd0
(not real syntax)
1995-09-08 04:46:14 +00:00
Julian Elischer
f5c892dd57 brought the README in to line with present code (still a bit cryptic) 1995-09-07 06:16:28 +00:00
Julian Elischer
65ba86052a more cleanups.. lots of code shuffled around too
routines renamed.. more simplifications,
some warnings squashed.
1995-09-07 06:01:36 +00:00
Julian Elischer
ab746f65c1 Suggested by: :) bde of course
added prototypes for every function and
put (void *) as the args to the vop array definitions.

can now compile with:
CWARNFLAGS?=    -W -Wreturn-type -Wcomment -Wredundant-decls -Wimplicit \
                -Wnested-externs -Wstrict-prototypes -Wmissing-prototypes \
                -Winline -Wstrict-prototypes
and only get errors for files external to this module:
namely
./vnode_if.h
../../sys/vnode.h
../../sys/buf.h
../../miscfs/specfs/specdev.h
1995-09-06 23:15:55 +00:00
Julian Elischer
a8ea97ec7f more devfs cleanups..
if this keeps simplifying there won't be any left :)
1995-09-06 09:29:19 +00:00
Julian Elischer
5ee2a9f3b6 this file replaces two others.. I haven't removed them yet, but
when this code seems more solid, they get the bullet.
1995-09-06 08:26:51 +00:00
John Dyson
c83ebe7781 Added VOP_GETPAGES/VOP_PUTPAGES and also the "backwards" block count
for VOP_BMAP.  Updated affected filesystems...
1995-09-04 00:21:16 +00:00
Julian Elischer
e475eb56ca remove about 50 lines of duplicate code..
the code to create the root directory now calls the generic
make directory routine..
1995-09-03 08:39:26 +00:00
Julian Elischer
8af5d536ff devfs changes..
changes to allow devices that don't probe (e.g. /dev/mem)
to create devfs entries
this required giving 'configure' its own SYSINIT entry
so we could duck in just before it with a DEVFS init
and some device inits..
my devfs now looks like:
./misc
./misc/speaker
./misc/mem
./misc/kmem
./misc/null
./misc/zero
./misc/io
./misc/console
./misc/pcaudio
./misc/pcaudioctl
./disks
./disks/rfloppy
./disks/rfloppy/fd0.1440
./disks/rfloppy/fd1.1200
./disks/floppy
./disks/floppy/fd0.1440
./disks/floppy/fd1.1200
also some sligt cleanups.. DEVFS needs a lot of work
but I'm getting back to it..
1995-09-03 05:43:50 +00:00
Mike Pritchard
8f5e8b4359 Do not allow delete/rename lookup request to prevent
panics if a user attempts to remove/rename files in
a fdesc file system.
1995-09-02 20:19:12 +00:00
Mike Pritchard
124c21f21f Correctly initialize the mount stat structure so that
fdesc file systems show up in "mount" correctly and so that
they can then be unmounted.
1995-09-02 20:17:57 +00:00
Mike Pritchard
efcc7f4218 Change procfs_lookup to not allow delete/rename operations
to prevent panics when a user tries to remove/rename the
contents of /proc/###/*.

Obtained from: 4.4BSD-lite2
1995-09-02 18:28:48 +00:00
Julian Elischer
ffb10de317 Submitted by: Julian
changes to make it compile again
1995-09-02 07:09:01 +00:00
Bruce Evans
cf2455a3ec The cred' and proc' args were missing for some VOP_OPEN() and VOP_CLOSE()
calls.

Found by: gcc -Wstrict-prototypes after I supplied some of the 5000+
missing prototypes.  Now I have 9000+ lines of warnings and errors
about bogus conversions of function pointers.
1995-08-17 11:53:51 +00:00
David Greenman
67d7e54eb1 Be careful not to dereference NULL credentials pointers when doing the
getattr function.
1995-08-11 07:26:26 +00:00
Jordan K. Hubbard
78f1a844fb Allow a pipe to be opened read/write at one end, as is allowed in
SunOS and SCO.  You can then even use the pipe as a cheap fifo stack
(yuck!).  A semantic change also important (but not limited) to iBCS2
compatibility.
Submitted by:	swallace
1995-08-06 16:14:21 +00:00
David Greenman
4777741358 Removed my special-case hack for VOP_LINK and fixed the problem with the
wrong vp's ops vector being used by changing the VOP_LINK's argument order.
The special-case hack doesn't go far enough and breaks the generic
bypass routine used in some non-leaf filesystems. Pointed out by Kirk
McKusick.
1995-08-01 18:51:02 +00:00
Mike Pritchard
3bc90ef89a Fix some incorrect comments that make reference to /dev/fd. 1995-07-31 09:52:21 +00:00
Mike Pritchard
f03dea9996 Fix various kernfs file system problems, which can result in
umountable file systems, hung processes, or system panics:

- Some operations could return without decrementing the vnode
  reference count.
- Some operations could leave the vnode locked.
- Generalize the /kern/rootdev & rrootdev files so that they
  are no longer special cased in kernfs_lookup().

Note: procfs, fdescfs, and most of the other miscfs/* file systems
also suffer from the same type of problems and I will work on
fixing them one at a time.
1995-07-31 08:52:02 +00:00
Bruce Evans
28f8db1403 Eliminate sloppy common-style declarations. There should be none left for
the LINT configuation.
1995-07-29 11:44:31 +00:00
Bruce Evans
97e156674d Don't include <sys/tty.h> in drivers that aren't tty drivers or in general
files that don't depend on the internals of <sys/tty.h>
1995-07-16 10:13:08 +00:00
David Greenman
24a1cce34f NOTE: libkvm, w, ps, 'top', and any other utility which depends on struct
proc or any VM system structure will have to be rebuilt!!!

Much needed overhaul of the VM system. Included in this first round of
changes:

1) Improved pager interfaces: init, alloc, dealloc, getpages, putpages,
   haspage, and sync operations are supported. The haspage interface now
   provides information about clusterability. All pager routines now take
   struct vm_object's instead of "pagers".

2) Improved data structures. In the previous paradigm, there is constant
   confusion caused by pagers being both a data structure ("allocate a
   pager") and a collection of routines. The idea of a pager structure has
   escentially been eliminated. Objects now have types, and this type is
   used to index the appropriate pager. In most cases, items in the pager
   structure were duplicated in the object data structure and thus were
   unnecessary. In the few cases that remained, a un_pager structure union
   was created in the object to contain these items.

3) Because of the cleanup of #1 & #2, a lot of unnecessary layering can now
   be removed. For instance, vm_object_enter(), vm_object_lookup(),
   vm_object_remove(), and the associated object hash list were some of the
   things that were removed.

4) simple_lock's removed. Discussion with several people reveals that the
   SMP locking primitives used in the VM system aren't likely the mechanism
   that we'll be adopting. Even if it were, the locking that was in the code
   was very inadequate and would have to be mostly re-done anyway. The
   locking in a uni-processor kernel was a no-op but went a long way toward
   making the code difficult to read and debug.

5) Places that attempted to kludge-up the fact that we don't have kernel
   thread support have been fixed to reflect the reality that we are really
   dealing with processes, not threads. The VM system didn't have complete
   thread support, so the comments and mis-named routines were just wrong.
   We now use tsleep and wakeup directly in the lock routines, for instance.

6) Where appropriate, the pagers have been improved, especially in the
   pager_alloc routines. Most of the pager_allocs have been rewritten and
   are now faster and easier to maintain.

7) The pagedaemon pageout clustering algorithm has been rewritten and
   now tries harder to output an even number of pages before and after
   the requested page. This is sort of the reverse of the ideal pagein
   algorithm and should provide better overall performance.

8) Unnecessary (incorrect) casts to caddr_t in calls to tsleep & wakeup
   have been removed. Some other unnecessary casts have also been removed.

9) Some almost useless debugging code removed.

10) Terminology of shadow objects vs. backing objects straightened out.
    The fact that the vm_object data structure escentially had this
    backwards really confused things. The use of "shadow" and "backing
    object" throughout the code is now internally consistent and correct
    in the Mach terminology.

11) Several minor bug fixes, including one in the vm daemon that caused
    0 RSS objects to not get purged as intended.

12) A "default pager" has now been created which cleans up the transition
    of objects to the "swap" type. The previous checks throughout the code
    for swp->pg_data != NULL were really ugly. This change also provides
    the rudiments for future backing of "anonymous" memory by something
    other than the swap pager (via the vnode pager, for example), and it
    allows the decision about which of these pagers to use to be made
    dynamically (although will need some additional decision code to do
    this, of course).

13) (dyson) MAP_COPY has been deprecated and the corresponding "copy
    object" code has been removed. MAP_COPY was undocumented and non-
    standard. It was furthermore broken in several ways which caused its
    behavior to degrade to MAP_PRIVATE. Binaries that use MAP_COPY will
    continue to work correctly, but via the slightly different semantics
    of MAP_PRIVATE.

14) (dyson) Sharing maps have been removed. It's marginal usefulness in a
    threads design can be worked around in other ways. Both #12 and #13
    were done to simplify the code and improve readability and maintain-
    ability. (As were most all of these changes)

TODO:

1) Rewrite most of the vnode pager to use VOP_GETPAGES/PUTPAGES. Doing
   this will reduce the vnode pager to a mere fraction of its current size.

2) Rewrite vm_fault and the swap/vnode pagers to use the clustering
   information provided by the new haspage pager interface. This will
   substantially reduce the overhead by eliminating a large number of
   VOP_BMAP() calls. The VOP_BMAP() filesystem interface should be
   improved to provide both a "behind" and "ahead" indication of
   contiguousness.

3) Implement the extended features of pager_haspage in swap_pager_haspage().
   It currently just says 0 pages ahead/behind.

4) Re-implement the swap device (swstrategy) in a more elegant way, perhaps
   via a much more general mechanism that could also be used for disk
   striping of regular filesystems.

5) Do something to improve the architecture of vm_object_collapse(). The
   fact that it makes calls into the swap pager and knows too much about
   how the swap pager operates really bothers me. It also doesn't allow
   for collapsing of non-swap pager objects ("unnamed" objects backed by
   other pagers).
1995-07-13 08:48:48 +00:00
David Greenman
e8cf02294a Added missing splx() in DIAGNOSTIC code.
Suggested by enami@sys.ptg.sony.co.jp.
1995-07-08 04:03:12 +00:00
David Greenman
9879652657 Fixed VOP_LINK argument order botch. 1995-06-28 07:06:55 +00:00
David Greenman
28a3c3c9a6 Killed the "probably_never" ifdef'd code. 1995-06-28 04:51:06 +00:00
Rodney W. Grimes
9b2e535452 Remove trailing whitespace. 1995-05-30 08:16:23 +00:00
David Greenman
243e5a88d5 Fixed panic that resulted from mmaping files in kernfs and procfs. A
regular user could panic the machine with a simple "tail /proc/curproc/mem"
command. The problem was twofold: both kernfs and procfs didn't fill in
the mnt_stat statfs struct (which would later lead to an integer divide
fault in the vnode pager), and kernfs bogusly paniced if a bmap was
attempted.

Reviewed by:	John Dyson
1995-05-25 01:35:24 +00:00
Rodney W. Grimes
b2b795f07c Fix -Wformat warnings from LINT kernel. 1995-05-11 19:26:53 +00:00
Julian Elischer
bacc93a004 change to reflect reality.
(yes I know I should have done one commit rod....)
1995-05-03 23:10:35 +00:00
Julian Elischer
c79137536b remove debugging printouts unless DEVFS_DEBUG is set. 1995-05-03 23:06:31 +00:00
Julian Elischer
8901d7cafe Submitted by: phk
if the 'time on a node is 0,..
tell the world it is the same as 'boottime'.
This is becasue 'time' is not set up when we create the nodes,
so we can't set them then.
1995-05-03 23:04:26 +00:00
Julian Elischer
9d55f6fd25 remove note about 'find' now that it's fixed. 1995-04-20 22:02:05 +00:00
Julian Elischer
b9494fba51 Submitted by: phk@freebsd.org
Reviewed by:	Julian
fixes the 'find' anomaly mentionned in the README
(hmm I guess I should fix that too..)

diff -r1.2 devfs_vnops.c
905a906
>                       dirent.d_type = DT_DIR;
914a916
>                       dirent.d_type = DT_DIR;
920a923,941
>                       switch(name_node->dnp->type) {
>                       case DEV_BDEV:
>                               dirent.d_type = DT_BLK;
>                               break;
>                       case DEV_CDEV:
>                               dirent.d_type = DT_CHR;
>                               break;
>                       case DEV_DDEV:
>                               dirent.d_type = DT_SOCK; /*XXX*/
>                               break;
>                       case DEV_DIR:
>                               dirent.d_type = DT_DIR;
>                               break;
>                       case DEV_SLNK:
>                               dirent.d_type = DT_LNK;
>                               break;
>                       default:
>                               dirent.d_type = DT_UNKNOWN;
>                       }
1995-04-20 22:00:05 +00:00
Julian Elischer
072506ba00 Submitted by: julian
@#%$#@ ftp -p corrupted the file in transfer..
(cut off the last 2 lines).. fix this
1995-04-20 07:42:41 +00:00
Julian Elischer
b79223f61b Submitted by: julian
I did a cleanup on the code..
(why didn't I do that before I checked it in? I hear you ask..)
1995-04-20 07:34:55 +00:00
Julian Elischer
adf18d3b60 Reviewed by:
Submitted by:	julian
oops rename doc file to README as agreed
1995-04-20 06:36:36 +00:00
Julian Elischer
e902d016a6 Reviewed by: no-one yet, but nonintrusive until configed in.. :)
Submitted by:	julian@freebsd.org
Obtained from:	written from scratch
1995-04-20 03:31:34 +00:00
David Greenman
d7e03b7a8b For P_SUGID processes, we must also change ownership of the mem file
to root so that group kmem can still get to it. *SIGH*
1995-04-15 03:20:31 +00:00
David Greenman
5232af2cf1 Retain group kmem readability for P_SUGID processes. 1995-04-15 02:50:13 +00:00
David Greenman
f62e09f22e Made /proc/n/mem file group kmem and group readable. Needed to fix ps so
that it doesn't need to be setuid root.
1995-04-15 02:30:17 +00:00
David Greenman
f6b04d2bfb Changes from John Dyson and myself:
Fixed remaining known bugs in the buffer IO and VM system.

vfs_bio.c:
Fixed some race conditions and locking bugs. Improved performance
by removing some (now) unnecessary code and fixing some broken
logic.
Fixed process accounting of # of FS outputs.
Properly handle NFS interrupts (B_EINTR).

(various)
Replaced calls to clrbuf() with calls to an optimized routine
called vfs_bio_clrbuf().

(various FS sync)
Sync out modified vnode_pager backed pages.

ffs_vnops.c:
Do two passes: Sync out file data first, then indirect blocks.

vm_fault.c:
Fixed deadly embrace caused by acquiring locks in the wrong order.

vnode_pager.c:
Changed to use buffer I/O system for writing out modified pages. This
should fix the problem with the modification date previous not getting
updated. Also dramatically simplifies the code. Note that this is
going to change in the future and be implemented via VOP_PUTPAGES().

vm_object.c:
Fixed a pile of bugs related to cleaning (vnode) objects. The performance
of vm_object_page_clean() is terrible when dealing with huge objects,
but this will change when we implement a binary tree to keep the object
pages sorted.

vm_pageout.c:
Fixed broken clustering of pageouts. Fixed race conditions and other
lockup style bugs in the scanning of pages. Improved performance.
1995-04-09 06:03:56 +00:00
Bruce Evans
3aa12267a5 Add and move declarations to fix all of the warnings from `gcc -Wimplicit'
(except in netccitt, netiso and netns) that I didn't notice when I fixed
"all" such warnings before.
1995-03-28 07:58:53 +00:00
David Greenman
edf8a81561 Removed redundant newlines that were in some panic strings. 1995-03-19 14:29:26 +00:00
Garrett Wollman
bbf3a56610 Add four more filesystem flags:
VFCF_NETWORK (this FS goes over the net)
	VFCF_READONLY (read-write mounts do not make any sense)
	VFCF_SYNTHETIC (data in this FS is not real)
	VFCF_LOOPBACK (this FS aliases something else)

cd9660 is readonly; nullfs, umapfs, and union are loopback; NFS is netowkr;
procfs, kernfs, and fdesc are synthetic.
1995-03-16 20:23:48 +00:00
Bruce Evans
b5e8ce9f12 Add and move declarations to fix all of the warnings from `gcc -Wimplicit'
(except in netccitt, netiso and netns) and most of the warnings from
`gcc -Wnested-externs'.  Fix all the bugs found.  There were no serious
ones.
1995-03-16 18:17:34 +00:00
David Greenman
59a9ecebb5 Make sure process isn't swapped when messing with it.
Added missing newline to log() call.
1995-02-20 15:53:33 +00:00
Poul-Henning Kamp
9977034cd2 YFfix 1995-02-14 06:31:13 +00:00
David Greenman
efc68ce10f Fixed bmap run-length brokeness.
Use bmap run-length extension when doing clustered paging.

Submitted by:	John Dyson
1995-02-03 06:46:28 +00:00
David Greenman
f81dd52383 Initialize map start hint to vm_map_find()...not doing so will cause it
to fail if the random thing on the stack happens to be too large.

Submitted by:	David Jones <dej@qpoint.torfree.net>
1995-01-05 03:59:38 +00:00
Andrey A. Chernov
16e544e7a1 Fix problem when attached process detached
Submitted by: Gary Jennejohn
1994-12-31 12:26:50 +00:00
Jordan K. Hubbard
7c85e00e1c From: Michael Reifenberger <root@rz-wb.fh-sw.de>
I added a bootfile entry to /kern so every program could examine the
Path and name of the kernel.
Submitted by:	mr
1994-11-15 20:30:56 +00:00
Bruce Evans
36633bf49d Undo a previous change. <sys/disklabel.h> was broken, not these files. 1994-11-14 13:22:52 +00:00
David Greenman
c4a7b7e10c From tim@cs.city.ac.uk (Tim Wilkinson):
Find enclosed a short bugfix to get the union filesystem up and running
in FreeBSD-current.  We don't think we've got all the problems yet but
these fixes sort out the major ones (which mostly concert bad locking
of vnodes), no doubt we'll post others as necessary.  Known problems
include the inability of the umount command (not the system call) to unmount
unions in certain circumstances (this is due the way "realpath" works),
and the failure of direntries to always get all available files in
unioned subdirectories.  We are, as they say, working on it.

Submitted by:	tim@cs.city.ac.uk (Tim Wilkinson)
1994-11-04 14:41:46 +00:00
Jordan K. Hubbard
94a92413cd From: fredriks@mcs.com (Lars Fredriksen)
...
It turns out that these files do not include <sys/dkbad.h> before
<sys/disklabel.h>.
Submitted by:	fredriks
1994-10-28 12:42:05 +00:00
David Greenman
1b4bb67169 Fixed bug I just introduced that would have allowed a user to clobber
his kernel stack.
1994-10-18 04:40:41 +00:00
David Greenman
2d8f106204 Allow upages to be paged in/accessed.
Submitted by:	John Dyson
1994-10-18 04:26:53 +00:00
Poul-Henning Kamp
3a773ad0b5 Cosmetics. reduce the noise from gcc -Wall. 1994-10-10 07:55:48 +00:00
Poul-Henning Kamp
b18375bc71 Cosmetics: added a #include and a static prototype to silence gcc. 1994-10-08 22:37:00 +00:00
David Greenman
824789192c Use tsleep() rather than sleep so that 'ps' is more informative about
the wait.
1994-10-06 21:07:04 +00:00
Poul-Henning Kamp
623ae52e4e GCC cleanup.
Reviewed by:
Submitted by:
Obtained from:
1994-10-02 17:48:58 +00:00
David Greenman
0f85a55965 1) Added "." and ".." entries.
2) Fixed directory size to return something reasonable.
3) Disabled "file" until the code is completed.
4) Corrected directory link counts.
1994-09-24 17:01:05 +00:00
David Greenman
c7b5eaccd6 Include <sys/kernel.h> not <kernel.h> 1994-09-23 11:01:58 +00:00
Garrett Wollman
c9b1d6048d More loadable VFS changes:
- Make a number of filesystems work again when they are statically compiled
  (blush)

- FIFOs are no longer optional; ``options FIFO'' removed from distributed
  config files.
1994-09-22 19:38:41 +00:00
Garrett Wollman
67bfdf835b Fix a few niggling little bugs:
- set args->lkm_offset correctly so that VFS modules can be unloaded
- initialize _fs_vfsops.vfc_refcount correctly so that VFS modules can
  be unloaded
- include kernel.h in a few placves to get the correct definition of DATA_SET
1994-09-21 23:22:52 +00:00
Garrett Wollman
c901836c14 Implemented loadable VFS modules, and made most existing filesystems
loadable.  (NFS is a notable exception.)
1994-09-21 03:47:43 +00:00
Bruce Evans
0ad076d56a Supply prototypes for some functions that were implicitly declared and
fix the resulting warnings.
1994-09-15 19:47:47 +00:00
David Greenman
ef3bc95504 Relaxed panic in fdesc_setattr() to just return error. 1994-09-09 13:24:26 +00:00
David Greenman
c78b2dd3e1 Fixed off by one error in referencing an array.
Stolen from:	NetBSD
1994-09-09 13:23:20 +00:00
David Greenman
7b42c960f8 1) cleaned up after Garrett - fixed more redundant declarations, changed
use of timeout_t -> timeout_func_t in aha1542 and aha1742 drivers.
2) fix a bug in the portalfs that was uncovered by better prototyping -
   specifically, the time must be converted from timeval to timespec
   before storing in va_atime.
3) fixed/added some miscellaneous prototypes
1994-08-20 03:49:02 +00:00
Garrett Wollman
f23b4c91c4 Fix up some sloppy coding practices:
- Delete redundant declarations.
- Add -Wredundant-declarations to Makefile.i386 so they don't come back.
- Delete sloppy COMMON-style declarations of uninitialized data in
  header files.
- Add a few prototypes.
- Clean up warnings resulting from the above.

NB: ioconf.c will still generate a redundant-declaration warning, which
is unavoidable unless somebody volunteers to make `config' smarter.
1994-08-18 22:36:09 +00:00
David Greenman
866dba7305 Changed B_AGE policy to work correctly in a world with relatively large
buffer caches. The old policy generally ended up caching nothing.
1994-08-08 09:11:44 +00:00
David Greenman
3c4dd3568f Added $Id$ 1994-08-02 07:55:43 +00:00
Rodney W. Grimes
26f9a76710 The big 4.4BSD Lite to FreeBSD 2.0.0 (Development) patch.
Reviewed by:	Rodney W. Grimes
Submitted by:	John Dyson and David Greenman
1994-05-25 09:21:21 +00:00
Rodney W. Grimes
df8bae1de4 BSD 4.4 Lite Kernel Sources 1994-05-24 10:09:53 +00:00