mirror of
https://github.com/ioacademy-jikim/android_framwork
synced 2025-06-07 07:56:34 +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