I am developping an Android application that is using NDK in order to access to data from the Linux kernel. As you may know, this is done using IPC (Inter Process Communication) through Android’s bound services.
While writing the documentation related to this application, I am supposed to describe the application’s architecture, which is by the way fully local : I am not sending or receiving data from a distant server. It surely analyze the network’s raw data, but it’s collecting it directly from the phone’s modem.
So my question is : How can I describe the architecture of such application ? Can I describe the application itself as a “client” and the Linux kernel as “server” since I’m getting information from it using services ?
2
While your explanation of your logic makes sense to me, I think it will be confusing to people because the term server is generally associated with a remote host. I think you should just refer to the kernel as ‘the kernel’. The term client is fine.
The Linux kernel is not a server. If it was, you wouldn’t have to write an application to do what you are trying to do. Your application is a client application and the Linux kernel is the kernel.
3
The Linux Kernel is an interface to the operating system, you communicate with it via system calls. That are all functions described in the manpages section 2, like open() read() write() close()
to a file descriptor. Your NDK app is also able to use library calls like fopen() fread()
etc, that is one layer above the system calls. And your app could be a server like a webserver, or just a standone program or a client that uses the above server.
2