1
0
mirror of https://git.FreeBSD.org/src.git synced 2024-12-19 10:53:58 +00:00
Commit Graph

20178 Commits

Author SHA1 Message Date
Robert Watson
a7e8b37043 Don't allow VOP_GETEXTATTR to set uio->uio_offset != 0, as we don't
provide locking over extended attribute operations, requiring that
individual operations be atomic.  Allowing non-zero starting offsets
permits applications/etc to put themselves at risk for inconsistent
behavior.  As VOP_SETEXTATTR already prohibited non-zero write offsets,
this makes sense.

Suggested by:	Andreas Gruenbacher <a.gruenbacher@bestbits.at>
2000-05-03 05:50:46 +00:00
Yoshihiro Takahashi
86a5a8c251 - Removed hi-resolution mode supports.
- Added a dummy partition table.
2000-05-03 04:35:25 +00:00
Warner Losh
0ab302bfbe Move sn and cs drivers from the compat section to the real section.
Enable xe driver now that I've had reports that it works.

PR: 18323
Submitted by: MIHIRA Yoshiro-san
2000-05-03 00:49:57 +00:00
Paul Richards
c0151c49d2 Replace all the ifdef debugging spaghetti with a single ifdef and
a macro so that it is easier to read the flow of the code.
2000-05-03 00:20:36 +00:00
Paul Richards
7a04c4f85a Force the address of the socket to be INADDR_ANY immediately before
calling in_pcbbind so that in_pcbbind sees a valid address if no
address was specified (since divert sockets ignore them).

PR:		17552
Reviewed by:	Brian
2000-05-02 23:53:46 +00:00
Peter Wemm
3dd227c27a Bump FreeBSD_version after module version changes
Submitted by:	knu
2000-05-02 20:26:34 +00:00
Archie Cobbs
1bdebe4d45 Don't assume *lasthook is initialized in ng_path2node(). 2000-05-02 17:09:46 +00:00
Luigi Rizzo
9078405886 Remove an unnecessary error message 2000-05-02 15:39:36 +00:00
Nick Hibma
65b674a33b Add the udbp module 2000-05-02 11:51:07 +00:00
Warner Losh
2b91ff7819 Add PnP ID for vadem based plug and play card.
Submitted by: Dave Belfer-Shevett <shevett@stonekeep.com>
Fix by: Bill Paul
2000-05-02 06:50:17 +00:00
Jason Evans
80673a5d07 Add ENOTSUP, which is specified as an error return value for various
POSIX/SUSv2 functions.
2000-05-02 06:02:11 +00:00
Seigo Tanimura
af2dfb5b69 Add the logical ID of FUJITSU Modem 33600 PNP/I2.
PR:		kern/18257
Submitted by:	Takanori Watanabe <takawata@shidahara1.planet.sci.kobe-u.ac.jp>
2000-05-02 05:54:11 +00:00
Doug White
55ebf88553 Add man page for pxeboot.
Reviewed By:	asmodai
2000-05-02 05:01:38 +00:00
Chuck Robey
10ae1068e5 Cause modules to build with the kernel build. Modules are removed
from the sys Makefile's SUBDIRs.  This is conditioned in make.conf by the
NO_MODULES variable and the existence of the modules directory.  The
actual location of the modules is not modified.  Changes in Makefiles
only, this does not affect Peter's recent changes.

Reviewed by:	Peter Wemm, who warned me I would get some flack, and
		he had the good idea for the NO_MODULES variable.
2000-05-02 02:26:04 +00:00
Matt Jacob
e381b06c73 Add in include of <machine/clock.h> which defines DELAY. 2000-05-02 01:37:02 +00:00
Archie Cobbs
a9b3dca54d Fix broken multi-link fragment reassembly algorithm.
Add hook for IPv6. Misc cleanups.

PR:		kern/16335
2000-05-02 00:09:18 +00:00
Archie Cobbs
dce9390ed0 Macro call to ng_send_dataq() should have been to ng_send_data() instead. 2000-05-01 23:34:15 +00:00
Archie Cobbs
a096e45ab9 Use 'type_name' structure field instead of 'typename', which is
a C++ reserved work.

