On 01/09/2012 08:45 PM, Sateesh Kavuri wrote:
Added support for Android. Changes include fixes for compilation issues
  related to Android using an older version of GCC compiler (ver 4.3.3)
  while the latest version of intel-gpu-tools confirms to GCC ver 4.5.2
  (C99 standard functions), using functions like getline(). Fixed such
  functions, header dependencies for android and added an Android.mk file.

signed-off-by: Sateesh Kavuri<sateesh.kav...@intel.com>
---
  Android.mk                 |  528 ++++++++++++++++++++++++++++++++++++++++++++
  lib/intel_drm.c            |    6 +-
  lib/intel_mmio.c           |    4 +
  lib/intel_pci.c            |    4 +
  tools/intel_decode.c       |   10 +
  tools/intel_dump_decode.c  |   14 +-
  tools/intel_error_decode.c |   14 ++
  tools/intel_gpu_top.c      |    6 +-
  tools/intel_reg_write.c    |    2 +
  9 files changed, 584 insertions(+), 4 deletions(-)
  create mode 100644 Android.mk

diff --git a/Android.mk b/Android.mk
new file mode 100644
index 0000000..0fc04cd
--- /dev/null
+++ b/Android.mk
@@ -0,0 +1,528 @@
+LOCAL_PATH := $(call my-dir)
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES :=                             \
+       tools/intel_reg_write.c                 \
+       lib/intel_pci.c                         \
+       lib/intel_gpu_tools.h           \
+       tools/intel_reg.h                       \
+       lib/intel_batchbuffer.h         \
+       lib/intel_batchbuffer.c         \
+       lib/intel_reg_map.c             \
+       lib/intel_mmio.c                \
+       tools/intel_chipset.h
+
+
+LOCAL_C_INCLUDES +=                                            \
+       $(LOCAL_PATH)/lib                               \
+       $(TOPDIR)hardware/intel/libdrm/include/drm      \
+       $(TOPDIR)hardware/intel/libdrm/intel            \
+       $(LOCAL_PATH)/../libpciaccess/include/
+
+LOCAL_CFLAGS += -DHAVE_LIBDRM_ATOMIC_PRIMITIVES=1
+LOCAL_CFLAGS += -DANDROID
+
+LOCAL_MODULE := intel_reg_write
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_SHARED_LIBRARIES := libpciaccess         \
+                          libdrm       \
+                          libdrm_intel
+
+include $(BUILD_EXECUTABLE)
+
+#================
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES :=                             \
+       tools/intel_reg_read.c                  \
+       lib/intel_pci.c                 \
+       lib/intel_gpu_tools.h           \
+       tools/intel_reg.h                       \
+       lib/intel_batchbuffer.h         \
+       lib/intel_batchbuffer.c         \
+       lib/intel_reg_map.c             \
+       lib/intel_mmio.c                \
+       tools/intel_chipset.h
+
+
+LOCAL_C_INCLUDES +=                                    \
+       $(LOCAL_PATH)/lib                               \
+       $(TOPDIR)hardware/intel/libdrm/include/drm      \
+       $(TOPDIR)hardware/intel/libdrm/intel            \
+       $(LOCAL_PATH)/../libpciaccess/include/
+
+LOCAL_CFLAGS += -DHAVE_LIBDRM_ATOMIC_PRIMITIVES=1
+LOCAL_CFLAGS += -DANDROID
+
+
+LOCAL_MODULE := intel_reg_read
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_SHARED_LIBRARIES := libpciaccess         \
+                          libdrm       \
+                          libdrm_intel
+
+include $(BUILD_EXECUTABLE)
+
+#================
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES :=                             \
+       tools/intel_disable_clock_gating.c      \
+       lib/intel_pci.c                                 \
+       lib/intel_gpu_tools.h                   \
+       tools/intel_reg.h                               \
+       lib/intel_batchbuffer.h                 \
+       lib/intel_batchbuffer.c                 \
+       lib/intel_mmio.c                        \
+       tools/intel_chipset.h
+
+
+LOCAL_C_INCLUDES +=                                            \
+       $(LOCAL_PATH)/lib                               \
+       $(TOPDIR)hardware/intel/libdrm/include/drm      \
+       $(TOPDIR)hardware/intel/libdrm/intel            \
+       $(LOCAL_PATH)/../libpciaccess/include/
+
+LOCAL_CFLAGS += -DHAVE_LIBDRM_ATOMIC_PRIMITIVES=1
+LOCAL_CFLAGS += -DANDROID
+
+
+LOCAL_MODULE := intel_disable_clock_gating
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_SHARED_LIBRARIES := libpciaccess         \
+                          libdrm       \
+                          libdrm_intel
+
+include $(BUILD_EXECUTABLE)
+
+#================
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES :=                     \
+       tools/intel_audio_dump.c         \
+       lib/intel_pci.c                 \
+       lib/intel_gpu_tools.h           \
+       tools/intel_reg.h               \
+       lib/intel_batchbuffer.h         \
+       lib/intel_batchbuffer.c         \
+       lib/intel_mmio.c                \
+       tools/intel_chipset.h
+
+
+LOCAL_C_INCLUDES +=                                                    \
+       $(LOCAL_PATH)/lib                                       \
+       $(TOPDIR)hardware/intel/libdrm/include/drm              \
+       $(TOPDIR)hardware/intel/libdrm/intel                    \
+       $(LOCAL_PATH)/../libpciaccess/include/
+
+LOCAL_CFLAGS += -DHAVE_LIBDRM_ATOMIC_PRIMITIVES=1
+LOCAL_CFLAGS += -DANDROID
+
+
+LOCAL_MODULE := intel_audio_dump
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_SHARED_LIBRARIES := libpciaccess         \
+                          libdrm       \
+                          libdrm_intel
+
+include $(BUILD_EXECUTABLE)
+
+#================
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES :=                             \
+       tools/intel_backlight.c          \
+       lib/intel_pci.c                         \
+       lib/intel_gpu_tools.h           \
+       tools/intel_reg.h                       \
+       lib/intel_batchbuffer.h         \
+       lib/intel_batchbuffer.c         \
+       lib/intel_mmio.c                \
+       tools/intel_chipset.h
+
+
+LOCAL_C_INCLUDES +=                                            \
+       $(LOCAL_PATH)/lib                               \
+       $(TOPDIR)hardware/intel/libdrm/include/drm      \
+       $(TOPDIR)hardware/intel/libdrm/intel            \
+       $(LOCAL_PATH)/../libpciaccess/include/
+
+LOCAL_CFLAGS += -DHAVE_LIBDRM_ATOMIC_PRIMITIVES=1
+LOCAL_CFLAGS += -DANDROID
+
+
+LOCAL_MODULE := intel_backlight
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_SHARED_LIBRARIES := libpciaccess         \
+                          libdrm       \
+                          libdrm_intel
+
+include $(BUILD_EXECUTABLE)
+
+#================
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES :=                             \
+       tools/intel_bios_dumper.c               \
+       lib/intel_pci.c                         \
+       lib/intel_gpu_tools.h           \
+       tools/intel_reg.h                       \
+       lib/intel_batchbuffer.h         \
+       lib/intel_batchbuffer.c         \
+       lib/intel_mmio.c                \
+       tools/intel_chipset.h
+
+
+LOCAL_C_INCLUDES +=                                            \
+       $(LOCAL_PATH)/lib                               \
+       $(TOPDIR)hardware/intel/libdrm/include/drm      \
+       $(TOPDIR)hardware/intel/libdrm/intel            \
+       $(LOCAL_PATH)/../libpciaccess/include/
+
+LOCAL_CFLAGS += -DHAVE_LIBDRM_ATOMIC_PRIMITIVES=1
+LOCAL_CFLAGS += -DANDROID
+
+
+LOCAL_MODULE := intel_bios_dumper
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_SHARED_LIBRARIES := libpciaccess         \
+                          libdrm       \
+                          libdrm_intel
+
+include $(BUILD_EXECUTABLE)
+
+#================
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES :=                             \
+       tools/intel_bios_reader.c        \
+       lib/intel_pci.c                         \
+       lib/intel_gpu_tools.h           \
+       tools/intel_reg.h                       \
+       lib/intel_batchbuffer.h         \
+       lib/intel_batchbuffer.c         \
+       lib/intel_mmio.c                \
+       tools/intel_chipset.h
+
+
+LOCAL_C_INCLUDES +=                                            \
+       $(LOCAL_PATH)/lib                               \
+       $(TOPDIR)hardware/intel/libdrm/include/drm      \
+       $(TOPDIR)hardware/intel/libdrm/intel            \
+       $(LOCAL_PATH)/../libpciaccess/include/
+
+LOCAL_CFLAGS += -DHAVE_LIBDRM_ATOMIC_PRIMITIVES=1
+LOCAL_CFLAGS += -DANDROID
+
+
+LOCAL_MODULE := intel_bios_reader
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_SHARED_LIBRARIES := libpciaccess         \
+                          libdrm       \
+                          libdrm_intel
+
+include $(BUILD_EXECUTABLE)
+
+#================
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES :=                             \
+       tools/intel_error_decode.c              \
+       lib/intel_pci.c                         \
+       lib/intel_gpu_tools.h           \
+       tools/intel_reg.h                       \
+       lib/intel_batchbuffer.h         \
+       lib/intel_batchbuffer.c         \
+       lib/intel_mmio.c                \
+       tools/intel_chipset.h           \
+       lib/instdone.h                          \
+       lib/instdone.c                          \
+       tools/intel_decode.h            \
+       tools/intel_decode.c            \
+       lib/intel_drm.c
+
+
+LOCAL_C_INCLUDES +=                                            \
+       $(LOCAL_PATH)/lib                               \
+       $(TOPDIR)hardware/intel/libdrm/include/drm      \
+       $(TOPDIR)hardware/intel/libdrm/intel            \
+       $(LOCAL_PATH)/../libpciaccess/include/
+
+LOCAL_CFLAGS += -DHAVE_LIBDRM_ATOMIC_PRIMITIVES=1
+LOCAL_CFLAGS += -DANDROID
+
+
+LOCAL_MODULE := intel_error_decode
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_SHARED_LIBRARIES := libpciaccess         \
+                          libdrm       \
+                          libdrm_intel
+
+include $(BUILD_EXECUTABLE)
+
+#================
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES :=                             \
+       tools/intel_gpu_top.c           \
+       lib/intel_pci.c                         \
+       lib/intel_gpu_tools.h           \
+       tools/intel_reg.h                       \
+       lib/intel_batchbuffer.h         \
+       lib/intel_batchbuffer.c         \
+       lib/intel_mmio.c                \
+       tools/intel_chipset.h           \
+       lib/instdone.h                          \
+       lib/instdone.c                          \
+       lib/intel_reg_map.c
+
+
+LOCAL_C_INCLUDES +=                                            \
+       $(LOCAL_PATH)/lib                               \
+       $(TOPDIR)hardware/intel/libdrm/include/drm      \
+       $(TOPDIR)hardware/intel/libdrm/intel            \
+       $(LOCAL_PATH)/../libpciaccess/include/
+
+LOCAL_CFLAGS += -DHAVE_LIBDRM_ATOMIC_PRIMITIVES=1
+LOCAL_CFLAGS += -DANDROID
+
+
+LOCAL_MODULE := intel_gpu_top
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_SHARED_LIBRARIES := libpciaccess         \
+                          libdrm       \
+                          libdrm_intel
+
+include $(BUILD_EXECUTABLE)
+
+#================
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES :=                             \
+       tools/intel_gpu_time.c                  \
+       lib/intel_pci.c                         \
+       lib/intel_gpu_tools.h           \
+       tools/intel_reg.h                       \
+       lib/intel_batchbuffer.h         \
+       lib/intel_batchbuffer.c         \
+       lib/intel_mmio.c                \
+       tools/intel_chipset.h
+
+
+LOCAL_C_INCLUDES +=                                            \
+       $(LOCAL_PATH)/lib                               \
+       $(TOPDIR)hardware/intel/libdrm/include/drm      \
+       $(TOPDIR)hardware/intel/libdrm/intel            \
+       $(LOCAL_PATH)/../libpciaccess/include/
+
+LOCAL_CFLAGS += -DHAVE_LIBDRM_ATOMIC_PRIMITIVES=1
+LOCAL_CFLAGS += -DANDROID
+
+
+LOCAL_MODULE := intel_gpu_time
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_SHARED_LIBRARIES := libpciaccess         \
+                          libdrm       \
+                          libdrm_intel
+
+include $(BUILD_EXECUTABLE)
+
+#================
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES :=                             \
+       tools/intel_gtt.c               \
+       lib/intel_pci.c                         \
+       lib/intel_gpu_tools.h           \
+       tools/intel_reg.h                       \
+       lib/intel_batchbuffer.h         \
+       lib/intel_batchbuffer.c         \
+       lib/intel_mmio.c                \
+       tools/intel_chipset.h
+
+
+LOCAL_C_INCLUDES +=                                            \
+       $(LOCAL_PATH)/lib                               \
+       $(TOPDIR)hardware/intel/libdrm/include/drm      \
+       $(TOPDIR)hardware/intel/libdrm/intel            \
+       $(LOCAL_PATH)/../libpciaccess/include/
+
+LOCAL_CFLAGS += -DHAVE_LIBDRM_ATOMIC_PRIMITIVES=1
+
+LOCAL_MODULE := intel_gtt
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_SHARED_LIBRARIES := libpciaccess         \
+                          libdrm       \
+                          libdrm_intel
+
+include $(BUILD_EXECUTABLE)
+
+#================
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES :=                             \
+       tools/intel_stepping.c                  \
+       lib/intel_pci.c                         \
+       lib/intel_gpu_tools.h           \
+       tools/intel_reg.h                       \
+       lib/intel_batchbuffer.h         \
+       lib/intel_batchbuffer.c         \
+       lib/intel_mmio.c                \
+       tools/intel_chipset.h
+
+
+LOCAL_C_INCLUDES +=                                            \
+       $(LOCAL_PATH)/lib                               \
+       $(TOPDIR)hardware/intel/libdrm/include/drm      \
+       $(TOPDIR)hardware/intel/libdrm/intel            \
+       $(LOCAL_PATH)/../libpciaccess/include/
+
+LOCAL_CFLAGS += -DHAVE_LIBDRM_ATOMIC_PRIMITIVES=1
+LOCAL_CFLAGS += -DANDROID
+
+
+LOCAL_MODULE := intel_stepping
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_SHARED_LIBRARIES := libpciaccess         \
+                          libdrm       \
+                          libdrm_intel
+
+include $(BUILD_EXECUTABLE)
+
+#================
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES :=                     \
+       tools/intel_reg_dumper.c         \
+       lib/intel_pci.c                         \
+       lib/intel_gpu_tools.h           \
+       tools/intel_reg.h                       \
+       lib/intel_batchbuffer.h         \
+       lib/intel_batchbuffer.c         \
+       lib/intel_mmio.c                \
+       tools/intel_chipset.h
+
+
+LOCAL_C_INCLUDES +=                                            \
+       $(LOCAL_PATH)/lib                               \
+       $(TOPDIR)hardware/intel/libdrm/include/drm      \
+       $(TOPDIR)hardware/intel/libdrm/intel            \
+       $(LOCAL_PATH)/../libpciaccess/include/
+
+LOCAL_CFLAGS += -DHAVE_LIBDRM_ATOMIC_PRIMITIVES=1
+LOCAL_CFLAGS += -DANDROID
+
+
+LOCAL_MODULE := intel_reg_dumper
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_SHARED_LIBRARIES := libpciaccess         \
+                          libdrm       \
+                          libdrm_intel
+
+include $(BUILD_EXECUTABLE)
+
+#================
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES :=                             \
+       tools/intel_reg_snapshot.c       \
+       lib/intel_pci.c                         \
+       lib/intel_gpu_tools.h           \
+       tools/intel_reg.h                       \
+       lib/intel_batchbuffer.h         \
+       lib/intel_batchbuffer.c         \
+       lib/intel_mmio.c                \
+       tools/intel_chipset.h
+
+
+LOCAL_C_INCLUDES +=                                            \
+       $(LOCAL_PATH)/lib                               \
+       $(TOPDIR)hardware/intel/libdrm/include/drm      \
+       $(TOPDIR)hardware/intel/libdrm/intel            \
+       $(LOCAL_PATH)/../libpciaccess/include/
+
+LOCAL_CFLAGS += -DHAVE_LIBDRM_ATOMIC_PRIMITIVES=1
+
+LOCAL_MODULE := intel_reg_snapshot
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_SHARED_LIBRARIES := libpciaccess         \
+                          libdrm       \
+                          libdrm_intel
+
+include $(BUILD_EXECUTABLE)
+
+#================
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES :=                             \
+       tools/forcewaked.c              \
+       lib/intel_pci.c                         \
+       lib/intel_gpu_tools.h           \
+       tools/intel_reg.h                       \
+       lib/intel_batchbuffer.h         \
+       lib/intel_batchbuffer.c         \
+       lib/intel_mmio.c                \
+       tools/intel_chipset.h           \
+       lib/intel_reg_map.c
+
+
+LOCAL_C_INCLUDES +=                                            \
+       $(LOCAL_PATH)/lib                               \
+       $(TOPDIR)hardware/intel/libdrm/include/drm      \
+       $(TOPDIR)hardware/intel/libdrm/intel            \
+       $(LOCAL_PATH)/../libpciaccess/include/
+
+LOCAL_CFLAGS += -DHAVE_LIBDRM_ATOMIC_PRIMITIVES=1
+LOCAL_CFLAGS += -DANDROID
+
+
+LOCAL_MODULE := forcewaked
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_SHARED_LIBRARIES := libpciaccess         \
+                          libdrm       \
+                          libdrm_intel
+
+include $(BUILD_EXECUTABLE)
+
+#================
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES :=                             \
+       lib/intel_gpu_tools.h           \
+       tools/intel_reg_checker.c       \
+       lib/intel_pci.c                 \
+       lib/intel_mmio.c
+
+
+LOCAL_C_INCLUDES +=                                            \
+       $(LOCAL_PATH)/lib                               \
+       $(TOPDIR)hardware/intel/libdrm/include/drm      \
+       $(TOPDIR)hardware/intel/libdrm/intel            \
+       $(LOCAL_PATH)/../libpciaccess/include/
+
+LOCAL_CFLAGS += -DHAVE_LIBDRM_ATOMIC_PRIMITIVES=1
+LOCAL_CFLAGS += -DANDROID
+
+
+LOCAL_MODULE := intel_reg_checker
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_SHARED_LIBRARIES := libpciaccess         
+
+include $(BUILD_EXECUTABLE)
+

