Library mcertikos.proc.PCVIntroCSource
Require Import Coqlib.
Require Import AST.
Require Import Integers.
Require Import Values.
Require Import Cop.
Require Import Clight.
Require Import CDataTypes.
Require Import Ctypes.
Definition _i := 10%positive.
Definition _mbi_adr := 11%positive.
Require Import AST.
Require Import Integers.
Require Import Values.
Require Import Cop.
Require Import Clight.
Require Import CDataTypes.
Require Import Ctypes.
Definition _i := 10%positive.
Definition _mbi_adr := 11%positive.
#define num_chan 16337
extern void init_sync_chan (unsigned int index);
extern void tdqueue_init (unsigned int mbi_adr);
void fifobbq_pool_init (unsigned int mbi_adr){
    unsigned int i;
    tdqueue_init(mbi_adr);
    i = 0;
    while (i < num_chan){
        init_sync_chan(i);
        i++;
    }   
}
Definition f_fifobbq_pool_init_while_condition :=
(Ebinop Olt (Etempvar _i tuint) (Econst_int (Int.repr num_chan) tint) tint).
Definition f_fifobbq_pool_init_while_body :=
(Ssequence
(Scall None (Evar init_sync_chan (Tfunction (Tcons tuint Tnil) tvoid cc_default))
((Etempvar _i tuint) :: nil))
(Sset _i (Ebinop Oadd (Etempvar _i tuint) (Econst_int (Int.repr 1) tint) tuint))).
Definition f_fifobbq_pool_init_body :=
(Ssequence
(Scall None
(Evar tdqueue_init (Tfunction (Tcons tuint Tnil) tvoid cc_default))
((Etempvar _mbi_adr tuint) :: nil))
(Ssequence
(Sset _i (Econst_int (Int.repr 0) tint))
(Swhile f_fifobbq_pool_init_while_condition
f_fifobbq_pool_init_while_body))).
Definition f_fifobbq_pool_init :=
{|
fn_return := tvoid;
fn_callconv := cc_default;
fn_params := ((_mbi_adr, tuint) :: nil);
fn_vars := nil;
fn_temps := ((_i, tuint) :: nil);
fn_body := f_fifobbq_pool_init_body
|}.
    #define MAX_BUFFSIZE 1024
    unsigned int
    ipc_send_body(unsigned int chid, unsigned int sender_kpa, unsigned int scount)
    {
        //unsigned int myid = get_curid();
        //unsigned int sender_kpa = get_kernel_pa(myid, vaddr);
        //set_sync_chan_to(chid, myid);
        if (scount < MAX_BUFFSIZE) {
          //set_sync_chan_paddr(chid, sender_kpa);
          set_sync_chan_count(chid, scount);
          page_copy(chid, scount, vaddr);
          return scount;
        } else {
          //set_sync_chan_paddr(chid, sender_kpa);
          set_sync_chan_count(chid, MAX_BUFFSIZE);
          page_copy(chid, MAX_BUFFSIZE, sender_kpa);
          return MAX_BUFFSIZE;
        }
    }
 
