mirror of
https://github.com/topjohnwu/Magisk.git
synced 2025-11-07 20:44:25 +00:00
Update resetprop for Android O support
Updated to upstream https://android.googlesource.com/platform/bionic.git
This commit is contained in:
@@ -29,61 +29,34 @@
|
||||
#ifndef _INCLUDE_SYS__SYSTEM_PROPERTIES_H
|
||||
#define _INCLUDE_SYS__SYSTEM_PROPERTIES_H
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
#include <stdint.h>
|
||||
|
||||
#ifndef _REALLY_INCLUDE_SYS__SYSTEM_PROPERTIES_H_
|
||||
#error you should #include <sys/system_properties.h> instead
|
||||
#else
|
||||
#include <sys/system_properties.h>
|
||||
#endif
|
||||
|
||||
typedef struct prop_msg prop_msg;
|
||||
|
||||
#define PROP_AREA_MAGIC 0x504f5250
|
||||
#define PROP_AREA_VERSION 0xfc6ed0ab
|
||||
#define PROP_AREA_VERSION_COMPAT 0x45434f76
|
||||
|
||||
#define PROP_SERVICE_NAME "property_service"
|
||||
#define PROP_FILENAME_MAX 1024
|
||||
#define PROP_FILENAME "/dev/__properties__"
|
||||
|
||||
#define PA_SIZE (128 * 1024)
|
||||
|
||||
#define SERIAL_VALUE_LEN(serial) ((serial) >> 24)
|
||||
#define SERIAL_DIRTY(serial) ((serial) & 1)
|
||||
// #include <sys/system_properties.h>
|
||||
#include "system_properties.h"
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
struct prop_msg
|
||||
{
|
||||
unsigned cmd;
|
||||
char name[PROP_NAME_MAX];
|
||||
char value[PROP_VALUE_MAX];
|
||||
};
|
||||
#define PROP_SERVICE_NAME "property_service"
|
||||
#define PROP_FILENAME "/dev/__properties__"
|
||||
|
||||
#define PROP_MSG_SETPROP 1
|
||||
#define PROP_MSG_SETPROP2 0x00020001
|
||||
|
||||
/*
|
||||
** Rules:
|
||||
**
|
||||
** - there is only one writer, but many readers
|
||||
** - prop_area.count will never decrease in value
|
||||
** - once allocated, a prop_info's name will not change
|
||||
** - once allocated, a prop_info's offset will not change
|
||||
** - reading a value requires the following steps
|
||||
** 1. serial = pi->serial
|
||||
** 2. if SERIAL_DIRTY(serial), wait*, then goto 1
|
||||
** 3. memcpy(local, pi->value, SERIAL_VALUE_LEN(serial) + 1)
|
||||
** 4. if pi->serial != serial, goto 2
|
||||
**
|
||||
** - writing a value requires the following steps
|
||||
** 1. pi->serial = pi->serial | 1
|
||||
** 2. memcpy(pi->value, local_value, value_len)
|
||||
** 3. pi->serial = (value_len << 24) | ((pi->serial + 1) & 0xffffff)
|
||||
*/
|
||||
|
||||
#define PROP_PATH_RAMDISK_DEFAULT "/default.prop"
|
||||
#define PROP_PATH_SYSTEM_BUILD "/system/build.prop"
|
||||
#define PROP_PATH_VENDOR_BUILD "/vendor/build.prop"
|
||||
#define PROP_PATH_LOCAL_OVERRIDE "/data/local.prop"
|
||||
#define PROP_PATH_FACTORY "/factory/factory.prop"
|
||||
#define PROP_SUCCESS 0
|
||||
#define PROP_ERROR_READ_CMD 0x0004
|
||||
#define PROP_ERROR_READ_DATA 0x0008
|
||||
#define PROP_ERROR_READ_ONLY_PROPERTY 0x000B
|
||||
#define PROP_ERROR_INVALID_NAME 0x0010
|
||||
#define PROP_ERROR_INVALID_VALUE 0x0014
|
||||
#define PROP_ERROR_PERMISSION_DENIED 0x0018
|
||||
#define PROP_ERROR_INVALID_CMD 0x001B
|
||||
#define PROP_ERROR_HANDLE_CONTROL_MESSAGE 0x0020
|
||||
#define PROP_ERROR_SET_FAILED 0x0024
|
||||
|
||||
/*
|
||||
** Map the property area from the specified filename. This
|
||||
@@ -120,7 +93,7 @@ int __system_property_area_init();
|
||||
**
|
||||
** Returns the serial number on success, -1 on error.
|
||||
*/
|
||||
unsigned int __system_property_area_serial();
|
||||
uint32_t __system_property_area_serial();
|
||||
|
||||
/* Add a new system property. Can only be done by a single
|
||||
** process that has write access to the property area, and
|
||||
@@ -130,9 +103,12 @@ unsigned int __system_property_area_serial();
|
||||
**
|
||||
** Returns 0 on success, -1 if the property area is full.
|
||||
*/
|
||||
int __system_property_add(const char *name, unsigned int namelen,
|
||||
const char *value, unsigned int valuelen);
|
||||
int __system_property_add(const char *name, unsigned int namelen, const char *value, unsigned int valuelen);
|
||||
|
||||
/* Delete a new system property. Added in resetprop
|
||||
**
|
||||
** Returns 0 on success, -1 if the property area is full.
|
||||
*/
|
||||
int __system_property_del(const char *name);
|
||||
|
||||
/* Update the value of a system property returned by
|
||||
@@ -150,21 +126,7 @@ int __system_property_update(prop_info *pi, const char *value, unsigned int len)
|
||||
**
|
||||
** Returns the serial number on success, -1 on error.
|
||||
*/
|
||||
unsigned int __system_property_serial(const prop_info *pi);
|
||||
|
||||
/* Wait for any system property to be updated. Caller must pass
|
||||
** in 0 the first time, and the previous return value on each
|
||||
** successive call. */
|
||||
unsigned int __system_property_wait_any(unsigned int serial);
|
||||
|
||||
/* Compatibility functions to support using an old init with a new libc,
|
||||
** mostly for the OTA updater binary. These can be deleted once OTAs from
|
||||
** a pre-K release no longer needed to be supported. */
|
||||
// const prop_info *__system_property_find_compat(const char *name);
|
||||
// int __system_property_read_compat(const prop_info *pi, char *name, char *value);
|
||||
// int __system_property_foreach_compat(
|
||||
// void (*propfn)(const prop_info *pi, void *cookie),
|
||||
// void *cookie);
|
||||
uint32_t __system_property_serial(const prop_info* pi);
|
||||
|
||||
/* Initialize the system properties area in read only mode.
|
||||
* Should be done by all processes that need to read system
|
||||
@@ -174,7 +136,9 @@ unsigned int __system_property_wait_any(unsigned int serial);
|
||||
*/
|
||||
int __system_properties_init();
|
||||
|
||||
/* Deprecated: use __system_property_wait instead. */
|
||||
uint32_t __system_property_wait_any(uint32_t old_serial);
|
||||
|
||||
__END_DECLS
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user