mirror of
https://github.com/ioacademy-jikim/android_framwork.git
synced 2026-08-11 08:22:53 +00:00
11
This commit is contained in:
@@ -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",
|
||||
],
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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",
|
||||
],
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user