POK(kernelpart)
/home/jaouen/pok_official/pok/trunk/kernel/arch/ppc/syscalls.c File Reference
#include <errno.h>
#include <core/debug.h>
#include <core/syscall.h>
#include <core/partition.h>
#include <types.h>
#include <libc.h>

Go to the source code of this file.

Functions

void pok_arch_sc_int (uint32_t num, uint32_t arg1, uint32_t arg2, uint32_t arg3, uint32_t arg4, uint32_t arg5)

Function Documentation

void pok_arch_sc_int ( uint32_t  num,
uint32_t  arg1,
uint32_t  arg2,
uint32_t  arg3,
uint32_t  arg4,
uint32_t  arg5 
)

Definition at line 26 of file syscalls.c.

{
   uint8_t              part_id;

   pok_syscall_info_t   syscall_info;
   pok_syscall_args_t   syscall_args;
   pok_syscall_id_t     syscall_id;

   part_id  = pok_current_partition;

   /* prepare syscall_info */
   syscall_info.partition = part_id;
   syscall_info.base_addr = pok_partitions[part_id].base_addr;
   syscall_info.thread    = POK_SCHED_CURRENT_THREAD;

   /* prepare syscall_args */
   syscall_args.arg1 = arg1;
   syscall_args.arg2 = arg2;
   syscall_args.arg3 = arg3;
   syscall_args.arg4 = arg4;
   syscall_args.arg5 = arg5;

   syscall_args.nargs = 5;

   /* prepare syscall_id */
   syscall_id = (pok_syscall_id_t) num;

   if (POK_CHECK_PTR_IN_PARTITION(syscall_info.partition, &syscall_args) != 0)
   {
      /*
       * Perform the syscall baby !
       */
     pok_core_syscall (syscall_id, &syscall_args, &syscall_info);
   }
}