| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
Message-Id: <Y5z01C/L+pnSVNIP@mars>
|
|
|
|
|
|
|
|
| |
We add htonl, ntohl and ntohs which were the last symbols we relied on
from libc.
The Makefile.am file was updated to reflect the fact that we only require libgcc.
Message-Id: <Y5zNdOJ/YnyYCOhX@mars>
|
|
|
|
|
|
| |
We already use this built-in in other places and this will move us closer to
being able to build the kernel without libc.
Message-Id: <Y5l80/VUFvJYZTjy@jupiter.tail36e24.ts.net>
|
|
|
|
|
|
|
|
| |
The vaddr field of the returned map only points to the base address, we
have to add the offset within the page before reading/writing.
This fixes accessing tasks different from the current task, and
the user part of ddb backtraces.
|
| |
|
|
|
|
| |
The target pointer was not getting advanced between page chunks.
|
| |
|
|
|
|
| |
Message-Id: <Y5V+BovjWo1CCjBc@jupiter.tail36e24.ts.net>
|
|
|
|
|
|
| |
These are not used.
Message-Id: <Y5V95ibk9Z+3OJxN@jupiter.tail36e24.ts.net>
|
|
|
|
| |
Message-Id: <Y5AdTQfSxStjbhsj@reue>
|
|
|
|
|
| |
Make it clear where exactly we use port names vs port addresses.
Message-Id: <Y5AdJGuzXBMO7YRK@reue>
|
|
|
|
|
|
| |
RPC interfaces already use long_natural_t so internally we can also use
this type.
Message-Id: <Y5AdPNqg4l5jAZ3n@reue>
|
|
|
|
|
|
|
|
|
|
| |
This allows *printf to use %zd/%zu/%zx to print vm_size_t and
vm_offset_t. Warnings using the incorrect specifiers were fixed.
Note that MACH_PORT_NULL became just 0 because GCC thinks that we were
comparing a pointer to a character (due to it being an unsigned int) so
I removed the explicit cast.
Message-Id: <Y47UNdcUF35Ag4Vw@reue>
|
|
|
|
|
|
|
|
|
|
| |
Changed vm_size_t to rpc_size_t so that both userland and kernel agree
on the same size. Also changed the denominator for the maximum struct
sizes to be integer_t to match the other declarations.
Introduced long_natural_t and rpc_long_natural_t to represent large
counters. Replaced rpc_unsigned_long with rpc_long_natural_t.
Message-Id: <Y47UhaOzKnqhgYq4@reue>
|
|
|
|
|
|
|
|
| |
Whenever a Hurd essential task crashes, startup just reboots the system
since there's not much that can be done at that point. When we have a
kernel debugger, however, we could at least get crashing information, so
let's let Hurd's startup tell the kernel which tasks are essential, and
trigger the debugger whenever they crash.
|
|
|
|
|
| |
A few places that I missed in 958686efa2175abe3f7044890c2c2370e29147f2.
Message-Id: <Y4g+4THLC/1NvnkM@viriathus>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Make it explicit where we use port names versus actual ports. For the 64
bit kernel, port names and ports are of different size so this corrects
the syscall arguments and internal structs to have the right size.
This patch also uncovered several issues we need to solve to make
GNUMach work well on 64 bits. First, the mach_msg call will receive 4
byte port names while the kernel "thinks" they are 8 bytes, which will
be a problem. Also, when we send a message, the kernel translates the
port names into port pointers in the message copied from user space.
This also won't work on 64 bits. In this patch, I added several TODOs to fix
the issues later.
Message-Id: <Y4cCzNmc6vC4bjsX@viriathus>
|
| |
|
|
|
|
| |
Message-Id: <Y4QQFkTUR4M60Gx0@viriathus>
|
|
|
|
|
| |
Also update C definition to use proper types.
Message-Id: <Y4QKgh0zHdB8pWhD@viriathus>
|
|
|
|
|
| |
mach/pc_sample.h has the definitions that the kernel actually uses.
Message-Id: <Y4QKGtUdbz+AVO3l@viriathus>
|
| |
|
|
|
|
|
|
|
|
| |
This reverts commit 8c58257c4da364ffcb797f9d454c37de939a052b.
These headers are actually coming from i386. This change was making
`make dist` try to build the x86_64/include/mach/x86_64 directory in the
dist tarball.
|
|
|
|
|
|
|
|
|
|
|
| |
If a "wire_required" process calls vm_map_protect(0), the
memory gets unwired as expected. But if the process then calls
vm_map_protect(VM_PROT_READ) again, we need to wire that memory.
(This happens to be exactly what glibc does for its heap)
This fixes Hurd hangs on lack of memory, during which mach was swapping
pieces of mach-defpager out.
|
|
|
|
|
|
|
|
| |
e2fcf261076b ("interrupt: Fix saving irq/ipl when linux drivers are
disabled") changed the stack layout for interrupt handlers, but missed
updating kdb_kintr's code that tries to mangle it.
This restores the control-alt-d shortcut.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The new interfaces will be compatible both with a 64 bits kernel and
userland and 64 bits kernel and 32 bit userland. Also removed many
of the uses of natural_t where an unsigned int suffices. Ideally we
should replace natural_t with something more portable such as uintptr_t
or a basic int type for counters since for the most part we don't
need counters to have the same width as the pointer type.
* i386/include/mach/i386/vm_types.h: Define rpc_unsigned_long.
* include/mach/mach_types.defs: Define type rpc_vm_offset_t.
* include/mach_debug/hash_info.h: Use unsigned int instead of natural_t.
* include/mach_debug/mach_debug_types.defs: Update cache_info_t,
hash_info_bucket_t, vm_region_info_t, vm_object_info_t and
vm_page_info_t to use struct.
* include/mach_debug/slab_info.h: Use rpc_vm_size_t and
rpc_unsigned_long for compatibility with 32 bits userland.
* include/mach_debug/vm_info.h: Update struct fields to use the correct
types and avoid natural_t whenever we just want to keep a count of
something.
Message-Id: <Y32lp1SuV01ImCx9@viriathus>
|
|
|
|
| |
Message-Id: <Y35PHuUNCFb6sQO0@viriathus>
|
|
|
|
|
| |
214866d58ac2 ("Add ioapic support disabled by default") missed adding
them for x86_64.
|
|
|
|
| |
Message-Id: <Y23fab31RM6HcCyb@viriathus>
|
|
|
|
|
|
|
| |
e2fcf261076b (""interrupt: Fix saving irq/ipl when linux drivers are
disabled") broke booting under some conditions, because the parameters were
erroneously written 4 bytes too far for splx_cli and ioapic_irq_eoi to
read them.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* include/mach/mach_types.defs: host_basic_info_data_t,
host_sched_info_data_t,
host_load_info_data_t,
processor_basic_info_data_t,
processor_set_basic_info_data_t,
processor_set_sched_info_data_t,
hread_basic_info_data_t,
thread_sched_info_data_t,
task_basic_info_data_t,
task_events_info,
task_thread_times_info_data_t,
machine_info_data_t,
machine_slot_data_t
* include/mach_debug/mach_debug_types.defs: ipc_info_name_t,
ipc_info_name_array_t
Tested by bootstrapping a Hurd system from scratch.
Message-Id: <Y2dD7Z60Bwybg4jF@viriathus>
|
|
|
|
|
|
|
| |
- Add half a clock tick for more accuracy
- Start the pit countdown during pit_sleep
- Add pit_mdelay and pit_udelay functions
Message-Id: <20221025105502.222708-8-damien@zamaudio.com>
|
|
|
|
| |
Message-Id: <20221025105502.222708-7-damien@zamaudio.com>
|
|
|
|
|
|
| |
Message-Id: <20221025105502.222708-5-damien@zamaudio.com>
Co-authored-by: Almudena Garcia <liberamenso10000@gmail.com>
|
|
|
|
| |
Message-Id: <20221025105502.222708-4-damien@zamaudio.com>
|
| |
|
|
|
|
| |
Message-Id: <20221025105502.222708-2-damien@zamaudio.com>
|
|
|
|
|
|
| |
When we want to enable APIC, we must initialize the structure or
otherwise, it will try to access to a not initialized memory addresses.
Message-Id: <20220924163145.39894-1-etienne.brateau@gmail.com>
|
|
|
|
|
| |
These are provided by mig since ecf59842e472 ("Make MIG recognize the
basic C integral types."), released in snapshot v1.8+git20200618.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When Linux drivers are disabled, in hardclock() the linux_timer_intr()
call is dropped, and gcc can tail-recursion-optimize the call to
clock_interrupt(). To do so, it overwrites the hardclock() parameters to
suit the clock_interrupt parameters layout. This however means it thrashes
the backups that the interrupt() function had made of irq/ipl, leading to
mayhem.
interrupt should thus really properly separate its irq/ipl backups from the
interrupt function parameters.
Thanks a lot to Etienne Brateau for the tricky investigation!
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* vm/memory_object_proxy.c: truncate vm array types as if they were
the rpc_ version because MIG can't handle that. This rpc can't
handle more than one element anyway.
Note that the same issue with vm arrays is present at least with
syscall emulation, but that functionality seems unused for now.
A better fix could be to add a vm descriptor type in include/mach/message.h,
but then probably we don't need to use the rpc_ types in MIG anymore,
they would be needed only for the syscall definitions.
Signed-off-by: Luca Dariz <luca@orpolo.org>
Message-Id: <20220628101054.446126-15-luca@orpolo.org>
|
|
|
|
|
| |
In the 32/64 conversion case it is copyinmsg that will know the
eventual size.
|
|
|
|
|
| |
and restore the checks for offset alignment in the message, even if
currently it is trivially always alright.
|
|
|
|
|
|
|
| |
* ipc/ipc_kmsg.c: align msg body to 4 bytes as done in mig
Signed-off-by: Luca Dariz <luca@orpolo.org>
Message-Id: <20220628101054.446126-7-luca@orpolo.org>
|
| |
|