Library mcertikos.proc.PAbQueueCSource

***********************************************************************
*                                                                     *
*            The CertiKOS Certified Kit Operating System              *
*                                                                     *
*                   The FLINT Group, Yale University                  *
*                                                                     *
*  Copyright The FLINT Group, Yale University.  All rights reserved.  *
*  This file is distributed under the terms of the Yale University    *
*  Non-Commercial License Agreement.                                  *
*                                                                     *
*********************************************************************** 

Require Import Coqlib.
Require Import AST.
Require Import Integers.
Require Import Values.
Require Import Cop.
Require Import Clight.
Require Import CDataTypes.
Require Import Ctypes.

      extern unsigned int CURID_LOC;

      unsigned int get_curid()
      {
          return CURID_LOC;
      }

Definition get_curid_body : statement :=
  Sreturn (Some (Evar CURID_LOC tint)).

Definition f_get_curid := {|
                           fn_return := tint;
                           fn_callconv := cc_default;
                           fn_vars := nil;
                           fn_params := nil;
                           fn_temps := nil;
                           fn_body := get_curid_body
                         |}.

      extern unsigned int CURID_LOC;

      void set_curid(unsigned int curid)
      {
          CURID_LOC = curid;
      }

Let tcurid: ident := 1 % positive.

Definition set_curid_body : statement :=
  Sassign (Evar CURID_LOC tint) (Etempvar tcurid tint).

Definition f_set_curid := {|
                           fn_return := Tvoid;
                           fn_callconv := cc_default;
                           fn_vars := nil;
                           fn_params := ((tcurid, tint) :: nil);
                           fn_temps := nil;
                           fn_body := set_curid_body
                         |}.