亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? bt.c

?? ARM8008光盤linux-kernel
?? C
字號:
/***************************************************************************** * * Module Name: bt.c *   $Revision: 29 $ * *****************************************************************************//* *  Copyright (C) 2000, 2001 Andrew Grover * *  This program is free software; you can redistribute it and/or modify *  it under the terms of the GNU General Public License as published by *  the Free Software Foundation; either version 2 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 General Public License for more details. * *  You should have received a copy of the GNU General Public License *  along with this program; if not, write to the Free Software *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */#include <acpi.h>#include "bt.h"#define _COMPONENT		ACPI_BATTERY	MODULE_NAME 		("bt")/**************************************************************************** *                            Internal Functions ****************************************************************************//**************************************************************************** * * FUNCTION:	bt_print * * PARAMETERS:	 * * RETURN:	 * * DESCRIPTION: Prints out information on a specific battery. * ****************************************************************************/voidbt_print (	BT_CONTEXT		*battery){#ifdef ACPI_DEBUG	acpi_buffer 		buffer;	PROC_NAME("bt_print");	if (!battery) {		return;	}	buffer.length = 256;	buffer.pointer = acpi_os_callocate(buffer.length);	if (!buffer.pointer) {		return;	}	/*	 * Get the full pathname for this ACPI object.	 */	acpi_get_name(battery->acpi_handle, ACPI_FULL_PATHNAME, &buffer);	/*	 * Print out basic battery information.	 */	ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, "+------------------------------------------------------------\n"));	ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, "| Battery[%02x]:[%p] %s\n", battery->device_handle, battery->acpi_handle, (char*)buffer.pointer));	ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, "|   uid[%s] is_present[%d] power_units[%s]\n", battery->uid, battery->is_present, battery->power_units));	ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, "+------------------------------------------------------------\n"));	acpi_os_free(buffer.pointer);#endif /*ACPI_DEBUG*/	return;}/**************************************************************************** * * FUNCTION:	bt_get_info * * PARAMETERS:	 * * RETURN:	 * * DESCRIPTION: * * NOTES:	Allocates battery_info - which must be freed by the caller. * ****************************************************************************/acpi_statusbt_get_info (	BT_CONTEXT		*battery,	BT_BATTERY_INFO 	**battery_info){	acpi_status 		status = AE_OK;	acpi_buffer 		bif_buffer, package_format, package_data;	acpi_object 		*package = NULL;	FUNCTION_TRACE("bt_get_info");	if (!battery || !battery_info || *battery_info) {		return_ACPI_STATUS(AE_BAD_PARAMETER);	}	memset(&bif_buffer, 0, sizeof(acpi_buffer));	/*	 * Evalute _BIF:	 * -------------	 * And be sure to deallocate bif_buffer.pointer!	 */	status = bm_evaluate_object(battery->acpi_handle, "_BIF", NULL,		&bif_buffer);	if (ACPI_FAILURE(status)) {		return_ACPI_STATUS(status);	}	/*	 * Extract Package Data:	 * ---------------------	 * Type-cast this bif_buffer to a package and use helper	 * functions to convert results into BT_BATTERY_INFO structure.	 * The first attempt is just to get the size of the package	 * data; the second gets the data (once we know the required	 * bif_buffer size).	 */	status = bm_cast_buffer(&bif_buffer, (void**)&package,		sizeof(acpi_object));	if (ACPI_FAILURE(status)) {		goto end;	}	package_format.length = sizeof("NNNNNNNNNSSSS");	package_format.pointer = "NNNNNNNNNSSSS";	memset(&package_data, 0, sizeof(acpi_buffer));	status = bm_extract_package_data(package, &package_format,		&package_data);	if (status != AE_BUFFER_OVERFLOW) {		if (status == AE_OK) {			status = AE_ERROR;		}		goto end;	}	package_data.pointer = acpi_os_callocate(package_data.length);	if (!package_data.pointer) {		return_ACPI_STATUS(AE_NO_MEMORY);	}	status = bm_extract_package_data(package, &package_format,		&package_data);	if (ACPI_FAILURE(status)) {		acpi_os_free(package_data.pointer);		goto end;	}	*battery_info = package_data.pointer;end:	acpi_os_free(bif_buffer.pointer);	return_ACPI_STATUS(status);}/**************************************************************************** * * FUNCTION:	bt_get_status * * PARAMETERS:	 * * RETURN:	 * * DESCRIPTION: * ****************************************************************************/acpi_statusbt_get_status (	BT_CONTEXT		*battery,	BT_BATTERY_STATUS	**battery_status){	acpi_status 		status = AE_OK;	acpi_buffer 		bst_buffer, package_format, package_data;	acpi_object 		*package = NULL;	FUNCTION_TRACE("bt_get_status");	if (!battery || !battery_status || *battery_status) {		return_ACPI_STATUS(AE_BAD_PARAMETER);	}	memset(&bst_buffer, 0, sizeof(acpi_buffer));	/*	 * Evalute _BST:	 * -------------	 * And be sure to deallocate bst_buffer.pointer!	 */	status = bm_evaluate_object(battery->acpi_handle, "_BST",		NULL, &bst_buffer);	if (ACPI_FAILURE(status)) {		return_ACPI_STATUS(status);	}	/*	 * Extract Package Data:	 * ---------------------	 * Type-cast this bst_buffer to a package and use helper	 * functions to convert results into BT_BATTERY_STATUS structure.	 * The first attempt is just to get the size of the package data;	 * the second gets the data (once we know the required bst_buffer	 * size).	 */	status = bm_cast_buffer(&bst_buffer, (void**)&package,		sizeof(acpi_object));	if (ACPI_FAILURE(status)) {		goto end;	}	package_format.length = sizeof("NNNN");	package_format.pointer = "NNNN";	memset(&package_data, 0, sizeof(acpi_buffer));	status = bm_extract_package_data(package, &package_format,		&package_data);	if (status != AE_BUFFER_OVERFLOW) {		if (status == AE_OK) {			status = AE_ERROR;		}		goto end;	}	package_data.pointer = acpi_os_callocate(package_data.length);	if (!package_data.pointer) {		return_ACPI_STATUS(AE_NO_MEMORY);	}	status = bm_extract_package_data(package, &package_format,		&package_data);	if (ACPI_FAILURE(status)) {		acpi_os_free(package_data.pointer);		goto end;	}	*battery_status = package_data.pointer;end:	acpi_os_free(bst_buffer.pointer);	return_ACPI_STATUS(status);}/**************************************************************************** * * FUNCTION:	bt_check_device * * PARAMETERS:	 * * RETURN:	 * * DESCRIPTION: * ****************************************************************************/acpi_statusbt_check_device (	BT_CONTEXT		*battery){	acpi_status 		status = AE_OK;	BM_DEVICE_STATUS	battery_status = BM_STATUS_UNKNOWN;	u32 			was_present = FALSE;	BT_BATTERY_INFO 	*battery_info = NULL;	FUNCTION_TRACE("bt_check_device");	if (!battery) {		return_ACPI_STATUS(AE_BAD_PARAMETER);	}	was_present = battery->is_present;	/*	 * Battery Present?	 * ----------------	 * Get the device status and check if battery slot is occupied.	 */	status = bm_get_device_status(battery->device_handle, &battery_status);	if (ACPI_FAILURE(status)) {		ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Unable to get battery status.\n"));		return_ACPI_STATUS(status);	}	if (battery_status & BM_STATUS_BATTERY_PRESENT) {		ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Battery socket occupied.\n"));		battery->is_present = TRUE;	}	else {		ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Battery socket not occupied.\n"));		battery->is_present = FALSE;	}	/*	 * Battery Appeared?	 * -----------------	 */	if (!was_present && battery->is_present) {		ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Battery insertion detected.\n"));		/*		 * Units of Power?		 * ---------------		 * Get the 'units of power', as we'll need this to report		 * status information.		 */		status = bt_get_info(battery, &battery_info);		if (ACPI_SUCCESS(status)) {			battery->power_units = (battery_info->power_unit)				? BT_POWER_UNITS_AMPS : BT_POWER_UNITS_WATTS;			acpi_os_free(battery_info);		}	}	/*	 * Battery Disappeared?	 * --------------------	 */	else if (was_present && !battery->is_present) {		ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Battery removal detected.\n"));		battery->power_units = BT_POWER_UNITS_DEFAULT;	}	return_ACPI_STATUS(status);}/***************************************************************************** * * FUNCTION:	bt_add_device * * PARAMETERS:	 * * RETURN:	 * * DESCRIPTION: * ****************************************************************************/acpi_statusbt_add_device (	BM_HANDLE		device_handle,	void			**context){	acpi_status 		status = AE_OK;	BM_DEVICE		*device = NULL;	BT_CONTEXT		*battery = NULL;	FUNCTION_TRACE("bt_add_device");	ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Adding battery device [%02x].\n", device_handle));	if (!context || *context) {		return_ACPI_STATUS(AE_BAD_PARAMETER);	}	/*	 * Get information on this device.	 */	status = bm_get_device_info(device_handle, &device);	if (ACPI_FAILURE(status)) {		return_ACPI_STATUS(status);	}	/*	 * Allocate a new BT_CONTEXT structure.	 */	battery = acpi_os_callocate(sizeof(BT_CONTEXT));	if (!battery) {		return_ACPI_STATUS(AE_NO_MEMORY);	}	battery->device_handle = device->handle;	battery->acpi_handle = device->acpi_handle;	strncpy(battery->uid, device->id.uid, sizeof(battery->uid));	battery->power_units = BT_POWER_UNITS_DEFAULT;	battery->is_present = FALSE;	/*	 * See if battery is really present.	 */	status = bt_check_device(battery);	if (ACPI_FAILURE(status)) {		goto end;	}	status = bt_osl_add_device(battery);	if (ACPI_FAILURE(status)) {		goto end;	}	*context = battery;	bt_print(battery);end:	if (ACPI_FAILURE(status)) {		acpi_os_free(battery);	}	return_ACPI_STATUS(status);}/***************************************************************************** * * FUNCTION:	bt_remove_device * * PARAMETERS:	 * * RETURN:	 * * DESCRIPTION: * ****************************************************************************/acpi_statusbt_remove_device (	void			**context){	acpi_status 		status = AE_OK;	BT_CONTEXT		*battery = NULL;	FUNCTION_TRACE("bt_remove_device");	if (!context || !*context) {		return_ACPI_STATUS(AE_BAD_PARAMETER);	}	battery = (BT_CONTEXT*)*context;	ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Removing battery device [%02x].\n", battery->device_handle));	bt_osl_remove_device(battery);	acpi_os_free(battery);	*context = NULL;	return_ACPI_STATUS(status);}/***************************************************************************** *                               External Functions *****************************************************************************//***************************************************************************** * * FUNCTION:	bt_initialize * * PARAMETERS:	<none> * * RETURN:	 * * DESCRIPTION: * ****************************************************************************/acpi_statusbt_initialize (void){	acpi_status		status = AE_OK;	BM_DEVICE_ID		criteria;	BM_DRIVER		driver;	FUNCTION_TRACE("bt_initialize");	memset(&criteria, 0, sizeof(BM_DEVICE_ID));	memset(&driver, 0, sizeof(BM_DRIVER));	/*	 * Register driver for driver method battery devices.	 */	MEMCPY(criteria.hid, BT_HID_CM_BATTERY, sizeof(BT_HID_CM_BATTERY));	driver.notify = &bt_notify;	driver.request = &bt_request;	status = bm_register_driver(&criteria, &driver);	return_ACPI_STATUS(status);}/**************************************************************************** * * FUNCTION:	bt_terminate * * PARAMETERS:	<none> * * RETURN:	 * * DESCRIPTION: * ****************************************************************************/acpi_statusbt_terminate (void){	acpi_status		status = AE_OK;	BM_DEVICE_ID		criteria;	BM_DRIVER		driver;	FUNCTION_TRACE("bt_terminate");	memset(&criteria, 0, sizeof(BM_DEVICE_ID));	memset(&driver, 0, sizeof(BM_DRIVER));	/*	 * Unregister driver for driver method battery devices.	 */	MEMCPY(criteria.hid, BT_HID_CM_BATTERY, sizeof(BT_HID_CM_BATTERY));	driver.notify = &bt_notify;	driver.request = &bt_request;	status = bm_unregister_driver(&criteria, &driver);	return_ACPI_STATUS(status);}/**************************************************************************** * * FUNCTION:	bt_notify * * PARAMETERS:	<none> * * RETURN:	 * * DESCRIPTION: * ****************************************************************************/acpi_statusbt_notify (	BM_NOTIFY		notify_type,	BM_HANDLE		device_handle,	void			**context){	acpi_status 		status = AE_OK;	FUNCTION_TRACE("bt_notify");	if (!context) {		return_ACPI_STATUS(AE_BAD_PARAMETER);	}	switch (notify_type) {	case BM_NOTIFY_DEVICE_ADDED:		status = bt_add_device(device_handle, context);		break;	case BM_NOTIFY_DEVICE_REMOVED:		status = bt_remove_device(context);		break;	case BT_NOTIFY_STATUS_CHANGE:		ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Status change (_BST) event detected.\n"));		status = bt_osl_generate_event(notify_type,			((BT_CONTEXT*)*context));		break;	case BT_NOTIFY_INFORMATION_CHANGE:		ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Information change (_BIF) event detected.\n"));		status = bt_check_device((BT_CONTEXT*)*context);		if (ACPI_SUCCESS(status)) {			status = bt_osl_generate_event(notify_type,				((BT_CONTEXT*)*context));		}		break;	default:		status = AE_SUPPORT;		break;	}	return_ACPI_STATUS(status);}/**************************************************************************** * * FUNCTION:	bt_request * * PARAMETERS:	 * * RETURN:	 * * DESCRIPTION: * ****************************************************************************/acpi_statusbt_request (	BM_REQUEST		*request,	void			*context){	acpi_status 		status = AE_OK;	FUNCTION_TRACE("bt_request");	/*	 * Must have a valid request structure and context.	 */	if (!request || !context)		return_ACPI_STATUS(AE_BAD_PARAMETER);	/*	 * Handle request:	 * ---------------	 */	switch (request->command) {	default:		status = AE_SUPPORT;		break;	}	request->status = status;	return_ACPI_STATUS(status);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲综合色在线| 91蝌蚪porny成人天涯| 国产精品人成在线观看免费| 国产传媒欧美日韩成人| 在线观看免费成人| 美女www一区二区| 一个色妞综合视频在线观看| 99国产精品久久久| 成人欧美一区二区三区小说| 欧美一级xxx| 国产麻豆日韩欧美久久| 亚洲黄网站在线观看| 欧美xxxxx牲另类人与| 国产精品亚洲午夜一区二区三区 | 亚洲一区在线视频观看| 国产大陆精品国产| 日韩午夜在线观看| 日韩欧美亚洲国产另类| 中文字幕一区二区三区四区不卡 | 在线观看国产一区二区| 久久先锋影音av| 日韩经典一区二区| 色综合久久66| 中文字幕在线不卡一区二区三区| 国产综合色在线视频区| 91精品午夜视频| 亚洲v中文字幕| 在线观看日韩高清av| 中文字幕欧美一区| 99久久精品情趣| 国产精品久久久久久久裸模| 大尺度一区二区| 国产三级精品视频| 成人永久免费视频| 日本一区二区三区高清不卡| 懂色av一区二区三区蜜臀| 国产三级精品三级| 麻豆成人免费电影| 91精品国产色综合久久不卡蜜臀| 亚洲女同ⅹxx女同tv| 色婷婷av久久久久久久| 亚洲主播在线播放| 欧美探花视频资源| 天堂一区二区在线| 欧美va在线播放| 国产成人午夜高潮毛片| 中文字幕一区三区| 欧美艳星brazzers| 琪琪一区二区三区| 国产午夜精品一区二区| 99久久99久久免费精品蜜臀| 亚洲精品成a人| 91精品一区二区三区在线观看| 久久精品国产99久久6| 国产日韩精品久久久| 色老汉一区二区三区| 免费一区二区视频| 亚洲国产精品高清| 色婷婷综合久久久久中文一区二区 | 蜜桃av噜噜一区二区三区小说| 欧美成人bangbros| 国产精品18久久久久| 18成人在线观看| 欧美人伦禁忌dvd放荡欲情| 国内精品久久久久影院薰衣草 | 国产成a人无v码亚洲福利| 亚洲欧洲日本在线| 日韩一区二区三区电影| 国产成人精品免费在线| 亚洲与欧洲av电影| 久久久久久毛片| 欧美最猛黑人xxxxx猛交| 麻豆精品久久精品色综合| 欧美国产亚洲另类动漫| 欧美久久久久久久久| 成人综合日日夜夜| 日韩av午夜在线观看| 中文字幕一区二区三区蜜月| 91精品国产色综合久久久蜜香臀| 成人av网址在线观看| 麻豆91在线播放| 亚洲久本草在线中文字幕| 欧美本精品男人aⅴ天堂| 99精品久久只有精品| 韩国女主播一区| 亚洲成av人片观看| 亚洲乱码国产乱码精品精98午夜| 久久夜色精品一区| 欧美日韩在线综合| 91在线一区二区| 国内精品视频666| 热久久一区二区| 亚洲午夜在线电影| 亚洲一区二区三区自拍| 国产日本欧美一区二区| 欧美mv日韩mv亚洲| 91精品国产色综合久久不卡电影| 一本一道综合狠狠老| 国产伦精品一区二区三区免费迷 | 欧美日韩国产精品自在自线| 国产一区二区三区四区五区美女| 天堂影院一区二区| 亚洲国产aⅴ成人精品无吗| 国产精品人妖ts系列视频| 久久久久久电影| 精品三级在线看| 欧美一区二区成人6969| 在线观看视频一区二区欧美日韩| 不卡的av网站| 国产成人精品免费| 成人av网站大全| 成人动漫精品一区二区| 国产成人在线色| 国产69精品久久777的优势| 国产精品中文字幕一区二区三区| 久久综合综合久久综合| 精彩视频一区二区三区| 国产一区二区久久| 岛国精品在线播放| 91免费视频网址| 欧洲精品视频在线观看| 欧美日韩色综合| 欧美高清激情brazzers| 欧美一区二区性放荡片| 精品国产伦理网| 国产欧美精品一区| 中文字幕在线不卡| 一区二区三区四区av| 亚洲 欧美综合在线网络| 日日欢夜夜爽一区| 精品一区二区三区视频| 国产激情一区二区三区四区| 成人精品视频一区| 色婷婷国产精品久久包臀| 欧美性色黄大片| 日韩精品一区二区三区视频| 国产亚洲污的网站| 亚洲欧洲韩国日本视频| 亚洲一区二区视频在线观看| 国产一区激情在线| 成人永久aaa| 欧美性猛片xxxx免费看久爱| 欧美一级xxx| 国产精品久线在线观看| 亚洲午夜激情网站| 久久 天天综合| 成人少妇影院yyyy| 欧美日本韩国一区| 久久久亚洲午夜电影| 亚洲一区二区影院| 国产裸体歌舞团一区二区| 在线看国产一区| 久久人人爽爽爽人久久久| 亚洲综合色网站| 精品一区二区三区在线视频| 91年精品国产| 欧美成人激情免费网| 亚洲日本va在线观看| 奇米精品一区二区三区四区 | 国产欧美一区二区三区沐欲| 一区二区成人在线观看| 国产一区美女在线| 欧美肥大bbwbbw高潮| 国产精品福利av| 麻豆91在线播放免费| 色综合天天综合在线视频| 精品av久久707| 亚洲一区二区四区蜜桃| 成人影视亚洲图片在线| 日韩精品一区二区三区中文精品| 亚洲猫色日本管| 国产91丝袜在线播放九色| 91精品国产综合久久精品图片| 中文字幕一区二区三区精华液 | 亚洲a一区二区| 99精品视频在线观看| 久久品道一品道久久精品| 日本aⅴ亚洲精品中文乱码| 色视频欧美一区二区三区| 中文字幕av一区二区三区高| 久久超级碰视频| 日韩一区二区电影网| 亚洲电影视频在线| 色婷婷香蕉在线一区二区| 国产欧美1区2区3区| 久草在线在线精品观看| 91精品国产综合久久精品| 亚洲综合自拍偷拍| 色域天天综合网| 综合色天天鬼久久鬼色| 国产91对白在线观看九色| 26uuu色噜噜精品一区| 麻豆成人免费电影| 欧美变态tickle挠乳网站| 日韩精品一区第一页| 911精品产国品一二三产区| 午夜激情综合网| 欧美美女一区二区三区| 丝瓜av网站精品一区二区| 欧美男生操女生|