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
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