addr = kmalloc(size, GFP_KERNEL);
}
mallocs++;
+
return addr;
}
/**
* Creates a kernel thread.
*/
-static void
+static void *
palacios_start_kernel_thread(
int (*fn) (void * arg),
void * arg,
thread_info->arg = arg;
thread_info->name = thread_name;
- kthread_run( lnx_thread_target, thread_info, thread_name );
- return;
+ return kthread_run( lnx_thread_target, thread_info, thread_name );
}
return NULL;
}
- kthread_bind(thread, cpu_id);
+ set_cpus_allowed_ptr(thread, cpumask_of(cpu_id));
wake_up_process(thread);
return thread;
*/
static int
palacios_move_thread_to_cpu(int new_cpu_id,
- void * thread_ptr) {
+ void * thread_ptr) {
struct task_struct * thread = (struct task_struct *)thread_ptr;
- if(thread == NULL){
+ printk("Moving thread (%p) to cpu %d\n", thread, new_cpu_id);
+
+ if (thread == NULL) {
thread = current;
}
* Bind to the specified CPU. When this call returns,
* the thread should be running on the target CPU.
*/
- return set_cpus_allowed(thread, cpumask_of_cpu(new_cpu_id));
+ return set_cpus_allowed_ptr(thread, cpumask_of(new_cpu_id));
}
printk("palacios_init starting - calling init_v3\n");
- Init_V3(&palacios_os_hooks, nr_cpu_ids);
+ Init_V3(&palacios_os_hooks, num_online_cpus());
return 0;