diff --git a/04_day.pptx b/04_day.pptx index 8c66017..726f2fa 100644 Binary files a/04_day.pptx and b/04_day.pptx differ diff --git a/04_day/ashmem_1/Android.bp b/04_day/ashmem_1/Android.bp new file mode 100644 index 0000000..2262c3f --- /dev/null +++ b/04_day/ashmem_1/Android.bp @@ -0,0 +1,15 @@ +cc_binary { + name: "my_server_ashmem", + shared_libs: ["liblog", "libutils", "libbinder"], + srcs: [ + "my_server.cpp", + ], +} + +cc_binary { + name: "my_client_ashmem", + shared_libs: ["liblog", "libutils", "libbinder"], + srcs: [ + "my_client.cpp", + ], +} diff --git a/04_day/ashmem_1/my_client.cpp b/04_day/ashmem_1/my_client.cpp new file mode 100644 index 0000000..ae34d09 --- /dev/null +++ b/04_day/ashmem_1/my_client.cpp @@ -0,0 +1,23 @@ + +#include +#include +#include +#include +#include + +using namespace android; + +int main() +{ + sp proc(ProcessState::self()); + sp sm(defaultServiceManager()); + sp binder = sm->getService( String16("ashmem.service") ); + sp ashmem = interface_cast( binder ); + char *p = (char*)ashmem->getBase(); + printf("%s\n", p ); + + return 0; +} + + + diff --git a/04_day/ashmem_1/my_server.cpp b/04_day/ashmem_1/my_server.cpp new file mode 100644 index 0000000..ae348ec --- /dev/null +++ b/04_day/ashmem_1/my_server.cpp @@ -0,0 +1,27 @@ + +#include +#include +#include +#include +#include +#include +#include + +using namespace android; + +int main() +{ + sp proc(ProcessState::self()); + sp sm(defaultServiceManager()); + sp heap = new MemoryHeapBase(4096); + sm->addService( String16("ashmem.service"), heap->asBinder(heap) ); + char *p; + p = (char*)heap->base(); + strcpy( p, "Hello Android!!"); + IPCThreadState::self()->joinThreadPool(); + + return 0; +} + + + diff --git a/04_day/ashmem_2/Android.bp b/04_day/ashmem_2/Android.bp new file mode 100644 index 0000000..f0e1f96 --- /dev/null +++ b/04_day/ashmem_2/Android.bp @@ -0,0 +1,15 @@ +cc_binary { + name: "my_server_ashmem_1", + shared_libs: ["liblog", "libutils", "libbinder"], + srcs: [ + "my_server.cpp", + ], +} + +cc_binary { + name: "my_client_ashmem_1", + shared_libs: ["liblog", "libutils", "libbinder"], + srcs: [ + "my_client.cpp", + ], +} diff --git a/04_day/ashmem_2/my_client.cpp b/04_day/ashmem_2/my_client.cpp new file mode 100644 index 0000000..b008e05 --- /dev/null +++ b/04_day/ashmem_2/my_client.cpp @@ -0,0 +1,26 @@ + +#include +#include +#include +#include +#include + +using namespace android; + +int main() +{ + sp proc(ProcessState::self()); + sp sm(defaultServiceManager()); + sp binder = sm->getService( String16("ashmem.service") ); + sp base = interface_cast( binder ); + ssize_t offset=0; + size_t size=0; + sp heap = base->getMemory(&offset, &size); + char *p = (char*)heap->getBase(); + printf("%s\n", p+offset ); + + return 0; +} + + + diff --git a/04_day/ashmem_2/my_server.cpp b/04_day/ashmem_2/my_server.cpp new file mode 100644 index 0000000..4ab7658 --- /dev/null +++ b/04_day/ashmem_2/my_server.cpp @@ -0,0 +1,29 @@ + +#include +#include +#include +#include +#include +#include +#include +#include + +using namespace android; + +int main() +{ + sp proc(ProcessState::self()); + sp sm(defaultServiceManager()); + sp heap = new MemoryHeapBase(4096); + sp base = new MemoryBase( heap, 1024*3, 1024); + sm->addService( String16("ashmem.service"), base->asBinder(base) ); + char *p; + p = (char*)heap->base(); + strcpy( p + 3*1024, "Hello Android!!"); + IPCThreadState::self()->joinThreadPool(); + + return 0; +} + + +