Commit graph

2 commits

Author SHA1 Message Date
Stewart Miles
84d35492b1 Described restrictions for common HAL object methods.
Inheritance of HAL object is performed by composing a child structure of a
single parent structure located at offset 0 followed by new data members
and function pointers in the child structure.

For example,

struct child {
  struct parent common;
  int a_data_member;
  void (*a_method)(struct child *c, int v);
};

HAL code assumes this layout when accessing child structures given a pointer
to a parent structure such that users write code like the following...

void child_method(struct *parent, int v) {
  struct child * c = (struct child*)parent;
  // do stuff with c
}

Code above will break if a member is added before "common" in "struct child".

This change adds comments that describe the restriction on the location of
parent HAL objects within a derived HAL object.  HAL objects that already
have comments that describe the required location of parent objects are not
modified.

Change-Id: Ibe4300275286ef275b2097534c84f1029d761d87
2014-05-12 12:35:37 -07:00
Mike J. Chen
ad255ee424 Add a HAL representing a system-wide local time counter.
This is a squashed merge of the following changes:

commit 9def1ae65f6b4d6a8fdec147fdcd34f22f08174a
Author: John Grossman <johngro@google.com>
Date:   Fri Aug 12 11:47:20 2011 -0700

    Change the signature of set_local_slew.

    Changed the definition of the slew function in the local time HAL to take an
    int16 instead of an int32 and to use the full range of the int instead of
    attempting to imply any particular PPM range.

    Change-Id: Ia67f50e77f1fe674a63ec69460e830d1191ef5a0

commit afab51327453d1bfc7423f8ce7a28933d8fc49b2
Author: John Grossman <johngro@google.com>
Date:   Mon Jun 27 17:29:07 2011 -0700

    Remove "primary" from the local_time HAL.

    Interface instances are a pattern which should only be used by audio.  Remove
    its use from the local_time HAL.

    Change-Id: If4c458cf16a02d9dc63c04185111ae793fc57801

commit 1c26e59a66e75ccb31027f42183aaa32bde6e456
Author: John Grossman <johngro@google.com>
Date:   Fri Jun 17 14:19:24 2011 -0700

    Refactor the local/common clock services.

    This change is one of a set of 5 changes made to different repositories.  Look
    for this comment in all of them.

    Refactor the local/common clock services to match android best
    practice.  Notable changes include

    + The kernel no longer knows anything about common time.  Common time has been
      moved completely up into user land.  This has an impact on the accuracy of the
      timesync debugging code, and the netfilter assisted approach to network based
      timesync is going to have to be modified.
    + The timesync driver used by A@H is now just local time driver.
    + The kernel no longer needs access to the linear transform math code, and it
      has been removed.
    + A new HAL has been introduced to expose the concept of local time to the
      system.
    + A non-slewable stub implementation of the local time HAL based on
      CLOCK_MONOTONIC has been added.
    + The old library has been eliminated.  Its functionality has been
      distributed among the common time binder service, the local time hal and the
      linear transform utility code.
    + All clients of the old library have been changed to be clients of
      the binder service, the hal and the utility code.
    + The reset_tt utilities have been removed, they no longer have a purpose in the
      system.

    Change-Id: I39843b94f9b6d13f63b22145a2edcafe4ca87349

Change-Id: Ib264c992d564b99ef7c7847a788e4fa7f5e101b4
Signed-off-by: Mike J. Chen <mjchen@google.com>
Signed-off-by: John Grossman <johngro@google.com>

Conflicts:

	modules/Android.mk
2012-02-10 08:57:16 -08:00