[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Lost] [Patch] kernel2: Syscalls fuer p/v



Am Montag, 9. Juni 2008 23.13:17 schrieb kevin@xxxxxxxxxx:
> + kernel2: Syscalls fuer p() und v()

> Index: trunk/src/kernel2/src/syscalls/pv.c
> ===================================================================
> --- /dev/null
> +++ trunk/src/kernel2/src/syscalls/pv.c
> @@ -0,0 +1,72 @@
> ...
> +
> +/**
> + * Kritischen Abschnitt einleiten (Keine RPCs ausser Antworten sind mehr
> + * zulaessig)
> + */
> +int syscall_pm_p(void)
> +{
> +    pm_block_rpc(cpu_get_current()->thread->process,
> +        cpu_get_current()->thread->process->pid);
Hm hier wäre sowas wie pm_current_process() und pm_current_thread() wohl nicht 
übel, aber das wäre was für einen separaten Patch.

> Index: trunk/src/kernel2/include/tasks.h
> ===================================================================
> --- trunk.orig/src/kernel2/include/tasks.h
> +++ trunk/src/kernel2/include/tasks.h
> @@ -70,6 +70,12 @@ typedef struct {
>
>      /// Der RPC-Handler fuer diesen Prozess
>      vaddr_t rpc_handler;
> +
> +    /// Die PID des Prozesses, der RPC fuer diesen Prozess abgestellt hat
> +    dword blocked_by_pid;
> +
> +    /// Die Anzahl von p()s (RPC wird erst bei 0 wieder freigegeben)
> +    dword blocked_count;
Die beiden Member werden in pm_create nirgends initialisiert, soweit ich das 
sehe.