Let _scount : ident := 40%positive.
Let _chid : ident := 38%positive.
Let _vaddr : ident := 39%positive.
Definition ipc_send_body_body :=
(Sifthenelse (Ebinop Olt (Etempvar _scount tuint)
(Econst_int (Int.repr 1024) tint) tint)
(Ssequence
(Scall None
(Evar set_sync_chan_count (Tfunction
(Tcons tuint (Tcons tuint Tnil))
tvoid cc_default))
((Etempvar _chid tuint) :: (Etempvar _scount tuint) :: nil))
(Ssequence
(Scall None
(Evar page_copy (Tfunction
(Tcons tuint
(Tcons tuint (Tcons tuint Tnil))) tvoid
cc_default))
((Etempvar _chid tuint) :: (Etempvar _scount tuint) ::
(Etempvar _vaddr tuint) :: nil))
(Sreturn (Some (Etempvar _scount tuint)))))
(Ssequence
(Scall None
(Evar set_sync_chan_count (Tfunction
(Tcons tuint (Tcons tuint Tnil))
tvoid cc_default))
((Etempvar _chid tuint) :: (Econst_int (Int.repr 1024) tint) ::
nil))
(Ssequence
(Scall None
(Evar page_copy (Tfunction
(Tcons tuint
(Tcons tuint (Tcons tuint Tnil))) tvoid
cc_default))
((Etempvar _chid tuint) ::
(Econst_int (Int.repr 1024) tint) ::
(Etempvar _vaddr tuint) :: nil))
(Sreturn (Some (Econst_int (Int.repr 1024) tint)))))).
Definition f_ipc_send_body := {|
fn_return := tuint;
fn_callconv := cc_default;
fn_params := ((_chid, tuint) :: (_vaddr, tuint) :: (_scount, tuint) :: nil);
fn_vars := nil;
fn_temps := nil;
fn_body := ipc_send_body_body
|}.
Let _chid : ident := 38%positive.
Let _vaddr : ident := 39%positive.
Definition ipc_send_body_body :=
(Sifthenelse (Ebinop Olt (Etempvar _scount tuint)
(Econst_int (Int.repr 1024) tint) tint)
(Ssequence
(Scall None
(Evar set_sync_chan_count (Tfunction
(Tcons tuint (Tcons tuint Tnil))
tvoid cc_default))
((Etempvar _chid tuint) :: (Etempvar _scount tuint) :: nil))
(Ssequence
(Scall None
(Evar page_copy (Tfunction
(Tcons tuint
(Tcons tuint (Tcons tuint Tnil))) tvoid
cc_default))
((Etempvar _chid tuint) :: (Etempvar _scount tuint) ::
(Etempvar _vaddr tuint) :: nil))
(Sreturn (Some (Etempvar _scount tuint)))))
(Ssequence
(Scall None
(Evar set_sync_chan_count (Tfunction
(Tcons tuint (Tcons tuint Tnil))
tvoid cc_default))
((Etempvar _chid tuint) :: (Econst_int (Int.repr 1024) tint) ::
nil))
(Ssequence
(Scall None
(Evar page_copy (Tfunction
(Tcons tuint
(Tcons tuint (Tcons tuint Tnil))) tvoid
cc_default))
((Etempvar _chid tuint) ::
(Econst_int (Int.repr 1024) tint) ::
(Etempvar _vaddr tuint) :: nil))
(Sreturn (Some (Econst_int (Int.repr 1024) tint)))))).
Definition f_ipc_send_body := {|
fn_return := tuint;
fn_callconv := cc_default;
fn_params := ((_chid, tuint) :: (_vaddr, tuint) :: (_scount, tuint) :: nil);
fn_vars := nil;
fn_temps := nil;
fn_body := ipc_send_body_body
|}.
    #define NUM_PROC 1204
    unsigned int
    ipc_receive_body(unsigned int chid, unsigned int vaddr, unsigned int rcount)
    {
      //unsigned int myid = get_curid();
      unsigned int sender_count = get_sync_chan_count(chid);
      unsigned int arecvcount = (sender_count < rcount) ? sender_count : rcount;
      //unsigned int rbuffpa = get_kernel_pa(myid, vaddr);
      page_copy_back(chid, arecvcount, vaddr);
      //set_sync_chan_to(chid, NUM_PROC);
      //set_sync_chan_paddr(chid, 0);
      set_sync_chan_count(chid, 0);
      return arecvcount;
    }
 