It's unfortunate that we need another build system, but I understand that it's necessary---we ended up adding one in Mesa.

diff --git a/lib/intel_drm.c b/lib/intel_drm.c
index f8eca7d..1f51856 100644
--- a/lib/intel_drm.c
+++ b/lib/intel_drm.c
@@ -25,7 +25,7 @@
   *
   */

-#include "config.h"
+#include "../config.h"

  #include<unistd.h>
  #include<stdlib.h>
@@ -35,7 +35,11 @@
  #include<err.h>
  #include<assert.h>
  #include<sys/ioctl.h>
+#ifdef ANDROID
+#include<fcntl.h>
+#else
  #include<sys/fcntl.h>
+#endif

At least on my system, /usr/include/sys/fcntl.h is simply:
#include <fcntl.h>

So I think you could unconditionally change all of these to #include <fcntl.h> without #ifdef ANDROID. Perhaps others can confirm that. That would certainly be a lot nicer.

  #include<sys/stat.h>
  #include<sys/mman.h>
  #ifdef HAVE_STRUCT_SYSINFO_TOTALRAM
diff --git a/lib/intel_mmio.c b/lib/intel_mmio.c
index da68bdf..2020833 100644
--- a/lib/intel_mmio.c
+++ b/lib/intel_mmio.c
@@ -38,7 +38,11 @@
  #include<err.h>
  #include<assert.h>
  #include<sys/ioctl.h>
