android_device_samsung_mond.../ril/ril_shim.c
2016-01-10 17:55:38 +03:00

71 lines
2.2 KiB
C
Executable File

/*
* Copyright (C) 2015 The CyanogenMod Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#define LOG_TAG "SEC_RIL_SHIM"
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <utils/Log.h>
//various funcs we'll need to call, in their mangled form
//android::Parcel::writeString16(char16_t const*, unsigned int)
extern void _ZN7android6Parcel13writeString16EPKDsj(void **str16P,
uint16_t const *str, unsigned int len);
//code exports we provide
void _ZN7android6Parcel13writeString16EPKtj(void **str16P,
unsigned short const *str, unsigned int len);
//library on-load and on-unload handlers (to help us set things up and tear them down)
void libEvtLoading(void) __attribute__((constructor));
void libEvtUnloading(void) __attribute__((destructor));
/*
* FUNCTION: android::Parcel::writeString16(unsigned short const*, unsigned int)
* USE: INTERPOSE: write String16 to binder
* NOTES: This function no longer exists in M, instead now one must pass
* in a char16_t instead of a short. M So we'll craft the same call here.
*/
void _ZN7android6Parcel13writeString16EPKtj(void **str16P,
unsigned short const *str, unsigned int len)
{
_ZN7android6Parcel13writeString16EPKDsj(str16P, str, len);
}
/*
* FUNCTION: libEvtLoading()
* USE: Handle library loading
* NOTES: This is a good time to log the fact that we were loaded and plan to
* do our thing.
*/
void libEvtLoading(void)
{
ALOGV("libbinder interposition library loaded");
}
/*
* FUNCTION: libEvtUnloading()
* USE: Handle library unloading
* NOTES: This is a good time to free whatever is unfreed and say goodbye
*/
void libEvtUnloading(void)
{
ALOGV("libbinder interposition library unloading. Goodbye...");
}