Let _senderid : ident := 146%positive.
Let _rcount : ident := 143%positive.
Let _arecvcount : ident := 147%positive.
Let _sender_count : ident := 15%positive.
Definition ipc_receive_body_body :=
(Ssequence
(Scall (Some _sender_count)
(Evar get_sync_chan_count (Tfunction (Tcons tuint Tnil) tuint
cc_default))
((Etempvar _chid tuint) :: nil))
(Ssequence
(Sifthenelse (Ebinop Olt (Etempvar _sender_count tuint)
(Etempvar _rcount tuint) tint)
(Sset _arecvcount (Ecast (Etempvar _sender_count tuint) tuint))
(Sset _arecvcount (Ecast (Etempvar _rcount tuint) tuint)))
(Ssequence
(Scall None
(Evar page_copy_back (Tfunction
(Tcons tuint
(Tcons tuint (Tcons tuint Tnil))) tvoid
cc_default))
((Etempvar _chid tuint) :: (Etempvar _arecvcount tuint) ::
(Etempvar _vaddr tuint) :: nil))
(Ssequence
(Scall None
(Evar set_sync_chan_count (Tfunction
(Tcons tuint
(Tcons tuint Tnil)) tvoid
cc_default))
((Etempvar _chid tuint) ::
(Econst_int (Int.repr 0) tint) :: nil))
(Sreturn (Some (Etempvar _arecvcount tuint))))))).
Definition f_ipc_receive_body :=
{|
fn_return := tuint;
fn_callconv := cc_default;
fn_params := ((_chid, tuint) :: (_vaddr, tuint) :: (_rcount, tuint) :: nil);
fn_vars := nil;
fn_temps := ((_sender_count, tuint) ::
(_arecvcount, tuint) :: nil);
fn_body := ipc_receive_body_body
|}.
Let _rcount : ident := 143%positive.
Let _arecvcount : ident := 147%positive.
Let _sender_count : ident := 15%positive.
Definition ipc_receive_body_body :=
(Ssequence
(Scall (Some _sender_count)
(Evar get_sync_chan_count (Tfunction (Tcons tuint Tnil) tuint
cc_default))
((Etempvar _chid tuint) :: nil))
(Ssequence
(Sifthenelse (Ebinop Olt (Etempvar _sender_count tuint)
(Etempvar _rcount tuint) tint)
(Sset _arecvcount (Ecast (Etempvar _sender_count tuint) tuint))
(Sset _arecvcount (Ecast (Etempvar _rcount tuint) tuint)))
(Ssequence
(Scall None
(Evar page_copy_back (Tfunction
(Tcons tuint
(Tcons tuint (Tcons tuint Tnil))) tvoid
cc_default))
((Etempvar _chid tuint) :: (Etempvar _arecvcount tuint) ::
(Etempvar _vaddr tuint) :: nil))
(Ssequence
(Scall None
(Evar set_sync_chan_count (Tfunction
(Tcons tuint
(Tcons tuint Tnil)) tvoid
cc_default))
((Etempvar _chid tuint) ::
(Econst_int (Int.repr 0) tint) :: nil))
(Sreturn (Some (Etempvar _arecvcount tuint))))))).
Definition f_ipc_receive_body :=
{|
fn_return := tuint;
fn_callconv := cc_default;
fn_params := ((_chid, tuint) :: (_vaddr, tuint) :: (_rcount, tuint) :: nil);
fn_vars := nil;
fn_temps := ((_sender_count, tuint) ::
(_arecvcount, tuint) :: nil);
fn_body := ipc_receive_body_body
|}.
    #define num_cv 255
    #define num_proc 1024
    void
    idq_push(unsigned int chid, unsigned int qid, unsigned int tid)
    {
      unsigned int h;
      unsigned int t;
      h = fifobbq_get_head(chid, qid);
      if (h == num_proc)
      {
        fifobbq_set_head(chid, qid, tid);
        fifobbq_set_tail(chid, qid, tid);
      }
      else
      {
        t = fifobbq_get_tail(chid, qid);
        fifobbq_set_head(chid, qid, h);
        fifobbq_set_tail(chid, qid, tid);
        idq_set_next(t, tid);
        idq_set_prev(tid, t);
        idq_set_next(tid, num_proc);
      }
    }
 
Let _qid := 1001 % positive.
Let _tid := 1002 % positive.
Let _h := 1003 % positive.
Let _t := 1004 % positive.
Definition idq_push_body :=
(Ssequence
(Scall (Some _h)
(Evar fifobbq_get_head (Tfunction (Tcons tuint (Tcons tuint Tnil))
tuint cc_default))
((Etempvar _chid tuint) :: (Etempvar _qid tuint) :: nil))
(Sifthenelse (Ebinop Oeq (Etempvar _h tuint)
(Econst_int (Int.repr num_proc) tint) tint)
(Ssequence
(Scall None
(Evar fifobbq_set_head (Tfunction
(Tcons tuint
(Tcons tuint (Tcons tuint Tnil))) tvoid
cc_default))
((Etempvar _chid tuint) :: (Etempvar _qid tuint) ::
(Etempvar _tid tuint) :: nil))
(Scall None
(Evar fifobbq_set_tail (Tfunction
(Tcons tuint
(Tcons tuint (Tcons tuint Tnil))) tvoid
cc_default))
((Etempvar _chid tuint) :: (Etempvar _qid tuint) ::
(Etempvar _tid tuint) :: nil)))
(Ssequence
(Scall (Some _t)
(Evar fifobbq_get_tail (Tfunction (Tcons tuint (Tcons tuint Tnil))
tuint cc_default))
((Etempvar _chid tuint) :: (Etempvar _qid tuint) :: nil))
(Ssequence
(Scall None
(Evar fifobbq_set_head (Tfunction
(Tcons tuint
(Tcons tuint (Tcons tuint Tnil))) tvoid
cc_default))
((Etempvar _chid tuint) :: (Etempvar _qid tuint) ::
(Etempvar _h tuint) :: nil))
(Ssequence
(Scall None
(Evar fifobbq_set_tail (Tfunction
(Tcons tuint
(Tcons tuint (Tcons tuint Tnil)))
tvoid cc_default))
((Etempvar _chid tuint) :: (Etempvar _qid tuint) ::
(Etempvar _tid tuint) :: nil))
(Ssequence
(Scall None
(Evar idq_set_next (Tfunction (Tcons tuint (Tcons tuint Tnil))
tvoid cc_default))
((Etempvar _t tuint) :: (Etempvar _tid tuint) :: nil))
(Ssequence
(Scall None
(Evar idq_set_prev (Tfunction
(Tcons tuint (Tcons tuint Tnil)) tvoid
cc_default))
((Etempvar _tid tuint) :: (Etempvar _t tuint) :: nil))
(Scall None
(Evar idq_set_next (Tfunction
(Tcons tuint (Tcons tuint Tnil)) tvoid
cc_default))
((Etempvar _tid tuint) :: (Econst_int (Int.repr num_proc) tint) ::
nil))))))))).
Definition f_idq_push := {|
fn_return := tvoid;
fn_callconv := cc_default;
fn_params := ((_chid, tuint) :: (_qid, tuint) :: (_tid, tuint) :: nil);
fn_vars := nil;
fn_temps := ((_h, tuint) :: (_t, tuint) :: nil);
fn_body := idq_push_body
|}.
    #define num_cv 255
    #define num_proc 1024
    unsigned int
    idq_pull(unsigned int chid, unsigned int qid)
    {
      unsigned int h;
      unsigned int t;
      unsigned int n;
      h = fifobbq_get_head(chid, qid);
      t = fifobbq_get_tail(chid, qid);
      if (h == t)
      {
        fifobbq_set_head(chid, qid, num_proc);
        fifobbq_set_tail(chid, qid, num_proc);
      }
      else
      {
        n = idq_get_next(h);
        fifobbq_set_head(chid, qid, n);
        fifobbq_set_tail(chid, qid, t);
      }
      return h;
    }
 
