- Change ktrace interface to pass in the current process, rather than
p->p_tracep, since the various ktr* function need curproc anyway.
- Add curproc as a parameter to mi_switch() since all callers had it
handy anyway.
- Add a second proc argument for inferior() since callers all had
curproc handy.
Also, miscellaneous cleanups in ktrace:
- ktrace now always uses file-based, rather than vnode-based I/O
(simplifies, increases type safety); eliminate KTRFLAG_FD & KTRFAC_FD.
Do non-blocking I/O, and yield a finite number of times when receiving
EWOULDBLOCK before giving up.
- move code duplicated between sys_fktrace and sys_ktrace into ktrace_common.
- simplify interface to ktrwrite()
state into global and per-CPU scheduler state:
- Global state: sched_qs (run queues), sched_whichqs (bitmap
of non-empty run queues), sched_slpque (sleep queues).
NOTE: These may collectively move into a struct schedstate
at some point in the future.
- Per-CPU state, struct schedstate_percpu: spc_runtime
(time process on this CPU started running), spc_flags
(replaces struct proc's p_schedflags), and
spc_curpriority (usrpri of processes on this CPU).
- Every platform must now supply a struct cpu_info and
a curcpu() macro. Simplify existing cpu_info declarations
where appropriate.
- All references to per-CPU scheduler state now made through
curcpu(). NOTE: this will likely be adjusted in the future
after further changes to struct proc are made.
Tested on i386 and Alpha. Changes are mostly mechanical, but apologies
in advance if it doesn't compile on a particular platform.
kernel should only be used for experimentation
comment out some stuff not present or used on my development machine
g/c ef
add (commented out) aha attachment
from db_stack_trace_cmd() to db_stack_trace_print(),
and add an additional argument, a function pointer for an
output routine (i.e. printf() or db_printf()).
Add db_stack_trace_cmd() in db_command.[ch], calling
db_stack_trace_print() with db_printf() as the printer.
Move count==-1 special handling from db_stack_trace_print() [nee
db_stack_trace_cmd()] to db_stack_trace_cmd() [nascent here].
Again, I'm unable to test compilation on all affected platforms,
so advance apologies for potential brokenness.
which indicates that the process is actually running on a
processor. Test against SONPROC as appropriate rather than
combinations of SRUN and curproc. Update all context switch code
to properly set SONPROC when the process becomes the current
process on the CPU.
Lots of the work was done by Adam Ciarcinsky.
Currently, this only supports CyberPPC boards by Phase 5. Blizzard PPC
expected later.
The kernel is useless but for demonstrating that it starts... especially
interupts, and most of MMU support, is not in yet. Builtin console works,
however, and you can look at the kernel startup messages.
pointer indicating how to print the symbol. This allows db_printsym()
to called in places where db_printf() is not an appropriate output
function.
While straightforward, apologies in advance if I've introduced any minor
syntax errors; I was unable to test compilation this on all the affected
platforms.
scsibus0: waiting 2 seconds for devices to settle...
message during boot crashes the system.
This is because ite_filter() is called before init(8) opens the console.
- Add 16 bytes to the stack on entry to _mcount so we don't
overflow it.
- Use inline interrupt {dis,en}abling instead of calling
profiled function in locore.
PCI config space. Since PCI config space is mostly used by PCI bus drivers,
we won't actually map it in. Instead we use MMU bypass ASI accesses to read
and write PCI config space.
- the `alignment' and `boundary' arguments in bus_dmamem_alloc() only
serve as hints on how to break up a DMA transaction into chunks
when necessary; it is not necessary on sparc DVMA hardware.
- exclusively use the VM page size (i.e. PAGE_SIZE et.al.) when computing
resource allocations.
- remember the size of DVMA resource allocations in the private `_ds_sgsize'
field in a dma segment descriptor.
- mark as CPUFLG_CACHE_MANDATORY to avoid cache inconsistencies in
pmap_{zero,copy}_page().
- compute caching alias bits correctly
- add experimental optimisation in ms1_cache_flush().
addresses the problems seen by Jason Thorpe <thorpej@netbsd.org> and
Erik Berls <cyber@netbsd.org> necessitating rev 1.20 of
biosboot/main.c.
Move BOOTSEG from 0x100 to 0x1000.
Move heap from 0x10000 to 0x20000.
XXXXXXXX
This is a Kluge From Hell to allow boot blocks to grow a little larger
without diskbuf[] crossing a 64k boundary.
- Set the correct adapter address in RPB for Unibus devices.
- Repair the disk read routines for HP disks. ROM routines do not work
on HP disks, therefore use a small home-written routine.
- Use the RPB for passing boot device info up to kernel, instead of the
old BSD "hack" with an encoded longword (see sys/reboot.h for details)
- Instead of separate drivers for all devices, use the HW-provided ROM
routines as much as possible.
- Add filesystem support for CD9660 also (now when there is space).
- Make everything compile with WARNS=1.
The boot block is now <7K in size and have support for UFS, CD9660 and USTAR.
change these from bp->b_un.b_addr to bp->b_data, as well. This also
allows us more flexibility to experiment with other data buffer types
hung off of struct buf.
Unlike the other Sun machines, UltraSPARCs can have consoles run on different
chips than zs, so we need to support them. So, here we go:
Add a new PROM console driver with a major number and everything.
This is the default driver if nothing else attaches. It does not
use the keyboard driver since the PROM translates keystrokes itself.
(Unfortunately it also swallows L1-A).
Have the keyboard driver take over the console when it attaches on a
serial port. When a serial port detects a keyboard and attaches the
keyboard driver, it needs to provide a set of consdev vectors. They
keyboard driver will use those to send I/O to the keyboard and mouse.
just one copy of this.
- remove duplicate setting of sgsize in iommu_dvmamap_load().
- fix DIAGNOSTIC check in iommu_dvmamap_load_raw() to panic() in unexpected
conditions only (not normal ones), and also add an extra case.
it to determine the boot device: mvme68k, pc532, macppc, ofppc. Those
platforms should be changed to use device_register(). In the mean time,
those ports defined __BROKEN_DK_ESTABLISH.
from Jeff Smith <jeffs@geocast.com>. These are needed to support
-mips2 compilation. With this change, on a QED 5231 we now pass the
paranoia tests, and are successfully using userlands built with -mips2.
from biosboot via the "consdev" command.
Move "Press return" printf() out of print_banner() so we can
print_banner() reasonably after switching devices.
found in some older IBM PS/2 machines.
This code is based upon work by Scott D. Telford, with some minor bits
in arch/i386/mca/mca_machdep.c taken from FreeBSD.
XXX this is still very experimental and development version; use at your
XXX own risk
all the time (which crashes some vaios), get the static configuration,
and if config_search() finds a node, then do the dynamic configuration.
This seems to work fine on multiple vaios (which seem to crash
in different places...go figure).
Also, bring prototypes in-line with KNF and declare static as appropriate.
"#if 0" out pnpbios_getapmtable() and pnpbios_setnode() as they
are not called.
Fix printf()s to print out dv_xname.
Fix a comment typo.
Use manifest constants (PNP_CF_DEVCONF_DYNAMIC, etc.) in calls to
pnpbios_getnode() instead of hardcoded constants.