* Licensed under the GPL
*/
-#include "linux/config.h"
#include "linux/percpu.h"
#include "asm/pgalloc.h"
#include "asm/tlb.h"
#include "asm/smp.h"
#include "asm/processor.h"
#include "asm/spinlock.h"
-#include "user_util.h"
#include "kern_util.h"
#include "kern.h"
#include "irq_user.h"
void smp_send_reschedule(int cpu)
{
- os_write_file(cpu_data[cpu].ipi_pipe[1], "R", 1);
+ os_write_file_k(cpu_data[cpu].ipi_pipe[1], "R", 1);
num_reschedules_sent++;
}
for(i = 0; i < num_online_cpus(); i++){
if(i == current_thread->cpu)
continue;
- os_write_file(cpu_data[i].ipi_pipe[1], "S", 1);
+ os_write_file_k(cpu_data[i].ipi_pipe[1], "S", 1);
}
printk("done\n");
}
{ .pid = new_task->thread.mode.tt.extern_pid,
.task = new_task } );
idle_threads[cpu] = new_task;
- CHOOSE_MODE(os_write_file(new_task->thread.mode.tt.switch_pipe[1], &c,
- sizeof(c)),
+ CHOOSE_MODE(os_write_file_k(new_task->thread.mode.tt.switch_pipe[1], &c,
+ sizeof(c)),
({ panic("skas mode doesn't support SMP"); }));
return(new_task);
}
idle = idle_thread(cpu);
init_idle(idle, cpu);
- unhash_process(idle);
waittime = 200000000;
while (waittime-- && !cpu_isset(cpu, cpu_callin_map))
int fd;
fd = cpu_data[cpu].ipi_pipe[0];
- while (os_read_file(fd, &c, 1) == 1) {
+ while (os_read_file_k(fd, &c, 1) == 1) {
switch (c) {
case 'C':
smp_call_function_slave(cpu);
info = _info;
for_each_online_cpu(i)
- os_write_file(cpu_data[i].ipi_pipe[1], "C", 1);
+ os_write_file_k(cpu_data[i].ipi_pipe[1], "C", 1);
while (atomic_read(&scf_started) != cpus)
barrier();