)]}'
{
  "commit": "7fcb7c472f455d1711eb5a7633204dba8800a6d6",
  "tree": "ba64de513bdbe5550c6fc08078a356359830ec99",
  "parents": [
    "a9c1c3abe1160a5632e48c929b02b740556bf423"
  ],
  "author": {
    "name": "Li Zefan",
    "email": "lizf@cn.fujitsu.com",
    "time": "Mon Jun 01 15:35:46 2009 +0800"
  },
  "committer": {
    "name": "Steven Rostedt",
    "email": "rostedt@goodmis.org",
    "time": "Mon Jun 01 23:25:15 2009 -0400"
  },
  "message": "tracing/events: introduce __dynamic_array()\n\n__string() is limited:\n\n  - it\u0027s a char array, but we may want to define array with other types\n  - a source string should be available, but we may just know the string size\n\nWe introduce __dynamic_array() to break those limitations, and __string()\nbecomes a wrapper of it. As a side effect, now __get_str() can be used\nin TP_fast_assign but not only TP_print.\n\nTake XFS for example, we have the string length in the dirent, but the\nstring itself is not NULL-terminated, so __dynamic_array() can be used:\n\nTRACE_EVENT(xfs_dir2,\n\tTP_PROTO(struct xfs_da_args *args),\n\tTP_ARGS(args),\n\n\tTP_STRUCT__entry(\n\t\t__field(int, namelen)\n\t\t__dynamic_array(char, name, args-\u003enamelen + 1)\n\t\t...\n\t),\n\n\tTP_fast_assign(\n\t\tchar *name \u003d __get_str(name);\n\n\t\tif (args-\u003enamelen)\n\t\t\tmemcpy(name, args-\u003ename, args-\u003enamelen);\n\t\tname[args-\u003enamelen] \u003d \u0027\\0\u0027;\n\n\t\t__entry-\u003enamelen \u003d args-\u003enamelen;\n\t),\n\n\tTP_printk(\"name %.*s namelen %d\",\n\t\t  __entry-\u003enamelen ? __get_str(name) : NULL\n\t\t  __entry-\u003enamelen)\n);\n\n[ Impact: allow defining dynamic size arrays ]\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nLKML-Reference: \u003c4A2384D2.3080403@cn.fujitsu.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "ee9268222448fa90722432473d793f994240242f",
      "old_mode": 33188,
      "old_path": "include/trace/ftrace.h",
      "new_id": "b5478dab579b77906ec29e51b04876092c14831f",
      "new_mode": 33188,
      "new_path": "include/trace/ftrace.h"
    },
    {
      "type": "modify",
      "old_id": "a7430b16d243907d46032c923c89c65a50337c8b",
      "old_mode": 33188,
      "old_path": "kernel/trace/trace_events_filter.c",
      "new_id": "db6e54bdb596d90b07fef8fed03520157ecf4390",
      "new_mode": 33188,
      "new_path": "kernel/trace/trace_events_filter.c"
    }
  ]
}