Add a ng_copy_meta() function.
2000-05-01 23:29:19 +00:00
Nick Hibma
b5ea1f0c77 The USB double bulk pipe driver (Host to host cables). Currently there
are two supported chips, the NetChip 1080 (only prototypes available)
and the EzLink cable. Any other cable should be supported however as they
are all very much alike (there is a difference between them wrt
performance).

It uses Netgraph.

This driver was mostly written by Doug Ambrisko and Julian Elischer and
I would like to thank Whistle for yet another contribution. And my
aplogies to them for me sitting on the driver for so long (2 months).

Also, many thanks to Reid Augustin from NetChip for providing me with a
prototype of their 1080 chip.

Be aware of the fact that this driver is very immature and has only been
tested very lightly. If someone feels like learning about Netgraph however
this is an excellent driver to start playing with.
2000-05-01 22:48:23 +00:00
Peter Wemm
cc3daab531 A temporary band-aid for ng_base. It works for some people, a better
fix will follow.

Submitted by:   Gary Jennejohn <garyj@muc.de>
2000-05-01 21:26:50 +00:00
Peter Wemm
365c5db0a7 Add $FreeBSD$ 2000-05-01 20:32:07 +00:00
Nick Hibma
af3ff17a45 Regen. 2000-05-01 20:31:01 +00:00
Nick Hibma
096ce94051 Add the EzLink adapter Id 2000-05-01 20:26:12 +00:00
Peter Wemm
10f9bc7f43 Add missing $FreeBSD$ 2000-05-01 19:54:26 +00:00
Poul-Henning Kamp
e4057dbdb0 Move and staticize the bufchain functions so they become local to the
only piece of code using them.  This will ease a rewrite of them.
2000-05-01 19:38:51 +00:00
Peter Wemm
23f282aa31 Zap KMODDEPS line 2000-05-01 18:58:48 +00:00
Archie Cobbs
2be85d6dac Add TAILQ_FOREACH_REVERSE() macro.
Submitted by:	Jake Burkholder <jburkhol@home.com>
2000-05-01 18:17:14 +00:00
Peter Wemm
09be11ba99 Remove KMODDEPS support. All our existing dependencies are specified
via the MODULE_VERSION() and MODULE_DEPEND() macros that both the loader
and kld system know how to deal with.  The old DT_NEEDED tag is still
supported by the loader (and will remain supported for a while) - but the
kernel side presently doesn't know how to deal with DT_NEEDED.
2000-05-01 18:06:49 +00:00
Peter Wemm
62470170de GC unused variable (size) 2000-05-01 18:03:15 +00:00
Peter Wemm
cd2d859cee Fix some warnings on the Alpha. sizeof() returns different things on
x86 and Alpha. Sigh.
2000-05-01 18:02:38 +00:00
Paul Saab
482cb52dcb Wrap the failure warnings around PXE_DEBUG in the cleanup routine.
It does not matter if they fail, so dont print anything about it
unless we are debugging.
2000-05-01 17:55:05 +00:00
Boris Popov
801e789e01 Update loader logic to distinguish modules vs. files.
Add support for module metadata. The old way of dependancy
handling will be supported for a while.

