Instead of trying all socket types (local + rpmsg), select the
correct one based on the net type. And use getsockname() at runtime
to decide when both net_local and net_rpmsg are enabled, if on
the same core as KVDB server, use local socket; otherwise use rpmsg socket.
Increase KVDB_BACKLOG_CONNS to 256
Signed-off-by: jingfei <jingfei@xiaomi.com>
kvdbd is single threaded.
If CP calls property_list, AP'S kvdbd will continue to send to cp,
then accept will not be executed.
If another thread at CP loops to call property_set,
the AP server-side's pending queue will be full and reject next connection.
Bluetooth now loops through 15 times to call 'property_set',
So to avoid rejecting the connection,
set a macro to separately manage the listening count of kvdb
Signed-off-by: yintao <yintao@xiaomi.com>
KVDB_NVS should depend on MTD_CONFIG_NAMED. If choose
select MTD_CONFIG_NAMED and CONFIG_MTD is not set, it
will lead to compile error like:
dev-system/nuttx/include/nuttx/mtd/configdata.h:79:20: error: 'CONFIG_MTD_CONFIG_NAME_LEN' undeclared here (not in a function); did you mean 'CONFIG_MTD_CONFIG_NAMED'?
79 | char name[CONFIG_MTD_CONFIG_NAME_LEN];
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
| CONFIG_MTD_CONFIG_NAMED
Signed-off-by: hongfengchen <hongfengchen@xiaomi.com>
Summary:
Added filekv backend,We need to configure the persist storage location (folder directory) and tmp storage location (folder directory) if we need
next:Put the file behavior in common so that other backends can use it
Signed-off-by: chenrun1 <chenrun1@xiaomi.com>
Signed-off-by: buxiasen <buxiasen@xiaomi.com>
FS_LOCK_BUCKET_SIZE has been added required in config UNQLITE
config UNQLITE
bool "UnQLite Database"
depends on TLS_TASK_NELEM > 0
depends on FS_LOCK_BUCKET_SIZE > 0
default n
Signed-off-by: haopengxiang <haopengxiang@xiaomi.com>
KVDB use unqlite by default. NVS will be another choice
dependson: 965665 965758 partner_22343 partner_22348 partner_22347 partner_22345 partner_22354 partner_22397
Signed-off-by: xucheng5 <xucheng5@xiaomi.com>
In the case of a single core, there is no need to monitor the rpmsg socket, and the client can directly call the interface set and get attributes
Signed-off-by: yuanchengcheng <yuanchengcheng@xiaomi.com>
When the type of basic value is double, can't using void *value as buffer to get value.
==3263760==ERROR: AddressSanitizer: stack-buffer-overflow on address 0xefe13c30 at pc 0x577c0356 bp 0xefe139b8 sp 0xefe139a8
WRITE of size 8 at 0xefe13c30 thread T0
#0 0x577c0355 in _dbus_marshal_read_basic dbus/dbus/dbus-marshal-basic.c:581
#1 0x5783bedb in _dbus_type_reader_read_basic dbus/dbus/dbus-marshal-recursive.c:879
#2 0x5776ef72 in dbus_message_iter_get_basic dbus/dbus/dbus-message.c:2376
#3 0x57e06daa in iter_append_iter gdbus/client.c:222
#4 0x57e070b1 in prop_entry_update gdbus/client.c:265
#5 0x57e07454 in prop_entry_new gdbus/client.c:286
#6 0x57e0793a in add_property gdbus/client.c:322
#7 0x57e09abd in properties_changed_non_standard gdbus/client.c:544
#8 0x57df2e00 in signal_filter gdbus/watch.c:394
#9 0x57df4d57 in message_filter gdbus/watch.c:544
#10 0x57752dc6 in dbus_connection_dispatch dbus/dbus/dbus-connection.c:4703
#11 0x57dde7d5 in message_dispatch gdbus/mainloop.c:59
#12 0x5790e3b8 in g_idle_dispatch glib/glib/gmain.c:6157
#13 0x57900a31 in g_main_dispatch glib/glib/gmain.c:3477
#14 0x579080d3 in g_main_context_dispatch glib/glib/gmain.c:4195
#15 0x57908bcc in g_main_context_iterate glib/glib/gmain.c:4271
#16 0x57909e7f in g_main_loop_run glib/glib/gmain.c:4471
#17 0x57dde5b7 in telephonytool_main /home/djz/workspace/test/sim/frameworks/telephony/telephony_tool.c:878
#18 0x56ea66b5 in nxtask_startup sched/task_startup.c:70
#19 0x56e541a8 in nxtask_start task/task_start.c:134
Signed-off-by: dongjiuzhu1 <dongjiuzhu1@xiaomi.com>
There are still three fail test cases (android property test):
1. empty key test, reason: kvdb do not support empty key;
2. long key test, reason: (a) read only property value length can be
arbitrarily-long in android, kvdb do not support; (b) read only
property can be set if the property do not exist before, kvdb
not allowed this action;
3. cached property test, reason: (a) android cached property uses
serial to judge the [key, value] changed, kvdb can't handle this
very well; (b) android cached property return the value pointer
from the shared memory directly for read only property, kvdb
can't handle this well too.
Signed-off-by: wangbowen6 <wangbowen6@xiaomi.com>
when the kvdb has too many kv pairs, after kvdb_list_consume()
blocked in sendmsg (write buffer not enough), the domain socket
buffer layout may became:
[k0_len][v0_len][k0][v0]...[kn_len][vn_len][kn][vn][the last char]
so the client property_list will receive only one char (ret = 1)
after received [k0, v0] ~ [kn, vn], but actually the property list
is not terminated, property_list exit early problem happened.
this problem can be easily reproduced in 86panel by running kvdb
testcase twice.
Signed-off-by: wangbowen6 <wangbowen6@xiaomi.com>