[Tinyos-devel] cc2420 radio stack and deputy

Vlado Handziski handzisk at tkn.tu-berlin.de
Mon Jun 23 14:45:58 PDT 2008


Is this already commited to the deputy svn?

Vlado


On Mon, Jun 23, 2008 at 20:52, David Gay <dgay42 at gmail.com> wrote:

> On Fri, Jun 20, 2008 at 5:06 PM, David Gay <dgay42 at gmail.com> wrote:
> > On Fri, Jun 20, 2008 at 4:01 PM, David Gay <dgay42 at gmail.com> wrote:
> >> Now I just need to figure out why a safe base station is unhappy...
> >
> > Ok, found the problem: Deputy doesn't support gcc's enum extension
> > that allows long (or longer) enum constants. John/Yang, can you add
> > the following patch to our collection of Deputy patches? (I'll
> > incorporate a cleaner/more complete version of this patch in CIL at a
> > later date, probably when we merge the other patches - this one is a
> > quick hack):
>
> The patch needs a little further elaboration (hopefully this is final
> - the new bit is the second change in cabs2cil.ml):
>
> Index: src/cil.mli
> ===================================================================
> --- src/cil.mli (revision 10132)
> +++ src/cil.mli (working copy)
> @@ -1612,6 +1612,11 @@
>     Otherwise, return None. *)
>  val isInteger: exp -> int64 option
>
> +(** If the given expression is a (possibly cast'ed)
> +    character or an integer constant, return that integer's kind.
> +    Otherwise, return None. *)
> +val isIntegerKind: exp -> ikind option
> +
>  (** Convert a 64-bit int to an OCaml int, or raise an exception if that
>     can't be done. *)
>  val i64_to_int: int64 -> int
> Index: src/frontc/cabs2cil.ml
> ===================================================================
> --- src/frontc/cabs2cil.ml      (revision 10132)
> +++ src/frontc/cabs2cil.ml      (working copy)
> @@ -2376,9 +2376,10 @@
>           | (kname, e, cloc) :: rest ->
>               (* constant-eval 'e' to determine tag value *)
>               let e' = getIntConstExp e in
> +             let c' = constFold true e' in
>               let e' =
> -                match isInteger (constFold true e') with
> -                  Some i -> if !lowerConstants then kinteger64 IInt i else
> e'
> +                match (isInteger c', isIntegerKind c') with
> +                  (Some i, Some ik) -> if !lowerConstants then
> kinteger64 ik i else e'
>                 | _ -> E.s (error "Constant initializer %a not an
> integer" d_exp e')
>               in
>               processName kname e' (convLoc cloc) rest
> @@ -3144,7 +3145,7 @@
>               finishExp empty (Lval(var vi)) vi.vtype
>           | EnvEnum (tag, typ), _ ->
>               if !Cil.lowerConstants then
> -                finishExp empty tag typ
> +                finishExp empty tag (typeOf tag)
>               else begin
>                 let ei =
>                   match unrollType typ with
> Index: src/cil.ml
> ===================================================================
> --- src/cil.ml  (revision 10132)
> +++ src/cil.ml  (working copy)
> @@ -1223,6 +1223,13 @@
>   | CastE(_, e) -> isInteger e
>   | _ -> None
>
> +let rec isIntegerKind : exp -> ikind option = function
> +  | Const(CInt64 (_,k,_)) -> Some k
> +  | Const(CChr c) -> Some IInt
> +  | Const(CEnum(v, s, ei)) -> isIntegerKind v
> +  | CastE(_, e) -> isIntegerKind e
> +  | _ -> None
> +
>
>  (** Convert a 64-bit int to an OCaml int, or raise an exception if that
>     can't be done. *)
> _______________________________________________
> Tinyos-devel mailing list
> Tinyos-devel at millennium.berkeley.edu
> https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: https://www.millennium.berkeley.edu/pipermail/tinyos-devel/attachments/20080623/92e354c8/attachment-0001.htm 


More information about the Tinyos-devel mailing list