Reviewed by:	peter
2000-05-01 17:41:25 +00:00
Poul-Henning Kamp
9d7f73695d Convert to struct bio instead of struct buf. 2000-05-01 13:36:43 +00:00
Poul-Henning Kamp
017ef345bc Give struct bio it's own call back mechanism. 2000-05-01 13:36:25 +00:00
Peter Wemm
ab063af911 Move the MSG* and SEM* options to opt_sysvipc.h
Remove evil allocation macros from machdep.c (why was that there???) and
use malloc() instead.
Move paramters out of param.h and into the code itself.
Move a bunch of internal definitions from public sys/*.h headers (without
#ifdef _KERNEL even) into the code itself.

I had hoped to make some of this more dynamic, but the cost of doing
wakeups on all sleeping processes on old arrays was too frightening.
The other possibility is to initialize on the first use, and allow
dynamic sysctl changes to parameters right until that point. That would
allow /etc/rc.sysctl to change SEM* and MSG* defaults as we presently
do with SHM*, but without the nightmare of changing a running system.
2000-05-01 13:33:56 +00:00
Peter Wemm
2553c04ce2 Regenerate (removed semconfig) 2000-05-01 11:14:08 +00:00
Peter Wemm
b423446cc0 Remove the undocumented, flawed, broken-as-designed semconfig() syscall. 2000-05-01 11:13:41 +00:00
Peter Wemm
39e4c0c888 Remove undocumented broken-as-designed semconfig() syscall. 2000-05-01 11:11:44 +00:00
Andrey A. Chernov
89fad7112d Back out t_timeout initializing, now in ttyregister 2000-05-01 10:53:12 +00:00
Andrey A. Chernov
051f60b976 Move t_timeout initializing to ttyregister
Pointed-by: bde
2000-05-01 10:51:54 +00:00
Doug Rabson
4b4a49fda5 * Move the driver_t::refs field to kobj_t to replace kobj_t::instances.
* Back out a couple of workarounds for the confusion between
  kobj_t::instances and driver_t::refs.
2000-05-01 10:45:15 +00:00
Andrey A. Chernov
ef4de1ad38 Since ptys are allocated dynamically, there is no needs to keep their
t_timeout across close, so move t_timeout initializing to ptcopen
2000-05-01 10:24:21 +00:00
Andrey A. Chernov
e52ac4f6d6 Initialize t_timeout to -1 for console to set its default value once in ttyopen 2000-05-01 09:21:08 +00:00
Matthew N. Dodd
68c68f014d Split out the ISA bus front end code into its own file. PCCARD attachment
coming later this week.  Mitsuru IWASAKI provided a patch to -mobile which
I used to make sure I was doing the right thing but only a small part of
the actual patch was used.
2000-05-01 09:05:19 +00:00
Andrey A. Chernov
4eaed34ba0 Set t_timeout to its default sysctl value only once in ttyopen
Initialize t_timeout to -1 for this reason

Pointed-by: bde
2000-05-01 09:05:03 +00:00
Søren Schmidt
af5bd99e9a Fix for the HP burners (and possibly other broken drives to)
that fails to proberly close the disk.
The problem seems to be that the HP burners sometimes return
ready when they actually are not, the solution is to not use
immediate mode on the closing commands. This is suboptimal
for real burners, in that they now hog the ATA bus for possibly
minutes, where its really not nessesary, *sigh*.
2000-05-01 07:30:28 +00:00
Warner Losh
de3958c256 Now that I've got reports that this works, let's turn the debugging off.
MIHIRA-san pointed out that debugging is rather big for tcpdump...

Submitted by:	sanpei@sanpei.org (MIHIRA Yoshiro)
2000-05-01 04:41:04 +00:00
Matthew N. Dodd
738da2f362 - Merge sl_probe() and ni_probe().
- Add myself as 'MAINTAINER' since I've got a number
  of changes in the pipe.
2000-05-01 03:40:21 +00:00
Archie Cobbs
dbed384338 Adjust to accomodate recent changes to the rcvdata and rcvmsg
function prototypes.
2000-05-01 03:31:58 +00:00
Boris Popov
0bcd84403f Reserve major device number for nsmb (SMB/CIFS protocol) device. 2000-05-01 00:49:19 +00:00
Gerard Roudier
79c3f400b1 Phase mismatch handling from SCRIPTS had been
broken by previous patch.
2000-04-30 21:42:55 +00:00
Poul-Henning Kamp
2c9b67a8df Remove unneeded #include <vm/vm_zone.h>
Generated by:	src/tools/tools/kerninclude
2000-04-30 18:52:11 +00:00
Brian Feldman
26872f7ef2 For the M_PREPEND macro, remove an initial mbuf NULL check I added. It
was added accidentally, and although not terrible, it would improperly
hide the bug of calling M_PREPEND with a NULL mbuf argument.

Submitted by:	jlemon (ISTR)
2000-04-30 18:42:44 +00:00
Brian Feldman
226f14bc83 Change the scheduler to actually respect the PUSER barrier. It's been
wrong for many years that negative niceness would lower the priority
of a process below PUSER, and once below PUSER, there were conditionals
in the code that are required to test for whether a process was in
the kernel which would break.

The breakage could (and did) cause lock-ups, basically nothing else
but the least nice program being able to run in some conditions.  The
algorithm which adjusts the priority now subtracts PRIO_MIN to do
things properly, and the ESTCPULIM() algorithm was updated to use
PRIO_TOTAL (PRIO_MAX - PRIO_MIN) to calculate the estcpu.

NICE_WEIGHT is now 1 to accomodate the full range of priorities better
(a -20 process with full CPU time has the priority of a +0 process with
no CPU time).  There are now 20 queues (exactly; 80 priorities) for
use in user processes' scheduling, and PUSER has been lowered to 48
to accomplish this.

This means, to the user, that things will be scheduled more correctly
(noticeable), there is no lock-up anymore WRT a niced -20 process
never releasing the CPU time for other processes.  In this fair system,
tsleep()ed < PUSER processes now will get the proper higher priority
than priority >= PUSER user processes.

The detective work of this was done by me, along with part of the
solution.  Luoqi Chen has provided most of the solution, and really
helped me understand what was happening better, to boot :)

Submitted by:   luoqi
Concept reviewed by:    bde
2000-04-30 18:33:43 +00:00
Andrey A. Chernov
c1d0c3a89d Add sysctl variable to set initial drainwait timeout on ttyopen, default to
5 minutes
2000-04-30 16:00:53 +00:00
Mark Murray
f47dc39cf5 Fix comments, whitespace to reduce diffs between this and GENERIC. 2000-04-30 15:38:28 +00:00
Bruce Evans
3aae7b16d2 Fixed the type of some ivar access functions. Ivars have type uintptr_t,
not u_long.  On i386's with 64-bit longs, returning u_longs indirectly
in (more than) the space reserved for uintptr_t's tended to corrupt the
previous frame pointer in the stack frame, so it was not easy to debug.
The type mismatches are hidden by the bogus cast in DEVMETHOD().
2000-04-30 10:01:56 +00:00
Julian Elischer
ac4445057f Update the man page to reflect the recent changes to the kernel API for
netgraph.
2000-04-30 10:01:11 +00:00
Doug Rabson
0163d0f514 Include <sys/random.h> for rand_initialize(). 2000-04-30 09:41:35 +00:00
Yoshihiro Takahashi
0b09ce0c5b - Added UKBD_DFLT_KEYMAP option.
Pointed out:	Tomokazu HARADA <tkhara@osk4.3web.ne.jp>

- Fixed disordering.
2000-04-30 09:12:48 +00:00
Yoshihiro Takahashi
517b2a8d5c Clean up MAXMEM routine.
Submitted by:	"K.Magara" <magara@maizuru-ct.ac.jp>
2000-04-30 08:52:47 +00:00
Yoshihiro Takahashi
de64b8c968 Fixed to support JIS7 KANJI.
Submitted by:	Nobuyuki Koganemaru <kogane@koganemaru.co.jp>
2000-04-30 08:40:43 +00:00
Yoshihiro Takahashi
292feef381 Sync with sys/boot/i386/libi386/biosdisk.c revision 1.30. 2000-04-30 08:24:36 +00:00
Bruce Evans
3101c7e80d Removed a stale forward struct declaration. 2000-04-30 06:47:24 +00:00
Bruce Evans
2ba118a15e Removed superfluous forward declaration of struct klist. Forward
declarations of structs for use in prototypes are only necessary if
the struct is not otherwise declared in scope.

Removed prototypes for fdissequential() and fdsequential().  These
functions never existed in FreeBSD.

Fixed most style bugs in FreeBSD changes (mainly disordered prototypes
and prototypes without parameter names).
2000-04-30 06:31:28 +00:00
Poul-Henning Kamp
95bdaa0ee8 Hmm, diff/patch still doesn't like me.
Missed one s/biowait/bufwait/g
2000-04-30 06:16:03 +00:00
Bruce Evans
a3b693c9d7 Updated the name of the idempotency macro to match the move of this file.
Fixed a missing forward declaration.
2000-04-30 05:16:24 +00:00
Jonathan Lemon
b5b8b79d07 Define more DOSPTYP_* constants for different filesystem types
Reminded by:	ps
2000-04-30 02:33:40 +00:00
Paul Saab
95394e643f Fall back to /pxeroot as the location of the NFS exported directory
if we are not given one by dhcp.
Remove extra includes while I am here.

Reminded by:	jlemon
2000-04-29 23:08:49 +00:00
Jonathan Lemon
8e30378f89 Teach the loader about the ext2fs filesystem, extended partitions, and
the new readdir function.
2000-04-29 20:49:33 +00:00
Poul-Henning Kamp
932a24df3e Peter and I cross-committed: this file needs sys/kernel.h now. 2000-04-29 18:03:52 +00:00
Warner Losh
f490231eb3 Return 0 from attach.
Submitted by: mihira-san <sanpei@sanpei.org>
2000-04-29 17:43:12 +00:00
Poul-Henning Kamp
87150cb06d s/biowait/bufwait/g
Prodded by: several.
2000-04-29 16:25:22 +00:00
Poul-Henning Kamp
c1462ad325 Remove a leftover dysonism. 2000-04-29 16:14:10 +00:00
Poul-Henning Kamp
eb95c536ad Remove unneeded #include <sys/kernel.h> 2000-04-29 15:36:14 +00:00
Peter Wemm
5a54cb4145 Add a missing MODULE_DEPEND() on miibus.. I was working from
KMODDEPS which this driver didn't have.
2000-04-29 15:25:56 +00:00
Peter Wemm
95a1645553 Depend on miibus.
Note that if_aue doesn't strictly depend on usb because it uses the
method interface for calls rather than using internal symbols, and
because it's a child driver of usb and therefore will not try and do
anything unless the parent usb code is loaded at some point.  if_aue does
strictly depend on miibus as it will fail to link if it is missing.
2000-04-29 13:41:57 +00:00
Peter Wemm
9ad6460a9e Provide a tag so that miibus consumers can depend on the module,
regardless of whether it is in a seperate .ko or the kernel (or in a .ko
bundled with several other things in one file for packaging).
2000-04-29 13:38:26 +00:00
Peter Wemm
99ff81767f Minimal tweak to make the ng_XXX modules depend on netgraph so that they
see its symbols and link ok.
2000-04-29 13:36:07 +00:00
Peter Wemm
6ff4e7af7e nwfs depends on ncp 2000-04-29 13:34:28 +00:00
Peter Wemm
36d4f7c197 Stick a module dependency on 'splash' in the saver declaration macro so
that all savers are automatically declared dependent on the splash driver.
2000-04-29 13:33:18 +00:00
Peter Wemm
041cd80735 Initial dependency so that the kld's will link. imgact_coff depends
on the ibcs2 module being present.
2000-04-29 13:32:16 +00:00
Peter Wemm
eb2d8c2e8a The newer module dependency code exposes an apparent bug in the
bus/driver/kobj system.  I am not 100% sure that this is the correct fix,
but it is harmless and does seem to solve the problem.  At worst, it could
cause a tiny memory leak at unload time - this is better than a free(NULL)
and subsequent panic.  I'm waiting for comments from Doug about this.
This may yet be backed out and fixed differently.

The change itself is to increment the reference count on drivers in one
case where it appears to have been missed.  When everything is unloaded,
kobj_class_free() was being called twice in some cases, and panicing the
second time.
2000-04-29 13:24:35 +00:00
Peter Wemm
54823af256 First round implementation of a fine grain enhanced module to module
version dependency system.  This isn't quite finished, but it is at a
useful stage to do a functional checkpoint.

Highlights:
- version and dependency metadata is gathered via linker sets, so things
are handled the same for static kernels and code built to live in a kld.
- The dependencies are at module level (versus at file level).
- Dependencies determine kld symbol search order - this means that you
cannot link against symbols in another file unless you depend on it. This
is so that you cannot accidently unload the target out from underneath
the ones referencing it.
- It is flexible enough that we can put tags in #include files and macros
so that we can get decent hooks for enforcing recompiles on incompatable
ABI changes.  eg: if we change struct proc, we could force a recompile
for all kld's that reference the proc struct.
- Tangled dependency references at boot time are sorted.  Files are
relocated once all their dependencies are already relocated.

Caveats:
- Loader support is incomplete, but has been worked on seperately.
- Actual enforcement of the version number tags is not active yet - just
the module dependencies are live.  The actual structure of versioning
hasn't been agreed on yet. (eg: major.minor, or whatever)
- There is some backwards compatability for old modules without metadata
but I'm not sure how good it is.

This is based on work originally done by Boris Popov (bp@freebsd.org),
but I'm not sure he'd recognize much of it now. Don't blame him. :-)
Also, ideas have been borrowed from Mike Smith.
2000-04-29 13:19:31 +00:00
Peter Wemm
7c3fdf6bbc Do not fault if curproc is null. 2000-04-29 11:32:15 +00:00
Peter Wemm
ef83592d2c Do not use uprintf() for link time error messages. This has unpleasant
consequences when it happens in the preload support, before curproc or
the tty system exist.
2000-04-29 11:21:44 +00:00
Gerard Roudier
c5595f9dd0 This new version adds support for early NCR chips.
53C810 non 'A', 53C815 and 53C825 non 'A' are now
attached by the driver (by default).
The driver uses a different SCRIPTS set based on
MEMORY MOVE instructions for these chips.

2 SCRIPTS sets (firmwares) numbered #1 and #2 are
used for the whole support of the 53C8XX family
to get possible:

- FW #1 : Only based on MEMORY MOVE instructions.
          Selected for 810, 815, 825.
- FW #2 : LOAD/STORE based. This is the firmware
          also used by previous driver versions.
          Selected for other chips.

When both `ncr' and `sym' are configured, `sym'
will now attach all the 53C8XX devices by default.
Previous balancing between `ncr' and `sym' can be
preserved by:

- Either editing sym_conf.h and commenting the
  following compile option:
     #define SYM_CONF_GENERIC_SUPPORT
  (This also saves about 3.5Kb of kernel memory).

- Or setting kernel config option
    SYM_SETUP_LP_PROBE_MAP to 64 (bit 0x40)
2000-04-29 10:20:16 +00:00
Peter Wemm
621372ff84 Mark two functions as private. 2000-04-29 07:48:37 +00:00
Peter Wemm
02d06d3007 LOAD_ADDRESS is not used here. See conf/ldscript.* for the link base
address.
2000-04-29 06:29:39 +00:00
Yoshihiro Takahashi
e73f2591dc Fixed typo. 2000-04-29 05:55:33 +00:00
Julian Elischer
0beebe3a2e OOps forgot to check in this one...
API chage for netgraph.
2000-04-28 17:43:04 +00:00
David E. O'Brien
b870c55839 Hookup /dev/[u]random on the Alpha. 2000-04-28 17:18:48 +00:00
David E. O'Brien
5af5e4c773 Initialise entropy pool.
Submitted by:	dfr
2000-04-28 17:17:41 +00:00
Julian Elischer
a4ec03cfa8 Two simple changes to the kernel internal API for netgraph modules,
to support future work in flow-control and 'packet reject/replace'
processing modes.

reviewed by: phk, archie
2000-04-28 17:09:00 +00:00
Ruslan Ermilov
8060760500 Replace PacketAliasRedirectPptp() (which had nothing specific
to PPTP) with more generic PacketAliasRedirectProto().

Major number is not bumped because it is believed that noone
has started using PacketAliasRedirectPptp() yet.
2000-04-28 13:44:49 +00:00
Doug Rabson
637c418d65 Change Elf64_Brandinfo::brand from char* to int. 2000-04-28 08:53:23 +00:00
Doug Rabson
20b11a6003 Reserve register t7 on alpha to point at per-cpu global variables. 2000-04-28 08:44:42 +00:00
Kirk McKusick
0fa301ad86 When files are given to users by root, the quota system failed to
reset their grace timer as their ownership crossed the soft limit
threshhold. Thus if they had been over their limit in the past,
they were suddenly penalized as if they had been over their limit
ever since. The fix is to check when root gives away files, that
when the receiving user crosses their soft limit, their grace timer
is reset. See the PR report for a detailed method of reproducing
the bug.

PR:		kern/17128
Submitted by:	Andre Albsmeier <andre.albsmeier@mchp.siemens.de>
Reviewed by:	Kirk McKusick <mckusick@mckusick.com>
2000-04-28 06:12:56 +00:00
Warner Losh
16ec9f077e sanpai-san (sanpai@sanpai.org) suggested that we put the novel probe
first.  This will fix a few cards that hang on the WD probe.  He tells
me that PAO went one step farther and removed the WD proble completely
and none of the cards in the 2.x database broke in PAO3.  Since I'm
more conservative in this code, I'm just swapping the order, which he
said also fixed his problem.

Reviewed by: mdodd, iwasaki
Submitted by: sanpai@sanpai.org
2000-04-28 05:01:35 +00:00
Archie Cobbs
933f6f8689 Add a new macro CIRCLEQ_FOREACH_REVERSE for traversing through a
circle queue in the reverse direction (from tail to head).
2000-04-27 22:50:12 +00:00