blob: 320c53677561d3048c7f0029958452937fab71df [file] [log] [blame]
/* $Id$
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to you 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.
*/
#ifdef _THREAD2_
/*
* etcht_hread.c
*/
#include "etch_thread2.h"
#include "etch_log.h"
#include "etch_object.h"
#include "etch_objecttypes.h"
#include "etch_wait.h"
#include "etch_mem.h"
static const char* LOG_CATEGORY = "etch_thread";
extern etch_pool_t* g_etch_main_pool;
etch_status_t etch_thread_attr_create(etch_thread_attr_t** attr)
{
return ETCH_SUCCESS;
}
etch_status_t etch_thread_attr_set_detachstate(etch_thread_attr_t* attr, int state)
{
return ETCH_SUCCESS;
}
etch_status_t etch_thread_attr_get_detachstate(etch_thread_attr_t* attr, int* state)
{
return ETCH_SUCCESS;
}
etch_status_t etch_thread_attr_destroy(etch_thread_attr_t* attr)
{
return ETCH_SUCCESS;
}
struct etch_thread_t
{
etch_object object;
// thread member types
apr_thread_t* apr_thread;
apr_pool_t* apr_pool;
etch_thread_func func;
void* data;
etch_wait_t* event_start;
};
/**
* etch_apr_threadproc()
* internal thread proc. this is a wrapper around the user thread proc.
* @param data expected to point at an etch_thread_params, which contains the
* thread start amd stop handlers, and the real threadproc and threadproc data.
*/
static void* APR_THREAD_FUNC apr_thread_func(apr_thread_t* apr_thread, void *data)
{
//etch_status_t rv = ETCH_SUCCESS;
//etch_status_t status = ETCH_SUCCESS;
//etch_thread_t* thread = NULL;
//thread = data;
//ETCH_ASSERT(thread == NULL);
//status = etch_wait_wait_and_set(thread->event_start, 1, 0);
//ETCH_ASSERT(status == ETCH_SUCCESS);
//etch_thread_exit(thread, rv);
return NULL;
}
etch_status_t etch_thread_create(etch_thread_t** thread, const etch_thread_attr_t* attr, etch_thread_func thread_proc, void* data)
{
etch_status_t rv = ETCH_SUCCESS;
//etch_status_t status = ETCH_SUCCESS;
//etch_thread_t* newthread = NULL;
//apr_status_t apr_status = NULL;
//if(thread == NULL) {
// return ETCH_EINVAL;
//}
//newthread = (etch_thread_t*)new_object(sizeof(etch_thread_t), ETCHTYPEB_THREAD, CLASSID_THREAD);
//ETCH_ASSERT(newthread == NULL);
return rv;
}
etch_status_t etch_thread_join(etch_thread_t* thread, etch_status_t* status)
{
return ETCH_SUCCESS;
}
etch_status_t etch_thread_yield()
{
return ETCH_SUCCESS;
}
etch_status_t etch_thread_exit(etch_thread_t* thread, etch_status_t status)
{
return ETCH_SUCCESS;
}
#endif