mirror of
				https://gitea.osmocom.org/cellular-infrastructure/osmo-trx.git
				synced 2025-10-31 12:13:34 +00:00 
			
		
		
		
	Since libosmocore Id7711893b34263baacac6caf4d489467053131bb, a new API log_enable_multithread() is available which takes care of protecting logging infrastructure from us (and actually does it correctly since we cannot protect internal libosmocore structures from osmo-trx). Let's drop all mutex related code from osmo-trx logging infra and simply rely on libosmocore's. Related: OS#4088 Change-Id: I519d0f30bce871005ca26b90177ea4aa4839360a
		
			
				
	
	
		
			64 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			64 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /*
 | |
| * Copyright (C) 2018 sysmocom - s.f.m.c. GmbH
 | |
| *
 | |
| * SPDX-License-Identifier: AGPL-3.0+
 | |
| *
 | |
| * This software is distributed under the terms of the GNU Affero Public License.
 | |
| * See the COPYING file in the main directory for details.
 | |
| *
 | |
| * This use of this software may be subject to additional restrictions.
 | |
| * See the LEGAL file in the main directory for details.
 | |
| 
 | |
| 	This program is free software: you can redistribute it and/or modify
 | |
| 	it under the terms of the GNU Affero General Public License as published by
 | |
| 	the Free Software Foundation, either version 3 of the License, or
 | |
| 	(at your option) any later version.
 | |
| 
 | |
| 	This program is distributed in the hope that it will be useful,
 | |
| 	but WITHOUT ANY WARRANTY; without even the implied warranty of
 | |
| 	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | |
| 	GNU Affero General Public License for more details.
 | |
| 
 | |
| 	You should have received a copy of the GNU Affero General Public License
 | |
| 	along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | |
| 
 | |
| */
 | |
| 
 | |
| #include <string.h>
 | |
| #include <cstdio>
 | |
| #include <fstream>
 | |
| #include <string>
 | |
| #include <stdarg.h>
 | |
| #include <sys/time.h>	// For gettimeofday
 | |
| 
 | |
| #include "Logger.h"
 | |
| #include "Threads.h"	// pat added
 | |
| 
 | |
| using namespace std;
 | |
| 
 | |
| std::ostream& operator<<(std::ostream& os, std::ostringstream& ss)
 | |
| {
 | |
| 	return os << ss.str();
 | |
| }
 | |
| 
 | |
| Log::~Log()
 | |
| {
 | |
| 	int old_state;
 | |
| 	int mlen = mStream.str().size();
 | |
| 	int neednl = (mlen==0 || mStream.str()[mlen-1] != '\n');
 | |
| 	const char *fmt = neednl ? "%s\n" : "%s";
 | |
| 
 | |
| 	/* print related function called inside a C++ destructor, use pthread_setcancelstate() APIs.
 | |
| 	   See osmo-trx commit 86be40b4eb762d5c12e8e3f7388ca9f254e77b36 for more information */
 | |
| 	pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &old_state);
 | |
| 	LOGPSRC(mCategory, mPriority, filename, line, fmt, mStream.str().c_str());
 | |
| 	pthread_setcancelstate(old_state, NULL);
 | |
| }
 | |
| 
 | |
| ostringstream& Log::get()
 | |
| {
 | |
| 	return mStream;
 | |
| }
 | |
| 
 | |
| // vim: ts=4 sw=4
 |