+#ifdef ANDROID
+#include<fcntl.h>
+#else
  #include<sys/fcntl.h>
+#endif
  #include<sys/stat.h>
  #include<sys/mman.h>

diff --git a/lib/intel_pci.c b/lib/intel_pci.c
index 7bc7466..98889ca 100644
--- a/lib/intel_pci.c
+++ b/lib/intel_pci.c
@@ -33,7 +33,11 @@
  #include<err.h>
  #include<assert.h>
  #include<sys/ioctl.h>
+#ifdef ANDROID
+#include<fcntl.h>
+#else
  #include<sys/fcntl.h>
+#endif
  #include<sys/stat.h>
  #include<sys/mman.h>

diff --git a/tools/intel_decode.c b/tools/intel_decode.c
index 344578b..5ed508f 100644
--- a/tools/intel_decode.c
+++ b/tools/intel_decode.c
@@ -198,7 +198,12 @@ decode_mi(uint32_t *data, int count, uint32_t hw_offset, 
int *failures)
        if ((data[0]&  0x1f800000)>>  23 == opcodes_mi[opcode].opcode) {

            instr_out(data, hw_offset, 0, "%s\n", opcodes_mi[opcode].name);
+            #ifdef ANDROID
+           int i;
+           for (i = 1; i<  len; i++) {
+            #else
            for (int i = 1; i<  len; i++) {
+            #endif

Like Adam said...just use gcc -std=c99 if possible.  We really want C99.

                if (i>= count)
                    BUFFER_FAIL(count, len, opcodes_mi[opcode].name);
                instr_out(data, hw_offset, i, "dword %d\n", i);
@@ -1164,7 +1169,12 @@ decode_3d_1d(uint32_t *data, int count,
                                break;
                        case 2:
                                instr_out(data, hw_offset, i, "S2: texcoord formats: 
");
+                                #ifdef ANDROID
+                               int tex_num;
+                               for (tex_num = 0; tex_num<  8; tex_num++) {
+                                #else
                                for (int tex_num = 0; tex_num<  8; tex_num++) {
+                                #endif
                                        switch((data[i]>>tex_num*4)&0xf) {
                                        case 0: fprintf(out, "%i=2D ", 
tex_num); break;
                                        case 1: fprintf(out, "%i=3D ", 
tex_num); break;
diff --git a/tools/intel_dump_decode.c b/tools/intel_dump_decode.c
index 26d57f5..57c1261 100644
--- a/tools/intel_dump_decode.c
+++ b/tools/intel_dump_decode.c
@@ -67,6 +67,10 @@ read_data_file(uint32_t devid, const char * filename)
      FILE *file;
      uint32_t *data = NULL;
      int data_size = 0, count = 0, line_number = 0, matched;
+    #ifdef ANDROID
+    char line[1024];
+    size_t line_size = 1024;
+    #else
      char *line = NULL;
      size_t line_size;
      uint32_t offset, value;
@@ -82,9 +86,15 @@ read_data_file(uint32_t devid, const char * filename)
                 filename, strerror (errno));
        exit (1);
      }
-
+#ifdef ANDROID
+    while (fgets (line, line_size, file) != 0) {
+        line[strcspn(line, "\n")] = '\0';
+        if (line[0] == '\0') continue;
+#else
      while (getline (&line,&line_size, file)>  0) {
-       line_number++;
+#endif

Rather than rewriting every use of getline(), could we just include our own implementation of getline() in an #ifdef ANDROID block? That way, we work around the Bionic issues in one place.

+
+       line_number++;

        matched = sscanf (line, "%08x : %08x",&offset,&value);
        if (matched != 2) {
diff --git a/tools/intel_error_decode.c b/tools/intel_error_decode.c
index 6ffaefe..c9c74ba 100644
--- a/tools/intel_error_decode.c
+++ b/tools/intel_error_decode.c
@@ -280,15 +280,27 @@ read_data_file (FILE *file)
      uint32_t *data = NULL;
      long long unsigned fence;
      int data_size = 0, count = 0, line_number = 0, matched;
+#ifdef ANDROID
+    char line[1024];
+    size_t line_size = 1024;
+#else
      char *line = NULL;
      size_t line_size;
+#endif
      uint32_t offset, value;
      uint32_t gtt_offset = 0, new_gtt_offset;
      char *buffer_type[2] = {  "ringbuffer", "batchbuffer" };
      char *ring_name = NULL;
      int is_batch = 1;

+#ifdef ANDROID
+    while (fgets (line, line_size, file) != 0) {
+        line[strcspn(line, "\n")] = '\0';
+        if (line[0] == '\0') continue;
+#else
      while (getline (&line,&line_size, file)>  0) {
+#endif
+
        char *dashes;
        line_number++;

@@ -404,7 +416,9 @@ read_data_file (FILE *file)
      }

      free (data);
+#ifndef ANDROID
      free (line);
+#endif
      free (ring_name);
  }

diff --git a/tools/intel_gpu_top.c b/tools/intel_gpu_top.c
index 033ba53..b9d1ce9 100644
--- a/tools/intel_gpu_top.c
+++ b/tools/intel_gpu_top.c
@@ -27,7 +27,7 @@
   *
   */

-#include "config.h"
+#include "../config.h"

  #include<unistd.h>
  #include<stdlib.h>
@@ -602,10 +602,14 @@ int main(int argc, char **argv)
                /* Limit the number of lines printed to the terminal height so 
the
                 * most important info (at the top) will stay on screen. */
                unsigned short int max_lines = -1;
+#ifndef ANDROID
                struct winsize ws;
                if (ioctl(0, TIOCGWINSZ,&ws) != -1)
                        max_lines = ws.ws_row - 6; /* exclude header lines */
                if (max_lines>= num_instdone_bits)
+       //      FIXME: ioctl-types.h still does not exist in Android. Hard code
+       //      the max_lines value for now (winsize is part of ioctl-types.h
+#endif
                        max_lines = num_instdone_bits;

I'm okay with an #ifndef ANDROID workaround here, but would it be better to use MAX_INSTDONE_BITS? Also, please use
        /* FIXME: ..... */
rather than the C++ style comments.

Thanks for your work on this, it'll be nice to see intel-gpu-tools on Android!

                t2 = gettime();
diff --git a/tools/intel_reg_write.c b/tools/intel_reg_write.c
index c8af9bb..81bceef 100644
--- a/tools/intel_reg_write.c
+++ b/tools/intel_reg_write.c
@@ -25,6 +25,8 @@
   *
   */

+#include "../config.h"
+
  #include<unistd.h>
  #include<stdlib.h>
  #include<stdio.h>
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to