modules: camera: Add scoped trace helper
This c++ helper class is normally provided by frameworks/native's libutils, but cannot be used from the context of a hardware module. For now just add the required functionality locally in the hardware module. Change-Id: I5b399cbeb1c017a95baf19456dbf20569e677fbe
This commit is contained in:
parent
005c9da544
commit
c16e56dd43
2 changed files with 55 additions and 9 deletions
|
@ -25,6 +25,7 @@
|
|||
|
||||
#define ATRACE_TAG (ATRACE_TAG_CAMERA | ATRACE_TAG_HAL)
|
||||
#include <cutils/trace.h>
|
||||
#include "ScopedTrace.h"
|
||||
|
||||
#include "Camera.h"
|
||||
|
||||
|
@ -62,11 +63,10 @@ Camera::~Camera()
|
|||
int Camera::open(const hw_module_t *module, hw_device_t **device)
|
||||
{
|
||||
ALOGI("%s:%d: Opening camera device", __func__, mId);
|
||||
ATRACE_BEGIN(__func__);
|
||||
CAMTRACE_CALL();
|
||||
pthread_mutex_lock(&mMutex);
|
||||
if (mBusy) {
|
||||
pthread_mutex_unlock(&mMutex);
|
||||
ATRACE_END();
|
||||
ALOGE("%s:%d: Error! Camera device already opened", __func__, mId);
|
||||
return -EBUSY;
|
||||
}
|
||||
|
@ -77,18 +77,16 @@ int Camera::open(const hw_module_t *module, hw_device_t **device)
|
|||
*device = &mDevice.common;
|
||||
|
||||
pthread_mutex_unlock(&mMutex);
|
||||
ATRACE_END();
|
||||
return 0;
|
||||
}
|
||||
|
||||
int Camera::close()
|
||||
{
|
||||
ALOGI("%s:%d: Closing camera device", __func__, mId);
|
||||
ATRACE_BEGIN(__func__);
|
||||
CAMTRACE_CALL();
|
||||
pthread_mutex_lock(&mMutex);
|
||||
if (!mBusy) {
|
||||
pthread_mutex_unlock(&mMutex);
|
||||
ATRACE_END();
|
||||
ALOGE("%s:%d: Error! Camera device not open", __func__, mId);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
@ -97,7 +95,6 @@ int Camera::close()
|
|||
mBusy = false;
|
||||
|
||||
pthread_mutex_unlock(&mMutex);
|
||||
ATRACE_END();
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -132,16 +129,14 @@ const camera_metadata_t* Camera::constructDefaultRequestSettings(int type)
|
|||
int Camera::processCaptureRequest(camera3_capture_request_t *request)
|
||||
{
|
||||
ALOGV("%s:%d: request=%p", __func__, mId, request);
|
||||
ATRACE_BEGIN(__func__);
|
||||
CAMTRACE_CALL();
|
||||
|
||||
if (request == NULL) {
|
||||
ALOGE("%s:%d: NULL request recieved", __func__, mId);
|
||||
ATRACE_END();
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
// TODO: verify request; submit request to hardware
|
||||
ATRACE_END();
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
51
modules/camera/ScopedTrace.h
Normal file
51
modules/camera/ScopedTrace.h
Normal file
|
@ -0,0 +1,51 @@
|
|||
/*
|
||||
* Copyright (C) 2013 The Android Open Source 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.
|
||||
*/
|
||||
|
||||
#ifndef CAMERA_SCOPED_TRACE_H
|
||||
#define CAMERA_SCOPED_TRACE_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include <cutils/trace.h>
|
||||
|
||||
// See <cutils/trace.h> for more tracing macros.
|
||||
|
||||
// CAMTRACE_NAME traces the beginning and end of the current scope. To trace
|
||||
// the correct start and end times this macro should be declared first in the
|
||||
// scope body.
|
||||
#define CAMTRACE_NAME(name) ScopedTrace ___tracer(ATRACE_TAG, name)
|
||||
// CAMTRACE_CALL is an ATRACE_NAME that uses the current function name.
|
||||
#define CAMTRACE_CALL() CAMTRACE_NAME(__FUNCTION__)
|
||||
|
||||
namespace default_camera_hal {
|
||||
|
||||
class ScopedTrace {
|
||||
public:
|
||||
inline ScopedTrace(uint64_t tag, const char* name)
|
||||
: mTag(tag) {
|
||||
atrace_begin(mTag,name);
|
||||
}
|
||||
|
||||
inline ~ScopedTrace() {
|
||||
atrace_end(mTag);
|
||||
}
|
||||
|
||||
private:
|
||||
uint64_t mTag;
|
||||
};
|
||||
|
||||
}; // namespace default_camera_hal
|
||||
|
||||
#endif // CAMERA_SCOPED_TRACE_H
|
Loading…
Reference in a new issue