Size: a a a

pro.osdev - os development

2021 December 01

BD

Berkus Decker in pro.osdev - os development
Спасибо, а что там наступает?)
источник

DF

Dollar Føølish in pro.osdev - os development
католическое рождество, потом новый год )
источник

BD

Berkus Decker in pro.osdev - os development
А, ну эт нескоро еще (и заплакал)
источник

BD

Berkus Decker in pro.osdev - os development
но спасибо!
источник

BD

Berkus Decker in pro.osdev - os development
https://en.wikipedia.org/wiki/OS-9 это конечно шедевр
источник

X

XÆA-XII in pro.osdev - os development
Ага, и ловить лайфтаймами как в расте
источник

X

XÆA-XII in pro.osdev - os development
Чтобы программисты посдыхали, пока что-либо напишут под это
источник

BD

Berkus Decker in pro.osdev - os development
I find your weakness disgusting
источник
2021 December 02

d

disba1ancer in pro.osdev - os development
а имеет смысл делать почти все вектора прерываний ошибочными для обработки через #GP на x86?
источник

d

disba1ancer in pro.osdev - os development
даже не так, имеет ли смысл что-то придумывать для получения номера прерывания в обработчике прерывания?
источник

BV

Boris Vinogradov in pro.osdev - os development
а что ты хочешь по итогу получить?
источник

NK

Nickolay Kononov in pro.osdev - os development
а разве это не делают тем что кладут на стек номер и вызывают одну функцию?
источник

d

disba1ancer in pro.osdev - os development
скажем одним обработчиком обрабатывать все irq
источник

d

disba1ancer in pro.osdev - os development
речь больше про аппаратные прерывания
источник

NK

Nickolay Kononov in pro.osdev - os development
а в чем разница?
источник

NK

Nickolay Kononov in pro.osdev - os development
static void
trap_dispatch(struct Trapframe *tf)
{
 // Handle processor exceptions.
 switch (tf->tf_trapno) {
       case T_PGFLT:
           page_fault_handler(tf);
           return;
       case T_BRKPT:
           monitor(tf);
           return;
       case T_SYSCALL:
           tf->tf_regs.reg_eax = syscall(tf->tf_regs.reg_eax,
                                         tf->tf_regs.reg_edx, tf->tf_regs.reg_ecx,
                                         tf->tf_regs.reg_ebx, tf->tf_regs.reg_edi,
                                         tf->tf_regs.reg_esi);
           return;
       default:
           // Unexpected trap: The user process or the kernel has a bug.
           print_trapframe(tf);
           if (tf->tf_cs == GD_KT)
               panic("unhandled trap in kernel");
           else {
               env_destroy(curenv);
               return;
           }
 }

 // Handle spurious interrupts
 // The hardware sometimes raises these because of noise on the
 // IRQ line or other reasons. We don't care.
 if (tf->tf_trapno == IRQ_OFFSET + IRQ_SPURIOUS) {
   cprintf("Spurious interrupt on irq 7\n");
   print_trapframe(tf);
   return;
 }

 // Handle clock interrupts. Don't forget to acknowledge the
 // interrupt using lapic_eoi() before calling the scheduler!
 if (tf->tf_trapno == IRQ_OFFSET + IRQ_TIMER) {
     lapic_eoi();
       sched_yield();
 }
источник

NK

Nickolay Kononov in pro.osdev - os development
ну это 32 битный JOS
источник

NK

Nickolay Kononov in pro.osdev - os development
в xv6 и JOS вроде просто N функций на ассемблере которые делают одно и то же (кладут номер на стек и вызывают одну и ту же функцию)
источник

d

disba1ancer in pro.osdev - os development
вот как-то не хочется копипастинга...
источник

NK

Nickolay Kononov in pro.osdev - os development
ну в xv6 скрипт на перле который это делает)
источник