Let _n := 1005 % positive.
Definition idq_pull_body :=
(Ssequence
(Scall (Some _h)
(Evar fifobbq_get_head (Tfunction (Tcons tuint (Tcons tuint Tnil))
tuint cc_default))
((Etempvar _chid tuint) :: (Etempvar _qid tuint) :: nil))
(Ssequence
(Scall (Some _t)
(Evar fifobbq_get_tail (Tfunction (Tcons tuint (Tcons tuint Tnil))
tuint cc_default))
((Etempvar _chid tuint) :: (Etempvar _qid tuint) :: nil))
(Ssequence
(Sifthenelse (Ebinop Oeq (Etempvar _h tuint) (Etempvar _t tuint) tint)
(Ssequence
(Scall None
(Evar fifobbq_set_head (Tfunction
(Tcons tuint
(Tcons tuint (Tcons tuint Tnil)))
tvoid cc_default))
((Etempvar _chid tuint) :: (Etempvar _qid tuint) ::
(Econst_int (Int.repr num_proc) tint) :: nil))
(Scall None
(Evar fifobbq_set_tail (Tfunction
(Tcons tuint
(Tcons tuint (Tcons tuint Tnil)))
tvoid cc_default))
((Etempvar _chid tuint) :: (Etempvar _qid tuint) ::
(Econst_int (Int.repr num_proc) tint) :: nil)))
(Ssequence
(Scall (Some _n)
(Evar idq_get_next (Tfunction (Tcons tuint Tnil) tuint
cc_default))
((Etempvar _h tuint) :: nil))
(Ssequence
(Scall None
(Evar fifobbq_set_head (Tfunction
(Tcons tuint
(Tcons tuint (Tcons tuint Tnil)))
tvoid cc_default))
((Etempvar _chid tuint) :: (Etempvar _qid tuint) ::
(Etempvar _n tuint) :: nil))
(Scall None
(Evar fifobbq_set_tail (Tfunction
(Tcons tuint
(Tcons tuint (Tcons tuint Tnil)))
tvoid cc_default))
((Etempvar _chid tuint) :: (Etempvar _qid tuint) ::
(Etempvar _t tuint) :: nil)))))
(Sreturn (Some (Etempvar _h tuint)))))).
Definition f_idq_pull := {|
fn_return := tuint;
fn_callconv := cc_default;
fn_params := ((_chid, tuint) :: (_qid, tuint) :: nil);
fn_vars := nil;
fn_temps := ((_h, tuint) :: (_t, tuint) :: (_n, tuint) :: nil);
fn_body := idq_pull_body
|}.
    unsigned int
    idq_peek(unsigned int chid, unsigned int qid)
    {
      unsigned int h;
      h = fifobbq_get_head(chid, qid);
      return h;
    }
 
Definition idq_peek_body :=
(Ssequence
(Scall (Some _h)
(Evar fifobbq_get_head (Tfunction (Tcons tuint (Tcons tuint Tnil))
tuint cc_default))
((Etempvar _chid tuint) :: (Etempvar _qid tuint) :: nil))
(Sreturn (Some (Etempvar _h tuint)))).
Definition f_idq_peek := {|
fn_return := tuint;
fn_callconv := cc_default;
fn_params := ((_chid, tuint) :: (_qid, tuint) :: nil);
fn_vars := nil;
fn_temps := ((_h, tuint) :: nil);
fn_body := idq_peek_body
|}.