mirror of
https://github.com/ioacademy-jikim/android_framwork
synced 2025-06-07 16:06:29 +00:00
11
This commit is contained in:
parent
96638c8b17
commit
931b702e82
BIN
04_day.pptx
BIN
04_day.pptx
Binary file not shown.
15
04_day/ashmem_1/Android.bp
Normal file
15
04_day/ashmem_1/Android.bp
Normal file
@ -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",
|
||||||
|
],
|
||||||
|
}
|
23
04_day/ashmem_1/my_client.cpp
Normal file
23
04_day/ashmem_1/my_client.cpp
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
|
||||||
|
#include <binder/ProcessState.h>
|
||||||
|
#include <binder/IServiceManager.h>
|
||||||
|
#include <binder/Binder.h>
|
||||||
|
#include <binder/IMemory.h>
|
||||||
|
#include <utils/String16.h>
|
||||||
|
|
||||||
|
using namespace android;
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
sp<ProcessState> proc(ProcessState::self());
|
||||||
|
sp<IServiceManager> sm(defaultServiceManager());
|
||||||
|
sp<IBinder> binder = sm->getService( String16("ashmem.service") );
|
||||||
|
sp<IMemoryHeap> ashmem = interface_cast<IMemoryHeap>( binder );
|
||||||
|
char *p = (char*)ashmem->getBase();
|
||||||
|
printf("%s\n", p );
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
27
04_day/ashmem_1/my_server.cpp
Normal file
27
04_day/ashmem_1/my_server.cpp
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
|
||||||
|
#include <binder/ProcessState.h>
|
||||||
|
#include <binder/IServiceManager.h>
|
||||||
|
#include <binder/Binder.h>
|
||||||
|
#include <binder/IPCThreadState.h>
|
||||||
|
#include <utils/String16.h>
|
||||||
|
#include <binder/MemoryHeapBase.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
using namespace android;
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
sp<ProcessState> proc(ProcessState::self());
|
||||||
|
sp<IServiceManager> sm(defaultServiceManager());
|
||||||
|
sp<IMemoryHeap> 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;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
15
04_day/ashmem_2/Android.bp
Normal file
15
04_day/ashmem_2/Android.bp
Normal file
@ -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",
|
||||||
|
],
|
||||||
|
}
|
26
04_day/ashmem_2/my_client.cpp
Normal file
26
04_day/ashmem_2/my_client.cpp
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
|
||||||
|
#include <binder/ProcessState.h>
|
||||||
|
#include <binder/IServiceManager.h>
|
||||||
|
#include <binder/Binder.h>
|
||||||
|
#include <binder/IMemory.h>
|
||||||
|
#include <utils/String16.h>
|
||||||
|
|
||||||
|
using namespace android;
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
sp<ProcessState> proc(ProcessState::self());
|
||||||
|
sp<IServiceManager> sm(defaultServiceManager());
|
||||||
|
sp<IBinder> binder = sm->getService( String16("ashmem.service") );
|
||||||
|
sp<IMemory> base = interface_cast<IMemory>( binder );
|
||||||
|
ssize_t offset=0;
|
||||||
|
size_t size=0;
|
||||||
|
sp<IMemoryHeap> heap = base->getMemory(&offset, &size);
|
||||||
|
char *p = (char*)heap->getBase();
|
||||||
|
printf("%s\n", p+offset );
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
29
04_day/ashmem_2/my_server.cpp
Normal file
29
04_day/ashmem_2/my_server.cpp
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
|
||||||
|
#include <binder/ProcessState.h>
|
||||||
|
#include <binder/IServiceManager.h>
|
||||||
|
#include <binder/Binder.h>
|
||||||
|
#include <binder/IPCThreadState.h>
|
||||||
|
#include <utils/String16.h>
|
||||||
|
#include <binder/MemoryHeapBase.h>
|
||||||
|
#include <binder/MemoryBase.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
using namespace android;
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
sp<ProcessState> proc(ProcessState::self());
|
||||||
|
sp<IServiceManager> sm(defaultServiceManager());
|
||||||
|
sp<IMemoryHeap> heap = new MemoryHeapBase(4096);
|
||||||
|
sp<IMemory> 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;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user