|
@@ -1,6 +1,6 @@
|
|
|
/*
|
|
/*
|
|
|
+----------------------------------------------------------------------+
|
|
+----------------------------------------------------------------------+
|
|
|
- | PHP Version 7 |
|
|
|
|
|
|
|
+ | PHP Version 7, 8 |
|
|
|
+----------------------------------------------------------------------+
|
|
+----------------------------------------------------------------------+
|
|
|
| Copyright (c) 1997-2018 The PHP Group |
|
|
| Copyright (c) 1997-2018 The PHP Group |
|
|
|
+----------------------------------------------------------------------+
|
|
+----------------------------------------------------------------------+
|
|
@@ -12,7 +12,7 @@
|
|
|
| obtain it through the world-wide-web, please send a note to |
|
|
| obtain it through the world-wide-web, please send a note to |
|
|
|
| [email protected] so we can mail you a copy immediately. |
|
|
| [email protected] so we can mail you a copy immediately. |
|
|
|
+----------------------------------------------------------------------+
|
|
+----------------------------------------------------------------------+
|
|
|
- | Author: |
|
|
|
|
|
|
|
+ | Author: carl.guo [email protected] |
|
|
|
+----------------------------------------------------------------------+
|
|
+----------------------------------------------------------------------+
|
|
|
*/
|
|
*/
|
|
|
|
|
|
|
@@ -25,6 +25,7 @@
|
|
|
|
|
|
|
|
extern "C" {
|
|
extern "C" {
|
|
|
#include "php.h"
|
|
#include "php.h"
|
|
|
|
|
+#include "wrapper.h"
|
|
|
#include "php_ini.h"
|
|
#include "php_ini.h"
|
|
|
#include "ext/standard/info.h"
|
|
#include "ext/standard/info.h"
|
|
|
}
|
|
}
|
|
@@ -170,7 +171,7 @@ zval EbpfExtension::get_table_cls(const char *table_name, int from_attr) {
|
|
|
return retval;
|
|
return retval;
|
|
|
}
|
|
}
|
|
|
object_init_ex(&retval, hash_table_ce);
|
|
object_init_ex(&retval, hash_table_ce);
|
|
|
- zend_update_property_string(hash_table_ce, &retval, "name", sizeof("name") - 1, table_name);
|
|
|
|
|
|
|
+ sc_zend_update_property_string(hash_table_ce, &retval, "name", sizeof("name") - 1, table_name);
|
|
|
sub_object *table_obj = table_fetch_object(Z_OBJ(retval));
|
|
sub_object *table_obj = table_fetch_object(Z_OBJ(retval));
|
|
|
table_obj->bpf = &this->bpf;
|
|
table_obj->bpf = &this->bpf;
|
|
|
Z_ADDREF(retval);
|
|
Z_ADDREF(retval);
|
|
@@ -182,7 +183,7 @@ zval EbpfExtension::get_table_cls(const char *table_name, int from_attr) {
|
|
|
return retval;
|
|
return retval;
|
|
|
}
|
|
}
|
|
|
object_init_ex(&retval, array_table_ce);
|
|
object_init_ex(&retval, array_table_ce);
|
|
|
- zend_update_property_string(array_table_ce, &retval, "name", sizeof("name") - 1, table_name);
|
|
|
|
|
|
|
+ sc_zend_update_property_string(array_table_ce, &retval, "name", sizeof("name") - 1, table_name);
|
|
|
sub_object *table_obj = table_fetch_object(Z_OBJ(retval));
|
|
sub_object *table_obj = table_fetch_object(Z_OBJ(retval));
|
|
|
table_obj->bpf = &this->bpf;
|
|
table_obj->bpf = &this->bpf;
|
|
|
Z_ADDREF(retval);
|
|
Z_ADDREF(retval);
|
|
@@ -194,7 +195,7 @@ zval EbpfExtension::get_table_cls(const char *table_name, int from_attr) {
|
|
|
return retval;
|
|
return retval;
|
|
|
}
|
|
}
|
|
|
object_init_ex(&retval, prog_array_table_ce);
|
|
object_init_ex(&retval, prog_array_table_ce);
|
|
|
- zend_update_property_string(prog_array_table_ce, &retval, "name", sizeof("name") - 1, table_name);
|
|
|
|
|
|
|
+ sc_zend_update_property_string(prog_array_table_ce, &retval, "name", sizeof("name") - 1, table_name);
|
|
|
sub_object *table_obj = table_fetch_object(Z_OBJ(retval));
|
|
sub_object *table_obj = table_fetch_object(Z_OBJ(retval));
|
|
|
table_obj->bpf = &this->bpf;
|
|
table_obj->bpf = &this->bpf;
|
|
|
Z_ADDREF(retval);
|
|
Z_ADDREF(retval);
|
|
@@ -210,7 +211,7 @@ zval EbpfExtension::get_table_cls(const char *table_name, int from_attr) {
|
|
|
return retval;
|
|
return retval;
|
|
|
}
|
|
}
|
|
|
object_init_ex(&retval, perf_event_array_table_ce);
|
|
object_init_ex(&retval, perf_event_array_table_ce);
|
|
|
- zend_update_property_string(perf_event_array_table_ce, &retval, "name", sizeof("name") - 1, table_name);
|
|
|
|
|
|
|
+ sc_zend_update_property_string(perf_event_array_table_ce, &retval, "name", sizeof("name") - 1, table_name);
|
|
|
sub_object *table_obj = table_fetch_object(Z_OBJ(retval));
|
|
sub_object *table_obj = table_fetch_object(Z_OBJ(retval));
|
|
|
table_obj->bpf = &this->bpf;
|
|
table_obj->bpf = &this->bpf;
|
|
|
Z_ADDREF(retval);
|
|
Z_ADDREF(retval);
|
|
@@ -223,7 +224,7 @@ zval EbpfExtension::get_table_cls(const char *table_name, int from_attr) {
|
|
|
return retval;
|
|
return retval;
|
|
|
}
|
|
}
|
|
|
object_init_ex(&retval, per_cpu_hash_table_ce);
|
|
object_init_ex(&retval, per_cpu_hash_table_ce);
|
|
|
- zend_update_property_string(per_cpu_hash_table_ce, &retval, "name", sizeof("name") - 1, table_name);
|
|
|
|
|
|
|
+ sc_zend_update_property_string(per_cpu_hash_table_ce, &retval, "name", sizeof("name") - 1, table_name);
|
|
|
sub_object *table_obj = table_fetch_object(Z_OBJ(retval));
|
|
sub_object *table_obj = table_fetch_object(Z_OBJ(retval));
|
|
|
table_obj->bpf = &this->bpf;
|
|
table_obj->bpf = &this->bpf;
|
|
|
Z_ADDREF(retval);
|
|
Z_ADDREF(retval);
|
|
@@ -235,7 +236,7 @@ zval EbpfExtension::get_table_cls(const char *table_name, int from_attr) {
|
|
|
return retval;
|
|
return retval;
|
|
|
}
|
|
}
|
|
|
object_init_ex(&retval, per_cpu_array_table_ce);
|
|
object_init_ex(&retval, per_cpu_array_table_ce);
|
|
|
- zend_update_property_string(per_cpu_array_table_ce, &retval, "name", sizeof("name") - 1, table_name);
|
|
|
|
|
|
|
+ sc_zend_update_property_string(per_cpu_array_table_ce, &retval, "name", sizeof("name") - 1, table_name);
|
|
|
sub_object *table_obj = table_fetch_object(Z_OBJ(retval));
|
|
sub_object *table_obj = table_fetch_object(Z_OBJ(retval));
|
|
|
table_obj->bpf = &this->bpf;
|
|
table_obj->bpf = &this->bpf;
|
|
|
Z_ADDREF(retval);
|
|
Z_ADDREF(retval);
|
|
@@ -247,7 +248,7 @@ zval EbpfExtension::get_table_cls(const char *table_name, int from_attr) {
|
|
|
return retval;
|
|
return retval;
|
|
|
}
|
|
}
|
|
|
object_init_ex(&retval, lpm_trie_table_ce);
|
|
object_init_ex(&retval, lpm_trie_table_ce);
|
|
|
- zend_update_property_string(lpm_trie_table_ce, &retval, "name", sizeof("name") - 1, table_name);
|
|
|
|
|
|
|
+ sc_zend_update_property_string(lpm_trie_table_ce, &retval, "name", sizeof("name") - 1, table_name);
|
|
|
sub_object *table_obj = table_fetch_object(Z_OBJ(retval));
|
|
sub_object *table_obj = table_fetch_object(Z_OBJ(retval));
|
|
|
table_obj->bpf = &this->bpf;
|
|
table_obj->bpf = &this->bpf;
|
|
|
Z_ADDREF(retval);
|
|
Z_ADDREF(retval);
|
|
@@ -259,7 +260,7 @@ zval EbpfExtension::get_table_cls(const char *table_name, int from_attr) {
|
|
|
return retval;
|
|
return retval;
|
|
|
}
|
|
}
|
|
|
object_init_ex(&retval, stack_trace_table_ce);
|
|
object_init_ex(&retval, stack_trace_table_ce);
|
|
|
- zend_update_property_string(stack_trace_table_ce, &retval, "name", sizeof("name") - 1, table_name);
|
|
|
|
|
|
|
+ sc_zend_update_property_string(stack_trace_table_ce, &retval, "name", sizeof("name") - 1, table_name);
|
|
|
sub_object *table_obj = table_fetch_object(Z_OBJ(retval));
|
|
sub_object *table_obj = table_fetch_object(Z_OBJ(retval));
|
|
|
table_obj->bpf = &this->bpf;
|
|
table_obj->bpf = &this->bpf;
|
|
|
Z_ADDREF(retval);
|
|
Z_ADDREF(retval);
|
|
@@ -271,7 +272,7 @@ zval EbpfExtension::get_table_cls(const char *table_name, int from_attr) {
|
|
|
return retval;
|
|
return retval;
|
|
|
}
|
|
}
|
|
|
object_init_ex(&retval, lru_hash_table_ce);
|
|
object_init_ex(&retval, lru_hash_table_ce);
|
|
|
- zend_update_property_string(lru_hash_table_ce, &retval, "name", sizeof("name") - 1, table_name);
|
|
|
|
|
|
|
+ sc_zend_update_property_string(lru_hash_table_ce, &retval, "name", sizeof("name") - 1, table_name);
|
|
|
sub_object *table_obj = table_fetch_object(Z_OBJ(retval));
|
|
sub_object *table_obj = table_fetch_object(Z_OBJ(retval));
|
|
|
table_obj->bpf = &this->bpf;
|
|
table_obj->bpf = &this->bpf;
|
|
|
Z_ADDREF(retval);
|
|
Z_ADDREF(retval);
|
|
@@ -283,7 +284,7 @@ zval EbpfExtension::get_table_cls(const char *table_name, int from_attr) {
|
|
|
return retval;
|
|
return retval;
|
|
|
}
|
|
}
|
|
|
object_init_ex(&retval, lru_per_cpu_hash_table_ce);
|
|
object_init_ex(&retval, lru_per_cpu_hash_table_ce);
|
|
|
- zend_update_property_string(lru_per_cpu_hash_table_ce, &retval, "name", sizeof("name") - 1, table_name);
|
|
|
|
|
|
|
+ sc_zend_update_property_string(lru_per_cpu_hash_table_ce, &retval, "name", sizeof("name") - 1, table_name);
|
|
|
sub_object *table_obj = table_fetch_object(Z_OBJ(retval));
|
|
sub_object *table_obj = table_fetch_object(Z_OBJ(retval));
|
|
|
table_obj->bpf = &this->bpf;
|
|
table_obj->bpf = &this->bpf;
|
|
|
Z_ADDREF(retval);
|
|
Z_ADDREF(retval);
|
|
@@ -295,7 +296,7 @@ zval EbpfExtension::get_table_cls(const char *table_name, int from_attr) {
|
|
|
return retval;
|
|
return retval;
|
|
|
}
|
|
}
|
|
|
object_init_ex(&retval, cgroup_array_table_ce);
|
|
object_init_ex(&retval, cgroup_array_table_ce);
|
|
|
- zend_update_property_string(cgroup_array_table_ce, &retval, "name", sizeof("name") - 1, table_name);
|
|
|
|
|
|
|
+ sc_zend_update_property_string(cgroup_array_table_ce, &retval, "name", sizeof("name") - 1, table_name);
|
|
|
sub_object *table_obj = table_fetch_object(Z_OBJ(retval));
|
|
sub_object *table_obj = table_fetch_object(Z_OBJ(retval));
|
|
|
table_obj->bpf = &this->bpf;
|
|
table_obj->bpf = &this->bpf;
|
|
|
Z_ADDREF(retval);
|
|
Z_ADDREF(retval);
|
|
@@ -307,7 +308,7 @@ zval EbpfExtension::get_table_cls(const char *table_name, int from_attr) {
|
|
|
return retval;
|
|
return retval;
|
|
|
}
|
|
}
|
|
|
object_init_ex(&retval, dev_map_table_ce);
|
|
object_init_ex(&retval, dev_map_table_ce);
|
|
|
- zend_update_property_string(dev_map_table_ce, &retval, "name", sizeof("name") - 1, table_name);
|
|
|
|
|
|
|
+ sc_zend_update_property_string(dev_map_table_ce, &retval, "name", sizeof("name") - 1, table_name);
|
|
|
sub_object *table_obj = table_fetch_object(Z_OBJ(retval));
|
|
sub_object *table_obj = table_fetch_object(Z_OBJ(retval));
|
|
|
table_obj->bpf = &this->bpf;
|
|
table_obj->bpf = &this->bpf;
|
|
|
Z_ADDREF(retval);
|
|
Z_ADDREF(retval);
|
|
@@ -319,7 +320,7 @@ zval EbpfExtension::get_table_cls(const char *table_name, int from_attr) {
|
|
|
return retval;
|
|
return retval;
|
|
|
}
|
|
}
|
|
|
object_init_ex(&retval, cpu_map_table_ce);
|
|
object_init_ex(&retval, cpu_map_table_ce);
|
|
|
- zend_update_property_string(cpu_map_table_ce, &retval, "name", sizeof("name") - 1, table_name);
|
|
|
|
|
|
|
+ sc_zend_update_property_string(cpu_map_table_ce, &retval, "name", sizeof("name") - 1, table_name);
|
|
|
sub_object *table_obj = table_fetch_object(Z_OBJ(retval));
|
|
sub_object *table_obj = table_fetch_object(Z_OBJ(retval));
|
|
|
table_obj->bpf = &this->bpf;
|
|
table_obj->bpf = &this->bpf;
|
|
|
Z_ADDREF(retval);
|
|
Z_ADDREF(retval);
|
|
@@ -331,7 +332,7 @@ zval EbpfExtension::get_table_cls(const char *table_name, int from_attr) {
|
|
|
return retval;
|
|
return retval;
|
|
|
}
|
|
}
|
|
|
object_init_ex(&retval, xsk_map_table_ce);
|
|
object_init_ex(&retval, xsk_map_table_ce);
|
|
|
- zend_update_property_string(xsk_map_table_ce, &retval, "name", sizeof("name") - 1, table_name);
|
|
|
|
|
|
|
+ sc_zend_update_property_string(xsk_map_table_ce, &retval, "name", sizeof("name") - 1, table_name);
|
|
|
sub_object *table_obj = table_fetch_object(Z_OBJ(retval));
|
|
sub_object *table_obj = table_fetch_object(Z_OBJ(retval));
|
|
|
table_obj->bpf = &this->bpf;
|
|
table_obj->bpf = &this->bpf;
|
|
|
Z_ADDREF(retval);
|
|
Z_ADDREF(retval);
|
|
@@ -343,7 +344,7 @@ zval EbpfExtension::get_table_cls(const char *table_name, int from_attr) {
|
|
|
return retval;
|
|
return retval;
|
|
|
}
|
|
}
|
|
|
object_init_ex(&retval, map_in_map_array_table_ce);
|
|
object_init_ex(&retval, map_in_map_array_table_ce);
|
|
|
- zend_update_property_string(map_in_map_array_table_ce, &retval, "name", sizeof("name") - 1, table_name);
|
|
|
|
|
|
|
+ sc_zend_update_property_string(map_in_map_array_table_ce, &retval, "name", sizeof("name") - 1, table_name);
|
|
|
sub_object *table_obj = table_fetch_object(Z_OBJ(retval));
|
|
sub_object *table_obj = table_fetch_object(Z_OBJ(retval));
|
|
|
table_obj->bpf = &this->bpf;
|
|
table_obj->bpf = &this->bpf;
|
|
|
Z_ADDREF(retval);
|
|
Z_ADDREF(retval);
|
|
@@ -355,7 +356,7 @@ zval EbpfExtension::get_table_cls(const char *table_name, int from_attr) {
|
|
|
return retval;
|
|
return retval;
|
|
|
}
|
|
}
|
|
|
object_init_ex(&retval, map_in_map_hash_table_ce);
|
|
object_init_ex(&retval, map_in_map_hash_table_ce);
|
|
|
- zend_update_property_string(map_in_map_hash_table_ce, &retval, "name", sizeof("name") - 1, table_name);
|
|
|
|
|
|
|
+ sc_zend_update_property_string(map_in_map_hash_table_ce, &retval, "name", sizeof("name") - 1, table_name);
|
|
|
sub_object *table_obj = table_fetch_object(Z_OBJ(retval));
|
|
sub_object *table_obj = table_fetch_object(Z_OBJ(retval));
|
|
|
table_obj->bpf = &this->bpf;
|
|
table_obj->bpf = &this->bpf;
|
|
|
Z_ADDREF(retval);
|
|
Z_ADDREF(retval);
|
|
@@ -368,7 +369,7 @@ zval EbpfExtension::get_table_cls(const char *table_name, int from_attr) {
|
|
|
return retval;
|
|
return retval;
|
|
|
}
|
|
}
|
|
|
object_init_ex(&retval, queue_stack_table_ce);
|
|
object_init_ex(&retval, queue_stack_table_ce);
|
|
|
- zend_update_property_string(queue_stack_table_ce, &retval, "name", sizeof("name") - 1, table_name);
|
|
|
|
|
|
|
+ sc_zend_update_property_string(queue_stack_table_ce, &retval, "name", sizeof("name") - 1, table_name);
|
|
|
sub_object *table_obj = table_fetch_object(Z_OBJ(retval));
|
|
sub_object *table_obj = table_fetch_object(Z_OBJ(retval));
|
|
|
table_obj->bpf = &this->bpf;
|
|
table_obj->bpf = &this->bpf;
|
|
|
Z_ADDREF(retval);
|
|
Z_ADDREF(retval);
|
|
@@ -381,7 +382,7 @@ zval EbpfExtension::get_table_cls(const char *table_name, int from_attr) {
|
|
|
return retval;
|
|
return retval;
|
|
|
}
|
|
}
|
|
|
object_init_ex(&retval, ring_buf_table_ce);
|
|
object_init_ex(&retval, ring_buf_table_ce);
|
|
|
- zend_update_property_string(ring_buf_table_ce, &retval, "name", sizeof("name") - 1, table_name);
|
|
|
|
|
|
|
+ sc_zend_update_property_string(ring_buf_table_ce, &retval, "name", sizeof("name") - 1, table_name);
|
|
|
sub_object *table_obj = table_fetch_object(Z_OBJ(retval));
|
|
sub_object *table_obj = table_fetch_object(Z_OBJ(retval));
|
|
|
table_obj->bpf = &this->bpf;
|
|
table_obj->bpf = &this->bpf;
|
|
|
Z_ADDREF(retval);
|
|
Z_ADDREF(retval);
|
|
@@ -555,7 +556,7 @@ void bpf_free_object(zend_object *object) {
|
|
|
zend_object_std_dtor(&intern->std);
|
|
zend_object_std_dtor(&intern->std);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-zend_object *table_create_object(zend_class_entry *ce TSRMLS_DC) {
|
|
|
|
|
|
|
+zend_object *table_create_object(zend_class_entry *ce) {
|
|
|
sub_object *intern = (sub_object *) ecalloc(1, sizeof(sub_object) + zend_object_properties_size(ce));
|
|
sub_object *intern = (sub_object *) ecalloc(1, sizeof(sub_object) + zend_object_properties_size(ce));
|
|
|
zend_object_std_init(&intern->std, ce);
|
|
zend_object_std_init(&intern->std, ce);
|
|
|
object_properties_init(&intern->std, ce);
|
|
object_properties_init(&intern->std, ce);
|
|
@@ -1074,14 +1075,10 @@ PHP_METHOD (Bpf, perf_buffer_poll) {
|
|
|
zend_throw_error(NULL, "Invalid object state");
|
|
zend_throw_error(NULL, "Invalid object state");
|
|
|
RETURN_NULL();
|
|
RETURN_NULL();
|
|
|
}
|
|
}
|
|
|
- zval name_rv;
|
|
|
|
|
- zval *name_zv = zend_read_property(
|
|
|
|
|
- perf_event_array_table_ce,
|
|
|
|
|
- &obj->ebpf_cpp_cls->_class_perf_event_obj,
|
|
|
|
|
- "name", strlen("name"),
|
|
|
|
|
- 1,
|
|
|
|
|
- &name_rv
|
|
|
|
|
- );
|
|
|
|
|
|
|
+
|
|
|
|
|
+ zval *name_zv = sc_zend_read_property(perf_event_array_table_ce, &obj->ebpf_cpp_cls->_class_perf_event_obj, "name",
|
|
|
|
|
+ sizeof("name") - 1, 0);
|
|
|
|
|
+
|
|
|
if (!name_zv || Z_TYPE_P(name_zv) != IS_STRING) {
|
|
if (!name_zv || Z_TYPE_P(name_zv) != IS_STRING) {
|
|
|
zend_throw_error(NULL, "Invalid or missing name property");
|
|
zend_throw_error(NULL, "Invalid or missing name property");
|
|
|
RETURN_NULL();
|
|
RETURN_NULL();
|
|
@@ -1144,12 +1141,12 @@ PHP_METHOD (Bpf, load_func) {
|
|
|
|
|
|
|
|
zval name_zv;
|
|
zval name_zv;
|
|
|
ZVAL_STRINGL(&name_zv, fn, fn_len);
|
|
ZVAL_STRINGL(&name_zv, fn, fn_len);
|
|
|
- zend_update_property(bpf_prog_func_ce, return_value, "name", sizeof("name") - 1, &name_zv);
|
|
|
|
|
|
|
+ sc_zend_update_property(bpf_prog_func_ce, return_value, "name", sizeof("name") - 1, &name_zv);
|
|
|
zval_ptr_dtor(&name_zv);
|
|
zval_ptr_dtor(&name_zv);
|
|
|
|
|
|
|
|
zval fd_zv;
|
|
zval fd_zv;
|
|
|
ZVAL_LONG(&fd_zv, probe_fd);
|
|
ZVAL_LONG(&fd_zv, probe_fd);
|
|
|
- zend_update_property(bpf_prog_func_ce, return_value, "fd", sizeof("fd") - 1, &fd_zv);
|
|
|
|
|
|
|
+ sc_zend_update_property(bpf_prog_func_ce, return_value, "fd", sizeof("fd") - 1, &fd_zv);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
PHP_METHOD (Bpf, attach_raw_socket) {
|
|
PHP_METHOD (Bpf, attach_raw_socket) {
|
|
@@ -1172,8 +1169,8 @@ PHP_METHOD (Bpf, attach_raw_socket) {
|
|
|
RETURN_NULL();
|
|
RETURN_NULL();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- zval rv;
|
|
|
|
|
- zval *fd = zend_read_property(Z_OBJCE_P(prog_fn), prog_fn, "fd", strlen("fd"), 1, &rv);
|
|
|
|
|
|
|
+ zval *fd = sc_zend_read_property(Z_OBJCE_P(prog_fn), prog_fn, "fd", strlen("fd"), 0);
|
|
|
|
|
+
|
|
|
if (!fd || Z_TYPE_P(fd) != IS_LONG) {
|
|
if (!fd || Z_TYPE_P(fd) != IS_LONG) {
|
|
|
zend_throw_error(NULL, "Invalid BPFProgFunction object: missing or invalid fd property");
|
|
zend_throw_error(NULL, "Invalid BPFProgFunction object: missing or invalid fd property");
|
|
|
RETURN_NULL();
|
|
RETURN_NULL();
|
|
@@ -1203,15 +1200,8 @@ PHP_METHOD (PerfEventArrayTable, open_perf_buffer) {
|
|
|
RETURN_NULL();
|
|
RETURN_NULL();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- zval name_rv;
|
|
|
|
|
- zval *name_zv = zend_read_property(
|
|
|
|
|
- Z_OBJCE_P(getThis()),
|
|
|
|
|
- getThis(),
|
|
|
|
|
- "name",
|
|
|
|
|
- sizeof("name") - 1,
|
|
|
|
|
- 1,
|
|
|
|
|
- &name_rv
|
|
|
|
|
- );
|
|
|
|
|
|
|
+ zval *name_zv = sc_zend_read_property(Z_OBJCE_P(getThis()), getThis(), "name",
|
|
|
|
|
+ sizeof("name") - 1, 0);
|
|
|
|
|
|
|
|
if (!name_zv || Z_TYPE_P(name_zv) != IS_STRING) {
|
|
if (!name_zv || Z_TYPE_P(name_zv) != IS_STRING) {
|
|
|
zend_throw_error(NULL, "Invalid or missing name property");
|
|
zend_throw_error(NULL, "Invalid or missing name property");
|
|
@@ -1237,17 +1227,8 @@ PHP_METHOD (PerfEventArrayTable, open_perf_buffer) {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
PHP_METHOD (HashTable, values) {
|
|
PHP_METHOD (HashTable, values) {
|
|
|
- zval name_rv;
|
|
|
|
|
- zval *name_zv;
|
|
|
|
|
-
|
|
|
|
|
- name_zv = zend_read_property(
|
|
|
|
|
- Z_OBJCE_P(getThis()),
|
|
|
|
|
- getThis(),
|
|
|
|
|
- "name",
|
|
|
|
|
- sizeof("name") - 1,
|
|
|
|
|
- 1,
|
|
|
|
|
- &name_rv
|
|
|
|
|
- );
|
|
|
|
|
|
|
+ zval *name_zv = sc_zend_read_property(Z_OBJCE_P(getThis()), getThis(), "name",
|
|
|
|
|
+ sizeof("name") - 1, 0);
|
|
|
|
|
|
|
|
if (!name_zv || Z_TYPE_P(name_zv) != IS_STRING) {
|
|
if (!name_zv || Z_TYPE_P(name_zv) != IS_STRING) {
|
|
|
zend_throw_error(NULL, "Invalid or missing name property");
|
|
zend_throw_error(NULL, "Invalid or missing name property");
|
|
@@ -1283,26 +1264,17 @@ PHP_METHOD (HashTable, values) {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
PHP_METHOD (HashTable, clear) {
|
|
PHP_METHOD (HashTable, clear) {
|
|
|
- zval name_rv;
|
|
|
|
|
- zval *name_zv;
|
|
|
|
|
-
|
|
|
|
|
- name_zv = zend_read_property(
|
|
|
|
|
- Z_OBJCE_P(getThis()),
|
|
|
|
|
- getThis(),
|
|
|
|
|
- "name",
|
|
|
|
|
- sizeof("name") - 1,
|
|
|
|
|
- 1,
|
|
|
|
|
- &name_rv
|
|
|
|
|
- );
|
|
|
|
|
|
|
+ zval *name_zv = sc_zend_read_property(Z_OBJCE_P(getThis()), getThis(), "name",
|
|
|
|
|
+ sizeof("name") - 1, 0);
|
|
|
|
|
|
|
|
if (!name_zv || Z_TYPE_P(name_zv) != IS_STRING) {
|
|
if (!name_zv || Z_TYPE_P(name_zv) != IS_STRING) {
|
|
|
zend_throw_error(NULL, "Invalid or missing name property");
|
|
zend_throw_error(NULL, "Invalid or missing name property");
|
|
|
- RETURN_NULL()
|
|
|
|
|
|
|
+ RETURN_NULL();
|
|
|
}
|
|
}
|
|
|
sub_object *obj = table_fetch_object(Z_OBJ_P(getThis()));
|
|
sub_object *obj = table_fetch_object(Z_OBJ_P(getThis()));
|
|
|
if (!obj || !obj->bpf) {
|
|
if (!obj || !obj->bpf) {
|
|
|
zend_throw_error(NULL, "Invalid object state");
|
|
zend_throw_error(NULL, "Invalid object state");
|
|
|
- RETURN_NULL()
|
|
|
|
|
|
|
+ RETURN_NULL();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
auto table = obj->bpf->get_table(Z_STRVAL_P(name_zv));
|
|
auto table = obj->bpf->get_table(Z_STRVAL_P(name_zv));
|
|
@@ -1310,7 +1282,7 @@ PHP_METHOD (HashTable, clear) {
|
|
|
|
|
|
|
|
if (res.code() != 0) {
|
|
if (res.code() != 0) {
|
|
|
zend_throw_error(NULL, "Failed to clear table: %s", res.msg().c_str());
|
|
zend_throw_error(NULL, "Failed to clear table: %s", res.msg().c_str());
|
|
|
- RETURN_NULL()
|
|
|
|
|
|
|
+ RETURN_NULL();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
RETURN_TRUE;
|
|
RETURN_TRUE;
|
|
@@ -1318,21 +1290,14 @@ PHP_METHOD (HashTable, clear) {
|
|
|
|
|
|
|
|
PHP_METHOD (ArrayTable, get_value) {
|
|
PHP_METHOD (ArrayTable, get_value) {
|
|
|
zend_long index;
|
|
zend_long index;
|
|
|
- zval name_rv;
|
|
|
|
|
- zval *name_zv;
|
|
|
|
|
|
|
+// zval name_rv;
|
|
|
|
|
+// zval *name_zv;
|
|
|
|
|
|
|
|
if (zend_parse_parameters(ZEND_NUM_ARGS(), "l", &index) == FAILURE) {
|
|
if (zend_parse_parameters(ZEND_NUM_ARGS(), "l", &index) == FAILURE) {
|
|
|
RETURN_NULL();
|
|
RETURN_NULL();
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
- name_zv = zend_read_property(
|
|
|
|
|
- Z_OBJCE_P(getThis()),
|
|
|
|
|
- getThis(),
|
|
|
|
|
- "name",
|
|
|
|
|
- sizeof("name") - 1,
|
|
|
|
|
- 1,
|
|
|
|
|
- &name_rv
|
|
|
|
|
- );
|
|
|
|
|
|
|
+ zval *name_zv = sc_zend_read_property(Z_OBJCE_P(getThis()), getThis(), "name",
|
|
|
|
|
+ sizeof("name") - 1, 0);
|
|
|
|
|
|
|
|
if (!name_zv || Z_TYPE_P(name_zv) != IS_STRING) {
|
|
if (!name_zv || Z_TYPE_P(name_zv) != IS_STRING) {
|
|
|
zend_throw_error(NULL, "Invalid or missing name property");
|
|
zend_throw_error(NULL, "Invalid or missing name property");
|
|
@@ -1363,21 +1328,13 @@ PHP_METHOD (ArrayTable, get_value) {
|
|
|
PHP_METHOD (ArrayTable, print_log2_hist) {
|
|
PHP_METHOD (ArrayTable, print_log2_hist) {
|
|
|
char *header;
|
|
char *header;
|
|
|
size_t header_len;
|
|
size_t header_len;
|
|
|
- zval name_rv;
|
|
|
|
|
- zval *name_zv;
|
|
|
|
|
-
|
|
|
|
|
if (zend_parse_parameters(ZEND_NUM_ARGS(), "s", &header, &header_len) == FAILURE) {
|
|
if (zend_parse_parameters(ZEND_NUM_ARGS(), "s", &header, &header_len) == FAILURE) {
|
|
|
RETURN_NULL();
|
|
RETURN_NULL();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- name_zv = zend_read_property(
|
|
|
|
|
- Z_OBJCE_P(getThis()),
|
|
|
|
|
- getThis(),
|
|
|
|
|
- "name",
|
|
|
|
|
- sizeof("name") - 1,
|
|
|
|
|
- 1,
|
|
|
|
|
- &name_rv
|
|
|
|
|
- );
|
|
|
|
|
|
|
+ zval *name_zv = sc_zend_read_property(Z_OBJCE_P(getThis()), getThis(), "name",
|
|
|
|
|
+ sizeof("name") - 1, 0);
|
|
|
|
|
+
|
|
|
|
|
|
|
|
if (!name_zv || Z_TYPE_P(name_zv) != IS_STRING) {
|
|
if (!name_zv || Z_TYPE_P(name_zv) != IS_STRING) {
|
|
|
zend_throw_error(NULL, "Invalid or missing name property");
|
|
zend_throw_error(NULL, "Invalid or missing name property");
|
|
@@ -1425,7 +1382,7 @@ PHP_METHOD (ArrayTable, print_log2_hist) {
|
|
|
|
|
|
|
|
if (idx_max == -1) {
|
|
if (idx_max == -1) {
|
|
|
std::cout << "No data to display." << std::endl;
|
|
std::cout << "No data to display." << std::endl;
|
|
|
- RETURN_FALSE
|
|
|
|
|
|
|
+ RETURN_FALSE;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
int stars_max = 40;
|
|
int stars_max = 40;
|
|
@@ -1460,27 +1417,18 @@ PHP_METHOD (ArrayTable, print_log2_hist) {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- RETURN_FALSE
|
|
|
|
|
|
|
+ RETURN_FALSE;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
PHP_METHOD (ArrayTable, print_linear_hist) {
|
|
PHP_METHOD (ArrayTable, print_linear_hist) {
|
|
|
char *header;
|
|
char *header;
|
|
|
size_t header_len;
|
|
size_t header_len;
|
|
|
- zval name_rv;
|
|
|
|
|
- zval *name_zv;
|
|
|
|
|
|
|
|
|
|
if (zend_parse_parameters(ZEND_NUM_ARGS(), "s", &header, &header_len) == FAILURE) {
|
|
if (zend_parse_parameters(ZEND_NUM_ARGS(), "s", &header, &header_len) == FAILURE) {
|
|
|
RETURN_NULL();
|
|
RETURN_NULL();
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
- name_zv = zend_read_property(
|
|
|
|
|
- Z_OBJCE_P(getThis()),
|
|
|
|
|
- getThis(),
|
|
|
|
|
- "name",
|
|
|
|
|
- sizeof("name") - 1,
|
|
|
|
|
- 1,
|
|
|
|
|
- &name_rv
|
|
|
|
|
- );
|
|
|
|
|
|
|
+ zval *name_zv = sc_zend_read_property(Z_OBJCE_P(getThis()), getThis(), "name",
|
|
|
|
|
+ sizeof("name") - 1, 0);
|
|
|
|
|
|
|
|
if (!name_zv || Z_TYPE_P(name_zv) != IS_STRING) {
|
|
if (!name_zv || Z_TYPE_P(name_zv) != IS_STRING) {
|
|
|
zend_throw_error(NULL, "Invalid or missing name property");
|
|
zend_throw_error(NULL, "Invalid or missing name property");
|
|
@@ -1498,7 +1446,7 @@ PHP_METHOD (ArrayTable, print_linear_hist) {
|
|
|
|
|
|
|
|
if (res.empty()) {
|
|
if (res.empty()) {
|
|
|
std::cout << "empty histogram" << std::endl;
|
|
std::cout << "empty histogram" << std::endl;
|
|
|
- RETURN_FALSE
|
|
|
|
|
|
|
+ RETURN_FALSE;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
uint64_t max_val = *std::max_element(res.begin(), res.end());
|
|
uint64_t max_val = *std::max_element(res.begin(), res.end());
|
|
@@ -1526,21 +1474,13 @@ PHP_METHOD (ArrayTable, print_linear_hist) {
|
|
|
|
|
|
|
|
PHP_METHOD (PerCpuArrayTable, sum_value) {
|
|
PHP_METHOD (PerCpuArrayTable, sum_value) {
|
|
|
int64_t index;
|
|
int64_t index;
|
|
|
- zval name_rv;
|
|
|
|
|
- zval *name_zv;
|
|
|
|
|
-
|
|
|
|
|
if (zend_parse_parameters(ZEND_NUM_ARGS(), "l", &index) == FAILURE) {
|
|
if (zend_parse_parameters(ZEND_NUM_ARGS(), "l", &index) == FAILURE) {
|
|
|
RETURN_NULL();
|
|
RETURN_NULL();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- name_zv = zend_read_property(
|
|
|
|
|
- Z_OBJCE_P(getThis()),
|
|
|
|
|
- getThis(),
|
|
|
|
|
- "name",
|
|
|
|
|
- sizeof("name") - 1,
|
|
|
|
|
- 1,
|
|
|
|
|
- &name_rv
|
|
|
|
|
- );
|
|
|
|
|
|
|
+ zval *name_zv = sc_zend_read_property(Z_OBJCE_P(getThis()), getThis(), "name",
|
|
|
|
|
+ sizeof("name") - 1, 0);
|
|
|
|
|
+
|
|
|
|
|
|
|
|
if (!name_zv || Z_TYPE_P(name_zv) != IS_STRING) {
|
|
if (!name_zv || Z_TYPE_P(name_zv) != IS_STRING) {
|
|
|
zend_throw_error(NULL, "Invalid or missing name property");
|
|
zend_throw_error(NULL, "Invalid or missing name property");
|
|
@@ -1579,21 +1519,13 @@ PHP_METHOD (PerCpuArrayTable, sum_value) {
|
|
|
PHP_METHOD (StackTraceTable, values) {
|
|
PHP_METHOD (StackTraceTable, values) {
|
|
|
zend_long stack_id;
|
|
zend_long stack_id;
|
|
|
zend_long pid = -1;
|
|
zend_long pid = -1;
|
|
|
- zval name_rv;
|
|
|
|
|
- zval *name_zv;
|
|
|
|
|
|
|
|
|
|
if (zend_parse_parameters(ZEND_NUM_ARGS(), "l|l", &stack_id, &pid) == FAILURE) {
|
|
if (zend_parse_parameters(ZEND_NUM_ARGS(), "l|l", &stack_id, &pid) == FAILURE) {
|
|
|
RETURN_NULL();
|
|
RETURN_NULL();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- name_zv = zend_read_property(
|
|
|
|
|
- Z_OBJCE_P(getThis()),
|
|
|
|
|
- getThis(),
|
|
|
|
|
- "name",
|
|
|
|
|
- sizeof("name") - 1,
|
|
|
|
|
- 1,
|
|
|
|
|
- &name_rv
|
|
|
|
|
- );
|
|
|
|
|
|
|
+ zval *name_zv = sc_zend_read_property(Z_OBJCE_P(getThis()), getThis(), "name",
|
|
|
|
|
+ sizeof("name") - 1, 0);
|
|
|
|
|
|
|
|
if (!name_zv || Z_TYPE_P(name_zv) != IS_STRING) {
|
|
if (!name_zv || Z_TYPE_P(name_zv) != IS_STRING) {
|
|
|
zend_throw_error(NULL, "Invalid or missing name property");
|
|
zend_throw_error(NULL, "Invalid or missing name property");
|
|
@@ -1637,61 +1569,186 @@ static void php_ebpf_init_globals(zend_ebpf_globals *ebpf_globals)
|
|
|
/* }}} */
|
|
/* }}} */
|
|
|
|
|
|
|
|
/* {{{ bpf_class_methods */
|
|
/* {{{ bpf_class_methods */
|
|
|
|
|
+ZEND_BEGIN_ARG_INFO_EX(arginfo_bpf_construct, 0, 0, 1)
|
|
|
|
|
+ ZEND_ARG_ARRAY_INFO(0, opts, 0)
|
|
|
|
|
+ZEND_END_ARG_INFO()
|
|
|
|
|
+
|
|
|
ZEND_BEGIN_ARG_INFO_EX(arginfo_bpf_get, 0, 0, 1)
|
|
ZEND_BEGIN_ARG_INFO_EX(arginfo_bpf_get, 0, 0, 1)
|
|
|
- ZEND_ARG_INFO(0, name)
|
|
|
|
|
|
|
+ ZEND_ARG_INFO(0, name)
|
|
|
|
|
+ZEND_END_ARG_INFO()
|
|
|
|
|
+
|
|
|
|
|
+ZEND_BEGIN_ARG_INFO_EX(arginfo_bpf_get_kprobe_functions, 0, 0, 1)
|
|
|
|
|
+ ZEND_ARG_INFO(0, fn)
|
|
|
|
|
+ZEND_END_ARG_INFO()
|
|
|
|
|
+
|
|
|
|
|
+ZEND_BEGIN_ARG_INFO_EX(arginfo_bpf_attach_kprobe, 0, 0, 2)
|
|
|
|
|
+ ZEND_ARG_INFO(0, kernel_func)
|
|
|
|
|
+ ZEND_ARG_INFO(0, probe_func)
|
|
|
|
|
+ZEND_END_ARG_INFO()
|
|
|
|
|
+
|
|
|
|
|
+ZEND_BEGIN_ARG_INFO_EX(arginfo_bpf_attach_tracepoint, 0, 0, 2)
|
|
|
|
|
+ ZEND_ARG_INFO(0, tp_func)
|
|
|
|
|
+ ZEND_ARG_INFO(0, probe_func)
|
|
|
|
|
+ZEND_END_ARG_INFO()
|
|
|
|
|
+
|
|
|
|
|
+#define arginfo_bpf_attach_raw_tracepoint arginfo_bpf_attach_tracepoint
|
|
|
|
|
+
|
|
|
|
|
+ZEND_BEGIN_ARG_INFO_EX(arginfo_bpf_attach_kfunc, 0, 0, 1)
|
|
|
|
|
+ ZEND_ARG_INFO(0, kfunc)
|
|
|
|
|
+ZEND_END_ARG_INFO()
|
|
|
|
|
+
|
|
|
|
|
+ZEND_BEGIN_ARG_INFO_EX(arginfo_bpf_attach_lsm, 0, 0, 1)
|
|
|
|
|
+ ZEND_ARG_INFO(0, lsm)
|
|
|
|
|
+ZEND_END_ARG_INFO()
|
|
|
|
|
+
|
|
|
|
|
+ZEND_BEGIN_ARG_INFO_EX(arginfo_bpf_attach_uprobe, 0, 0, 3)
|
|
|
|
|
+ ZEND_ARG_INFO(0, binary_path)
|
|
|
|
|
+ ZEND_ARG_INFO(0, symbol)
|
|
|
|
|
+ ZEND_ARG_INFO(0, probe_func)
|
|
|
|
|
+ ZEND_ARG_ARRAY_INFO(1, options, 1)
|
|
|
|
|
+ZEND_END_ARG_INFO()
|
|
|
|
|
+
|
|
|
|
|
+ZEND_BEGIN_ARG_INFO_EX(arginfo_bpf_detach_kprobe, 0, 0, 1)
|
|
|
|
|
+ ZEND_ARG_INFO(0, fn)
|
|
|
|
|
+ZEND_END_ARG_INFO()
|
|
|
|
|
+
|
|
|
|
|
+ZEND_BEGIN_ARG_INFO_EX(arginfo_bpf_detach_uprobe, 0, 0, 2)
|
|
|
|
|
+ ZEND_ARG_INFO(0, binary_path)
|
|
|
|
|
+ ZEND_ARG_INFO(0, symbol)
|
|
|
|
|
+ ZEND_ARG_ARRAY_INFO(1, options, 1)
|
|
|
|
|
+ZEND_END_ARG_INFO()
|
|
|
|
|
+
|
|
|
|
|
+ZEND_BEGIN_ARG_INFO_EX(arginfo_bpf_trace_print, 0, 0, 0)
|
|
|
|
|
+ ZEND_ARG_INFO(0, fmt) // Optional
|
|
|
|
|
+ZEND_END_ARG_INFO()
|
|
|
|
|
+
|
|
|
|
|
+ZEND_BEGIN_ARG_INFO_EX(arginfo_bpf_trace_fields, 0, 0, 0)
|
|
|
|
|
+ZEND_END_ARG_INFO()
|
|
|
|
|
+
|
|
|
|
|
+ZEND_BEGIN_ARG_INFO_EX(arginfo_bpf_get_table, 0, 0, 1)
|
|
|
|
|
+ ZEND_ARG_INFO(0, table_name)
|
|
|
ZEND_END_ARG_INFO()
|
|
ZEND_END_ARG_INFO()
|
|
|
|
|
+
|
|
|
|
|
+ZEND_BEGIN_ARG_INFO_EX(arginfo_bpf_perf_buffer_poll, 0, 0, 0)
|
|
|
|
|
+ZEND_END_ARG_INFO()
|
|
|
|
|
+
|
|
|
|
|
+ZEND_BEGIN_ARG_INFO_EX(arginfo_bpf_get_syscall_fnname, 0, 0, 1)
|
|
|
|
|
+ ZEND_ARG_INFO(0, name)
|
|
|
|
|
+ZEND_END_ARG_INFO()
|
|
|
|
|
+
|
|
|
|
|
+ZEND_BEGIN_ARG_INFO_EX(arginfo_bpf_load_func, 0, 0, 2)
|
|
|
|
|
+ ZEND_ARG_INFO(0, fn)
|
|
|
|
|
+ ZEND_ARG_INFO(0, prog_type)
|
|
|
|
|
+ZEND_END_ARG_INFO()
|
|
|
|
|
+
|
|
|
|
|
+ZEND_BEGIN_ARG_INFO_EX(arginfo_bpf_attach_raw_socket, 0, 0, 2)
|
|
|
|
|
+ ZEND_ARG_OBJ_INFO(0, prog_fn, BPFProgFunction, 0)
|
|
|
|
|
+ ZEND_ARG_INFO(0, interface)
|
|
|
|
|
+ZEND_END_ARG_INFO()
|
|
|
|
|
+/* }}} */
|
|
|
|
|
+
|
|
|
|
|
+/* {{{ arginfo for PerfEventArrayTable class */
|
|
|
|
|
+ZEND_BEGIN_ARG_INFO_EX(arginfo_perf_event_array_table_open_perf_buffer, 0, 0, 1)
|
|
|
|
|
+ ZEND_ARG_INFO(0, cb_fn_str)
|
|
|
|
|
+ZEND_END_ARG_INFO()
|
|
|
|
|
+/* }}} */
|
|
|
|
|
+
|
|
|
|
|
+/* {{{ arginfo for HashTable class */
|
|
|
|
|
+ZEND_BEGIN_ARG_INFO_EX(arginfo_hash_table_values, 0, 0, 0)
|
|
|
|
|
+ZEND_END_ARG_INFO()
|
|
|
|
|
+
|
|
|
|
|
+ZEND_BEGIN_ARG_INFO_EX(arginfo_hash_table_clear, 0, 0, 0)
|
|
|
|
|
+ZEND_END_ARG_INFO()
|
|
|
|
|
+/* }}} */
|
|
|
|
|
+
|
|
|
|
|
+/* {{{ arginfo for ArrayTable class */
|
|
|
|
|
+ZEND_BEGIN_ARG_INFO_EX(arginfo_array_table_get_value, 0, 0, 1)
|
|
|
|
|
+ ZEND_ARG_INFO(0, index)
|
|
|
|
|
+ZEND_END_ARG_INFO()
|
|
|
|
|
+
|
|
|
|
|
+ZEND_BEGIN_ARG_INFO_EX(arginfo_array_table_print_log2_hist, 0, 0, 1)
|
|
|
|
|
+ ZEND_ARG_INFO(0, header)
|
|
|
|
|
+ZEND_END_ARG_INFO()
|
|
|
|
|
+
|
|
|
|
|
+#define arginfo_array_table_print_linear_hist arginfo_array_table_print_log2_hist
|
|
|
|
|
+/* }}} */
|
|
|
|
|
+
|
|
|
|
|
+/* {{{ arginfo for PerCpuArrayTable class */
|
|
|
|
|
+ZEND_BEGIN_ARG_INFO_EX(arginfo_per_cpu_array_table_sum_value, 0, 0, 1)
|
|
|
|
|
+ ZEND_ARG_INFO(0, index)
|
|
|
|
|
+ZEND_END_ARG_INFO()
|
|
|
|
|
+/* }}} */
|
|
|
|
|
+
|
|
|
|
|
+/* {{{ arginfo for StackTraceTable class */
|
|
|
|
|
+ZEND_BEGIN_ARG_INFO_EX(arginfo_stack_trace_table_values, 0, 0, 1)
|
|
|
|
|
+ ZEND_ARG_INFO(0, stack_id)
|
|
|
|
|
+ ZEND_ARG_INFO(0, pid) // Optional
|
|
|
|
|
+ZEND_END_ARG_INFO()
|
|
|
|
|
+/* }}} */
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+/* {{{ PHP_INI
|
|
|
|
|
+ */
|
|
|
|
|
+/* Remove comments if you have entries in php.ini
|
|
|
|
|
+PHP_INI_BEGIN()
|
|
|
|
|
+ DISPLAY_INI_ENTRIES();
|
|
|
|
|
+PHP_INI_END()
|
|
|
|
|
+*/
|
|
|
|
|
+/* }}} */
|
|
|
|
|
+
|
|
|
|
|
+/* {{{ bpf_class_methods */
|
|
|
static const zend_function_entry bpf_class_methods[] = {
|
|
static const zend_function_entry bpf_class_methods[] = {
|
|
|
- PHP_ME(Bpf, __construct, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR)
|
|
|
|
|
|
|
+ PHP_ME(Bpf, __construct, arginfo_bpf_construct, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR)
|
|
|
PHP_ME(Bpf, __get, arginfo_bpf_get, ZEND_ACC_PUBLIC)
|
|
PHP_ME(Bpf, __get, arginfo_bpf_get, ZEND_ACC_PUBLIC)
|
|
|
- PHP_ME(Bpf, get_kprobe_functions, NULL, ZEND_ACC_PUBLIC)
|
|
|
|
|
- PHP_ME(Bpf, attach_kprobe, NULL, ZEND_ACC_PUBLIC)
|
|
|
|
|
- PHP_ME(Bpf, attach_tracepoint, NULL, ZEND_ACC_PUBLIC)
|
|
|
|
|
- PHP_ME(Bpf, attach_raw_tracepoint, NULL, ZEND_ACC_PUBLIC)
|
|
|
|
|
- PHP_ME(Bpf, attach_kfunc, NULL, ZEND_ACC_PUBLIC)
|
|
|
|
|
- PHP_ME(Bpf, attach_lsm, NULL, ZEND_ACC_PUBLIC)
|
|
|
|
|
- PHP_ME(Bpf, attach_uprobe, NULL, ZEND_ACC_PUBLIC)
|
|
|
|
|
- PHP_ME(Bpf, detach_kprobe, NULL, ZEND_ACC_PUBLIC)
|
|
|
|
|
- PHP_ME(Bpf, detach_uprobe, NULL, ZEND_ACC_PUBLIC)
|
|
|
|
|
- PHP_ME(Bpf, trace_print, NULL, ZEND_ACC_PUBLIC)
|
|
|
|
|
- PHP_ME(Bpf, trace_fields, NULL, ZEND_ACC_PUBLIC)
|
|
|
|
|
- PHP_ME(Bpf, get_table, NULL, ZEND_ACC_PUBLIC)
|
|
|
|
|
- PHP_ME(Bpf, perf_buffer_poll, NULL, ZEND_ACC_PUBLIC)
|
|
|
|
|
- PHP_ME(Bpf, get_syscall_fnname, NULL, ZEND_ACC_PUBLIC)
|
|
|
|
|
- PHP_ME(Bpf, load_func, NULL, ZEND_ACC_PUBLIC)
|
|
|
|
|
- PHP_ME(Bpf, attach_raw_socket, NULL, ZEND_ACC_PUBLIC)
|
|
|
|
|
- PHP_FE_END
|
|
|
|
|
|
|
+ PHP_ME(Bpf, get_kprobe_functions, arginfo_bpf_get_kprobe_functions, ZEND_ACC_PUBLIC)
|
|
|
|
|
+ PHP_ME(Bpf, attach_kprobe, arginfo_bpf_attach_kprobe, ZEND_ACC_PUBLIC)
|
|
|
|
|
+ PHP_ME(Bpf, attach_tracepoint, arginfo_bpf_attach_tracepoint, ZEND_ACC_PUBLIC)
|
|
|
|
|
+ PHP_ME(Bpf, attach_raw_tracepoint, arginfo_bpf_attach_raw_tracepoint, ZEND_ACC_PUBLIC)
|
|
|
|
|
+ PHP_ME(Bpf, attach_kfunc, arginfo_bpf_attach_kfunc, ZEND_ACC_PUBLIC)
|
|
|
|
|
+ PHP_ME(Bpf, attach_lsm, arginfo_bpf_attach_lsm, ZEND_ACC_PUBLIC)
|
|
|
|
|
+ PHP_ME(Bpf, attach_uprobe, arginfo_bpf_attach_uprobe, ZEND_ACC_PUBLIC)
|
|
|
|
|
+ PHP_ME(Bpf, detach_kprobe, arginfo_bpf_detach_kprobe, ZEND_ACC_PUBLIC)
|
|
|
|
|
+ PHP_ME(Bpf, detach_uprobe, arginfo_bpf_detach_uprobe, ZEND_ACC_PUBLIC)
|
|
|
|
|
+ PHP_ME(Bpf, trace_print, arginfo_bpf_trace_print, ZEND_ACC_PUBLIC)
|
|
|
|
|
+ PHP_ME(Bpf, trace_fields, arginfo_bpf_trace_fields, ZEND_ACC_PUBLIC)
|
|
|
|
|
+ PHP_ME(Bpf, get_table, arginfo_bpf_get_table, ZEND_ACC_PUBLIC)
|
|
|
|
|
+ PHP_ME(Bpf, perf_buffer_poll, arginfo_bpf_perf_buffer_poll, ZEND_ACC_PUBLIC)
|
|
|
|
|
+ PHP_ME(Bpf, get_syscall_fnname, arginfo_bpf_get_syscall_fnname, ZEND_ACC_PUBLIC)
|
|
|
|
|
+ PHP_ME(Bpf, load_func, arginfo_bpf_load_func, ZEND_ACC_PUBLIC)
|
|
|
|
|
+ PHP_ME(Bpf, attach_raw_socket, arginfo_bpf_attach_raw_socket, ZEND_ACC_PUBLIC)
|
|
|
|
|
+ PHP_FE_END
|
|
|
};
|
|
};
|
|
|
/* }}} */
|
|
/* }}} */
|
|
|
|
|
|
|
|
/* {{{ table methods */
|
|
/* {{{ table methods */
|
|
|
static const zend_function_entry perf_event_array_table_methods[] = {
|
|
static const zend_function_entry perf_event_array_table_methods[] = {
|
|
|
- PHP_ME(PerfEventArrayTable, open_perf_buffer, NULL, ZEND_ACC_PUBLIC)
|
|
|
|
|
- PHP_FE_END
|
|
|
|
|
|
|
+ PHP_ME(PerfEventArrayTable, open_perf_buffer, arginfo_perf_event_array_table_open_perf_buffer, ZEND_ACC_PUBLIC)
|
|
|
|
|
+ PHP_FE_END
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
static const zend_function_entry hash_table_methods[] = {
|
|
static const zend_function_entry hash_table_methods[] = {
|
|
|
- PHP_ME(HashTable, values, NULL, ZEND_ACC_PUBLIC)
|
|
|
|
|
- PHP_ME(HashTable, clear, NULL, ZEND_ACC_PUBLIC)
|
|
|
|
|
- PHP_FE_END
|
|
|
|
|
|
|
+ PHP_ME(HashTable, values, arginfo_hash_table_values, ZEND_ACC_PUBLIC)
|
|
|
|
|
+ PHP_ME(HashTable, clear, arginfo_hash_table_clear, ZEND_ACC_PUBLIC)
|
|
|
|
|
+ PHP_FE_END
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
static const zend_function_entry array_table_methods[] = {
|
|
static const zend_function_entry array_table_methods[] = {
|
|
|
- PHP_ME(ArrayTable, get_value, NULL, ZEND_ACC_PUBLIC)
|
|
|
|
|
- PHP_ME(ArrayTable, print_log2_hist, NULL, ZEND_ACC_PUBLIC)
|
|
|
|
|
- PHP_ME(ArrayTable, print_linear_hist, NULL, ZEND_ACC_PUBLIC)
|
|
|
|
|
- PHP_FE_END
|
|
|
|
|
|
|
+ PHP_ME(ArrayTable, get_value, arginfo_array_table_get_value, ZEND_ACC_PUBLIC)
|
|
|
|
|
+ PHP_ME(ArrayTable, print_log2_hist, arginfo_array_table_print_log2_hist, ZEND_ACC_PUBLIC)
|
|
|
|
|
+ PHP_ME(ArrayTable, print_linear_hist, arginfo_array_table_print_linear_hist, ZEND_ACC_PUBLIC)
|
|
|
|
|
+ PHP_FE_END
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
static const zend_function_entry prog_array_table_methods[] = {
|
|
static const zend_function_entry prog_array_table_methods[] = {
|
|
|
- PHP_FE_END
|
|
|
|
|
|
|
+ PHP_FE_END
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
static const zend_function_entry per_cpu_hash_table_methods[] = {
|
|
static const zend_function_entry per_cpu_hash_table_methods[] = {
|
|
|
- PHP_FE_END
|
|
|
|
|
|
|
+ PHP_FE_END
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
static const zend_function_entry per_cpu_array_table_methods[] = {
|
|
static const zend_function_entry per_cpu_array_table_methods[] = {
|
|
|
- PHP_ME(PerCpuArrayTable, sum_value, NULL, ZEND_ACC_PUBLIC)
|
|
|
|
|
|
|
+ PHP_ME(PerCpuArrayTable, sum_value, arginfo_per_cpu_array_table_sum_value, ZEND_ACC_PUBLIC)
|
|
|
PHP_FE_END
|
|
PHP_FE_END
|
|
|
};
|
|
};
|
|
|
|
|
|
|
@@ -1700,7 +1757,7 @@ static const zend_function_entry lpm_trie_table_methods[] = {
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
static const zend_function_entry stack_trace_table_methods[] = {
|
|
static const zend_function_entry stack_trace_table_methods[] = {
|
|
|
- PHP_ME(StackTraceTable, values, NULL, ZEND_ACC_PUBLIC)
|
|
|
|
|
|
|
+ PHP_ME(StackTraceTable, values, arginfo_stack_trace_table_values, ZEND_ACC_PUBLIC)
|
|
|
PHP_FE_END
|
|
PHP_FE_END
|
|
|
};
|
|
};
|
|
|
|
|
|