From 7d9bcf3e7e99a2e175796647c929642915a93510 Mon Sep 17 00:00:00 2001 From: Automatic Committer Date: Thu, 24 Dec 2015 05:20:23 +0100 Subject: [PATCH 001/242] Update pci.ids from pciids.sourceforge.net --- src/data/ids/pci.ids | 54 +++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 51 insertions(+), 3 deletions(-) diff --git a/src/data/ids/pci.ids b/src/data/ids/pci.ids index be24735432..b19a39ff97 100644 --- a/src/data/ids/pci.ids +++ b/src/data/ids/pci.ids @@ -1,8 +1,8 @@ # # List of PCI ID's # -# Version: 2015.12.10 -# Date: 2015-12-10 03:15:02 +# Version: 2015.12.24 +# Date: 2015-12-24 03:15:02 # # Maintained by Albert Pool, Martin Mares, and other volunteers from # the PCI ID Project at http://pci-ids.ucw.cz/. @@ -2783,6 +2783,7 @@ 6938 Amethyst XT [Radeon R9 M295X Mac Edition / R9 380X] 6939 Tonga PRO [Radeon R9 285/380] 148c 9380 Radeon R9 380 + 174b e308 NITRO Radeon R9 380 4G D5 700f RS100 AGP Bridge 7010 RS200/RS250 AGP Bridge 7100 R520 [Radeon X1800 XT] @@ -3200,6 +3201,8 @@ 9917 Trinity [Radeon HD 7620G] 9918 Trinity [Radeon HD 7600G] 9919 Trinity [Radeon HD 7500G] + 9920 Liverpool Graphics + 9921 Liverpool HDMI/DP Audio Controller 9990 Trinity [Radeon HD 7520G] 9991 Trinity [Radeon HD 7540D] 9992 Trinity [Radeon HD 7420G] @@ -3248,6 +3251,9 @@ aab0 Cape Verde/Pitcairn HDMI Audio [Radeon HD 7700/7800 Series] aac0 Tobago HDMI Audio [Radeon R7 360 / R9 360 OEM] aac8 Hawaii HDMI Audio +# I have a Tonga card and this is the HDMI Audio part + aad8 Tonga HDMI Audio [Radeon R9 285/380] + 174b aad8 Radeon R9 285/380 HDMI Audio ac00 Theater 600 Pro ac02 TV Wonder HD 600 PCIe ac12 Theater HD T507 (DVB-T) TV tuner/capture device @@ -3667,6 +3673,9 @@ 1014 0c49 PCIe3 x 8 Cache SAS RAID Internal Adapter 6GB(2CCD) 044b GenWQE Accelerator Adapter 04aa Flash Adapter 90 (PCIe2 0.9TB) + 04da PCI-E IPR SAS+ Adapter (ASIC) + 1014 04fb PCIe3 x16 20GB Cache 12Gb Quad SAS RAID+ Adapter(580B) + 1014 04fc PCIe3 x8 12Gb Quad SAS RAID+ Adapter(580A) 3022 QLA3022 Network Adapter 4022 QLA3022 Network Adapter ffff MPIC-2 interrupt controller @@ -3781,6 +3790,9 @@ 1422 Family 15h (Models 30h-3fh) Processor Root Complex 1423 Family 15h (Models 30h-3fh) I/O Memory Management Unit 1426 Family 15h (Models 30h-3fh) Processor Root Port + 1436 Liverpool Processor Root Complex + 1437 Liverpool I/O Memory Management Unit + 1438 Liverpool Processor Root Port 1439 Family 16h Processor Functions 5:1 145b Zeppelin Non-Transparent Bridge 1510 Family 14h Processor Root Complex @@ -5188,6 +5200,7 @@ 803b 5-in-1 Multimedia Card Reader (SD/MMC/MS/MS PRO/xD) 103c 309f nx9420 103c 30a3 Compaq nw8440 + 104d 8212 VAIO VGN-N21E 104d 902d VAIO VGN-NR120E 803c PCIxx12 SDA Standard Compliant SD Host Controller 103c 309f nx9420 @@ -5342,6 +5355,14 @@ 8056 Rockwell HCF 56K modem 808a Memory Stick Controller 81ce SxS Pro memory card + 908f Aeolia ACPI + 909e Aeolia Ethernet Controller (Marvell Yukon 2 Family) + 909f Aeolia SATA AHCI Controller + 90a0 Aeolia SD/MMC Host Controller + 90a1 Aeolia PCI Express Glue and Miscellaneous Devices + 90a2 Aeolia DMA Controller + 90a3 Aeolia Memory (DDR3/SPM) + 90a4 Aeolia USB 3.0 xHCI Host Controller 104e Oak Technology, Inc 0017 OTI-64017 0107 OTI-107 [Spitfire] @@ -5831,6 +5852,9 @@ 1077 e4f8 FastLinQ QL45611H 100GbE Adapter (SR-IOV VF) 2020 ISP2020A Fast!SCSI Basic Adapter 2031 ISP8324-based 16Gb Fibre Channel to PCI Express Adapter + 103c 17e7 HP SN1000Q 16Gb Single Port Fibre Channel Adapter + 103c 17e8 HP SN1000Q 16Gb Dual Port Fibre Channel Adapter + 103c 1939 HP QMH2672 16Gb Dual Port Fibre Channel Adapter 103c 8002 3830C 16G Fibre Channel Host Bus Adapter 2071 ISP2714-based 16/32Gb Fibre Channel to PCIe Adapter 2100 QLA2100 64-bit Fibre Channel Adapter @@ -5838,6 +5862,8 @@ 2200 QLA2200 64-bit Fibre Channel Adapter 1077 0002 QLA2200 2261 ISP2722-based 16/32Gb Fibre Channel to PCIe Adapter + 1590 00f9 HPE StoreFabric SN1100Q 16Gb Single Port Fibre Channel Host Bus Adapter + 1590 00fa HPE StoreFabric SN1100Q 16Gb Dual Port Fibre Channel Host Bus Adapter 2300 QLA2300 64-bit Fibre Channel Adapter 2312 ISP2312-based 2Gb Fibre Channel to PCI-X HBA 103c 0131 2Gb Fibre Channel - Single port [A7538A] @@ -5851,6 +5877,7 @@ 2532 ISP2532-based 8Gb Fibre Channel to PCI Express HBA 103c 3262 StorageWorks 81Q 1077 0167 QME2572 Dual Port FC8 HBA Mezzanine + 1590 00fc HPE StoreFabric 84Q 8Gb Quad Port Fibre Channel Host Bus Adapter 3022 ISP4022-based Ethernet NIC 3032 ISP4032-based Ethernet IPv6 NIC 4010 ISP4010-based iSCSI TOE HBA @@ -19072,6 +19099,7 @@ 1073 AR8151 v1.0 Gigabit Ethernet 1083 AR8151 v2.0 Gigabit Ethernet 1090 AR8162 Fast Ethernet + 1043 108d VivoBook X202E, X202EV 1091 AR8161 Gigabit Ethernet 1043 1477 N56VZ 10a0 QCA8172 Fast Ethernet @@ -19681,6 +19709,7 @@ 2a15 3D Vision(???) 2bd8 ROPEX Industrie-Elektronik GmbH 3000 Hansol Electronics Inc. +3112 Satelco Ingenieria S.A. 3142 Post Impression Systems. 31ab Zonet 1faa ZEW1602 802.11b/g Wireless Adapter @@ -19723,6 +19752,7 @@ 1140 VR-12-PCI # multiport serial board 1141 PCI-485(422) + 1142 PCI-CAN2 3842 eVga.com. Corp. 38ef 4Links 3d3d 3DLabs @@ -20369,11 +20399,13 @@ 1025 0806 Aspire E1-470G 1025 0813 Aspire R7-571 103c 17f6 ProBook 4540s + 1043 108d VivoBook X202EV 1043 1477 N56VZ 1043 1517 Zenbook Prime UX31A 0155 Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port 8086 2010 Server Board S1200BTS 0156 3rd Gen Core processor Graphics Controller + 1043 108d VivoBook X202EV 0158 Xeon E3-1200 v2/Ivy Bridge DRAM Controller 1043 844d P8 series motherboard 8086 2010 Server Board S1200BTS @@ -21086,7 +21118,8 @@ 0f28 Atom Processor Z36xxx/Z37xxx Series LPE Audio Controller 0f31 Atom Processor Z36xxx/Z37xxx Series Graphics & Display 0f34 Atom Processor Z36xxx/Z37xxx Series USB EHCI - 0f35 Atom Processor Z36xxx/Z37xxx Series USB xHCI + 0f35 Atom Processor Z36xxx/Z37xxx, Celeron N2000 Series USB xHCI + 1025 0936 Aspire ES1 0f37 Atom Processor Z36xxx/Z37xxx Series OTG USB Device 0f38 Atom Processor Z36xxx/Z37xxx Series Camera ISP 0f40 Atom Processor Z36xxx/Z37xxx Series LPIO2 DMA Controller @@ -22350,6 +22383,7 @@ 1043 84ca P8 series motherboard 1849 1e02 Motherboard 1e03 7 Series Chipset Family 6-port SATA Controller [AHCI mode] + 1043 108d VivoBook X202EV 1043 1477 N56VZ 1043 1517 Zenbook Prime UX31A 1e04 7 Series/C210 Series Chipset Family SATA Controller [RAID mode] @@ -22360,15 +22394,18 @@ 1e09 7 Series Chipset Family 2-port SATA Controller [IDE mode] 1e0e 7 Series/C210 Series Chipset Family SATA Controller [RAID mode] 1e10 7 Series/C210 Series Chipset Family PCI Express Root Port 1 + 1043 108d VivoBook X202EV 1043 1477 N56VZ 1043 1517 Zenbook Prime UX31A 1043 84ca P8H77-I Motherboard 1849 1e10 Motherboard 1e12 7 Series/C210 Series Chipset Family PCI Express Root Port 2 + 1043 108d VivoBook X202EV 1043 1477 N56VZ 1043 1517 Zenbook Prime UX31A 1e14 7 Series/C210 Series Chipset Family PCI Express Root Port 3 1e16 7 Series/C210 Series Chipset Family PCI Express Root Port 4 + 1043 108d VivoBook X202EV 1043 1477 N56VZ 1849 1618 Z77 Extreme4 motherboard 1e18 7 Series/C210 Series Chipset Family PCI Express Root Port 5 @@ -22380,12 +22417,14 @@ 1e1e 7 Series/C210 Series Chipset Family PCI Express Root Port 8 1849 1e1e Motherboard 1e20 7 Series/C210 Series Chipset Family High Definition Audio Controller + 1043 108d VivoBook X202EV 1043 1477 N56VZ 1043 1517 Zenbook Prime UX31A 1043 8415 P8H77-I Motherboard 1043 8445 ASUS P8Z77-V LX Motherboard 1849 1898 Z77 Extreme4 motherboard 1e22 7 Series/C210 Series Chipset Family SMBus Controller + 1043 108d VivoBook X202EV 1043 1477 N56VZ 1043 1517 Zenbook Prime UX31A 1043 84ca P8 series motherboard @@ -22394,23 +22433,27 @@ 1043 1517 Zenbook Prime UX31A 1e25 7 Series/C210 Series Chipset Family DMI to PCI Bridge 1e26 7 Series/C210 Series Chipset Family USB Enhanced Host Controller #1 + 1043 108d VivoBook X202EV 1043 1477 N56VZ 1043 1517 Zenbook Prime UX31A 1043 84ca P8 series motherboard 1849 1e26 Motherboard 1e2d 7 Series/C210 Series Chipset Family USB Enhanced Host Controller #2 + 1043 108d VivoBook X202EV 1043 1477 N56VZ 1043 1517 Zenbook Prime UX31A 1043 84ca P8 series motherboard 1849 1e2d Motherboard 1e31 7 Series/C210 Series Chipset Family USB xHCI Host Controller 103c 17ab ProBook 6570b + 1043 108d VivoBook X202EV 1043 1477 N56VZ 1043 1517 Zenbook Prime UX31A 1043 84ca P8 series motherboard 1849 1e31 Motherboard 1e33 7 Series/C210 Series Chipset Family LAN Controller 1e3a 7 Series/C210 Series Chipset Family MEI Controller #1 + 1043 108d VivoBook X202EV 1043 1477 N56VZ 1043 1517 Zenbook Prime UX31A 1043 84ca P8 series motherboard @@ -22453,6 +22496,7 @@ 1e5c 7 Series Chipset Family LPC Controller 1e5d HM75 Express Chipset LPC Controller 1e5e 7 Series Chipset Family LPC Controller + 1043 108d VivoBook X202EV 1e5f 7 Series Chipset Family LPC Controller 1f00 Atom processor C2000 SoC Transaction Router 1f01 Atom processor C2000 SoC Transaction Router @@ -23219,6 +23263,10 @@ 24f0 Omni-Path HFI Silicon 100 Series [discrete] 10a9 802e Omni-path HFI 100 Series, 1-port 10a9 802f Omni-path HFI 100 Series, 2-port + 8086 2628 Omni-Path HFI Adapter 100 Series, 1 Port, PCIe x16 + 8086 2629 Omni-Path HFI Adapter 100 Series, 1 Port, PCIe x8 + 8086 262a Omni-Path HFI Adapter 100 Series, 2 Ports, Split PCIe x16 + 8086 262d Omni-Path HFI Adapter 100 Series, 1 Port, PCIe x16, IO Module AHWKPTP100HF 24f1 Omni-Path HFI Silicon 100 Series [integrated] 24f3 Wireless 8260 # Snow Field Peak AC From 3ac1bac8e37c5de9ff24fb772733b0434d05014f Mon Sep 17 00:00:00 2001 From: Automatic Committer Date: Thu, 24 Dec 2015 05:20:25 +0100 Subject: [PATCH 002/242] Update usb.ids from www.linux-usb.org --- src/data/ids/usb.ids | 32 +++++++++++++++++++++++++------- 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/src/data/ids/usb.ids b/src/data/ids/usb.ids index d9ac511ec7..c029e2c0a6 100644 --- a/src/data/ids/usb.ids +++ b/src/data/ids/usb.ids @@ -9,8 +9,8 @@ # The latest version can be obtained from # http://www.linux-usb.org/usb.ids # -# Version: 2015.12.16 -# Date: 2015-12-16 23:50:16 +# Version: 2015.12.17 +# Date: 2015-12-17 20:34:05 # # Vendors, devices and interfaces. Please keep sorted. @@ -16265,6 +16265,7 @@ 0001 iNexio Touchscreen controller 1871 Aveo Technology Corp. 0101 UVC camera (Bresser microscope) + 0141 Camera 0d01 USB2.0 Camera 1873 Navilock ee93 EasyLogger @@ -16292,10 +16293,14 @@ 0214 Portable Hard Drive 0216 External Hard Drive 0218 External Hard Drive + 0224 Store 'n' Go Micro Plus 0227 Pocket Hard Drive 022b Portable Hard Drive (Store'n'Go) - 0237 Portable Harddrive (500 GB) + 0237 Portable Harddrive + 0243 Flash Drive (Store'n'Go) 0302 Flash Drive + 0304 Store 'n' Go + 4123 Store N Go 18b1 Petalynx 0037 Maxter Remote Control 18b4 e3C Technologies @@ -16313,6 +16318,10 @@ 18cd Ecamm cafe Pico iMage 18d1 Google Inc. + 0001 Onda V972 (storage access) + 0003 Android-powered device using AllWinner Technology SoC + 0006 Onda V972 MTP + 0008 Onda V972 PTP (camera) 0d02 Celkon A88 2d00 Android-powered device in accessory mode 2d01 Android-powered device in accessory mode with ADB support @@ -16323,16 +16332,23 @@ 4e21 Nexus S 4e22 Nexus S (debug) 4e24 Nexus S (tether) + 4e30 Galaxy Nexus (fastboot) 4e40 Nexus 7 (fastboot) 4e41 Nexus 7 (MTP) 4e42 Nexus 7 (debug) 4e43 Nexus 7 (PTP) - 4ee1 Nexus 4 / 10 - 4ee2 Nexus 4 (debug) - 4ee3 Nexus 4 (tether) - 4ee4 Nexus 4 (debug + tether) + 4e44 Nexus 7 2012 (PTP) + 4ee0 Nexus 4 (bootloader) + 4ee1 Nexus Device (MTP) + 4ee2 Nexus Device (debug) + 4ee3 Nexus 4/5/7/10 (tether) + 4ee4 Nexus 4/5/7/10 (debug + tether) + 4ee5 Nexus 4 (PTP) + 4ee6 Nexus 4/5 (PTP + debug) 7102 Toshiba Thrive tablet b004 Pandigital / B&N Novel 9" tablet + d001 Nexus 4 (fastboot) + d002 Nexus 4 (debug) d109 LG G2x MTP d10a LG G2x MTP (debug) 18d5 Starline International Group Limited @@ -17562,6 +17578,8 @@ 00dc aes220 FPGA Mini-Module 2478 Tripp-Lite 2008 U209-000-R Serial Port +248a Maxxter + 8366 Wireless Optical Mouse ACT-MUSW-002 249c M2Tech s.r.l. 24e1 Paratronic 3001 Adp-usb From 757d62098fb9adbf8a2aa3abff2825ffbfa18fa6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Date: Fri, 25 Dec 2015 13:17:20 +0100 Subject: [PATCH 003/242] Update openssh packages. --- build/jam/repositories/HaikuPorts/x86 | 2 +- build/jam/repositories/HaikuPorts/x86_64 | 2 +- build/jam/repositories/HaikuPorts/x86_gcc2 | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/build/jam/repositories/HaikuPorts/x86 b/build/jam/repositories/HaikuPorts/x86 index d63e8a168e..4c60fff2ca 100644 --- a/build/jam/repositories/HaikuPorts/x86 +++ b/build/jam/repositories/HaikuPorts/x86 @@ -244,7 +244,7 @@ RemotePackageRepository HaikuPorts openal-1.13.0-2 openal_devel-1.13.0-2 openjdk-1.7_2013_11_08-2 - openssh-7.1p1-3 + openssh-7.1p1-4 openssl-1.0.2e-1 openssl_devel-1.0.2e-1 p7zip-9.20.1-4 diff --git a/build/jam/repositories/HaikuPorts/x86_64 b/build/jam/repositories/HaikuPorts/x86_64 index f8c7d4e0b8..fb345aa0d0 100644 --- a/build/jam/repositories/HaikuPorts/x86_64 +++ b/build/jam/repositories/HaikuPorts/x86_64 @@ -311,7 +311,7 @@ RemotePackageRepository HaikuPorts nss_devel-3.20-1 openal-1.13.0-2 openal_devel-1.13.0-2 - openssh-7.1p1-3 + openssh-7.1p1-4 openssl-1.0.2e-1 openssl_devel-1.0.2e-1 p7zip-9.20.1-5 diff --git a/build/jam/repositories/HaikuPorts/x86_gcc2 b/build/jam/repositories/HaikuPorts/x86_gcc2 index f5a313ee48..aaf29b88bd 100644 --- a/build/jam/repositories/HaikuPorts/x86_gcc2 +++ b/build/jam/repositories/HaikuPorts/x86_gcc2 @@ -379,7 +379,7 @@ RemotePackageRepository HaikuPorts openjpeg-2.1.0-2 openjpeg_devel-2.1.0-2 opensound-4.2_git-2 - openssh-7.1p1-1 + openssh-7.1p1-4 openssl-1.0.2e-1 openssl_devel-1.0.2e-1 opus-1.1.1-1 From c09a549146f9e11603e6ea2434412e43279ef436 Mon Sep 17 00:00:00 2001 From: RudolfC Date: Sat, 26 Dec 2015 12:03:14 +0000 Subject: [PATCH 004/242] nVidia driver: Doc update, no functional change --- src/add-ons/kernel/drivers/graphics/nvidia/README.html | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/add-ons/kernel/drivers/graphics/nvidia/README.html b/src/add-ons/kernel/drivers/graphics/nvidia/README.html index 79e6fe93ef..2b2cf01cd3 100644 --- a/src/add-ons/kernel/drivers/graphics/nvidia/README.html +++ b/src/add-ons/kernel/drivers/graphics/nvidia/README.html @@ -83,10 +83,10 @@ Unzip the zip file that contains the driver to the root folder. Now reboot and y
Currently there's no uninstall script included. Just do it manually:

-Delete the nvidia.accelerant file in home/config/add-ons/accelerants/
-Delete the nvidia.driver file in home/config/add-ons/kernel/drivers/bin/
+Delete the nvidia.accelerant file in home/config/non-packaged/add-ons/accelerants/
+Delete the nvidia.driver file in home/config/non-packaged/add-ons/kernel/drivers/bin/
Delete the nvidia.settings file in home/config/settings/kernel/drivers/
-Delete the nvidia.driver shortcut in home/config/add-ons/kernel/drivers/dev/graphics/ which pointed to the file nvidia.driver.
+Delete the nvidia.driver shortcut in home/config/non-packaged/add-ons/kernel/drivers/dev/graphics/ which pointed to the file nvidia.driver.

You have to reboot in order to apply the original configuration.

@@ -254,6 +254,6 @@ The acceleration engine is disabled.

Rudolf Cornelissen.
-

(Page last updated on September 5, 2009)

+

(Page last updated on December 26, 2015)

From 5f2db70ffb61959e967b7380fd9253be3a13cfdd Mon Sep 17 00:00:00 2001 From: Markus Himmel Date: Sat, 26 Dec 2015 22:12:29 +0100 Subject: [PATCH 005/242] Interface Kit: Add BCardView Signed-off-by: Augustin Cavalier --- headers/os/interface/CardView.h | 47 +++++++++++++++++++ src/kits/interface/CardView.cpp | 81 +++++++++++++++++++++++++++++++++ src/kits/interface/Jamfile | 1 + 3 files changed, 129 insertions(+) create mode 100644 headers/os/interface/CardView.h create mode 100644 src/kits/interface/CardView.cpp diff --git a/headers/os/interface/CardView.h b/headers/os/interface/CardView.h new file mode 100644 index 0000000000..4973aa9273 --- /dev/null +++ b/headers/os/interface/CardView.h @@ -0,0 +1,47 @@ +/* + * Copyright 2015, Haiku, Inc. All rights reserved. + * Distributed under the terms of the MIT License. + */ +#ifndef _CARD_VIEW_H +#define _CARD_VIEW_H + +#include + +class BCardLayout; + +class BCardView : public BView { +public: + BCardView(); + BCardView(const char* name); + BCardView(BMessage* from); + virtual ~BCardView(); + + virtual void SetLayout(BLayout* layout); + BCardLayout* CardLayout() const; + + static BArchivable* Instantiate(BMessage* from); + + virtual status_t Perform(perform_code d, void* arg); + +private: + + // FBC padding - prevent breaking compatibility when methods are added + virtual void _ReservedCardView1(); + virtual void _ReservedCardView2(); + virtual void _ReservedCardView3(); + virtual void _ReservedCardView4(); + virtual void _ReservedCardView5(); + virtual void _ReservedCardView6(); + virtual void _ReservedCardView7(); + virtual void _ReservedCardView8(); + virtual void _ReservedCardView9(); + virtual void _ReservedCardView10(); + + // forbitten methods + BCardView(const BCardView&); + void operator =(const BCardView&); + + uint32 _reserved[10]; +}; + +#endif // _CARD_VIEW_H diff --git a/src/kits/interface/CardView.cpp b/src/kits/interface/CardView.cpp new file mode 100644 index 0000000000..25c31c7158 --- /dev/null +++ b/src/kits/interface/CardView.cpp @@ -0,0 +1,81 @@ +/* + * Copyright 2015, Haiku, Inc. All rights reserved. + * Distributed under the terms of the MIT license. + */ + + +#include +#include + + +BCardView::BCardView() + : + BView(NULL, 0, new BCardLayout()) +{ + SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); +} + + +BCardView::BCardView(const char* name) + : + BView(name, 0, new BCardLayout()) +{ + SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); +} + + +BCardView::BCardView(BMessage* from) + : + BView(from) +{ +} + + +BCardView::~BCardView() +{ +} + + +void +BCardView::SetLayout(BLayout* layout) +{ + if (dynamic_cast(layout) == NULL) + return; + + BView::SetLayout(layout); +} + + +BCardLayout* +BCardView::CardLayout() const +{ + return static_cast(GetLayout()); +} + + +BArchivable* +BCardView::Instantiate(BMessage* from) +{ + if (validate_instantiation(from, "BCardView")) + return new BCardView(from); + return NULL; +} + + +status_t +BCardView::Perform(perform_code d, void* arg) +{ + return BView::Perform(d, arg); +} + + +void BCardView::_ReservedCardView1() {} +void BCardView::_ReservedCardView2() {} +void BCardView::_ReservedCardView3() {} +void BCardView::_ReservedCardView4() {} +void BCardView::_ReservedCardView5() {} +void BCardView::_ReservedCardView6() {} +void BCardView::_ReservedCardView7() {} +void BCardView::_ReservedCardView8() {} +void BCardView::_ReservedCardView9() {} +void BCardView::_ReservedCardView10() {} diff --git a/src/kits/interface/Jamfile b/src/kits/interface/Jamfile index cec0540f17..c02b07b8d2 100644 --- a/src/kits/interface/Jamfile +++ b/src/kits/interface/Jamfile @@ -51,6 +51,7 @@ for architectureObject in [ MultiArchSubDirSetup ] { Box.cpp Button.cpp CardLayout.cpp + CardView.cpp ChannelControl.cpp ChannelSlider.cpp CheckBox.cpp From 52c07497235d833c3438bf42c2472f0fb7d45283 Mon Sep 17 00:00:00 2001 From: Markus Himmel Date: Sun, 27 Dec 2015 00:12:01 +0100 Subject: [PATCH 006/242] BLayoutBuilder: Add support for BCardLayout Signed-off-by: Augustin Cavalier --- headers/os/interface/LayoutBuilder.h | 457 +++++++++++++++++++++++++++ 1 file changed, 457 insertions(+) diff --git a/headers/os/interface/LayoutBuilder.h b/headers/os/interface/LayoutBuilder.h index 5f7c721834..1c54716748 100644 --- a/headers/os/interface/LayoutBuilder.h +++ b/headers/os/interface/LayoutBuilder.h @@ -8,6 +8,8 @@ #include +#include +#include #include #include #include @@ -27,6 +29,7 @@ template class Base; template class Group; template class Grid; template class Split; +template class Cards; template class Menu; template class MenuItem; @@ -53,6 +56,7 @@ public: typedef Group GroupBuilder; typedef Grid GridBuilder; typedef Split SplitBuilder; + typedef Cards CardBuilder; public: inline Group(orientation orientation = B_HORIZONTAL, @@ -99,6 +103,12 @@ public: inline SplitBuilder AddSplit(BSplitView* splitView, float weight = 1.0f); + inline CardBuilder AddCards(float weight = 1.0f); + inline CardBuilder AddCards(BCardLayout* cardLayout, + float weight = 1.0f); + inline CardBuilder AddCards(BCardView* cardView, + float weight = 1.0f); + inline ThisBuilder& AddGlue(float weight = 1.0f); inline ThisBuilder& AddStrut(float size); @@ -126,6 +136,7 @@ public: typedef Group GroupBuilder; typedef Grid GridBuilder; typedef Split SplitBuilder; + typedef Cards CardBuilder; public: inline Grid(float horizontal @@ -192,6 +203,15 @@ public: int32 row, int32 columnCount = 1, int32 rowCount = 1); + inline CardBuilder AddCards(int32 column, int32 row, + int32 columnCount = 1, int32 rowCount = 1); + inline CardBuilder AddCards(BCardLayout* cardLayout, int32 column, + int32 row, int32 columnCount = 1, + int32 rowCount = 1); + inline CardBuilder AddCards(BCardView* cardView, int32 column, + int32 row, int32 columnCount = 1, + int32 rowCount = 1); + inline ThisBuilder& AddGlue(int32 column, int32 row, int32 columnCount = 1, int32 rowCount = 1); @@ -226,6 +246,7 @@ public: typedef Group GroupBuilder; typedef Grid GridBuilder; typedef Split SplitBuilder; + typedef Cards CardBuilder; public: inline Split(orientation orientation = B_HORIZONTAL, @@ -264,6 +285,12 @@ public: inline SplitBuilder AddSplit(BSplitView* splitView, float weight = 1.0f); + inline CardBuilder AddCards(float weight = 1.0f); + inline CardBuilder AddCards(BCardLayout* cardLayout, + float weight = 1.0f); + inline CardBuilder AddCards(BCardView* cardView, + float weight = 1.0f); + inline ThisBuilder& SetCollapsible(bool collapsible); inline ThisBuilder& SetCollapsible(int32 index, bool collapsible); inline ThisBuilder& SetCollapsible(int32 first, int32 last, @@ -280,6 +307,62 @@ private: BSplitView* fView; }; +template +class Cards : public Base { +public: + typedef Cards ThisBuilder; + typedef Group GroupBuilder; + typedef Grid GridBuilder; + typedef Split SplitBuilder; + typedef Cards CardBuilder; + +public: + inline Cards(); + inline Cards(BWindow* window); + inline Cards(BView* view); + inline Cards(BCardLayout* layout); + inline Cards(BCardView* view); + + inline BCardLayout* Layout() const; + inline BView* View() const; + inline ThisBuilder& GetLayout(BCardLayout** _layout); + inline ThisBuilder& GetView(BView** _view); + + inline ThisBuilder& Add(BView* view); + inline ThisBuilder& Add(BLayoutItem* item); + + inline GroupBuilder AddGroup(orientation orientation, + float spacing = B_USE_DEFAULT_SPACING); + inline GroupBuilder AddGroup(BGroupView* groupView); + inline GroupBuilder AddGroup(BGroupLayout* groupLayout); + + inline GridBuilder AddGrid(float horizontal + = B_USE_DEFAULT_SPACING, + float vertical = B_USE_DEFAULT_SPACING); + inline GridBuilder AddGrid(BGridLayout* gridLayout); + inline GridBuilder AddGrid(BGridView* gridView); + + inline SplitBuilder AddSplit(orientation orientation, + float spacing = B_USE_DEFAULT_SPACING); + inline SplitBuilder AddSplit(BSplitView* splitView); + + inline CardBuilder AddCards(); + inline CardBuilder AddCards(BCardLayout* cardLayout); + inline CardBuilder AddCards(BCardView* cardView); + + inline ThisBuilder& SetExplicitMinSize(BSize size); + inline ThisBuilder& SetExplicitMaxSize(BSize size); + inline ThisBuilder& SetExplicitPreferredSize(BSize size); + inline ThisBuilder& SetExplicitAlignment(BAlignment alignment); + + inline ThisBuilder& SetVisibleItem(int32 index); + + inline operator BCardLayout*(); + +private: + BCardLayout* fLayout; +}; + template class Menu : public Base { @@ -569,6 +652,39 @@ Group::AddSplit(BSplitView* splitView, float weight) } +template +typename Group::CardBuilder +Group::AddCards(float weight) +{ + CardBuilder builder; + builder.SetParent(this); + fLayout->AddView(builder.View(), weight); + return builder; +} + + +template +typename Group::CardBuilder +Group::AddCards(BCardLayout* cardLayout, float weight) +{ + CardBuilder builder(cardLayout); + builder.SetParent(this); + fLayout->AddView(builder.View(), weight); + return builder; +} + + +template +typename Group::CardBuilder +Group::AddCards(BCardView* cardView, float weight) +{ + CardBuilder builder(cardView); + builder.SetParent(this); + fLayout->AddView(builder.View(), weight); + return builder; +} + + template typename Group::ThisBuilder& Group::AddGlue(float weight) @@ -884,6 +1000,42 @@ Grid::AddSplit(BSplitView* splitView, int32 column, int32 row, } +template +typename Grid::CardBuilder +Grid::AddCards(int32 column, int32 row, int32 columnCount, + int32 rowCount) +{ + CardBuilder builder; + builder.SetParent(this); + fLayout->AddView(builder.View(), column, row, columnCount, rowCount); + return builder; +} + + +template +typename Grid::CardBuilder +Grid::AddCards(BCardLayout* cardLayout, int32 column, int32 row, + int32 columnCount, int32 rowCount) +{ + CardBuilder builder(cardLayout); + builder.SetParent(this); + fLayout->AddView(builder.View(), column, row, columnCount, rowCount); + return builder; +} + + +template +typename Grid::CardBuilder +Grid::AddCards(BCardView* cardView, int32 column, int32 row, + int32 columnCount, int32 rowCount) +{ + CardBuilder builder(cardView); + builder.SetParent(this); + fLayout->AddView(builder.View(), column, row, columnCount, rowCount); + return builder; +} + + template typename Grid::ThisBuilder& Grid::AddGlue(int32 column, int32 row, int32 columnCount, @@ -1172,6 +1324,39 @@ Split::AddSplit(orientation orientation, float spacing, } +template +typename Split::CardBuilder +Split::AddCards(float weight) +{ + CardBuilder builder; + builder.SetParent(this); + fView->AddChild(builder.View(), weight); + return builder; +} + + +template +typename Split::CardBuilder +Split::AddCards(BCardLayout* cardLayout, float weight) +{ + CardBuilder builder(cardLayout); + builder.SetParent(this); + fView->AddChild(builder.View(), weight); + return builder; +} + + +template +typename Split::CardBuilder +Split::AddCards(BCardView* cardView, float weight) +{ + CardBuilder builder(cardView); + builder.SetParent(this); + fView->AddChild(builder.View(), weight); + return builder; +} + + template typename Split::ThisBuilder& Split::SetCollapsible(bool collapsible) @@ -1234,6 +1419,278 @@ Split::operator BSplitView*() } +// #pragma mark - Cards + + +template +Cards::Cards() + : + fLayout((new BCardView())->CardLayout()) +{ +} + + +template +Cards::Cards(BWindow* window) + : + fLayout(new BCardLayout()) +{ + window->SetLayout(fLayout); + + fLayout->Owner()->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); +} + + +template +Cards::Cards(BView* view) + : + fLayout(new BCardLayout()) +{ + view->SetLayout(fLayout); + view->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); +} + + +template +Cards::Cards(BCardLayout* layout) + : + fLayout(layout) +{ +} + + +template +Cards::Cards(BCardView* view) + : + fLayout(view->CardLayout()) +{ +} + + +template +BCardLayout* +Cards::Layout() const +{ + return fLayout; +} + + +template +BView* +Cards::View() const +{ + return fLayout->Owner(); +} + + +template +typename Cards::ThisBuilder& +Cards::GetLayout(BCardLayout** _layout) +{ + *_layout = fLayout; + return *this; +} + + +template +typename Cards::ThisBuilder& +Cards::GetView(BView** _view) +{ + *_view = fLayout->Owner(); + return *this; +} + + +template +typename Cards::ThisBuilder& +Cards::Add(BView* view) +{ + fLayout->AddView(view); + return *this; +} + + +template +typename Cards::ThisBuilder& +Cards::Add(BLayoutItem* item) +{ + fLayout->AddItem(item); + return *this; +} + + +template +typename Cards::GroupBuilder +Cards::AddGroup(orientation orientation, float spacing) +{ + GroupBuilder builder(new BGroupLayout(orientation, spacing)); + builder.SetParent(this); + fLayout->AddItem(builder.Layout()); + return builder; +} + + +template +typename Cards::GroupBuilder +Cards::AddGroup(BGroupView* groupView) +{ + GroupBuilder builder(groupView); + builder.SetParent(this); + fLayout->AddItem(builder.Layout()); + return builder; +} + + +template +typename Cards::GroupBuilder +Cards::AddGroup(BGroupLayout* groupLayout) +{ + GroupBuilder builder(groupLayout); + builder.SetParent(this); + fLayout->AddItem(builder.Layout()); + return builder; +} + + +template +typename Cards::GridBuilder +Cards::AddGrid(float horizontal, float vertical) +{ + GridBuilder builder(horizontal, vertical); + builder.SetParent(this); + fLayout->AddItem(builder.Layout()); + return builder; +} + + +template +typename Cards::GridBuilder +Cards::AddGrid(BGridLayout* gridLayout) +{ + GridBuilder builder(gridLayout); + builder.SetParent(this); + fLayout->AddItem(builder.Layout()); + return builder; +} + + +template +typename Cards::GridBuilder +Cards::AddGrid(BGridView* gridView) +{ + GridBuilder builder(gridView); + builder.SetParent(this); + fLayout->AddItem(builder.Layout()); + return builder; +} + + +template +typename Cards::SplitBuilder +Cards::AddSplit(orientation orientation, float spacing) +{ + SplitBuilder builder(orientation, spacing); + builder.SetParent(this); + fLayout->AddView(builder.View()); + return builder; +} + + +template +typename Cards::SplitBuilder +Cards::AddSplit(BSplitView* splitView) +{ + SplitBuilder builder(splitView); + builder.SetParent(this); + fLayout->AddView(builder.View()); + return builder; +} + + +template +typename Cards::CardBuilder +Cards::AddCards() +{ + CardBuilder builder; + builder.SetParent(this); + fLayout->AddView(builder.View()); + return builder; +} + + +template +typename Cards::CardBuilder +Cards::AddCards(BCardLayout* cardLayout) +{ + CardBuilder builder(cardLayout); + builder.SetParent(this); + fLayout->AddView(builder.View()); + return builder; +} + +template +typename Cards::CardBuilder +Cards::AddCards(BCardView* cardView) +{ + CardBuilder builder(cardView); + builder.SetParent(this); + fLayout->AddView(builder.View()); + return builder; +} + + +template +typename Cards::ThisBuilder& +Cards::SetExplicitMinSize(BSize size) +{ + fLayout->SetExplicitMinSize(size); + return *this; +} + + +template +typename Cards::ThisBuilder& +Cards::SetExplicitMaxSize(BSize size) +{ + fLayout->SetExplicitMaxSize(size); + return *this; +} + + +template +typename Cards::ThisBuilder& +Cards::SetExplicitPreferredSize(BSize size) +{ + fLayout->SetExplicitPreferredSize(size); + return *this; +} + + +template +typename Cards::ThisBuilder& +Cards::SetExplicitAlignment(BAlignment alignment) +{ + fLayout->SetExplicitAlignment(alignment); + return *this; +} + + +template +typename Cards::ThisBuilder& +Cards::SetVisibleItem(int32 item) +{ + fLayout->SetVisibleItem(item); + return *this; +} + + +template +Cards::operator BCardLayout*() +{ + return fLayout; +} + + // #pragma mark - Menu From 8bbfae7b05df105bd8c57bf3f385b7c923874db5 Mon Sep 17 00:00:00 2001 From: Michael Lotz Date: Sun, 27 Dec 2015 12:38:08 +0100 Subject: [PATCH 007/242] runtime_loader: Fix endless rld heap grow loop in edge case. The needed storage space for tracking the allocation size was not accounted for when growing the heap. Since the growth size is always rounded up to a multiple of 32KiB, this did almost never matter as the new allocation wouldn't need the full size. If the allocation did happen to need the full size however, the newly added area would always be too small. As the allocation attempt was simply restarted after each successful growth, this lead to an endless loop creating small new areas, which would then quickly starve the system for memory. --- src/system/runtime_loader/heap.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/system/runtime_loader/heap.cpp b/src/system/runtime_loader/heap.cpp index 8cd57abf54..1c31616704 100644 --- a/src/system/runtime_loader/heap.cpp +++ b/src/system/runtime_loader/heap.cpp @@ -202,7 +202,7 @@ grow_heap(size_t bytes) { // align the area size to an 32768 bytes boundary bytes = (bytes + 32767) & ~32767; - return add_area(bytes); + return add_area(bytes + sizeof(size_t)); } From 28d3c8ca50a27c9ad2809ce51092c814a3326972 Mon Sep 17 00:00:00 2001 From: Michael Lotz Date: Sun, 27 Dec 2015 12:39:43 +0100 Subject: [PATCH 008/242] runtime_loader: Resync heap impl with the one of the bootloader. The heap implementation of the runtime_loader was switched to the one of the bootloader in 6f0994d but was since updated independently. To keep the diff between the two implementations as small as possible, the bootloader implementation was first copied to the runtime_loader and then some features not relevant in the runtime_loader (like the special large allocation handling) have been removed and the runtime_loader specific features (grow_heap, add_area) have been reintegrated. But basically this applies 96689a5..HEAD of src/system/boot/loader/heap.cpp to the runtime_loader heap. This brings in the switch from a linked list to a splay tree based free chunk management. Since the allocation counts in the runtime_loader are rather small, this does not perceptibly affect performance in either direction though. --- src/system/runtime_loader/heap.cpp | 500 ++++++++++++++++------------- 1 file changed, 284 insertions(+), 216 deletions(-) diff --git a/src/system/runtime_loader/heap.cpp b/src/system/runtime_loader/heap.cpp index 1c31616704..3855ead057 100644 --- a/src/system/runtime_loader/heap.cpp +++ b/src/system/runtime_loader/heap.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2003-2007, Axel Dörfler, axeld@pinc-software.de. All rights reserved. + * Copyright 2003-2013, Axel Dörfler, axeld@pinc-software.de. * Distributed under the terms of the MIT License. */ @@ -7,192 +7,267 @@ #include "runtime_loader_private.h" #include -#include -#include +#ifdef HEAP_TEST +# include +#endif #include #include +#include -static const size_t kInitialHeapSize = 65536; +#include -/* This is a very simple malloc()/free() implementation - it only - * manages a free list. - * After heap_init() is called, all free memory is contained in one - * big chunk, the only entry in the free link list (which is a single - * linked list). - * When memory is allocated, the smallest free chunk that contains - * the requested size is split (or taken as a whole if it can't be - * splitted anymore), and it's lower half will be removed from the - * free list. - * The free list is ordered by size, starting with the smallest - * free chunk available. When a chunk is freed, it will be joint - * with its predecessor or successor, if possible. - * To ease list handling, the list anchor itself is a free chunk with - * size 0 that can't be allocated. - */ +/*! This is a very simple malloc()/free() implementation - it only + manages a free list. + After heap_init() is called, all free memory is contained in one + big chunk, the only entry in the free link list (which is a single + linked list). + When memory is allocated, the smallest free chunk that contains + the requested size is split (or taken as a whole if it can't be + splitted anymore), and it's lower half will be removed from the + free list. + The free list is ordered by size, starting with the smallest + free chunk available. When a chunk is freed, it will be joint + with its predecessor or successor, if possible. + To ease list handling, the list anchor itself is a free chunk with + size 0 that can't be allocated. +*/ +const static size_t kAlignment = 8; + // all memory chunks will be a multiple of this + +const static size_t kInitialHeapSize = 64 * 1024; +const static size_t kHeapGrowthAlignment = 32 * 1024; -struct free_chunk { - size_t size; - free_chunk *next; +class Chunk { +public: + size_t CompleteSize() const + { + return fSize; + } - size_t Size() const; - free_chunk *Split(size_t splitSize); - bool IsTouching(free_chunk *link); - free_chunk *Join(free_chunk *link); - void Remove(free_chunk *previous = NULL); - void Enqueue(); - - void *AllocatedAddress() const; - static free_chunk *SetToAllocated(void *allocated); +protected: + union { + size_t fSize; + char fAlignment[kAlignment]; + }; }; +class FreeChunk; + + +struct FreeChunkData : SplayTreeLink { + + FreeChunk* Next() const + { + return fNext; + } + + FreeChunk** NextLink() + { + return &fNext; + } + +protected: + FreeChunk* fNext; +}; + + +class FreeChunk : public Chunk, public FreeChunkData { +public: + void SetTo(size_t size); + + size_t Size() const; + + FreeChunk* Split(size_t splitSize); + bool IsTouching(FreeChunk* link); + FreeChunk* Join(FreeChunk* link); + + void* AllocatedAddress() const; + static FreeChunk* SetToAllocated(void* allocated); +}; + + +struct FreeChunkKey { + FreeChunkKey(size_t size) + : + fSize(size), + fChunk(NULL) + { + } + + FreeChunkKey(const FreeChunk* chunk) + : + fSize(chunk->Size()), + fChunk(chunk) + { + } + + int Compare(const FreeChunk* chunk) const + { + size_t chunkSize = chunk->Size(); + if (chunkSize != fSize) + return fSize < chunkSize ? -1 : 1; + + if (fChunk == chunk) + return 0; + return fChunk < chunk ? -1 : 1; + } + +private: + size_t fSize; + const FreeChunk* fChunk; +}; + + +struct FreeChunkTreeDefinition { + typedef FreeChunkKey KeyType; + typedef FreeChunk NodeType; + + static FreeChunkKey GetKey(const FreeChunk* node) + { + return FreeChunkKey(node); + } + + static SplayTreeLink* GetLink(FreeChunk* node) + { + return node; + } + + static int Compare(const FreeChunkKey& key, const FreeChunk* node) + { + return key.Compare(node); + } + + static FreeChunk** GetListLink(FreeChunk* node) + { + return node->NextLink(); + } +}; + + +typedef IteratableSplayTree FreeChunkTree; + + static size_t sAvailable; -static free_chunk sFreeAnchor; +static FreeChunkTree sFreeChunkTree; -/** Returns the amount of bytes that can be allocated - * in this chunk. - */ - -size_t -free_chunk::Size() const +static inline size_t +align(size_t size, size_t alignment = kAlignment) { - return size - sizeof(size_t); + return (size + alignment - 1) & ~(alignment - 1); } -/** Splits the upper half at the requested location - * and returns it. - */ - -free_chunk * -free_chunk::Split(size_t splitSize) +void +FreeChunk::SetTo(size_t size) { - free_chunk *chunk = (free_chunk *)((uint8 *)this + sizeof(size_t) + splitSize); - chunk->size = size - splitSize - sizeof(size_t); - chunk->next = next; + fSize = size; + fNext = NULL; +} - size = splitSize + sizeof(size_t); + +/*! Returns the amount of bytes that can be allocated + in this chunk. +*/ +size_t +FreeChunk::Size() const +{ + return (addr_t)this + fSize - (addr_t)AllocatedAddress(); +} + + +/*! Splits the upper half at the requested location and returns it. This chunk + will no longer be a valid FreeChunk object; only its fSize will be valid. + */ +FreeChunk* +FreeChunk::Split(size_t splitSize) +{ + splitSize = align(splitSize); + + FreeChunk* chunk = (FreeChunk*)((addr_t)AllocatedAddress() + splitSize); + size_t newSize = (addr_t)chunk - (addr_t)this; + chunk->fSize = fSize - newSize; + chunk->fNext = NULL; + + fSize = newSize; return chunk; } -/** Checks if the specified chunk touches this chunk, so - * that they could be joined. - */ - +/*! Checks if the specified chunk touches this chunk, so + that they could be joined. +*/ bool -free_chunk::IsTouching(free_chunk *chunk) +FreeChunk::IsTouching(FreeChunk* chunk) { return chunk - && (((uint8 *)this + size == (uint8 *)chunk) - || (uint8 *)chunk + chunk->size == (uint8 *)this); + && (((uint8*)this + fSize == (uint8*)chunk) + || (uint8*)chunk + chunk->fSize == (uint8*)this); } -/** Joins the chunk to this chunk and returns the pointer - * to the new chunk - which will either be one of the - * two chunks. - * Note, the chunks must be joinable, or else this method - * doesn't work correctly. Use free_chunk::IsTouching() - * to check if this method can be applied. - */ - -free_chunk * -free_chunk::Join(free_chunk *chunk) +/*! Joins the chunk to this chunk and returns the pointer + to the new chunk - which will either be one of the + two chunks. + Note, the chunks must be joinable, or else this method + doesn't work correctly. Use FreeChunk::IsTouching() + to check if this method can be applied. +*/ +FreeChunk* +FreeChunk::Join(FreeChunk* chunk) { if (chunk < this) { - chunk->size += size; - chunk->next = next; + chunk->fSize += fSize; + chunk->fNext = fNext; return chunk; } - size += chunk->size; - next = chunk->next; + fSize += chunk->fSize; + fNext = chunk->fNext; return this; } -void -free_chunk::Remove(free_chunk *previous) +void* +FreeChunk::AllocatedAddress() const { - if (previous == NULL) { - // find the previous chunk in the list - free_chunk *chunk = sFreeAnchor.next; - - while (chunk != NULL && chunk != this) { - previous = chunk; - chunk = chunk->next; - } - - if (chunk == NULL) { - printf("runtime_loader: try to remove chunk that's not in list"); - return; - } - } - - previous->next = this->next; - this->next = NULL; + return (void*)static_cast(this); } -void -free_chunk::Enqueue() +FreeChunk* +FreeChunk::SetToAllocated(void* allocated) { - free_chunk *chunk = sFreeAnchor.next, *last = &sFreeAnchor; - while (chunk && chunk->Size() < size) { - last = chunk; - chunk = chunk->next; - } - - this->next = chunk; - last->next = this; + return static_cast((FreeChunkData*)allocated); } -void * -free_chunk::AllocatedAddress() const -{ - return (void *)&next; -} - - -free_chunk * -free_chunk::SetToAllocated(void *allocated) -{ - return (free_chunk *)((uint8 *)allocated - sizeof(size_t)); -} - - -// #pragma mark - private functions +// #pragma mark - static status_t add_area(size_t size) { - void *base; + void* base; area_id area = _kern_create_area("rld heap", &base, B_RANDOMIZED_ANY_ADDRESS, size, B_NO_LOCK, B_READ_AREA | B_WRITE_AREA); - if (area < B_OK) + if (area < 0) return area; - sAvailable += size - sizeof(size_t); + // declare the whole area as one chunk, and add it to the free tree + FreeChunk* chunk = (FreeChunk*)base; + chunk->SetTo(size); + sFreeChunkTree.Insert(chunk); - // declare the whole heap as one chunk, and add it - // to the free list - - free_chunk *chunk = (free_chunk *)base; - chunk->size = size; - chunk->next = sFreeAnchor.next; - - sFreeAnchor.next = chunk; + sAvailable += chunk->Size(); return B_OK; } @@ -200,24 +275,17 @@ add_area(size_t size) static status_t grow_heap(size_t bytes) { - // align the area size to an 32768 bytes boundary - bytes = (bytes + 32767) & ~32767; - return add_area(bytes + sizeof(size_t)); + return add_area(align(align(sizeof(Chunk)) + bytes, kHeapGrowthAlignment)); } -// #pragma mark - public API +// #pragma mark - status_t heap_init(void) { - status_t status = add_area(kInitialHeapSize); - if (status < B_OK) - return status; - - sFreeAnchor.size = 0; - return B_OK; + return add_area(kInitialHeapSize); } @@ -225,136 +293,136 @@ heap_init(void) void dump_chunks(void) { - free_chunk *chunk = sFreeAnchor.next, *last = &sFreeAnchor; + FreeChunk* chunk = sFreeChunkTree.FindMin(); while (chunk != NULL) { - last = chunk; - - printf("\t%p: chunk size = %ld, end = %p, next = %p\n", chunk, chunk->size, (uint8 *)chunk + chunk->size, chunk->next); - chunk = chunk->next; + printf("\t%p: chunk size = %ld, end = %p, next = %p\n", chunk, + chunk->Size(), (uint8*)chunk + chunk->CompleteSize(), + chunk->Next()); + chunk = chunk->Next(); } } #endif -void * -realloc(void *allocation, size_t newSize) -{ - // free, if new size is 0 - if (newSize == 0) { - free(allocation); - return NULL; - } - - // just malloc(), if no previous allocation - if (allocation == NULL) - return malloc(newSize); - - // we're lazy and don't shrink allocations - free_chunk* chunk = free_chunk::SetToAllocated(allocation); - if (chunk->Size() >= newSize) - return allocation; - - // the allocation needs to grow -- allocate a new one and memcpy() - void* newAllocation = malloc(newSize); - if (newAllocation != NULL) { - memcpy(newAllocation, allocation, chunk->Size()); - free(allocation); - } - - return newAllocation; -} - - -void * +void* malloc(size_t size) { if (size == 0) return NULL; - // align the size requirement to an 8 bytes boundary - size = (size + 7) & ~7; + // align the size requirement to a kAlignment bytes boundary + if (size < sizeof(FreeChunkData)) + size = sizeof(FreeChunkData); + size = align(size); -restart: if (size > sAvailable) { // try to enlarge heap - if (grow_heap(size) < B_OK) + if (grow_heap(size) != B_OK) return NULL; } - free_chunk *chunk = sFreeAnchor.next, *last = &sFreeAnchor; - while (chunk && chunk->Size() < size) { - last = chunk; - chunk = chunk->next; - } - + FreeChunkKey key(size); + FreeChunk* chunk = sFreeChunkTree.FindClosest(key, true, true); if (chunk == NULL) { // could not find a free chunk as large as needed - if (grow_heap(size) < B_OK) + if (grow_heap(size) != B_OK) return NULL; - goto restart; + chunk = sFreeChunkTree.FindClosest(key, true, true); + if (chunk == NULL) { + TRACE(("no allocation chunk found after growing the heap\n")); + return NULL; + } } - if (chunk->Size() > size + sizeof(free_chunk) + sizeof(size_t)) { - // if this chunk is bigger than the requested size, - // we split it to form two chunks (with a minimal - // size of sizeof(size_t) allocatable bytes). + sFreeChunkTree.Remove(chunk); + sAvailable -= chunk->Size(); - free_chunk *freeChunk = chunk->Split(size); - last->next = freeChunk; + void* allocatedAddress = chunk->AllocatedAddress(); - // re-enqueue the free chunk at the correct position - freeChunk->Remove(last); - freeChunk->Enqueue(); - } else { - // remove the chunk from the free list - - last->next = chunk->next; + // If this chunk is bigger than the requested size and there's enough space + // left over for a new chunk, we split it. + if (chunk->Size() >= size + align(sizeof(FreeChunk))) { + FreeChunk* freeChunk = chunk->Split(size); + sFreeChunkTree.Insert(freeChunk); + sAvailable += freeChunk->Size(); } - sAvailable -= size + sizeof(size_t); + TRACE(("malloc(%lu) -> %p\n", size, allocatedAddress)); + return allocatedAddress; +} - return chunk->AllocatedAddress(); + +void* +realloc(void* oldBuffer, size_t newSize) +{ + if (newSize == 0) { + TRACE(("realloc(%p, %lu) -> NULL\n", oldBuffer, newSize)); + free(oldBuffer); + return NULL; + } + + size_t oldSize = 0; + if (oldBuffer != NULL) { + FreeChunk* oldChunk = FreeChunk::SetToAllocated(oldBuffer); + oldSize = oldChunk->Size(); + + // Check if the old buffer still fits, and if it makes sense to keep it. + if (oldSize >= newSize + && (oldSize < 128 || newSize > oldSize / 3)) { + TRACE(("realloc(%p, %lu) old buffer is large enough\n", + oldBuffer, newSize)); + return oldBuffer; + } + } + + void* newBuffer = malloc(newSize); + if (newBuffer == NULL) + return NULL; + + if (oldBuffer != NULL) { + memcpy(newBuffer, oldBuffer, std::min(oldSize, newSize)); + free(oldBuffer); + } + + TRACE(("realloc(%p, %lu) -> %p\n", oldBuffer, newSize, newBuffer)); + return newBuffer; } void -free(void *allocated) +free(void* allocated) { if (allocated == NULL) return; - free_chunk *freedChunk = free_chunk::SetToAllocated(allocated); - sAvailable += freedChunk->size; + TRACE(("free(%p)\n", allocated)); + + + FreeChunk* freedChunk = FreeChunk::SetToAllocated(allocated); // try to join the new free chunk with an existing one // it may be joined with up to two chunks - free_chunk *chunk = sFreeAnchor.next, *last = &sFreeAnchor; + FreeChunk* chunk = sFreeChunkTree.FindMin(); int32 joinCount = 0; while (chunk) { - if (chunk->IsTouching(freedChunk)) { - // almost "insert" it into the list before joining - // because the next pointer is inherited by the chunk - freedChunk->next = chunk->next; - freedChunk = chunk->Join(freedChunk); + FreeChunk* nextChunk = chunk->Next(); - // remove the joined chunk from the list - last->next = freedChunk->next; - chunk = last; + if (chunk->IsTouching(freedChunk)) { + sFreeChunkTree.Remove(chunk); + sAvailable -= chunk->Size(); + + freedChunk = chunk->Join(freedChunk); if (++joinCount == 2) break; } - last = chunk; - chunk = chunk->next; + chunk = nextChunk; } - // enqueue the link at the right position; the - // free link queue is ordered by size - - freedChunk->Enqueue(); + sFreeChunkTree.Insert(freedChunk); + sAvailable += freedChunk->Size(); } - From 4dffc0abb95bbf20160457b40cd2466393836b0e Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Mon, 28 Dec 2015 23:05:46 -0500 Subject: [PATCH 009/242] ACPICA: Update to 20151218 from 20150818. Requested by RudolfC. Apparently there was a regression which prevented ACPI battery/power from working on his system, which was fixed by https://github.com/acpica/acpica/commit/a3267967c. The only testing I did with this was confirm it compiles and boots in a VM, so apologies if this breaks something else. --- src/add-ons/kernel/bus_managers/acpi/Jamfile | 1 + .../acpi/acpica/common/acgetline.c | 1 + .../bus_managers/acpi/acpica/common/adfile.c | 2 +- .../bus_managers/acpi/acpica/common/adisasm.c | 1062 ++++++----------- .../bus_managers/acpi/acpica/common/adwalk.c | 34 +- .../bus_managers/acpi/acpica/common/ahuuids.c | 1 + .../acpi/acpica/common/dmextern.c | 15 +- .../acpi/acpica/common/dmrestag.c | 19 +- .../bus_managers/acpi/acpica/common/dmtable.c | 6 + .../acpi/acpica/common/dmtbdump.c | 339 +++--- .../bus_managers/acpi/acpica/common/getopt.c | 9 +- .../acpica/components/dispatcher/dsargs.c | 34 +- .../acpica/components/dispatcher/dscontrol.c | 49 +- .../acpica/components/dispatcher/dsdebug.c | 9 +- .../acpica/components/dispatcher/dsfield.c | 83 +- .../acpica/components/dispatcher/dsinit.c | 14 +- .../acpica/components/dispatcher/dsmethod.c | 73 +- .../acpica/components/dispatcher/dsmthdat.c | 39 +- .../acpica/components/dispatcher/dsobject.c | 66 +- .../acpica/components/dispatcher/dsopcode.c | 46 +- .../acpica/components/dispatcher/dsutils.c | 45 +- .../acpica/components/dispatcher/dswexec.c | 51 +- .../acpica/components/dispatcher/dswload.c | 32 +- .../acpica/components/dispatcher/dswload2.c | 40 +- .../acpica/components/dispatcher/dswscope.c | 1 + .../acpica/components/dispatcher/dswstate.c | 9 +- .../acpi/acpica/components/events/evevent.c | 14 +- .../acpi/acpica/components/events/evglock.c | 11 +- .../acpi/acpica/components/events/evgpe.c | 16 +- .../acpi/acpica/components/events/evgpeblk.c | 15 +- .../acpi/acpica/components/events/evgpeinit.c | 28 +- .../acpi/acpica/components/events/evgpeutil.c | 7 +- .../acpi/acpica/components/events/evhandler.c | 172 +-- .../acpi/acpica/components/events/evmisc.c | 5 +- .../acpi/acpica/components/events/evregion.c | 134 ++- .../acpi/acpica/components/events/evrgnini.c | 121 +- .../acpi/acpica/components/events/evsci.c | 4 +- .../acpi/acpica/components/events/evxface.c | 10 +- .../acpi/acpica/components/events/evxfevnt.c | 28 +- .../acpi/acpica/components/events/evxfgpe.c | 8 +- .../acpi/acpica/components/events/evxfregn.c | 42 +- .../acpica/components/executer/exconfig.c | 43 +- .../acpica/components/executer/exconvrt.c | 27 +- .../acpica/components/executer/excreate.c | 31 +- .../acpi/acpica/components/executer/exdebug.c | 460 +------ .../acpi/acpica/components/executer/exdump.c | 49 +- .../acpi/acpica/components/executer/exfield.c | 82 +- .../acpi/acpica/components/executer/exfldio.c | 63 +- .../acpi/acpica/components/executer/exmisc.c | 76 +- .../acpi/acpica/components/executer/exmutex.c | 77 +- .../acpi/acpica/components/executer/exnames.c | 8 +- .../acpica/components/executer/exoparg1.c | 71 +- .../acpica/components/executer/exoparg2.c | 41 +- .../acpica/components/executer/exoparg3.c | 25 +- .../acpica/components/executer/exoparg6.c | 25 +- .../acpi/acpica/components/executer/exprep.c | 60 +- .../acpica/components/executer/exregion.c | 11 +- .../acpica/components/executer/exresnte.c | 10 +- .../acpica/components/executer/exresolv.c | 26 +- .../acpi/acpica/components/executer/exresop.c | 38 +- .../acpi/acpica/components/executer/exstore.c | 146 ++- .../acpica/components/executer/exstoren.c | 9 +- .../acpica/components/executer/exstorob.c | 7 +- .../acpica/components/executer/exsystem.c | 8 +- .../acpi/acpica/components/executer/extrace.c | 499 ++++++++ .../acpi/acpica/components/executer/exutils.c | 10 +- .../acpi/acpica/components/hardware/hwacpi.c | 10 +- .../acpica/components/hardware/hwesleep.c | 5 +- .../acpi/acpica/components/hardware/hwgpe.c | 12 +- .../acpi/acpica/components/hardware/hwregs.c | 39 +- .../acpi/acpica/components/hardware/hwsleep.c | 16 +- .../acpi/acpica/components/hardware/hwxface.c | 48 +- .../acpica/components/hardware/hwxfsleep.c | 7 +- .../acpica/components/namespace/nsaccess.c | 12 +- .../acpica/components/namespace/nsalloc.c | 5 +- .../acpica/components/namespace/nsarguments.c | 6 +- .../acpica/components/namespace/nsconvert.c | 98 +- .../acpi/acpica/components/namespace/nsdump.c | 41 +- .../acpica/components/namespace/nsdumpdv.c | 4 +- .../acpi/acpica/components/namespace/nseval.c | 70 +- .../acpi/acpica/components/namespace/nsinit.c | 10 +- .../acpi/acpica/components/namespace/nsload.c | 27 +- .../acpica/components/namespace/nsnames.c | 15 +- .../acpica/components/namespace/nsobject.c | 6 +- .../acpica/components/namespace/nsparse.c | 13 +- .../acpica/components/namespace/nspredef.c | 2 +- .../acpica/components/namespace/nsprepkg.c | 21 +- .../acpica/components/namespace/nsrepair.c | 25 +- .../acpica/components/namespace/nsrepair2.c | 33 +- .../acpica/components/namespace/nssearch.c | 4 +- .../acpica/components/namespace/nsutils.c | 21 +- .../acpi/acpica/components/namespace/nswalk.c | 12 +- .../acpica/components/namespace/nsxfeval.c | 24 +- .../acpica/components/namespace/nsxfname.c | 56 +- .../acpica/components/namespace/nsxfobj.c | 7 +- .../acpi/acpica/components/parser/psargs.c | 30 +- .../acpi/acpica/components/parser/psloop.c | 10 +- .../acpi/acpica/components/parser/psobject.c | 7 +- .../acpi/acpica/components/parser/psopcode.c | 2 +- .../acpi/acpica/components/parser/psparse.c | 47 +- .../acpi/acpica/components/parser/psscope.c | 10 +- .../acpi/acpica/components/parser/psutils.c | 7 +- .../acpi/acpica/components/parser/pswalk.c | 1 + .../acpi/acpica/components/parser/psxface.c | 9 +- .../acpi/acpica/components/resources/rsaddr.c | 27 +- .../acpi/acpica/components/resources/rscalc.c | 63 +- .../acpica/components/resources/rscreate.c | 49 +- .../acpi/acpica/components/resources/rslist.c | 25 +- .../acpi/acpica/components/resources/rsmisc.c | 51 +- .../acpica/components/resources/rsutils.c | 65 +- .../acpica/components/resources/rsxface.c | 15 +- .../acpi/acpica/components/tables/tbdata.c | 9 +- .../acpi/acpica/components/tables/tbfadt.c | 8 +- .../acpi/acpica/components/tables/tbfind.c | 8 +- .../acpi/acpica/components/tables/tbinstal.c | 13 +- .../acpi/acpica/components/tables/tbprint.c | 5 +- .../acpi/acpica/components/tables/tbutils.c | 57 +- .../acpi/acpica/components/tables/tbxface.c | 18 +- .../acpi/acpica/components/tables/tbxfload.c | 20 +- .../acpi/acpica/components/tables/tbxfroot.c | 24 +- .../acpica/components/utilities/utaddress.c | 2 +- .../acpica/components/utilities/utalloc.c | 15 +- .../acpica/components/utilities/utcache.c | 4 +- .../acpi/acpica/components/utilities/utcopy.c | 120 +- .../acpica/components/utilities/utdecode.c | 53 +- .../acpica/components/utilities/utdelete.c | 11 +- .../acpica/components/utilities/uterror.c | 8 +- .../acpi/acpica/components/utilities/uteval.c | 8 +- .../acpi/acpica/components/utilities/uthex.c | 2 +- .../acpi/acpica/components/utilities/utids.c | 93 +- .../acpi/acpica/components/utilities/utinit.c | 17 +- .../acpi/acpica/components/utilities/utmath.c | 33 +- .../acpi/acpica/components/utilities/utmisc.c | 30 +- .../acpica/components/utilities/utmutex.c | 31 +- .../acpica/components/utilities/utnonansi.c | 4 +- .../acpica/components/utilities/utobject.c | 30 +- .../acpi/acpica/components/utilities/utosi.c | 14 +- .../acpica/components/utilities/utownerid.c | 11 +- .../acpica/components/utilities/utpredef.c | 6 +- .../acpica/components/utilities/utprint.c | 16 +- .../acpica/components/utilities/utresrc.c | 17 +- .../acpica/components/utilities/utstate.c | 3 + .../acpica/components/utilities/utstring.c | 10 + .../acpica/components/utilities/uttrack.c | 81 +- .../acpi/acpica/components/utilities/utuuid.c | 8 +- .../acpica/components/utilities/utxface.c | 21 - .../acpica/components/utilities/utxferror.c | 4 +- .../acpica/components/utilities/utxfinit.c | 75 +- .../acpica/components/utilities/utxfmutex.c | 4 +- .../bus_managers/acpi/acpica/include/acapps.h | 89 +- .../acpi/acpica/include/acdebug.h | 20 +- .../acpi/acpica/include/acdisasm.h | 33 +- .../acpi/acpica/include/acevents.h | 18 +- .../acpi/acpica/include/acexcep.h | 12 +- .../acpi/acpica/include/acglobal.h | 13 +- .../acpi/acpica/include/aclocal.h | 35 +- .../acpi/acpica/include/acmacros.h | 12 - .../acpi/acpica/include/acnamesp.h | 9 + .../acpi/acpica/include/acobject.h | 7 +- .../acpi/acpica/include/acopcode.h | 14 +- .../acpi/acpica/include/acparser.h | 7 +- .../acpi/acpica/include/acpiosxf.h | 3 +- .../bus_managers/acpi/acpica/include/acpixf.h | 39 +- .../acpi/acpica/include/actables.h | 6 +- .../bus_managers/acpi/acpica/include/actbl1.h | 2 +- .../acpi/acpica/include/actypes.h | 6 +- .../acpi/acpica/include/acutils.h | 30 +- .../acpi/acpica/include/amlcode.h | 16 +- .../acpi/acpica/include/platform/acenv.h | 7 +- 169 files changed, 3718 insertions(+), 3217 deletions(-) create mode 100644 src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/extrace.c diff --git a/src/add-ons/kernel/bus_managers/acpi/Jamfile b/src/add-ons/kernel/bus_managers/acpi/Jamfile index d61003924c..03bab0d934 100644 --- a/src/add-ons/kernel/bus_managers/acpi/Jamfile +++ b/src/add-ons/kernel/bus_managers/acpi/Jamfile @@ -77,6 +77,7 @@ local executer_src = exstoren.c exstorob.c exsystem.c + extrace.c exutils.c ; diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/common/acgetline.c b/src/add-ons/kernel/bus_managers/acpi/acpica/common/acgetline.c index 2a2232a310..804ff30b0c 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/common/acgetline.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/common/acgetline.c @@ -334,6 +334,7 @@ AcpiOsGetLine ( ACPI_BACKUP_CURSOR (i, EndOfLine - CursorPosition + 1); EndOfLine--; + if (CursorPosition > 0) { CursorPosition--; diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/common/adfile.c b/src/add-ons/kernel/bus_managers/acpi/acpica/common/adfile.c index 96a2f2558c..3ba4a57311 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/common/adfile.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/common/adfile.c @@ -171,7 +171,7 @@ AdGenerateFilename ( } FilenameBuf[i] = 0; - strcat (FilenameBuf, ACPI_TABLE_FILE_SUFFIX); + strcat (FilenameBuf, FILE_SUFFIX_BINARY_TABLE); return (FilenameBuf); } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/common/adisasm.c b/src/add-ons/kernel/bus_managers/acpi/acpica/common/adisasm.c index 44a052e8a9..3b0b2c0abd 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/common/adisasm.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/common/adisasm.c @@ -114,16 +114,14 @@ *****************************************************************************/ #include "aslcompiler.h" -#include "acparser.h" #include "amlcode.h" #include "acdisasm.h" #include "acdispat.h" #include "acnamesp.h" -#include "actables.h" +#include "acparser.h" #include "acapps.h" #include -#include #define _COMPONENT ACPI_TOOLS @@ -131,17 +129,29 @@ /* Local prototypes */ -static void -AdCreateTableHeader ( - char *Filename, - ACPI_TABLE_HEADER *Table); +static ACPI_STATUS +AdDoExternalFileList ( + char *Filename); static ACPI_STATUS -AdStoreTable ( +AdDisassembleOneTable ( ACPI_TABLE_HEADER *Table, - UINT32 *TableIndex); + FILE *File, + char *Filename, + char *DisasmFilename); -/* Stubs for ASL compiler */ +static ACPI_STATUS +AdReparseOneTable ( + ACPI_TABLE_HEADER *Table, + FILE *File, + ACPI_OWNER_ID OwnerId); + + +ACPI_TABLE_DESC LocalTables[1]; +ACPI_PARSE_OBJECT *AcpiGbl_ParseOpRoot; + + +/* Stubs for everything except ASL compiler */ #ifndef ACPI_ASL_COMPILER BOOLEAN @@ -149,7 +159,7 @@ AcpiDsIsResultUsed ( ACPI_PARSE_OBJECT *Op, ACPI_WALK_STATE *WalkState) { - return TRUE; + return (TRUE); } ACPI_STATUS @@ -161,52 +171,6 @@ AcpiDsMethodError ( } #endif -ACPI_STATUS -AcpiNsLoadTable ( - UINT32 TableIndex, - ACPI_NAMESPACE_NODE *Node) -{ - return (AE_NOT_IMPLEMENTED); -} - -ACPI_STATUS -AcpiDsRestartControlMethod ( - ACPI_WALK_STATE *WalkState, - ACPI_OPERAND_OBJECT *ReturnDesc) -{ - return (AE_OK); -} - -void -AcpiDsTerminateControlMethod ( - ACPI_OPERAND_OBJECT *MethodDesc, - ACPI_WALK_STATE *WalkState) -{ - return; -} - -ACPI_STATUS -AcpiDsCallControlMethod ( - ACPI_THREAD_STATE *Thread, - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Op) -{ - return (AE_OK); -} - -ACPI_STATUS -AcpiDsMethodDataInitArgs ( - ACPI_OPERAND_OBJECT **Params, - UINT32 MaxParamCount, - ACPI_WALK_STATE *WalkState) -{ - return (AE_OK); -} - - -static ACPI_TABLE_DESC LocalTables[1]; -static ACPI_PARSE_OBJECT *AcpiGbl_ParseOpRoot; - /******************************************************************************* * @@ -274,7 +238,7 @@ AdInitialize ( * * RETURN: Status * - * DESCRIPTION: Disassemble an entire ACPI table + * DESCRIPTION: Disassembler entry point. Disassemble an entire ACPI table. * *****************************************************************************/ @@ -286,14 +250,10 @@ AdAmlDisassemble ( char **OutFilename) { ACPI_STATUS Status; - ACPI_STATUS GlobalStatus = AE_OK; char *DisasmFilename = NULL; - char *ExternalFilename; - ACPI_EXTERNAL_FILE *ExternalFileList = AcpiGbl_ExternalFileList; FILE *File = NULL; ACPI_TABLE_HEADER *Table = NULL; - ACPI_TABLE_HEADER *ExternalTable; - ACPI_OWNER_ID OwnerId; + ACPI_NEW_TABLE_DESC *ListHead = NULL; /* @@ -302,81 +262,24 @@ AdAmlDisassemble ( */ if (Filename) { - Status = AcpiDbGetTableFromFile (Filename, &Table, FALSE); + /* Get the list of all AML tables in the file */ + + Status = AcGetAllTablesFromFile (Filename, + ACPI_GET_ALL_TABLES, &ListHead); + if (ACPI_FAILURE (Status)) + { + AcpiOsPrintf ("Could not get ACPI tables from %s, %s\n", + Filename, AcpiFormatException (Status)); + return (Status); + } + + /* Process any user-specified files for external objects */ + + Status = AdDoExternalFileList (Filename); if (ACPI_FAILURE (Status)) { return (Status); } - - /* - * External filenames separated by commas - * Example: iasl -e file1,file2,file3 -d xxx.aml - */ - while (ExternalFileList) - { - ExternalFilename = ExternalFileList->Path; - if (!strcmp (ExternalFilename, Filename)) - { - /* Next external file */ - - ExternalFileList = ExternalFileList->Next; - continue; - } - - Status = AcpiDbGetTableFromFile (ExternalFilename, &ExternalTable, TRUE); - if (ACPI_FAILURE (Status)) - { - if (Status == AE_TYPE) - { - ExternalFileList = ExternalFileList->Next; - GlobalStatus = AE_TYPE; - Status = AE_OK; - continue; - } - return (Status); - } - - /* Load external table for symbol resolution */ - - if (ExternalTable) - { - Status = AdParseTable (ExternalTable, &OwnerId, TRUE, TRUE); - if (ACPI_FAILURE (Status)) - { - AcpiOsPrintf ("Could not parse external ACPI tables, %s\n", - AcpiFormatException (Status)); - return (Status); - } - - /* - * Load namespace from names created within control methods - * Set owner id of nodes in external table - */ - AcpiDmFinishNamespaceLoad (AcpiGbl_ParseOpRoot, - AcpiGbl_RootNode, OwnerId); - AcpiPsDeleteParseTree (AcpiGbl_ParseOpRoot); - } - - /* Next external file */ - - ExternalFileList = ExternalFileList->Next; - } - - if (ACPI_FAILURE (GlobalStatus)) - { - return (GlobalStatus); - } - - /* Clear external list generated by Scope in external tables */ - - if (AcpiGbl_ExternalFileList) - { - AcpiDmClearExternalList (); - } - - /* Load any externals defined in the optional external ref file */ - - AcpiDmGetExternalsFromFile (); } else { @@ -425,7 +328,8 @@ AdAmlDisassemble ( File = fopen (DisasmFilename, "w+"); if (!File) { - fprintf (stderr, "Could not open output file %s\n", DisasmFilename); + fprintf (stderr, "Could not open output file %s\n", + DisasmFilename); Status = AE_ERROR; goto Cleanup; } @@ -435,11 +339,75 @@ AdAmlDisassemble ( *OutFilename = DisasmFilename; + /* Disassemble all AML tables within the file */ + + while (ListHead) + { + Status = AdDisassembleOneTable (ListHead->Table, + File, Filename, DisasmFilename); + if (ACPI_FAILURE (Status)) + { + break; + } + + ListHead = ListHead->Next; + } + +Cleanup: + + if (Table && + !AcpiGbl_ForceAmlDisassembly && + !AcpiUtIsAmlTable (Table)) + { + ACPI_FREE (Table); + } + + if (File) + { + fclose (File); + AcpiOsRedirectOutput (stdout); + } + + AcpiPsDeleteParseTree (AcpiGbl_ParseOpRoot); + AcpiGbl_ParseOpRoot = NULL; + return (Status); +} + + +/****************************************************************************** + * + * FUNCTION: AdDisassembleOneTable + * + * PARAMETERS: Table - Raw AML table + * File - Pointer for the input file + * Filename - AML input filename + * DisasmFilename - Output filename + * + * RETURN: Status + * + * DESCRIPTION: Disassemble a single ACPI table. AML or data table. + * + *****************************************************************************/ + +static ACPI_STATUS +AdDisassembleOneTable ( + ACPI_TABLE_HEADER *Table, + FILE *File, + char *Filename, + char *DisasmFilename) +{ + ACPI_STATUS Status; + ACPI_OWNER_ID OwnerId; + + /* ForceAmlDisassembly means to assume the table contains valid AML */ if (!AcpiGbl_ForceAmlDisassembly && !AcpiUtIsAmlTable (Table)) { AdDisassemblerHeader (Filename, ACPI_IS_DATA_TABLE); + + /* This is a "Data Table" (non-AML table) */ + AcpiOsPrintf (" * ACPI Data Table [%4.4s]\n *\n", Table->Signature); AcpiOsPrintf (" * Format: [HexOffset DecimalOffset ByteLength] " @@ -454,603 +422,307 @@ AdAmlDisassemble ( fprintf (stderr, "Formatted output: %s - %u bytes\n", DisasmFilename, CmGetFileSize (File)); } - } - else - { - /* Always parse the tables, only option is what to display */ - Status = AdParseTable (Table, &OwnerId, TRUE, FALSE); + return (AE_OK); + } + + /* + * This is an AML table (DSDT or SSDT). + * Always parse the tables, only option is what to display + */ + Status = AdParseTable (Table, &OwnerId, TRUE, FALSE); + if (ACPI_FAILURE (Status)) + { + AcpiOsPrintf ("Could not parse ACPI tables, %s\n", + AcpiFormatException (Status)); + return (Status); + } + + /* Debug output, namespace and parse tree */ + + if (AslCompilerdebug && File) + { + AcpiOsPrintf ("/**** Before second load\n"); + + NsSetupNamespaceListing (File); + NsDisplayNamespace (); + + AcpiOsPrintf ("*****/\n"); + } + + /* Load namespace from names created within control methods */ + + AcpiDmFinishNamespaceLoad (AcpiGbl_ParseOpRoot, + AcpiGbl_RootNode, OwnerId); + + /* + * Cross reference the namespace here, in order to + * generate External() statements + */ + AcpiDmCrossReferenceNamespace (AcpiGbl_ParseOpRoot, + AcpiGbl_RootNode, OwnerId); + + if (AslCompilerdebug) + { + AcpiDmDumpTree (AcpiGbl_ParseOpRoot); + } + + /* Find possible calls to external control methods */ + + AcpiDmFindOrphanMethods (AcpiGbl_ParseOpRoot); + + /* + * If we found any external control methods, we must reparse + * the entire tree with the new information (namely, the + * number of arguments per method) + */ + if (AcpiDmGetExternalMethodCount ()) + { + Status = AdReparseOneTable (Table, File, OwnerId); if (ACPI_FAILURE (Status)) { - AcpiOsPrintf ("Could not parse ACPI tables, %s\n", - AcpiFormatException (Status)); - goto Cleanup; - } - - if (AslCompilerdebug) - { - AcpiOsPrintf ("/**** Before second load\n"); - - if (File) - { - NsSetupNamespaceListing (File); - NsDisplayNamespace (); - } - AcpiOsPrintf ("*****/\n"); - } - - /* Load namespace from names created within control methods */ - - AcpiDmFinishNamespaceLoad (AcpiGbl_ParseOpRoot, - AcpiGbl_RootNode, OwnerId); - - /* - * Cross reference the namespace here, in order to - * generate External() statements - */ - AcpiDmCrossReferenceNamespace (AcpiGbl_ParseOpRoot, - AcpiGbl_RootNode, OwnerId); - - if (AslCompilerdebug) - { - AcpiDmDumpTree (AcpiGbl_ParseOpRoot); - } - - /* Find possible calls to external control methods */ - - AcpiDmFindOrphanMethods (AcpiGbl_ParseOpRoot); - - /* - * If we found any external control methods, we must reparse - * the entire tree with the new information (namely, the - * number of arguments per method) - */ - if (AcpiDmGetExternalMethodCount ()) - { - fprintf (stderr, - "\nFound %u external control methods, " - "reparsing with new information\n", - AcpiDmGetExternalMethodCount ()); - - /* Reparse, rebuild namespace */ - - AcpiPsDeleteParseTree (AcpiGbl_ParseOpRoot); - AcpiGbl_ParseOpRoot = NULL; - AcpiNsDeleteNamespaceSubtree (AcpiGbl_RootNode); - - AcpiGbl_RootNode = NULL; - AcpiGbl_RootNodeStruct.Name.Integer = ACPI_ROOT_NAME; - AcpiGbl_RootNodeStruct.DescriptorType = ACPI_DESC_TYPE_NAMED; - AcpiGbl_RootNodeStruct.Type = ACPI_TYPE_DEVICE; - AcpiGbl_RootNodeStruct.Parent = NULL; - AcpiGbl_RootNodeStruct.Child = NULL; - AcpiGbl_RootNodeStruct.Peer = NULL; - AcpiGbl_RootNodeStruct.Object = NULL; - AcpiGbl_RootNodeStruct.Flags = 0; - - Status = AcpiNsRootInitialize (); - - /* New namespace, add the external definitions first */ - - AcpiDmAddExternalsToNamespace (); - - /* Parse the table again. No need to reload it, however */ - - Status = AdParseTable (Table, NULL, FALSE, FALSE); - if (ACPI_FAILURE (Status)) - { - AcpiOsPrintf ("Could not parse ACPI tables, %s\n", - AcpiFormatException (Status)); - goto Cleanup; - } - - /* Cross reference the namespace again */ - - AcpiDmFinishNamespaceLoad (AcpiGbl_ParseOpRoot, - AcpiGbl_RootNode, OwnerId); - - AcpiDmCrossReferenceNamespace (AcpiGbl_ParseOpRoot, - AcpiGbl_RootNode, OwnerId); - - if (AslCompilerdebug) - { - AcpiOsPrintf ("/**** After second load and resource conversion\n"); - if (File) - { - NsSetupNamespaceListing (File); - NsDisplayNamespace (); - } - AcpiOsPrintf ("*****/\n"); - - AcpiDmDumpTree (AcpiGbl_ParseOpRoot); - } - } - - /* - * Now that the namespace is finalized, we can perform namespace - * transforms. - * - * 1) Convert fixed-offset references to resource descriptors - * to symbolic references (Note: modifies namespace) - */ - AcpiDmConvertResourceIndexes (AcpiGbl_ParseOpRoot, AcpiGbl_RootNode); - - /* Optional displays */ - - if (AcpiGbl_DmOpt_Disasm) - { - /* This is the real disassembly */ - - AdDisplayTables (Filename, Table); - - /* Dump hex table if requested (-vt) */ - - AcpiDmDumpDataTable (Table); - - fprintf (stderr, "Disassembly completed\n"); - if (File) - { - fprintf (stderr, "ASL Output: %s - %u bytes\n", - DisasmFilename, CmGetFileSize (File)); - } - - if (Gbl_MapfileFlag) - { - fprintf (stderr, "%14s %s - %u bytes\n", - Gbl_Files[ASL_FILE_MAP_OUTPUT].ShortDescription, - Gbl_Files[ASL_FILE_MAP_OUTPUT].Filename, - FlGetFileSize (ASL_FILE_MAP_OUTPUT)); - } + return (Status); } } -Cleanup: + /* + * Now that the namespace is finalized, we can perform namespace + * transforms. + * + * 1) Convert fixed-offset references to resource descriptors + * to symbolic references (Note: modifies namespace) + */ + AcpiDmConvertResourceIndexes (AcpiGbl_ParseOpRoot, AcpiGbl_RootNode); - if (Table && !AcpiGbl_ForceAmlDisassembly &&!AcpiUtIsAmlTable (Table)) + /* Optional displays */ + + if (AcpiGbl_DmOpt_Disasm) { - ACPI_FREE (Table); + /* This is the real disassembly */ + + AdDisplayTables (Filename, Table); + + /* Dump hex table if requested (-vt) */ + + AcpiDmDumpDataTable (Table); + + fprintf (stderr, "Disassembly completed\n"); + if (File) + { + fprintf (stderr, "ASL Output: %s - %u bytes\n", + DisasmFilename, CmGetFileSize (File)); + } + + if (Gbl_MapfileFlag) + { + fprintf (stderr, "%14s %s - %u bytes\n", + Gbl_Files[ASL_FILE_MAP_OUTPUT].ShortDescription, + Gbl_Files[ASL_FILE_MAP_OUTPUT].Filename, + FlGetFileSize (ASL_FILE_MAP_OUTPUT)); + } } - if (File) + return (AE_OK); +} + + +/****************************************************************************** + * + * FUNCTION: AdReparseOneTable + * + * PARAMETERS: Table - Raw AML table + * File - Pointer for the input file + * OwnerId - ID for this table + * + * RETURN: Status + * + * DESCRIPTION: Reparse a table that has already been loaded. Used to + * integrate information about external control methods. + * These methods may have been previously parsed incorrectly. + * + *****************************************************************************/ + +static ACPI_STATUS +AdReparseOneTable ( + ACPI_TABLE_HEADER *Table, + FILE *File, + ACPI_OWNER_ID OwnerId) +{ + ACPI_STATUS Status; + + + fprintf (stderr, + "\nFound %u external control methods, " + "reparsing with new information\n", + AcpiDmGetExternalMethodCount ()); + + /* Reparse, rebuild namespace */ + + AcpiPsDeleteParseTree (AcpiGbl_ParseOpRoot); + AcpiGbl_ParseOpRoot = NULL; + AcpiNsDeleteNamespaceSubtree (AcpiGbl_RootNode); + + AcpiGbl_RootNode = NULL; + AcpiGbl_RootNodeStruct.Name.Integer = ACPI_ROOT_NAME; + AcpiGbl_RootNodeStruct.DescriptorType = ACPI_DESC_TYPE_NAMED; + AcpiGbl_RootNodeStruct.Type = ACPI_TYPE_DEVICE; + AcpiGbl_RootNodeStruct.Parent = NULL; + AcpiGbl_RootNodeStruct.Child = NULL; + AcpiGbl_RootNodeStruct.Peer = NULL; + AcpiGbl_RootNodeStruct.Object = NULL; + AcpiGbl_RootNodeStruct.Flags = 0; + + Status = AcpiNsRootInitialize (); + if (ACPI_FAILURE (Status)) { - if (AslCompilerdebug) /* Display final namespace, with transforms */ + return (Status); + } + + /* New namespace, add the external definitions first */ + + AcpiDmAddExternalsToNamespace (); + + /* Parse the table again. No need to reload it, however */ + + Status = AdParseTable (Table, NULL, FALSE, FALSE); + if (ACPI_FAILURE (Status)) + { + AcpiOsPrintf ("Could not parse ACPI tables, %s\n", + AcpiFormatException (Status)); + return (Status); + } + + /* Cross reference the namespace again */ + + AcpiDmFinishNamespaceLoad (AcpiGbl_ParseOpRoot, + AcpiGbl_RootNode, OwnerId); + + AcpiDmCrossReferenceNamespace (AcpiGbl_ParseOpRoot, + AcpiGbl_RootNode, OwnerId); + + /* Debug output - namespace and parse tree */ + + if (AslCompilerdebug) + { + AcpiOsPrintf ("/**** After second load and resource conversion\n"); + if (File) { NsSetupNamespaceListing (File); NsDisplayNamespace (); } - fclose (File); - AcpiOsRedirectOutput (stdout); - } - - AcpiPsDeleteParseTree (AcpiGbl_ParseOpRoot); - AcpiGbl_ParseOpRoot = NULL; - return (Status); -} - - -/****************************************************************************** - * - * FUNCTION: AdDisassemblerHeader - * - * PARAMETERS: Filename - Input file for the table - * TableType - Either AML or DataTable - * - * RETURN: None - * - * DESCRIPTION: Create the disassembler header, including ACPICA signon with - * current time and date. - * - *****************************************************************************/ - -void -AdDisassemblerHeader ( - char *Filename, - UINT8 TableType) -{ - time_t Timer; - - - time (&Timer); - - /* Header and input table info */ - - AcpiOsPrintf ("/*\n"); - AcpiOsPrintf (ACPI_COMMON_HEADER (AML_DISASSEMBLER_NAME, " * ")); - - if (TableType == ACPI_IS_AML_TABLE) - { - if (AcpiGbl_CstyleDisassembly) - { - AcpiOsPrintf ( - " * Disassembling to symbolic ASL+ operators\n" - " *\n"); - } - else - { - AcpiOsPrintf ( - " * Disassembling to non-symbolic legacy ASL operators\n" - " *\n"); - } - } - - AcpiOsPrintf (" * Disassembly of %s, %s", Filename, ctime (&Timer)); - AcpiOsPrintf (" *\n"); -} - - -/****************************************************************************** - * - * FUNCTION: AdCreateTableHeader - * - * PARAMETERS: Filename - Input file for the table - * Table - Pointer to the raw table - * - * RETURN: None - * - * DESCRIPTION: Create the ASL table header, including ACPICA signon with - * current time and date. - * - *****************************************************************************/ - -static void -AdCreateTableHeader ( - char *Filename, - ACPI_TABLE_HEADER *Table) -{ - char *NewFilename; - UINT8 Checksum; - - - /* - * Print file header and dump original table header - */ - AdDisassemblerHeader (Filename, ACPI_IS_AML_TABLE); - - AcpiOsPrintf (" * Original Table Header:\n"); - AcpiOsPrintf (" * Signature \"%4.4s\"\n", Table->Signature); - AcpiOsPrintf (" * Length 0x%8.8X (%u)\n", Table->Length, Table->Length); - - /* Print and validate the revision */ - - AcpiOsPrintf (" * Revision 0x%2.2X", Table->Revision); - - switch (Table->Revision) - { - case 0: - - AcpiOsPrintf (" **** Invalid Revision"); - break; - - case 1: - - /* Revision of DSDT controls the ACPI integer width */ - - if (ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_DSDT)) - { - AcpiOsPrintf (" **** 32-bit table (V1), no 64-bit math support"); - } - break; - - default: - - break; - } - AcpiOsPrintf ("\n"); - - /* Print and validate the table checksum */ - - AcpiOsPrintf (" * Checksum 0x%2.2X", Table->Checksum); - - Checksum = AcpiTbChecksum (ACPI_CAST_PTR (UINT8, Table), Table->Length); - if (Checksum) - { - AcpiOsPrintf (" **** Incorrect checksum, should be 0x%2.2X", - (UINT8) (Table->Checksum - Checksum)); - } - AcpiOsPrintf ("\n"); - - AcpiOsPrintf (" * OEM ID \"%.6s\"\n", Table->OemId); - AcpiOsPrintf (" * OEM Table ID \"%.8s\"\n", Table->OemTableId); - AcpiOsPrintf (" * OEM Revision 0x%8.8X (%u)\n", Table->OemRevision, Table->OemRevision); - AcpiOsPrintf (" * Compiler ID \"%.4s\"\n", Table->AslCompilerId); - AcpiOsPrintf (" * Compiler Version 0x%8.8X (%u)\n", Table->AslCompilerRevision, Table->AslCompilerRevision); - AcpiOsPrintf (" */\n"); - - /* Create AML output filename based on input filename */ - - if (Filename) - { - NewFilename = FlGenerateFilename (Filename, "aml"); - } - else - { - NewFilename = UtStringCacheCalloc (9); - if (NewFilename) - { - strncat (NewFilename, Table->Signature, 4); - strcat (NewFilename, ".aml"); - } - } - - if (!NewFilename) - { - AcpiOsPrintf (" **** Could not generate AML output filename\n"); - return; - } - - /* Open the ASL definition block */ - - AcpiOsPrintf ( - "DefinitionBlock (\"%s\", \"%4.4s\", %hu, \"%.6s\", \"%.8s\", 0x%8.8X)\n", - NewFilename, Table->Signature, Table->Revision, - Table->OemId, Table->OemTableId, Table->OemRevision); -} - - -/****************************************************************************** - * - * FUNCTION: AdDisplayTables - * - * PARAMETERS: Filename - Input file for the table - * Table - Pointer to the raw table - * - * RETURN: Status - * - * DESCRIPTION: Display (disassemble) loaded tables and dump raw tables - * - *****************************************************************************/ - -ACPI_STATUS -AdDisplayTables ( - char *Filename, - ACPI_TABLE_HEADER *Table) -{ - - - if (!AcpiGbl_ParseOpRoot) - { - return (AE_NOT_EXIST); - } - - if (!AcpiGbl_DmOpt_Listing) - { - AdCreateTableHeader (Filename, Table); - } - - AcpiDmDisassemble (NULL, AcpiGbl_ParseOpRoot, ACPI_UINT32_MAX); - MpEmitMappingInfo (); - - if (AcpiGbl_DmOpt_Listing) - { - AcpiOsPrintf ("\n\nTable Header:\n"); - AcpiUtDebugDumpBuffer ((UINT8 *) Table, sizeof (ACPI_TABLE_HEADER), - DB_BYTE_DISPLAY, ACPI_UINT32_MAX); - - AcpiOsPrintf ("Table Body (Length 0x%X)\n", Table->Length); - AcpiUtDebugDumpBuffer (((UINT8 *) Table + sizeof (ACPI_TABLE_HEADER)), - Table->Length, DB_BYTE_DISPLAY, ACPI_UINT32_MAX); + AcpiOsPrintf ("*****/\n"); + AcpiDmDumpTree (AcpiGbl_ParseOpRoot); } return (AE_OK); } -/******************************************************************************* +/****************************************************************************** * - * FUNCTION: AdStoreTable + * FUNCTION: AdDoExternalFileList * - * PARAMETERS: Table - Table header - * TableIndex - Where the table index is returned + * PARAMETERS: Filename - Input file for the table * - * RETURN: Status and table index. + * RETURN: Status * - * DESCRIPTION: Add an ACPI table to the global table list + * DESCRIPTION: Process all tables found in the -e external files list * - ******************************************************************************/ + *****************************************************************************/ static ACPI_STATUS -AdStoreTable ( - ACPI_TABLE_HEADER *Table, - UINT32 *TableIndex) +AdDoExternalFileList ( + char *Filename) { + ACPI_EXTERNAL_FILE *ExternalFileList; + char *ExternalFilename; + ACPI_NEW_TABLE_DESC *ExternalListHead = NULL; ACPI_STATUS Status; - ACPI_TABLE_DESC *TableDesc; + ACPI_STATUS GlobalStatus = AE_OK; + ACPI_OWNER_ID OwnerId; - Status = AcpiTbGetNextTableDescriptor (TableIndex, &TableDesc); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - /* Initialize added table */ - - AcpiTbInitTableDescriptor (TableDesc, ACPI_PTR_TO_PHYSADDR (Table), - ACPI_TABLE_ORIGIN_INTERNAL_VIRTUAL, Table); - Status = AcpiTbValidateTable (TableDesc); - return (Status); -} - - -/****************************************************************************** - * - * FUNCTION: AdGetLocalTables - * - * PARAMETERS: None - * - * RETURN: Status - * - * DESCRIPTION: Get the ACPI tables from either memory or a file - * - *****************************************************************************/ - -ACPI_STATUS -AdGetLocalTables ( - void) -{ - ACPI_STATUS Status; - ACPI_TABLE_HEADER TableHeader; - ACPI_TABLE_HEADER *NewTable; - UINT32 TableIndex; - - - /* Get the DSDT via table override */ - - ACPI_MOVE_32_TO_32 (TableHeader.Signature, ACPI_SIG_DSDT); - AcpiOsTableOverride (&TableHeader, &NewTable); - if (!NewTable) - { - fprintf (stderr, "Could not obtain DSDT\n"); - return (AE_NO_ACPI_TABLES); - } - - AdWriteTable (NewTable, NewTable->Length, - ACPI_SIG_DSDT, NewTable->OemTableId); - - /* Store DSDT in the Table Manager */ - - Status = AdStoreTable (NewTable, &TableIndex); - if (ACPI_FAILURE (Status)) - { - fprintf (stderr, "Could not store DSDT\n"); - return (AE_NO_ACPI_TABLES); - } - - return (AE_OK); -} - - -/****************************************************************************** - * - * FUNCTION: AdParseTable - * - * PARAMETERS: Table - Pointer to the raw table - * OwnerId - Returned OwnerId of the table - * LoadTable - If add table to the global table list - * External - If this is an external table - * - * RETURN: Status - * - * DESCRIPTION: Parse the DSDT. - * - *****************************************************************************/ - -ACPI_STATUS -AdParseTable ( - ACPI_TABLE_HEADER *Table, - ACPI_OWNER_ID *OwnerId, - BOOLEAN LoadTable, - BOOLEAN External) -{ - ACPI_STATUS Status = AE_OK; - ACPI_WALK_STATE *WalkState; - UINT8 *AmlStart; - UINT32 AmlLength; - UINT32 TableIndex; - - - if (!Table) - { - return (AE_NOT_EXIST); - } - - /* Pass 1: Parse everything except control method bodies */ - - fprintf (stderr, "Pass 1 parse of [%4.4s]\n", (char *) Table->Signature); - - AmlLength = Table->Length - sizeof (ACPI_TABLE_HEADER); - AmlStart = ((UINT8 *) Table + sizeof (ACPI_TABLE_HEADER)); - - /* Create the root object */ - - AcpiGbl_ParseOpRoot = AcpiPsCreateScopeOp (AmlStart); - if (!AcpiGbl_ParseOpRoot) - { - return (AE_NO_MEMORY); - } - - /* Create and initialize a new walk state */ - - WalkState = AcpiDsCreateWalkState (0, - AcpiGbl_ParseOpRoot, NULL, NULL); - if (!WalkState) - { - return (AE_NO_MEMORY); - } - - Status = AcpiDsInitAmlWalk (WalkState, AcpiGbl_ParseOpRoot, - NULL, AmlStart, AmlLength, NULL, ACPI_IMODE_LOAD_PASS1); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - WalkState->ParseFlags &= ~ACPI_PARSE_DELETE_TREE; - WalkState->ParseFlags |= ACPI_PARSE_DISASSEMBLE; - - Status = AcpiPsParseAml (WalkState); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - /* If LoadTable is FALSE, we are parsing the last loaded table */ - - TableIndex = AcpiGbl_RootTableList.CurrentTableCount - 1; - - /* Pass 2 */ - - if (LoadTable) - { - Status = AdStoreTable (Table, &TableIndex); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - Status = AcpiTbAllocateOwnerId (TableIndex); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - if (OwnerId) - { - Status = AcpiTbGetOwnerId (TableIndex, OwnerId); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - } - } - - fprintf (stderr, "Pass 2 parse of [%4.4s]\n", (char *) Table->Signature); - - Status = AcpiNsOneCompleteParse (ACPI_IMODE_LOAD_PASS2, TableIndex, NULL); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - /* No need to parse control methods of external table */ - - if (External) - { - return (AE_OK); - } - /* - * Pass 3: Parse control methods and link their parse trees - * into the main parse tree + * External filenames are specified on the command line like this: + * Example: iasl -e file1,file2,file3 -d xxx.aml */ - fprintf (stderr, - "Parsing Deferred Opcodes (Methods/Buffers/Packages/Regions)\n"); - Status = AcpiDmParseDeferredOps (AcpiGbl_ParseOpRoot); - fprintf (stderr, "\n"); + ExternalFileList = AcpiGbl_ExternalFileList; - /* Process Resource Templates */ + /* Process each external file */ - AcpiDmFindResources (AcpiGbl_ParseOpRoot); + while (ExternalFileList) + { + ExternalFilename = ExternalFileList->Path; + if (!strcmp (ExternalFilename, Filename)) + { + /* Next external file */ - fprintf (stderr, "Parsing completed\n"); + ExternalFileList = ExternalFileList->Next; + continue; + } + + AcpiOsPrintf ("External object resolution file %16s\n", + ExternalFilename); + + Status = AcGetAllTablesFromFile ( + ExternalFilename, ACPI_GET_ONLY_AML_TABLES, &ExternalListHead); + if (ACPI_FAILURE (Status)) + { + if (Status == AE_TYPE) + { + ExternalFileList = ExternalFileList->Next; + GlobalStatus = AE_TYPE; + Status = AE_OK; + continue; + } + + return (Status); + } + + /* Load external tables for symbol resolution */ + + while (ExternalListHead) + { + Status = AdParseTable ( + ExternalListHead->Table, &OwnerId, TRUE, TRUE); + if (ACPI_FAILURE (Status)) + { + AcpiOsPrintf ("Could not parse external ACPI tables, %s\n", + AcpiFormatException (Status)); + return (Status); + } + + /* + * Load namespace from names created within control methods + * Set owner id of nodes in external table + */ + AcpiDmFinishNamespaceLoad (AcpiGbl_ParseOpRoot, + AcpiGbl_RootNode, OwnerId); + AcpiPsDeleteParseTree (AcpiGbl_ParseOpRoot); + + ExternalListHead = ExternalListHead->Next; + } + + /* Next external file */ + + ExternalFileList = ExternalFileList->Next; + } + + if (ACPI_FAILURE (GlobalStatus)) + { + return (GlobalStatus); + } + + /* Clear external list generated by Scope in external tables */ + + if (AcpiGbl_ExternalFileList) + { + AcpiDmClearExternalList (); + } + + /* Load any externals defined in the optional external ref file */ + + AcpiDmGetExternalsFromFile (); return (AE_OK); } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/common/adwalk.c b/src/add-ons/kernel/bus_managers/acpi/acpica/common/adwalk.c index fe07c07af8..92cec7413a 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/common/adwalk.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/common/adwalk.c @@ -207,6 +207,7 @@ AcpiDmDumpTree ( Info.Count = 0; Info.Level = 0; Info.WalkState = NULL; + AcpiDmWalkParseTree (Origin, AcpiDmDumpDescending, NULL, &Info); AcpiOsPrintf ("*/\n\n"); } @@ -240,6 +241,7 @@ AcpiDmFindOrphanMethods ( Info.Flags = 0; Info.Level = 0; Info.WalkState = NULL; + AcpiDmWalkParseTree (Origin, AcpiDmFindOrphanDescending, NULL, &Info); } @@ -283,7 +285,8 @@ AcpiDmFinishNamespaceLoad ( return; } - Status = AcpiDsScopeStackPush (NamespaceRoot, NamespaceRoot->Type, WalkState); + Status = AcpiDsScopeStackPush (NamespaceRoot, NamespaceRoot->Type, + WalkState); if (ACPI_FAILURE (Status)) { return; @@ -292,6 +295,7 @@ AcpiDmFinishNamespaceLoad ( Info.Flags = 0; Info.Level = 0; Info.WalkState = WalkState; + AcpiDmWalkParseTree (ParseTreeRoot, AcpiDmLoadDescendingOp, AcpiDmCommonAscendingOp, &Info); ACPI_FREE (WalkState); @@ -336,7 +340,8 @@ AcpiDmCrossReferenceNamespace ( return; } - Status = AcpiDsScopeStackPush (NamespaceRoot, NamespaceRoot->Type, WalkState); + Status = AcpiDsScopeStackPush (NamespaceRoot, NamespaceRoot->Type, + WalkState); if (ACPI_FAILURE (Status)) { return; @@ -345,6 +350,7 @@ AcpiDmCrossReferenceNamespace ( Info.Flags = 0; Info.Level = 0; Info.WalkState = WalkState; + AcpiDmWalkParseTree (ParseTreeRoot, AcpiDmXrefDescendingOp, AcpiDmCommonAscendingOp, &Info); ACPI_FREE (WalkState); @@ -389,7 +395,8 @@ AcpiDmConvertResourceIndexes ( return; } - Status = AcpiDsScopeStackPush (NamespaceRoot, NamespaceRoot->Type, WalkState); + Status = AcpiDsScopeStackPush (NamespaceRoot, NamespaceRoot->Type, + WalkState); if (ACPI_FAILURE (Status)) { return; @@ -398,6 +405,7 @@ AcpiDmConvertResourceIndexes ( Info.Flags = 0; Info.Level = 0; Info.WalkState = WalkState; + AcpiDmWalkParseTree (ParseTreeRoot, AcpiDmResourceDescendingOp, AcpiDmCommonAscendingOp, &Info); ACPI_FREE (WalkState); @@ -468,7 +476,7 @@ AcpiDmDumpDescending ( if (Op->Common.Value.String) { AcpiNsExternalizeName (ACPI_UINT32_MAX, Op->Common.Value.String, - NULL, &Path); + NULL, &Path); AcpiOsPrintf ("%s %p", Path, Op->Common.Node); ACPI_FREE (Path); } @@ -727,6 +735,7 @@ AcpiDmLoadDescendingOp ( { NextOp = NextOp->Common.Next; } + Path = NextOp->Common.Value.String; } @@ -738,8 +747,8 @@ AcpiDmLoadDescendingOp ( /* Insert the name into the namespace */ Status = AcpiNsLookup (WalkState->ScopeInfo, Path, ObjectType, - ACPI_IMODE_LOAD_PASS2, ACPI_NS_DONT_OPEN_SCOPE, - WalkState, &Node); + ACPI_IMODE_LOAD_PASS2, ACPI_NS_DONT_OPEN_SCOPE, + WalkState, &Node); Op->Common.Node = Node; @@ -780,7 +789,8 @@ Exit: { if (Op->Common.Node) { - Status = AcpiDsScopeStackPush (Op->Common.Node, ObjectType, WalkState); + Status = AcpiDsScopeStackPush (Op->Common.Node, ObjectType, + WalkState); if (ACPI_FAILURE (Status)) { return (Status); @@ -897,8 +907,8 @@ AcpiDmXrefDescendingOp ( */ Node = NULL; Status = AcpiNsLookup (WalkState->ScopeInfo, Path, ACPI_TYPE_ANY, - ACPI_IMODE_EXECUTE, ACPI_NS_SEARCH_PARENT | ACPI_NS_DONT_OPEN_SCOPE, - WalkState, &Node); + ACPI_IMODE_EXECUTE, ACPI_NS_SEARCH_PARENT | ACPI_NS_DONT_OPEN_SCOPE, + WalkState, &Node); if (ACPI_SUCCESS (Status) && (Node->Flags & ANOBJ_IS_EXTERNAL)) { /* Node was created by an External() statement */ @@ -980,7 +990,8 @@ Exit: { if (Op->Common.Node) { - Status = AcpiDsScopeStackPush (Op->Common.Node, ObjectType, WalkState); + Status = AcpiDsScopeStackPush (Op->Common.Node, ObjectType, + WalkState); if (ACPI_FAILURE (Status)) { return (Status); @@ -1028,7 +1039,8 @@ AcpiDmResourceDescendingOp ( if (Op->Common.Node) { - Status = AcpiDsScopeStackPush (Op->Common.Node, ObjectType, WalkState); + Status = AcpiDsScopeStackPush (Op->Common.Node, ObjectType, + WalkState); if (ACPI_FAILURE (Status)) { return (Status); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/common/ahuuids.c b/src/add-ons/kernel/bus_managers/acpi/acpica/common/ahuuids.c index 118473dda8..499dbb4f84 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/common/ahuuids.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/common/ahuuids.c @@ -120,6 +120,7 @@ #define _COMPONENT ACPI_UTILITIES ACPI_MODULE_NAME ("ahuuids") + /* * Table of "known" (ACPI-related) UUIDs */ diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/common/dmextern.c b/src/add-ons/kernel/bus_managers/acpi/acpica/common/dmextern.c index 832379e516..7335168e05 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/common/dmextern.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/common/dmextern.c @@ -212,7 +212,6 @@ AcpiDmGetObjectTypeName ( { Type = ACPI_TYPE_DEVICE; } - else if (Type > ACPI_TYPE_LOCAL_INDEX_FIELD) { return (""); @@ -482,6 +481,7 @@ AcpiDmGetExternalsFromFile ( { continue; } + if (strcmp (Token, "External")) { continue; @@ -519,6 +519,7 @@ AcpiDmGetExternalsFromFile ( fprintf (stderr, "Invalid argument count (%s)\n", Token); continue; } + if (ArgCount > 7) { fprintf (stderr, "Invalid argument count (%u)\n", ArgCount); @@ -537,7 +538,8 @@ AcpiDmGetExternalsFromFile ( if (!ImportCount) { - fprintf (stderr, "Did not find any external methods in reference file \"%s\"\n", + fprintf (stderr, + "Did not find any external methods in reference file \"%s\"\n", Gbl_ExternalRefFilename); } else @@ -887,7 +889,8 @@ AcpiDmCreateNewExternal ( (Value > 0)) { ACPI_ERROR ((AE_INFO, - "External method arg count mismatch %s: Current %u, attempted %u", + "External method arg count mismatch %s: " + "Current %u, attempted %u", NextExternal->Path, NextExternal->Value, Value)); } @@ -989,9 +992,9 @@ AcpiDmAddExternalsToNamespace ( /* Add the external name (object) into the namespace */ Status = AcpiNsLookup (NULL, External->InternalPath, External->Type, - ACPI_IMODE_LOAD_PASS1, - ACPI_NS_ERROR_IF_FOUND | ACPI_NS_EXTERNAL | ACPI_NS_DONT_OPEN_SCOPE, - NULL, &Node); + ACPI_IMODE_LOAD_PASS1, + ACPI_NS_ERROR_IF_FOUND | ACPI_NS_EXTERNAL | ACPI_NS_DONT_OPEN_SCOPE, + NULL, &Node); if (ACPI_FAILURE (Status)) { diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/common/dmrestag.c b/src/add-ons/kernel/bus_managers/acpi/acpica/common/dmrestag.c index 5041f884fc..c87a02539d 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/common/dmrestag.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/common/dmrestag.c @@ -570,9 +570,9 @@ AcpiDmCheckResourceReference ( /* Lookup the buffer in the namespace */ Status = AcpiNsLookup (WalkState->ScopeInfo, - BufferNameOp->Common.Value.String, ACPI_TYPE_BUFFER, - ACPI_IMODE_EXECUTE, ACPI_NS_SEARCH_PARENT, WalkState, - &BufferNode); + BufferNameOp->Common.Value.String, ACPI_TYPE_BUFFER, + ACPI_IMODE_EXECUTE, ACPI_NS_SEARCH_PARENT, WalkState, + &BufferNode); if (ACPI_FAILURE (Status)) { return; @@ -693,8 +693,8 @@ AcpiGetTagPathname ( /* Get the individual resource descriptor and validate it */ - Aml = ACPI_CAST_PTR (AML_RESOURCE, - &Op->Named.Data[ResourceNode->Value]); + Aml = ACPI_CAST_PTR ( + AML_RESOURCE, &Op->Named.Data[ResourceNode->Value]); Status = AcpiUtValidateResource (NULL, Aml, &ResourceTableIndex); if (ACPI_FAILURE (Status)) @@ -735,7 +735,7 @@ AcpiGetTagPathname ( } (void) AcpiNsBuildNormalizedPath (BufferNode, Pathname, - RequiredSize, FALSE); + RequiredSize, FALSE); /* * Create the full path to the resource and tag by: remove the buffer name, @@ -814,6 +814,7 @@ AcpiDmUpdateResourceName ( { AcpiGbl_NextResourceId = 0; AcpiGbl_NextPrefix++; + if (AcpiGbl_NextPrefix > ACPI_NUM_RES_PREFIX) { AcpiGbl_NextPrefix = 0; @@ -1100,9 +1101,9 @@ AcpiDmAddResourceToNamespace ( ScopeInfo.Scope.Node = ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, Context); Status = AcpiNsLookup (&ScopeInfo, "_TMP", ACPI_TYPE_LOCAL_RESOURCE, - ACPI_IMODE_LOAD_PASS2, - ACPI_NS_NO_UPSEARCH | ACPI_NS_DONT_OPEN_SCOPE | ACPI_NS_PREFIX_IS_SCOPE, - NULL, &Node); + ACPI_IMODE_LOAD_PASS2, + ACPI_NS_NO_UPSEARCH | ACPI_NS_DONT_OPEN_SCOPE | ACPI_NS_PREFIX_IS_SCOPE, + NULL, &Node); if (ACPI_FAILURE (Status)) { return (AE_OK); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/common/dmtable.c b/src/add-ons/kernel/bus_managers/acpi/acpica/common/dmtable.c index c301da100a..35e01f3e89 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/common/dmtable.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/common/dmtable.c @@ -947,6 +947,7 @@ AcpiDmDumpTable ( AcpiOsPrintf ("\n"); LastOutputBlankLine = TRUE; } + ByteLength = sizeof (ACPI_GENERIC_ADDRESS); break; @@ -957,6 +958,7 @@ AcpiDmDumpTable ( AcpiOsPrintf ("\n"); LastOutputBlankLine = TRUE; } + ByteLength = sizeof (ACPI_HEST_NOTIFY); break; @@ -966,6 +968,7 @@ AcpiDmDumpTable ( { LastOutputBlankLine = FALSE; } + ByteLength = sizeof (ACPI_IORT_MEMORY_ACCESS); break; @@ -1099,6 +1102,7 @@ AcpiDmDumpTable ( } } } + AcpiOsPrintf ("\n"); break; @@ -1122,6 +1126,7 @@ AcpiDmDumpTable ( AcpiDmCheckAscii (Target, RepairedName, 4); AcpiOsPrintf ("\"%.4s\" ", RepairedName); + TableData = AcpiAhGetTableInfo (ACPI_CAST_PTR (char, Target)); if (TableData) { @@ -1167,6 +1172,7 @@ AcpiDmDumpTable ( AcpiOsPrintf ( " /* Incorrect checksum, should be %2.2X */", Temp8); } + AcpiOsPrintf ("\n"); break; diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/common/dmtbdump.c b/src/add-ons/kernel/bus_managers/acpi/acpica/common/dmtbdump.c index f1b55126bd..b22d9bdbf1 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/common/dmtbdump.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/common/dmtbdump.c @@ -250,6 +250,7 @@ AcpiDmDumpUnicode ( { AcpiOsPrintf ("%c", Buffer[i]); } + AcpiOsPrintf ("\"\n"); return; @@ -294,7 +295,7 @@ AcpiDmDumpRsdp ( /* Validate the first checksum */ Checksum = AcpiDmGenerateChecksum (Rsdp, sizeof (ACPI_RSDP_COMMON), - Rsdp->Checksum); + Rsdp->Checksum); if (Checksum != Rsdp->Checksum) { AcpiOsPrintf ("/* Incorrect Checksum above, should be 0x%2.2X */\n", @@ -315,7 +316,7 @@ AcpiDmDumpRsdp ( /* Validate the extended checksum over entire RSDP */ Checksum = AcpiDmGenerateChecksum (Rsdp, sizeof (ACPI_TABLE_RSDP), - Rsdp->ExtendedChecksum); + Rsdp->ExtendedChecksum); if (Checksum != Rsdp->ExtendedChecksum) { AcpiOsPrintf ( @@ -433,7 +434,8 @@ AcpiDmDumpFadt ( /* Always dump the minimum FADT revision 1 fields (ACPI 1.0) */ - Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoFadt1); + Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, + AcpiDmTableInfoFadt1); if (ACPI_FAILURE (Status)) { return; @@ -444,7 +446,8 @@ AcpiDmDumpFadt ( if ((Table->Length > ACPI_FADT_V1_SIZE) && (Table->Length <= ACPI_FADT_V2_SIZE)) { - Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoFadt2); + Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, + AcpiDmTableInfoFadt2); if (ACPI_FAILURE (Status)) { return; @@ -455,7 +458,8 @@ AcpiDmDumpFadt ( else if (Table->Length > ACPI_FADT_V2_SIZE) { - Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoFadt3); + Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, + AcpiDmTableInfoFadt3); if (ACPI_FAILURE (Status)) { return; @@ -465,7 +469,8 @@ AcpiDmDumpFadt ( if (Table->Length > ACPI_FADT_V3_SIZE) { - Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoFadt5); + Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, + AcpiDmTableInfoFadt5); if (ACPI_FAILURE (Status)) { return; @@ -476,7 +481,8 @@ AcpiDmDumpFadt ( if (Table->Length > ACPI_FADT_V3_SIZE) { - Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoFadt6); + Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, + AcpiDmTableInfoFadt6); if (ACPI_FAILURE (Status)) { return; @@ -557,7 +563,8 @@ AcpiDmValidateFadtLength ( } AcpiOsPrintf ( - "\n// ACPI Warning: FADT revision %X does not match length: found %X expected %X\n", + "\n// ACPI Warning: FADT revision %X does not match length: " + "found %X expected %X\n", Revision, Length, ExpectedLength); } @@ -599,7 +606,7 @@ AcpiDmDumpAsf ( /* Common subtable header */ Status = AcpiDmDumpTable (Table->Length, Offset, SubTable, - SubTable->Header.Length, AcpiDmTableInfoAsfHdr); + SubTable->Header.Length, AcpiDmTableInfoAsfHdr); if (ACPI_FAILURE (Status)) { return; @@ -651,12 +658,13 @@ AcpiDmDumpAsf ( default: - AcpiOsPrintf ("\n**** Unknown ASF subtable type 0x%X\n", SubTable->Header.Type); + AcpiOsPrintf ("\n**** Unknown ASF subtable type 0x%X\n", + SubTable->Header.Type); return; } Status = AcpiDmDumpTable (Table->Length, Offset, SubTable, - SubTable->Header.Length, InfoTable); + SubTable->Header.Length, InfoTable); if (ACPI_FAILURE (Status)) { return; @@ -673,7 +681,7 @@ AcpiDmDumpAsf ( { AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Table->Length, DataOffset, - DataTable, DataLength, DataInfoTable); + DataTable, DataLength, DataInfoTable); if (ACPI_FAILURE (Status)) { return; @@ -696,9 +704,12 @@ AcpiDmDumpAsf ( AcpiOsPrintf ("%2.2X ", *DataTable); DataTable++; DataOffset++; + if (DataOffset > Table->Length) { - AcpiOsPrintf ("**** ACPI table terminates in the middle of a data structure! (ASF! table)\n"); + AcpiOsPrintf ( + "**** ACPI table terminates in the middle of a " + "data structure! (ASF! table)\n"); return; } } @@ -722,7 +733,8 @@ AcpiDmDumpAsf ( } Offset += SubTable->Header.Length; - SubTable = ACPI_ADD_PTR (ACPI_ASF_INFO, SubTable, SubTable->Header.Length); + SubTable = ACPI_ADD_PTR (ACPI_ASF_INFO, SubTable, + SubTable->Header.Length); } } @@ -765,7 +777,7 @@ AcpiDmDumpCpep ( { AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Length, Offset, SubTable, - SubTable->Header.Length, AcpiDmTableInfoCpep0); + SubTable->Header.Length, AcpiDmTableInfoCpep0); if (ACPI_FAILURE (Status)) { return; @@ -775,7 +787,7 @@ AcpiDmDumpCpep ( Offset += SubTable->Header.Length; SubTable = ACPI_ADD_PTR (ACPI_CPEP_POLLING, SubTable, - SubTable->Header.Length); + SubTable->Header.Length); } } @@ -819,7 +831,7 @@ AcpiDmDumpCsrt ( AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Length, Offset, SubTable, - SubTable->Length, AcpiDmTableInfoCsrt0); + SubTable->Length, AcpiDmTableInfoCsrt0); if (ACPI_FAILURE (Status)) { return; @@ -833,7 +845,7 @@ AcpiDmDumpCsrt ( AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Length, Offset + SubOffset, SharedInfoTable, - sizeof (ACPI_CSRT_SHARED_INFO), AcpiDmTableInfoCsrt1); + sizeof (ACPI_CSRT_SHARED_INFO), AcpiDmTableInfoCsrt1); if (ACPI_FAILURE (Status)) { return; @@ -851,7 +863,7 @@ AcpiDmDumpCsrt ( { AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Length, Offset + SubOffset, SubSubTable, - SubSubTable->Length, AcpiDmTableInfoCsrt2); + SubSubTable->Length, AcpiDmTableInfoCsrt2); if (ACPI_FAILURE (Status)) { return; @@ -865,8 +877,8 @@ AcpiDmDumpCsrt ( if (InfoLength) { Status = AcpiDmDumpTable (Length, - Offset + SubOffset + SubSubOffset, Table, - InfoLength, AcpiDmTableInfoCsrt2a); + Offset + SubOffset + SubSubOffset, Table, + InfoLength, AcpiDmTableInfoCsrt2a); if (ACPI_FAILURE (Status)) { return; @@ -878,14 +890,14 @@ AcpiDmDumpCsrt ( SubOffset += SubSubTable->Length; SubSubTable = ACPI_ADD_PTR (ACPI_CSRT_DESCRIPTOR, SubSubTable, - SubSubTable->Length); + SubSubTable->Length); } /* Point to next subtable */ Offset += SubTable->Length; SubTable = ACPI_ADD_PTR (ACPI_CSRT_GROUP, SubTable, - SubTable->Length); + SubTable->Length); } } @@ -932,7 +944,7 @@ AcpiDmDumpDbg2 ( { AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Length, Offset, SubTable, - SubTable->Length, AcpiDmTableInfoDbg2Device); + SubTable->Length, AcpiDmTableInfoDbg2Device); if (ACPI_FAILURE (Status)) { return; @@ -948,7 +960,7 @@ AcpiDmDumpDbg2 ( Array = (UINT8 *) SubTable + ArrayOffset; Status = AcpiDmDumpTable (Length, AbsoluteOffset, Array, - SubTable->Length, AcpiDmTableInfoDbg2Addr); + SubTable->Length, AcpiDmTableInfoDbg2Addr); if (ACPI_FAILURE (Status)) { return; @@ -965,7 +977,7 @@ AcpiDmDumpDbg2 ( Array = (UINT8 *) SubTable + ArrayOffset; Status = AcpiDmDumpTable (Length, AbsoluteOffset, Array, - SubTable->Length, AcpiDmTableInfoDbg2Size); + SubTable->Length, AcpiDmTableInfoDbg2Size); if (ACPI_FAILURE (Status)) { return; @@ -980,7 +992,7 @@ AcpiDmDumpDbg2 ( Array = (UINT8 *) SubTable + ArrayOffset; Status = AcpiDmDumpTable (Length, AbsoluteOffset, Array, - SubTable->Length, AcpiDmTableInfoDbg2Name); + SubTable->Length, AcpiDmTableInfoDbg2Name); if (ACPI_FAILURE (Status)) { return; @@ -991,8 +1003,8 @@ AcpiDmDumpDbg2 ( if (SubTable->OemDataOffset) { Status = AcpiDmDumpTable (Length, Offset + SubTable->OemDataOffset, - Table, SubTable->OemDataLength, - AcpiDmTableInfoDbg2OemData); + Table, SubTable->OemDataLength, + AcpiDmTableInfoDbg2OemData); if (ACPI_FAILURE (Status)) { return; @@ -1003,7 +1015,7 @@ AcpiDmDumpDbg2 ( Offset += SubTable->Length; SubTable = ACPI_ADD_PTR (ACPI_DBG2_DEVICE, SubTable, - SubTable->Length); + SubTable->Length); } } @@ -1053,11 +1065,12 @@ AcpiDmDumpDmar ( AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Length, Offset, SubTable, - SubTable->Length, AcpiDmTableInfoDmarHdr); + SubTable->Length, AcpiDmTableInfoDmarHdr); if (ACPI_FAILURE (Status)) { return; } + AcpiOsPrintf ("\n"); switch (SubTable->Type) @@ -1094,12 +1107,13 @@ AcpiDmDumpDmar ( default: - AcpiOsPrintf ("\n**** Unknown DMAR subtable type 0x%X\n\n", SubTable->Type); + AcpiOsPrintf ("\n**** Unknown DMAR subtable type 0x%X\n\n", + SubTable->Type); return; } Status = AcpiDmDumpTable (Length, Offset, SubTable, - SubTable->Length, InfoTable); + SubTable->Length, InfoTable); if (ACPI_FAILURE (Status)) { return; @@ -1121,7 +1135,7 @@ AcpiDmDumpDmar ( { AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Length, Offset + ScopeOffset, ScopeTable, - ScopeTable->Length, AcpiDmTableInfoDmarScope); + ScopeTable->Length, AcpiDmTableInfoDmarScope); if (ACPI_FAILURE (Status)) { return; @@ -1137,7 +1151,8 @@ AcpiDmDumpDmar ( while (PathOffset < ScopeTable->Length) { - AcpiDmLineHeader ((PathOffset + ScopeOffset + Offset), 2, "PCI Path"); + AcpiDmLineHeader ((PathOffset + ScopeOffset + Offset), 2, + "PCI Path"); AcpiOsPrintf ("%2.2X,%2.2X\n", PciPath[0], PciPath[1]); /* Point to next PCI Path entry */ @@ -1158,7 +1173,8 @@ NextSubtable: /* Point to next subtable */ Offset += SubTable->Length; - SubTable = ACPI_ADD_PTR (ACPI_DMAR_HEADER, SubTable, SubTable->Length); + SubTable = ACPI_ADD_PTR (ACPI_DMAR_HEADER, SubTable, + SubTable->Length); } } @@ -1190,7 +1206,7 @@ AcpiDmDumpDrtm ( /* Main table */ Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, - AcpiDmTableInfoDrtm); + AcpiDmTableInfoDrtm); if (ACPI_FAILURE (Status)) { return; @@ -1205,12 +1221,13 @@ AcpiDmDumpDrtm ( DrtmVtl = ACPI_ADD_PTR (ACPI_DRTM_VTABLE_LIST, Table, Offset); AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Table->Length, Offset, - DrtmVtl, ACPI_OFFSET (ACPI_DRTM_VTABLE_LIST, ValidatedTables), - AcpiDmTableInfoDrtm0); + DrtmVtl, ACPI_OFFSET (ACPI_DRTM_VTABLE_LIST, ValidatedTables), + AcpiDmTableInfoDrtm0); if (ACPI_FAILURE (Status)) { return; } + Offset += ACPI_OFFSET (ACPI_DRTM_VTABLE_LIST, ValidatedTables); /* Dump Validated table addresses */ @@ -1220,12 +1237,13 @@ AcpiDmDumpDrtm ( (DrtmVtl->ValidatedTableCount > Count)) { Status = AcpiDmDumpTable (Table->Length, Offset, - ACPI_ADD_PTR (void, Table, Offset), sizeof (UINT64), - AcpiDmTableInfoDrtm0a); + ACPI_ADD_PTR (void, Table, Offset), sizeof (UINT64), + AcpiDmTableInfoDrtm0a); if (ACPI_FAILURE (Status)) { return; } + Offset += sizeof (UINT64); Count++; } @@ -1235,8 +1253,8 @@ AcpiDmDumpDrtm ( DrtmRl = ACPI_ADD_PTR (ACPI_DRTM_RESOURCE_LIST, Table, Offset); AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Table->Length, Offset, - DrtmRl, ACPI_OFFSET (ACPI_DRTM_RESOURCE_LIST, Resources), - AcpiDmTableInfoDrtm1); + DrtmRl, ACPI_OFFSET (ACPI_DRTM_RESOURCE_LIST, Resources), + AcpiDmTableInfoDrtm1); if (ACPI_FAILURE (Status)) { return; @@ -1251,9 +1269,8 @@ AcpiDmDumpDrtm ( (DrtmRl->ResourceCount > Count)) { Status = AcpiDmDumpTable (Table->Length, Offset, - ACPI_ADD_PTR (void, Table, Offset), - sizeof (ACPI_DRTM_RESOURCE), - AcpiDmTableInfoDrtm1a); + ACPI_ADD_PTR (void, Table, Offset), + sizeof (ACPI_DRTM_RESOURCE), AcpiDmTableInfoDrtm1a); if (ACPI_FAILURE (Status)) { return; @@ -1268,8 +1285,7 @@ AcpiDmDumpDrtm ( DrtmDps = ACPI_ADD_PTR (ACPI_DRTM_DPS_ID, Table, Offset); AcpiOsPrintf ("\n"); (void) AcpiDmDumpTable (Table->Length, Offset, - DrtmDps, sizeof (ACPI_DRTM_DPS_ID), - AcpiDmTableInfoDrtm2); + DrtmDps, sizeof (ACPI_DRTM_DPS_ID), AcpiDmTableInfoDrtm2); } @@ -1311,7 +1327,7 @@ AcpiDmDumpEinj ( { AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Length, Offset, SubTable, - sizeof (ACPI_WHEA_HEADER), AcpiDmTableInfoEinj0); + sizeof (ACPI_WHEA_HEADER), AcpiDmTableInfoEinj0); if (ACPI_FAILURE (Status)) { return; @@ -1321,7 +1337,7 @@ AcpiDmDumpEinj ( Offset += sizeof (ACPI_WHEA_HEADER); SubTable = ACPI_ADD_PTR (ACPI_WHEA_HEADER, SubTable, - sizeof (ACPI_WHEA_HEADER)); + sizeof (ACPI_WHEA_HEADER)); } } @@ -1364,7 +1380,7 @@ AcpiDmDumpErst ( { AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Length, Offset, SubTable, - sizeof (ACPI_WHEA_HEADER), AcpiDmTableInfoErst0); + sizeof (ACPI_WHEA_HEADER), AcpiDmTableInfoErst0); if (ACPI_FAILURE (Status)) { return; @@ -1374,7 +1390,7 @@ AcpiDmDumpErst ( Offset += sizeof (ACPI_WHEA_HEADER); SubTable = ACPI_ADD_PTR (ACPI_WHEA_HEADER, SubTable, - sizeof (ACPI_WHEA_HEADER)); + sizeof (ACPI_WHEA_HEADER)); } } @@ -1414,7 +1430,7 @@ AcpiDmDumpFpdt ( AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Length, Offset, SubTable, - SubTable->Length, AcpiDmTableInfoFpdtHdr); + SubTable->Length, AcpiDmTableInfoFpdtHdr); if (ACPI_FAILURE (Status)) { return; @@ -1434,7 +1450,8 @@ AcpiDmDumpFpdt ( default: - AcpiOsPrintf ("\n**** Unknown FPDT subtable type 0x%X\n\n", SubTable->Type); + AcpiOsPrintf ("\n**** Unknown FPDT subtable type 0x%X\n\n", + SubTable->Type); /* Attempt to continue */ @@ -1447,7 +1464,7 @@ AcpiDmDumpFpdt ( } Status = AcpiDmDumpTable (Length, Offset, SubTable, - SubTable->Length, InfoTable); + SubTable->Length, InfoTable); if (ACPI_FAILURE (Status)) { return; @@ -1457,7 +1474,8 @@ NextSubTable: /* Point to next subtable */ Offset += SubTable->Length; - SubTable = ACPI_ADD_PTR (ACPI_FPDT_HEADER, SubTable, SubTable->Length); + SubTable = ACPI_ADD_PTR (ACPI_FPDT_HEADER, SubTable, + SubTable->Length); } } @@ -1506,7 +1524,7 @@ AcpiDmDumpGtdt ( AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Length, Offset, SubTable, - SubTable->Length, AcpiDmTableInfoGtdtHdr); + SubTable->Length, AcpiDmTableInfoGtdtHdr); if (ACPI_FAILURE (Status)) { return; @@ -1519,7 +1537,7 @@ AcpiDmDumpGtdt ( SubTableLength = sizeof (ACPI_GTDT_TIMER_BLOCK); GtCount = (ACPI_CAST_PTR (ACPI_GTDT_TIMER_BLOCK, - SubTable))->TimerCount; + SubTable))->TimerCount; InfoTable = AcpiDmTableInfoGtdt0; break; @@ -1535,12 +1553,13 @@ AcpiDmDumpGtdt ( /* Cannot continue on unknown type - no length */ - AcpiOsPrintf ("\n**** Unknown GTDT subtable type 0x%X\n", SubTable->Type); + AcpiOsPrintf ("\n**** Unknown GTDT subtable type 0x%X\n", + SubTable->Type); return; } Status = AcpiDmDumpTable (Length, Offset, SubTable, - SubTable->Length, InfoTable); + SubTable->Length, InfoTable); if (ACPI_FAILURE (Status)) { return; @@ -1554,14 +1573,15 @@ AcpiDmDumpGtdt ( if (GtCount) { - GtxTable = ACPI_ADD_PTR (ACPI_GTDT_TIMER_ENTRY, SubTable, SubTableLength); + GtxTable = ACPI_ADD_PTR ( + ACPI_GTDT_TIMER_ENTRY, SubTable, SubTableLength); SubTableLength += GtCount * sizeof (ACPI_GTDT_TIMER_ENTRY); while (GtCount) { AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Length, Offset, GtxTable, - sizeof (ACPI_GTDT_TIMER_ENTRY), AcpiDmTableInfoGtdt0a); + sizeof (ACPI_GTDT_TIMER_ENTRY), AcpiDmTableInfoGtdt0a); if (ACPI_FAILURE (Status)) { return; @@ -1627,7 +1647,7 @@ AcpiDmDumpHest ( InfoTable = AcpiDmTableInfoHest0; SubTableLength = sizeof (ACPI_HEST_IA_MACHINE_CHECK); BankCount = (ACPI_CAST_PTR (ACPI_HEST_IA_MACHINE_CHECK, - SubTable))->NumHardwareBanks; + SubTable))->NumHardwareBanks; break; case ACPI_HEST_TYPE_IA32_CORRECTED_CHECK: @@ -1635,7 +1655,7 @@ AcpiDmDumpHest ( InfoTable = AcpiDmTableInfoHest1; SubTableLength = sizeof (ACPI_HEST_IA_CORRECTED); BankCount = (ACPI_CAST_PTR (ACPI_HEST_IA_CORRECTED, - SubTable))->NumHardwareBanks; + SubTable))->NumHardwareBanks; break; case ACPI_HEST_TYPE_IA32_NMI: @@ -1672,13 +1692,14 @@ AcpiDmDumpHest ( /* Cannot continue on unknown type - no length */ - AcpiOsPrintf ("\n**** Unknown HEST subtable type 0x%X\n", SubTable->Type); + AcpiOsPrintf ("\n**** Unknown HEST subtable type 0x%X\n", + SubTable->Type); return; } AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Length, Offset, SubTable, - SubTableLength, InfoTable); + SubTableLength, InfoTable); if (ACPI_FAILURE (Status)) { return; @@ -1692,18 +1713,20 @@ AcpiDmDumpHest ( if (BankCount) { - BankTable = ACPI_ADD_PTR (ACPI_HEST_IA_ERROR_BANK, SubTable, SubTableLength); + BankTable = ACPI_ADD_PTR (ACPI_HEST_IA_ERROR_BANK, SubTable, + SubTableLength); SubTableLength += BankCount * sizeof (ACPI_HEST_IA_ERROR_BANK); while (BankCount) { AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Length, Offset, BankTable, - sizeof (ACPI_HEST_IA_ERROR_BANK), AcpiDmTableInfoHestBank); + sizeof (ACPI_HEST_IA_ERROR_BANK), AcpiDmTableInfoHestBank); if (ACPI_FAILURE (Status)) { return; } + Offset += sizeof (ACPI_HEST_IA_ERROR_BANK); BankTable++; BankCount--; @@ -1762,7 +1785,7 @@ AcpiDmDumpIort ( if (Iort->NodeOffset > Offset) { Status = AcpiDmDumpTable (Table->Length, Offset, Table, - Iort->NodeOffset - Offset, AcpiDmTableInfoIortPad); + Iort->NodeOffset - Offset, AcpiDmTableInfoIortPad); if (ACPI_FAILURE (Status)) { return; @@ -1778,7 +1801,7 @@ AcpiDmDumpIort ( AcpiOsPrintf ("\n"); Length = ACPI_OFFSET (ACPI_IORT_NODE, NodeData); Status = AcpiDmDumpTable (Table->Length, Offset, - IortNode, Length, AcpiDmTableInfoIortHdr); + IortNode, Length, AcpiDmTableInfoIortHdr); if (ACPI_FAILURE (Status)) { return; @@ -1835,8 +1858,8 @@ AcpiDmDumpIort ( AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset, - ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset), - Length, InfoTable); + ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset), + Length, InfoTable); if (ACPI_FAILURE (Status)) { return; @@ -1857,8 +1880,8 @@ AcpiDmDumpIort ( for (i = 0; i < IortItsGroup->ItsCount; i++) { Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset, - ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset), - 4, AcpiDmTableInfoIort0a); + ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset), + 4, AcpiDmTableInfoIort0a); NodeOffset += 4; } } @@ -1871,8 +1894,8 @@ AcpiDmDumpIort ( if (IortNode->Length > NodeOffset) { Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset, - Table, IortNode->Length - NodeOffset, - AcpiDmTableInfoIort1a); + Table, IortNode->Length - NodeOffset, + AcpiDmTableInfoIort1a); if (ACPI_FAILURE (Status)) { return; @@ -1891,8 +1914,8 @@ AcpiDmDumpIort ( Length = 2 * sizeof (UINT64); NodeOffset = IortSmmu->GlobalInterruptOffset; Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset, - ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset), - Length, AcpiDmTableInfoIort3a); + ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset), + Length, AcpiDmTableInfoIort3a); if (ACPI_FAILURE (Status)) { return; @@ -1902,12 +1925,13 @@ AcpiDmDumpIort ( for (i = 0; i < IortSmmu->ContextInterruptCount; i++) { Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset, - ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset), - 8, AcpiDmTableInfoIort3b); + ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset), + 8, AcpiDmTableInfoIort3b); if (ACPI_FAILURE (Status)) { return; } + NodeOffset += 8; } @@ -1915,12 +1939,13 @@ AcpiDmDumpIort ( for (i = 0; i < IortSmmu->PmuInterruptCount; i++) { Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset, - ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset), - 8, AcpiDmTableInfoIort3c); + ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset), + 8, AcpiDmTableInfoIort3c); if (ACPI_FAILURE (Status)) { return; } + NodeOffset += 8; } } @@ -1939,12 +1964,13 @@ AcpiDmDumpIort ( AcpiOsPrintf ("\n"); Length = sizeof (ACPI_IORT_ID_MAPPING); Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset, - ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset), - Length, AcpiDmTableInfoIortMap); + ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset), + Length, AcpiDmTableInfoIortMap); if (ACPI_FAILURE (Status)) { return; } + NodeOffset += Length; } @@ -2002,7 +2028,7 @@ AcpiDmDumpIvrs ( AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Table->Length, Offset, SubTable, - SubTable->Length, AcpiDmTableInfoIvrsHdr); + SubTable->Length, AcpiDmTableInfoIvrsHdr); if (ACPI_FAILURE (Status)) { return; @@ -2041,7 +2067,7 @@ AcpiDmDumpIvrs ( AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Table->Length, Offset, SubTable, - SubTable->Length, InfoTable); + SubTable->Length, InfoTable); if (ACPI_FAILURE (Status)) { return; @@ -2053,7 +2079,7 @@ AcpiDmDumpIvrs ( { EntryOffset = Offset + sizeof (ACPI_IVRS_HARDWARE); DeviceEntry = ACPI_ADD_PTR (ACPI_IVRS_DE_HEADER, SubTable, - sizeof (ACPI_IVRS_HARDWARE)); + sizeof (ACPI_IVRS_HARDWARE)); while (EntryOffset < (Offset + SubTable->Length)) { @@ -2118,7 +2144,7 @@ AcpiDmDumpIvrs ( /* Dump the Device Entry */ Status = AcpiDmDumpTable (Table->Length, EntryOffset, - DeviceEntry, EntryLength, InfoTable); + DeviceEntry, EntryLength, InfoTable); if (ACPI_FAILURE (Status)) { return; @@ -2126,7 +2152,7 @@ AcpiDmDumpIvrs ( EntryOffset += EntryLength; DeviceEntry = ACPI_ADD_PTR (ACPI_IVRS_DE_HEADER, DeviceEntry, - EntryLength); + EntryLength); } } @@ -2174,7 +2200,7 @@ AcpiDmDumpLpit ( /* Common subtable header */ Status = AcpiDmDumpTable (Length, Offset, SubTable, - sizeof (ACPI_LPIT_HEADER), AcpiDmTableInfoLpitHdr); + sizeof (ACPI_LPIT_HEADER), AcpiDmTableInfoLpitHdr); if (ACPI_FAILURE (Status)) { return; @@ -2192,16 +2218,18 @@ AcpiDmDumpLpit ( /* Cannot continue on unknown type - no length */ - AcpiOsPrintf ("\n**** Unknown LPIT subtable type 0x%X\n", SubTable->Type); + AcpiOsPrintf ("\n**** Unknown LPIT subtable type 0x%X\n", + SubTable->Type); return; } Status = AcpiDmDumpTable (Length, Offset, SubTable, - SubTableLength, InfoTable); + SubTableLength, InfoTable); if (ACPI_FAILURE (Status)) { return; } + AcpiOsPrintf ("\n"); /* Point to next subtable */ @@ -2253,7 +2281,7 @@ AcpiDmDumpMadt ( AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Length, Offset, SubTable, - SubTable->Length, AcpiDmTableInfoMadtHdr); + SubTable->Length, AcpiDmTableInfoMadtHdr); if (ACPI_FAILURE (Status)) { return; @@ -2343,7 +2371,8 @@ AcpiDmDumpMadt ( default: - AcpiOsPrintf ("\n**** Unknown MADT subtable type 0x%X\n\n", SubTable->Type); + AcpiOsPrintf ("\n**** Unknown MADT subtable type 0x%X\n\n", + SubTable->Type); /* Attempt to continue */ @@ -2352,11 +2381,12 @@ AcpiDmDumpMadt ( AcpiOsPrintf ("Invalid zero length subtable\n"); return; } + goto NextSubTable; } Status = AcpiDmDumpTable (Length, Offset, SubTable, - SubTable->Length, InfoTable); + SubTable->Length, InfoTable); if (ACPI_FAILURE (Status)) { return; @@ -2366,7 +2396,8 @@ NextSubTable: /* Point to next subtable */ Offset += SubTable->Length; - SubTable = ACPI_ADD_PTR (ACPI_SUBTABLE_HEADER, SubTable, SubTable->Length); + SubTable = ACPI_ADD_PTR (ACPI_SUBTABLE_HEADER, SubTable, + SubTable->Length); } } @@ -2414,7 +2445,7 @@ AcpiDmDumpMcfg ( AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Table->Length, Offset, SubTable, - sizeof (ACPI_MCFG_ALLOCATION), AcpiDmTableInfoMcfg0); + sizeof (ACPI_MCFG_ALLOCATION), AcpiDmTableInfoMcfg0); if (ACPI_FAILURE (Status)) { return; @@ -2424,7 +2455,7 @@ AcpiDmDumpMcfg ( Offset += sizeof (ACPI_MCFG_ALLOCATION); SubTable = ACPI_ADD_PTR (ACPI_MCFG_ALLOCATION, SubTable, - sizeof (ACPI_MCFG_ALLOCATION)); + sizeof (ACPI_MCFG_ALLOCATION)); } } @@ -2474,7 +2505,7 @@ AcpiDmDumpMpst ( { AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Table->Length, Offset, SubTable0, - sizeof (ACPI_MPST_POWER_NODE), AcpiDmTableInfoMpst0); + sizeof (ACPI_MPST_POWER_NODE), AcpiDmTableInfoMpst0); if (ACPI_FAILURE (Status)) { return; @@ -2495,7 +2526,7 @@ AcpiDmDumpMpst ( { AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Table->Length, Offset, SubTable0A, - sizeof (ACPI_MPST_POWER_STATE), AcpiDmTableInfoMpst0A); + sizeof (ACPI_MPST_POWER_STATE), AcpiDmTableInfoMpst0A); if (ACPI_FAILURE (Status)) { return; @@ -2518,7 +2549,7 @@ AcpiDmDumpMpst ( while (ComponentCount) { Status = AcpiDmDumpTable (Table->Length, Offset, SubTable0B, - sizeof (ACPI_MPST_COMPONENT), AcpiDmTableInfoMpst0B); + sizeof (ACPI_MPST_COMPONENT), AcpiDmTableInfoMpst0B); if (ACPI_FAILURE (Status)) { return; @@ -2543,7 +2574,7 @@ AcpiDmDumpMpst ( AcpiOsPrintf ("\n"); SubTable1 = ACPI_CAST_PTR (ACPI_MPST_DATA_HDR, SubTable0); Status = AcpiDmDumpTable (Table->Length, Offset, SubTable1, - sizeof (ACPI_MPST_DATA_HDR), AcpiDmTableInfoMpst1); + sizeof (ACPI_MPST_DATA_HDR), AcpiDmTableInfoMpst1); if (ACPI_FAILURE (Status)) { return; @@ -2554,13 +2585,14 @@ AcpiDmDumpMpst ( /* Subtable: Memory Power State Characteristics structure(s) */ - SubTable2 = ACPI_ADD_PTR (ACPI_MPST_POWER_DATA, SubTable1, sizeof (ACPI_MPST_DATA_HDR)); + SubTable2 = ACPI_ADD_PTR (ACPI_MPST_POWER_DATA, SubTable1, + sizeof (ACPI_MPST_DATA_HDR)); while ((Offset < Table->Length) && SubtableCount) { AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Table->Length, Offset, SubTable2, - sizeof (ACPI_MPST_POWER_DATA), AcpiDmTableInfoMpst2); + sizeof (ACPI_MPST_POWER_DATA), AcpiDmTableInfoMpst2); if (ACPI_FAILURE (Status)) { return; @@ -2611,7 +2643,7 @@ AcpiDmDumpMsct ( AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Table->Length, Offset, SubTable, - sizeof (ACPI_MSCT_PROXIMITY), AcpiDmTableInfoMsct0); + sizeof (ACPI_MSCT_PROXIMITY), AcpiDmTableInfoMsct0); if (ACPI_FAILURE (Status)) { return; @@ -2620,7 +2652,8 @@ AcpiDmDumpMsct ( /* Point to next subtable */ Offset += sizeof (ACPI_MSCT_PROXIMITY); - SubTable = ACPI_ADD_PTR (ACPI_MSCT_PROXIMITY, SubTable, sizeof (ACPI_MSCT_PROXIMITY)); + SubTable = ACPI_ADD_PTR (ACPI_MSCT_PROXIMITY, SubTable, + sizeof (ACPI_MSCT_PROXIMITY)); } } @@ -2663,7 +2696,7 @@ AcpiDmDumpMtmr ( AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Table->Length, Offset, SubTable, - sizeof (ACPI_MTMR_ENTRY), AcpiDmTableInfoMtmr0); + sizeof (ACPI_MTMR_ENTRY), AcpiDmTableInfoMtmr0); if (ACPI_FAILURE (Status)) { return; @@ -2672,7 +2705,8 @@ AcpiDmDumpMtmr ( /* Point to next subtable */ Offset += sizeof (ACPI_MTMR_ENTRY); - SubTable = ACPI_ADD_PTR (ACPI_MTMR_ENTRY, SubTable, sizeof (ACPI_MTMR_ENTRY)); + SubTable = ACPI_ADD_PTR (ACPI_MTMR_ENTRY, SubTable, + sizeof (ACPI_MTMR_ENTRY)); } } @@ -2722,7 +2756,7 @@ AcpiDmDumpNfit ( AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Table->Length, Offset, SubTable, - SubTable->Length, AcpiDmTableInfoNfitHdr); + SubTable->Length, AcpiDmTableInfoNfitHdr); if (ACPI_FAILURE (Status)) { return; @@ -2775,7 +2809,8 @@ AcpiDmDumpNfit ( break; default: - AcpiOsPrintf ("\n**** Unknown NFIT subtable type 0x%X\n", SubTable->Type); + AcpiOsPrintf ("\n**** Unknown NFIT subtable type 0x%X\n", + SubTable->Type); /* Attempt to continue */ @@ -2789,7 +2824,7 @@ AcpiDmDumpNfit ( AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Table->Length, Offset, SubTable, - SubTable->Length, InfoTable); + SubTable->Length, InfoTable); if (ACPI_FAILURE (Status)) { return; @@ -2804,8 +2839,8 @@ AcpiDmDumpNfit ( for (i = 0; i < Interleave->LineCount; i++) { Status = AcpiDmDumpTable (Table->Length, Offset + FieldOffset, - &Interleave->LineOffset[i], - sizeof (UINT32), AcpiDmTableInfoNfit2a); + &Interleave->LineOffset[i], + sizeof (UINT32), AcpiDmTableInfoNfit2a); if (ACPI_FAILURE (Status)) { return; @@ -2817,13 +2852,15 @@ AcpiDmDumpNfit ( case ACPI_NFIT_TYPE_SMBIOS: - Length = SubTable->Length - sizeof (ACPI_NFIT_SMBIOS) + sizeof (UINT8); + Length = SubTable->Length - + sizeof (ACPI_NFIT_SMBIOS) + sizeof (UINT8); + if (Length) { Status = AcpiDmDumpTable (Table->Length, - sizeof (ACPI_NFIT_SMBIOS) - sizeof (UINT8), - SmbiosInfo, - Length, AcpiDmTableInfoNfit3a); + sizeof (ACPI_NFIT_SMBIOS) - sizeof (UINT8), + SmbiosInfo, + Length, AcpiDmTableInfoNfit3a); if (ACPI_FAILURE (Status)) { return; @@ -2837,8 +2874,8 @@ AcpiDmDumpNfit ( for (i = 0; i < Hint->HintCount; i++) { Status = AcpiDmDumpTable (Table->Length, Offset + FieldOffset, - &Hint->HintAddress[i], - sizeof (UINT64), AcpiDmTableInfoNfit6a); + &Hint->HintAddress[i], + sizeof (UINT64), AcpiDmTableInfoNfit6a); if (ACPI_FAILURE (Status)) { return; @@ -2902,7 +2939,7 @@ AcpiDmDumpPcct ( AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Length, Offset, SubTable, - SubTable->Header.Length, AcpiDmTableInfoPcctHdr); + SubTable->Header.Length, AcpiDmTableInfoPcctHdr); if (ACPI_FAILURE (Status)) { return; @@ -2930,7 +2967,7 @@ AcpiDmDumpPcct ( AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Length, Offset, SubTable, - SubTable->Header.Length, InfoTable); + SubTable->Header.Length, InfoTable); if (ACPI_FAILURE (Status)) { return; @@ -2940,7 +2977,7 @@ AcpiDmDumpPcct ( Offset += SubTable->Header.Length; SubTable = ACPI_ADD_PTR (ACPI_PCCT_SUBSPACE, SubTable, - SubTable->Header.Length); + SubTable->Header.Length); } } @@ -2992,7 +3029,7 @@ AcpiDmDumpPmtt ( AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Length, Offset, SubTable, - SubTable->Length, AcpiDmTableInfoPmttHdr); + SubTable->Length, AcpiDmTableInfoPmttHdr); if (ACPI_FAILURE (Status)) { return; @@ -3011,7 +3048,7 @@ AcpiDmDumpPmtt ( /* Dump the fixed-length portion of the subtable */ Status = AcpiDmDumpTable (Length, Offset, SubTable, - SubTable->Length, AcpiDmTableInfoPmtt0); + SubTable->Length, AcpiDmTableInfoPmtt0); if (ACPI_FAILURE (Status)) { return; @@ -3030,8 +3067,8 @@ AcpiDmDumpPmtt ( AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Length, - Offset + MemOffset, MemSubTable, - MemSubTable->Length, AcpiDmTableInfoPmttHdr); + Offset + MemOffset, MemSubTable, + MemSubTable->Length, AcpiDmTableInfoPmttHdr); if (ACPI_FAILURE (Status)) { return; @@ -3050,8 +3087,8 @@ AcpiDmDumpPmtt ( /* Dump the fixed-length portion of the controller subtable */ Status = AcpiDmDumpTable (Length, - Offset + MemOffset, MemSubTable, - MemSubTable->Length, AcpiDmTableInfoPmtt1); + Offset + MemOffset, MemSubTable, + MemSubTable->Length, AcpiDmTableInfoPmtt1); if (ACPI_FAILURE (Status)) { return; @@ -3069,8 +3106,8 @@ AcpiDmDumpPmtt ( DomainCount) { Status = AcpiDmDumpTable (Length, - Offset + MemOffset + DomainOffset, DomainArray, - sizeof (ACPI_PMTT_DOMAIN), AcpiDmTableInfoPmtt1a); + Offset + MemOffset + DomainOffset, DomainArray, + sizeof (ACPI_PMTT_DOMAIN), AcpiDmTableInfoPmtt1a); if (ACPI_FAILURE (Status)) { return; @@ -3100,8 +3137,8 @@ AcpiDmDumpPmtt ( AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Length, - Offset + MemOffset + DimmOffset, DimmSubTable, - DimmSubTable->Length, AcpiDmTableInfoPmttHdr); + Offset + MemOffset + DimmOffset, DimmSubTable, + DimmSubTable->Length, AcpiDmTableInfoPmttHdr); if (ACPI_FAILURE (Status)) { return; @@ -3120,8 +3157,8 @@ AcpiDmDumpPmtt ( /* Dump the fixed-length DIMM subtable */ Status = AcpiDmDumpTable (Length, - Offset + MemOffset + DimmOffset, DimmSubTable, - DimmSubTable->Length, AcpiDmTableInfoPmtt2); + Offset + MemOffset + DimmOffset, DimmSubTable, + DimmSubTable->Length, AcpiDmTableInfoPmtt2); if (ACPI_FAILURE (Status)) { return; @@ -3188,7 +3225,7 @@ AcpiDmDumpS3pt ( AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (S3ptTable->Length, Offset, SubTable, - SubTable->Length, AcpiDmTableInfoS3ptHdr); + SubTable->Length, AcpiDmTableInfoS3ptHdr); if (ACPI_FAILURE (Status)) { return 0; @@ -3208,7 +3245,8 @@ AcpiDmDumpS3pt ( default: - AcpiOsPrintf ("\n**** Unknown S3PT subtable type 0x%X\n", SubTable->Type); + AcpiOsPrintf ("\n**** Unknown S3PT subtable type 0x%X\n", + SubTable->Type); /* Attempt to continue */ @@ -3222,7 +3260,7 @@ AcpiDmDumpS3pt ( AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (S3ptTable->Length, Offset, SubTable, - SubTable->Length, InfoTable); + SubTable->Length, InfoTable); if (ACPI_FAILURE (Status)) { return 0; @@ -3255,8 +3293,9 @@ void AcpiDmDumpSlic ( ACPI_TABLE_HEADER *Table) { + (void) AcpiDmDumpTable (Table->Length, sizeof (ACPI_TABLE_HEADER), Table, - Table->Length - sizeof (*Table), AcpiDmTableInfoSlic); + Table->Length - sizeof (*Table), AcpiDmTableInfoSlic); } @@ -3309,7 +3348,8 @@ AcpiDmDumpSlit ( if (Offset >= Table->Length) { - AcpiOsPrintf ("\n**** Not enough room in table for all localities\n"); + AcpiOsPrintf ( + "\n**** Not enough room in table for all localities\n"); return; } @@ -3377,7 +3417,7 @@ AcpiDmDumpSrat ( AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Table->Length, Offset, SubTable, - SubTable->Length, AcpiDmTableInfoSratHdr); + SubTable->Length, AcpiDmTableInfoSratHdr); if (ACPI_FAILURE (Status)) { return; @@ -3406,7 +3446,8 @@ AcpiDmDumpSrat ( break; default: - AcpiOsPrintf ("\n**** Unknown SRAT subtable type 0x%X\n", SubTable->Type); + AcpiOsPrintf ("\n**** Unknown SRAT subtable type 0x%X\n", + SubTable->Type); /* Attempt to continue */ @@ -3420,7 +3461,7 @@ AcpiDmDumpSrat ( AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Table->Length, Offset, SubTable, - SubTable->Length, InfoTable); + SubTable->Length, InfoTable); if (ACPI_FAILURE (Status)) { return; @@ -3430,7 +3471,8 @@ NextSubTable: /* Point to next subtable */ Offset += SubTable->Length; - SubTable = ACPI_ADD_PTR (ACPI_SUBTABLE_HEADER, SubTable, SubTable->Length); + SubTable = ACPI_ADD_PTR (ACPI_SUBTABLE_HEADER, SubTable, + SubTable->Length); } } @@ -3594,7 +3636,7 @@ AcpiDmDumpVrtc ( AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Table->Length, Offset, SubTable, - sizeof (ACPI_VRTC_ENTRY), AcpiDmTableInfoVrtc0); + sizeof (ACPI_VRTC_ENTRY), AcpiDmTableInfoVrtc0); if (ACPI_FAILURE (Status)) { return; @@ -3603,7 +3645,8 @@ AcpiDmDumpVrtc ( /* Point to next subtable */ Offset += sizeof (ACPI_VRTC_ENTRY); - SubTable = ACPI_ADD_PTR (ACPI_VRTC_ENTRY, SubTable, sizeof (ACPI_VRTC_ENTRY)); + SubTable = ACPI_ADD_PTR (ACPI_VRTC_ENTRY, SubTable, + sizeof (ACPI_VRTC_ENTRY)); } } @@ -3646,7 +3689,7 @@ AcpiDmDumpWdat ( AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Table->Length, Offset, SubTable, - sizeof (ACPI_WDAT_ENTRY), AcpiDmTableInfoWdat0); + sizeof (ACPI_WDAT_ENTRY), AcpiDmTableInfoWdat0); if (ACPI_FAILURE (Status)) { return; @@ -3655,10 +3698,12 @@ AcpiDmDumpWdat ( /* Point to next subtable */ Offset += sizeof (ACPI_WDAT_ENTRY); - SubTable = ACPI_ADD_PTR (ACPI_WDAT_ENTRY, SubTable, sizeof (ACPI_WDAT_ENTRY)); + SubTable = ACPI_ADD_PTR (ACPI_WDAT_ENTRY, SubTable, + sizeof (ACPI_WDAT_ENTRY)); } } + /******************************************************************************* * * FUNCTION: AcpiDmDumpWpbt diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/common/getopt.c b/src/add-ons/kernel/bus_managers/acpi/acpica/common/getopt.c index 7d0e8e21ec..23c4495302 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/common/getopt.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/common/getopt.c @@ -119,6 +119,7 @@ * Option strings: * "f" - Option has no arguments * "f:" - Option requires an argument + * "f+" - Option has an optional argument * "f^" - Option has optional single-char sub-options * "f|" - Option has required single-char sub-options */ @@ -162,6 +163,7 @@ AcpiGetoptArgument ( int argc, char **argv) { + AcpiGbl_Optind--; CurrentCharPtr++; @@ -254,7 +256,8 @@ AcpiGetopt( } else if (++AcpiGbl_Optind >= argc) { - ACPI_OPTION_ERROR ("Option requires an argument: -", CurrentChar); + ACPI_OPTION_ERROR ( + "Option requires an argument: -", CurrentChar); CurrentCharPtr = 1; return ('?'); @@ -315,7 +318,9 @@ AcpiGetopt( } else { - ACPI_OPTION_ERROR ("Option requires a single-character suboption: -", CurrentChar); + ACPI_OPTION_ERROR ( + "Option requires a single-character suboption: -", + CurrentChar); CurrentCharPtr = 1; return ('?'); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsargs.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsargs.c index 344e55ec35..6343d32f5b 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsargs.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsargs.c @@ -186,7 +186,7 @@ AcpiDsExecuteArguments ( } Status = AcpiDsInitAmlWalk (WalkState, Op, NULL, AmlStart, - AmlLength, NULL, ACPI_IMODE_LOAD_PASS1); + AmlLength, NULL, ACPI_IMODE_LOAD_PASS1); if (ACPI_FAILURE (Status)) { AcpiDsDeleteWalkState (WalkState); @@ -233,7 +233,7 @@ AcpiDsExecuteArguments ( /* Execute the opcode and arguments */ Status = AcpiDsInitAmlWalk (WalkState, Op, NULL, AmlStart, - AmlLength, NULL, ACPI_IMODE_EXECUTE); + AmlLength, NULL, ACPI_IMODE_EXECUTE); if (ACPI_FAILURE (Status)) { AcpiDsDeleteWalkState (WalkState); @@ -286,8 +286,8 @@ AcpiDsGetBufferFieldArguments ( ExtraDesc = AcpiNsGetSecondaryObject (ObjDesc); Node = ObjDesc->BufferField.Node; - ACPI_DEBUG_EXEC (AcpiUtDisplayInitPathname (ACPI_TYPE_BUFFER_FIELD, - Node, NULL)); + ACPI_DEBUG_EXEC (AcpiUtDisplayInitPathname ( + ACPI_TYPE_BUFFER_FIELD, Node, NULL)); ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "[%4.4s] BufferField Arg Init\n", AcpiUtGetNodeName (Node))); @@ -295,7 +295,7 @@ AcpiDsGetBufferFieldArguments ( /* Execute the AML code for the TermArg arguments */ Status = AcpiDsExecuteArguments (Node, Node->Parent, - ExtraDesc->Extra.AmlLength, ExtraDesc->Extra.AmlStart); + ExtraDesc->Extra.AmlLength, ExtraDesc->Extra.AmlStart); return_ACPI_STATUS (Status); } @@ -335,8 +335,8 @@ AcpiDsGetBankFieldArguments ( ExtraDesc = AcpiNsGetSecondaryObject (ObjDesc); Node = ObjDesc->BankField.Node; - ACPI_DEBUG_EXEC (AcpiUtDisplayInitPathname (ACPI_TYPE_LOCAL_BANK_FIELD, - Node, NULL)); + ACPI_DEBUG_EXEC (AcpiUtDisplayInitPathname ( + ACPI_TYPE_LOCAL_BANK_FIELD, Node, NULL)); ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "[%4.4s] BankField Arg Init\n", AcpiUtGetNodeName (Node))); @@ -344,7 +344,7 @@ AcpiDsGetBankFieldArguments ( /* Execute the AML code for the TermArg arguments */ Status = AcpiDsExecuteArguments (Node, Node->Parent, - ExtraDesc->Extra.AmlLength, ExtraDesc->Extra.AmlStart); + ExtraDesc->Extra.AmlLength, ExtraDesc->Extra.AmlStart); return_ACPI_STATUS (Status); } @@ -384,7 +384,8 @@ AcpiDsGetBufferArguments ( if (!Node) { ACPI_ERROR ((AE_INFO, - "No pointer back to namespace node in buffer object %p", ObjDesc)); + "No pointer back to namespace node in buffer object %p", + ObjDesc)); return_ACPI_STATUS (AE_AML_INTERNAL); } @@ -393,7 +394,7 @@ AcpiDsGetBufferArguments ( /* Execute the AML code for the TermArg arguments */ Status = AcpiDsExecuteArguments (Node, Node, - ObjDesc->Buffer.AmlLength, ObjDesc->Buffer.AmlStart); + ObjDesc->Buffer.AmlLength, ObjDesc->Buffer.AmlStart); return_ACPI_STATUS (Status); } @@ -442,7 +443,7 @@ AcpiDsGetPackageArguments ( /* Execute the AML code for the TermArg arguments */ Status = AcpiDsExecuteArguments (Node, Node, - ObjDesc->Package.AmlLength, ObjDesc->Package.AmlStart); + ObjDesc->Package.AmlLength, ObjDesc->Package.AmlStart); return_ACPI_STATUS (Status); } @@ -487,22 +488,23 @@ AcpiDsGetRegionArguments ( Node = ObjDesc->Region.Node; - ACPI_DEBUG_EXEC (AcpiUtDisplayInitPathname (ACPI_TYPE_REGION, Node, NULL)); + ACPI_DEBUG_EXEC (AcpiUtDisplayInitPathname ( + ACPI_TYPE_REGION, Node, NULL)); - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "[%4.4s] OpRegion Arg Init at AML %p\n", + ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, + "[%4.4s] OpRegion Arg Init at AML %p\n", AcpiUtGetNodeName (Node), ExtraDesc->Extra.AmlStart)); /* Execute the argument AML */ Status = AcpiDsExecuteArguments (Node, ExtraDesc->Extra.ScopeNode, - ExtraDesc->Extra.AmlLength, ExtraDesc->Extra.AmlStart); + ExtraDesc->Extra.AmlLength, ExtraDesc->Extra.AmlStart); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } Status = AcpiUtAddAddressRange (ObjDesc->Region.SpaceId, - ObjDesc->Region.Address, ObjDesc->Region.Length, - Node); + ObjDesc->Region.Address, ObjDesc->Region.Length, Node); return_ACPI_STATUS (Status); } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dscontrol.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dscontrol.c index a069ed51a1..270cf0e091 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dscontrol.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dscontrol.c @@ -119,6 +119,7 @@ #include "amlcode.h" #include "acdispat.h" #include "acinterp.h" +#include "acdebug.h" #define _COMPONENT ACPI_DISPATCHER ACPI_MODULE_NAME ("dscontrol") @@ -191,9 +192,12 @@ AcpiDsExecBeginControlOp ( * Save a pointer to the predicate for multiple executions * of a loop */ - ControlState->Control.AmlPredicateStart = WalkState->ParserState.Aml - 1; - ControlState->Control.PackageEnd = WalkState->ParserState.PkgEnd; - ControlState->Control.Opcode = Op->Common.AmlOpcode; + ControlState->Control.AmlPredicateStart = + WalkState->ParserState.Aml - 1; + ControlState->Control.PackageEnd = + WalkState->ParserState.PkgEnd; + ControlState->Control.Opcode = + Op->Common.AmlOpcode; /* Push the control state on this walk's control stack */ @@ -304,7 +308,8 @@ AcpiDsExecEndControlOp ( * another time */ Status = AE_CTRL_PENDING; - WalkState->AmlLastWhile = ControlState->Control.AmlPredicateStart; + WalkState->AmlLastWhile = + ControlState->Control.AmlPredicateStart; break; } @@ -348,7 +353,8 @@ AcpiDsExecEndControlOp ( * an arg or local), resolve it now because it may * cease to exist at the end of the method. */ - Status = AcpiExResolveToValue (&WalkState->Operands [0], WalkState); + Status = AcpiExResolveToValue ( + &WalkState->Operands [0], WalkState); if (ACPI_FAILURE (Status)) { return (Status); @@ -377,11 +383,15 @@ AcpiDsExecEndControlOp ( * Allow references created by the Index operator to return * unchanged. */ - if ((ACPI_GET_DESCRIPTOR_TYPE (WalkState->Results->Results.ObjDesc[0]) == ACPI_DESC_TYPE_OPERAND) && - ((WalkState->Results->Results.ObjDesc [0])->Common.Type == ACPI_TYPE_LOCAL_REFERENCE) && - ((WalkState->Results->Results.ObjDesc [0])->Reference.Class != ACPI_REFCLASS_INDEX)) + if ((ACPI_GET_DESCRIPTOR_TYPE (WalkState->Results->Results.ObjDesc[0]) == + ACPI_DESC_TYPE_OPERAND) && + ((WalkState->Results->Results.ObjDesc [0])->Common.Type == + ACPI_TYPE_LOCAL_REFERENCE) && + ((WalkState->Results->Results.ObjDesc [0])->Reference.Class != + ACPI_REFCLASS_INDEX)) { - Status = AcpiExResolveToValue (&WalkState->Results->Results.ObjDesc [0], WalkState); + Status = AcpiExResolveToValue ( + &WalkState->Results->Results.ObjDesc [0], WalkState); if (ACPI_FAILURE (Status)) { return (Status); @@ -399,9 +409,9 @@ AcpiDsExecEndControlOp ( AcpiUtRemoveReference (WalkState->Operands [0]); } - WalkState->Operands [0] = NULL; - WalkState->NumOperands = 0; - WalkState->ReturnDesc = NULL; + WalkState->Operands[0] = NULL; + WalkState->NumOperands = 0; + WalkState->ReturnDesc = NULL; } @@ -422,20 +432,12 @@ AcpiDsExecEndControlOp ( case AML_BREAK_POINT_OP: - /* - * Set the single-step flag. This will cause the debugger (if present) - * to break to the console within the AML debugger at the start of the - * next AML instruction. - */ - ACPI_DEBUGGER_EXEC ( - AcpiGbl_CmSingleStep = TRUE); - ACPI_DEBUGGER_EXEC ( - AcpiOsPrintf ("**break** Executed AML BreakPoint opcode\n")); + AcpiDbSignalBreakPoint (WalkState); /* Call to the OSL in case OS wants a piece of the action */ Status = AcpiOsSignal (ACPI_SIGNAL_BREAKPOINT, - "Executed AML Breakpoint opcode"); + "Executed AML Breakpoint opcode"); break; case AML_BREAK_OP: @@ -459,7 +461,8 @@ AcpiDsExecEndControlOp ( /* Was: WalkState->AmlLastWhile = WalkState->ControlState->Control.AmlPredicateStart; */ - WalkState->AmlLastWhile = WalkState->ControlState->Control.PackageEnd; + WalkState->AmlLastWhile = + WalkState->ControlState->Control.PackageEnd; /* Return status depending on opcode */ diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsdebug.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsdebug.c index 80b3e0cbbf..02fdebc416 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsdebug.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsdebug.c @@ -247,6 +247,7 @@ AcpiDsDumpMethodStack ( ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "\n**** Exception %s during execution of method ", AcpiFormatException (Status))); + AcpiDsPrintNodePathname (WalkState->MethodNode, NULL); /* Display stack of executing methods */ @@ -263,8 +264,8 @@ AcpiDsDumpMethodStack ( if (MethodDesc) { AcpiExStopTraceMethod ( - (ACPI_NAMESPACE_NODE *) MethodDesc->Method.Node, - MethodDesc, WalkState); + (ACPI_NAMESPACE_NODE *) MethodDesc->Method.Node, + MethodDesc, WalkState); } ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, @@ -292,8 +293,8 @@ AcpiDsDumpMethodStack ( { /* * This method has called another method - * NOTE: the method call parse subtree is already deleted at this - * point, so we cannot disassemble the method invocation. + * NOTE: the method call parse subtree is already deleted at + * this point, so we cannot disassemble the method invocation. */ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_DISPATCH, "Call to method ")); AcpiDsPrintNodePathname (PreviousMethod, NULL); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsfield.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsfield.c index cf8c189460..b2d5cfd81d 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsfield.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsfield.c @@ -187,6 +187,7 @@ AcpiDsCreateExternalRegion ( * insert the name into the namespace. */ AcpiDmAddOpToExternalList (Op, Path, ACPI_TYPE_REGION, 0, 0); + Status = AcpiNsLookup (WalkState->ScopeInfo, Path, ACPI_TYPE_REGION, ACPI_IMODE_LOAD_PASS1, ACPI_NS_SEARCH_PARENT, WalkState, Node); if (ACPI_FAILURE (Status)) @@ -282,7 +283,7 @@ AcpiDsCreateBufferField ( /* Creating new namespace node, should not already exist */ Flags = ACPI_NS_NO_UPSEARCH | ACPI_NS_DONT_OPEN_SCOPE | - ACPI_NS_ERROR_IF_FOUND; + ACPI_NS_ERROR_IF_FOUND; /* * Mark node temporary if we are executing a normal control @@ -296,9 +297,9 @@ AcpiDsCreateBufferField ( /* Enter the NameString into the namespace */ - Status = AcpiNsLookup (WalkState->ScopeInfo, Arg->Common.Value.String, - ACPI_TYPE_ANY, ACPI_IMODE_LOAD_PASS1, - Flags, WalkState, &Node); + Status = AcpiNsLookup (WalkState->ScopeInfo, + Arg->Common.Value.String, ACPI_TYPE_ANY, + ACPI_IMODE_LOAD_PASS1, Flags, WalkState, &Node); if (ACPI_FAILURE (Status)) { ACPI_ERROR_NAMESPACE (Arg->Common.Value.String, Status); @@ -339,13 +340,13 @@ AcpiDsCreateBufferField ( } /* - * Remember location in AML stream of the field unit opcode and operands -- - * since the buffer and index operands must be evaluated. + * Remember location in AML stream of the field unit opcode and operands + * -- since the buffer and index operands must be evaluated. */ - SecondDesc = ObjDesc->Common.NextObject; - SecondDesc->Extra.AmlStart = Op->Named.Data; + SecondDesc = ObjDesc->Common.NextObject; + SecondDesc->Extra.AmlStart = Op->Named.Data; SecondDesc->Extra.AmlLength = Op->Named.Length; - ObjDesc->BufferField.Node = Node; + ObjDesc->BufferField.Node = Node; /* Attach constructed field descriptors to parent node */ @@ -413,8 +414,8 @@ AcpiDsGetFieldNames ( { case AML_INT_RESERVEDFIELD_OP: - Position = (UINT64) Info->FieldBitPosition - + (UINT64) Arg->Common.Value.Size; + Position = (UINT64) Info->FieldBitPosition + + (UINT64) Arg->Common.Value.Size; if (Position > ACPI_UINT32_MAX) { @@ -447,11 +448,13 @@ AcpiDsGetFieldNames ( /* AccessAttribute (AttribQuick, AttribByte, etc.) */ - Info->Attribute = (UINT8) ((Arg->Common.Value.Integer >> 8) & 0xFF); + Info->Attribute = (UINT8) + ((Arg->Common.Value.Integer >> 8) & 0xFF); /* AccessLength (for serial/buffer protocols) */ - Info->AccessLength = (UINT8) ((Arg->Common.Value.Integer >> 16) & 0xFF); + Info->AccessLength = (UINT8) + ((Arg->Common.Value.Integer >> 16) & 0xFF); break; case AML_INT_CONNECTION_OP: @@ -478,9 +481,9 @@ AcpiDsGetFieldNames ( /* Lookup the Connection() namepath, it should already exist */ Status = AcpiNsLookup (WalkState->ScopeInfo, - Child->Common.Value.Name, ACPI_TYPE_ANY, - ACPI_IMODE_EXECUTE, ACPI_NS_DONT_OPEN_SCOPE, - WalkState, &Info->ConnectionNode); + Child->Common.Value.Name, ACPI_TYPE_ANY, + ACPI_IMODE_EXECUTE, ACPI_NS_DONT_OPEN_SCOPE, + WalkState, &Info->ConnectionNode); if (ACPI_FAILURE (Status)) { ACPI_ERROR_NAMESPACE (Child->Common.Value.Name, Status); @@ -494,9 +497,9 @@ AcpiDsGetFieldNames ( /* Lookup the name, it should already exist */ Status = AcpiNsLookup (WalkState->ScopeInfo, - (char *) &Arg->Named.Name, Info->FieldType, - ACPI_IMODE_EXECUTE, ACPI_NS_DONT_OPEN_SCOPE, - WalkState, &Info->FieldNode); + (char *) &Arg->Named.Name, Info->FieldType, + ACPI_IMODE_EXECUTE, ACPI_NS_DONT_OPEN_SCOPE, + WalkState, &Info->FieldNode); if (ACPI_FAILURE (Status)) { ACPI_ERROR_NAMESPACE ((char *) &Arg->Named.Name, Status); @@ -525,8 +528,8 @@ AcpiDsGetFieldNames ( /* Keep track of bit position for the next field */ - Position = (UINT64) Info->FieldBitPosition - + (UINT64) Arg->Common.Value.Size; + Position = (UINT64) Info->FieldBitPosition + + (UINT64) Arg->Common.Value.Size; if (Position > ACPI_UINT32_MAX) { @@ -543,7 +546,8 @@ AcpiDsGetFieldNames ( default: ACPI_ERROR ((AE_INFO, - "Invalid opcode in field list: 0x%X", Arg->Common.AmlOpcode)); + "Invalid opcode in field list: 0x%X", + Arg->Common.AmlOpcode)); return_ACPI_STATUS (AE_AML_BAD_OPCODE); } @@ -589,8 +593,8 @@ AcpiDsCreateField ( if (!RegionNode) { Status = AcpiNsLookup (WalkState->ScopeInfo, Arg->Common.Value.Name, - ACPI_TYPE_REGION, ACPI_IMODE_EXECUTE, - ACPI_NS_SEARCH_PARENT, WalkState, &RegionNode); + ACPI_TYPE_REGION, ACPI_IMODE_EXECUTE, + ACPI_NS_SEARCH_PARENT, WalkState, &RegionNode); #ifdef ACPI_ASL_COMPILER Status = AcpiDsCreateExternalRegion (Status, Arg, Arg->Common.Value.Name, WalkState, &RegionNode); @@ -696,7 +700,7 @@ AcpiDsInitFieldObjects ( /* Creating new namespace node(s), should not already exist */ Flags = ACPI_NS_NO_UPSEARCH | ACPI_NS_DONT_OPEN_SCOPE | - ACPI_NS_ERROR_IF_FOUND; + ACPI_NS_ERROR_IF_FOUND; /* * Mark node(s) temporary if we are executing a normal control @@ -721,8 +725,8 @@ AcpiDsInitFieldObjects ( if (Arg->Common.AmlOpcode == AML_INT_NAMEDFIELD_OP) { Status = AcpiNsLookup (WalkState->ScopeInfo, - (char *) &Arg->Named.Name, Type, ACPI_IMODE_LOAD_PASS1, - Flags, WalkState, &Node); + (char *) &Arg->Named.Name, Type, ACPI_IMODE_LOAD_PASS1, + Flags, WalkState, &Node); if (ACPI_FAILURE (Status)) { ACPI_ERROR_NAMESPACE ((char *) &Arg->Named.Name, Status); @@ -782,8 +786,8 @@ AcpiDsCreateBankField ( if (!RegionNode) { Status = AcpiNsLookup (WalkState->ScopeInfo, Arg->Common.Value.Name, - ACPI_TYPE_REGION, ACPI_IMODE_EXECUTE, - ACPI_NS_SEARCH_PARENT, WalkState, &RegionNode); + ACPI_TYPE_REGION, ACPI_IMODE_EXECUTE, + ACPI_NS_SEARCH_PARENT, WalkState, &RegionNode); #ifdef ACPI_ASL_COMPILER Status = AcpiDsCreateExternalRegion (Status, Arg, Arg->Common.Value.Name, WalkState, &RegionNode); @@ -799,8 +803,8 @@ AcpiDsCreateBankField ( Arg = Arg->Common.Next; Status = AcpiNsLookup (WalkState->ScopeInfo, Arg->Common.Value.String, - ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE, - ACPI_NS_SEARCH_PARENT, WalkState, &Info.RegisterNode); + ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE, + ACPI_NS_SEARCH_PARENT, WalkState, &Info.RegisterNode); if (ACPI_FAILURE (Status)) { ACPI_ERROR_NAMESPACE (Arg->Common.Value.String, Status); @@ -826,11 +830,12 @@ AcpiDsCreateBankField ( /* * Use Info.DataRegisterNode to store BankField Op - * It's safe because DataRegisterNode will never be used when create bank field - * We store AmlStart and AmlLength in the BankField Op for late evaluation - * Used in AcpiExPrepFieldValue(Info) + * It's safe because DataRegisterNode will never be used when create + * bank field \we store AmlStart and AmlLength in the BankField Op for + * late evaluation. Used in AcpiExPrepFieldValue(Info) * - * TBD: Or, should we add a field in ACPI_CREATE_FIELD_INFO, like "void *ParentOp"? + * TBD: Or, should we add a field in ACPI_CREATE_FIELD_INFO, like + * "void *ParentOp"? */ Info.DataRegisterNode = (ACPI_NAMESPACE_NODE*) Op; @@ -871,8 +876,8 @@ AcpiDsCreateIndexField ( Arg = Op->Common.Value.Arg; Status = AcpiNsLookup (WalkState->ScopeInfo, Arg->Common.Value.String, - ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE, - ACPI_NS_SEARCH_PARENT, WalkState, &Info.RegisterNode); + ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE, + ACPI_NS_SEARCH_PARENT, WalkState, &Info.RegisterNode); if (ACPI_FAILURE (Status)) { ACPI_ERROR_NAMESPACE (Arg->Common.Value.String, Status); @@ -883,8 +888,8 @@ AcpiDsCreateIndexField ( Arg = Arg->Common.Next; Status = AcpiNsLookup (WalkState->ScopeInfo, Arg->Common.Value.String, - ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE, - ACPI_NS_SEARCH_PARENT, WalkState, &Info.DataRegisterNode); + ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE, + ACPI_NS_SEARCH_PARENT, WalkState, &Info.DataRegisterNode); if (ACPI_FAILURE (Status)) { ACPI_ERROR_NAMESPACE (Arg->Common.Value.String, Status); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsinit.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsinit.c index d24cc016f3..e153717a03 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsinit.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsinit.c @@ -314,7 +314,7 @@ AcpiDsInitializeObjects ( * the namespace reader lock. */ Status = AcpiNsWalkNamespace (ACPI_TYPE_ANY, StartNode, ACPI_UINT32_MAX, - ACPI_NS_WALK_UNLOCK, AcpiDsInitOneObject, NULL, &Info, NULL); + ACPI_NS_WALK_UNLOCK, AcpiDsInitOneObject, NULL, &Info, NULL); if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, "During WalkNamespace")); @@ -331,17 +331,19 @@ AcpiDsInitializeObjects ( if (ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_DSDT)) { - ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INIT, "\nInitializing Namespace objects:\n")); + ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INIT, + "\nInitializing Namespace objects:\n")); } /* Summary of objects initialized */ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INIT, - "Table [%4.4s:%8.8s] (id %.2X) - %4u Objects with %3u Devices, " + "Table [%4.4s: %-8.8s] (id %.2X) - %4u Objects with %3u Devices, " "%3u Regions, %4u Methods (%u/%u/%u Serial/Non/Cvt)\n", - Table->Signature, Table->OemTableId, OwnerId, Info.ObjectCount, Info.DeviceCount, - Info.OpRegionCount, Info.MethodCount, Info.SerialMethodCount, - Info.NonSerialMethodCount, Info.SerializedMethodCount)); + Table->Signature, Table->OemTableId, OwnerId, Info.ObjectCount, + Info.DeviceCount,Info.OpRegionCount, Info.MethodCount, + Info.SerialMethodCount, Info.NonSerialMethodCount, + Info.SerializedMethodCount)); ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "%u Methods, %u Regions\n", Info.MethodCount, Info.OpRegionCount)); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsmethod.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsmethod.c index 10c354821e..0436ee1244 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsmethod.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsmethod.c @@ -199,8 +199,8 @@ AcpiDsAutoSerializeMethod ( return_ACPI_STATUS (AE_NO_MEMORY); } - Status = AcpiDsInitAmlWalk (WalkState, Op, Node, ObjDesc->Method.AmlStart, - ObjDesc->Method.AmlLength, NULL, 0); + Status = AcpiDsInitAmlWalk (WalkState, Op, Node, + ObjDesc->Method.AmlStart, ObjDesc->Method.AmlLength, NULL, 0); if (ACPI_FAILURE (Status)) { AcpiDsDeleteWalkState (WalkState); @@ -323,12 +323,12 @@ AcpiDsMethodError ( * AE_OK, in which case the executing method will not be aborted. */ AmlOffset = (UINT32) ACPI_PTR_DIFF (WalkState->Aml, - WalkState->ParserState.AmlStart); + WalkState->ParserState.AmlStart); Status = AcpiGbl_ExceptionHandler (Status, - WalkState->MethodNode ? - WalkState->MethodNode->Name.Integer : 0, - WalkState->Opcode, AmlOffset, NULL); + WalkState->MethodNode ? + WalkState->MethodNode->Name.Integer : 0, + WalkState->Opcode, AmlOffset, NULL); AcpiExEnterInterpreter (); } @@ -472,10 +472,12 @@ AcpiDsBeginMethodExecution ( */ if (WalkState && (!(ObjDesc->Method.InfoFlags & ACPI_METHOD_IGNORE_SYNC_LEVEL)) && - (WalkState->Thread->CurrentSyncLevel > ObjDesc->Method.Mutex->Mutex.SyncLevel)) + (WalkState->Thread->CurrentSyncLevel > + ObjDesc->Method.Mutex->Mutex.SyncLevel)) { ACPI_ERROR ((AE_INFO, - "Cannot acquire Mutex for method [%4.4s], current SyncLevel is too large (%u)", + "Cannot acquire Mutex for method [%4.4s]" + ", current SyncLevel is too large (%u)", AcpiUtGetNodeName (MethodNode), WalkState->Thread->CurrentSyncLevel)); @@ -488,14 +490,15 @@ AcpiDsBeginMethodExecution ( */ if (!WalkState || !ObjDesc->Method.Mutex->Mutex.ThreadId || - (WalkState->Thread->ThreadId != ObjDesc->Method.Mutex->Mutex.ThreadId)) + (WalkState->Thread->ThreadId != + ObjDesc->Method.Mutex->Mutex.ThreadId)) { /* * Acquire the method mutex. This releases the interpreter if we * block (and reacquires it before it returns) */ - Status = AcpiExSystemWaitMutex (ObjDesc->Method.Mutex->Mutex.OsMutex, - ACPI_WAIT_FOREVER); + Status = AcpiExSystemWaitMutex ( + ObjDesc->Method.Mutex->Mutex.OsMutex, ACPI_WAIT_FOREVER); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -508,8 +511,22 @@ AcpiDsBeginMethodExecution ( ObjDesc->Method.Mutex->Mutex.OriginalSyncLevel = WalkState->Thread->CurrentSyncLevel; - ObjDesc->Method.Mutex->Mutex.ThreadId = WalkState->Thread->ThreadId; - WalkState->Thread->CurrentSyncLevel = ObjDesc->Method.SyncLevel; + ObjDesc->Method.Mutex->Mutex.ThreadId = + WalkState->Thread->ThreadId; + + /* + * Update the current SyncLevel only if this is not an auto- + * serialized method. In the auto case, we have to ignore + * the sync level for the method mutex (created for the + * auto-serialization) because we have no idea of what the + * sync level should be. Therefore, just ignore it. + */ + if (!(ObjDesc->Method.InfoFlags & + ACPI_METHOD_IGNORE_SYNC_LEVEL)) + { + WalkState->Thread->CurrentSyncLevel = + ObjDesc->Method.SyncLevel; + } } else { @@ -587,7 +604,8 @@ AcpiDsCallControlMethod ( ACPI_FUNCTION_TRACE_PTR (DsCallControlMethod, ThisWalkState); - ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Calling method %p, currentstate=%p\n", + ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, + "Calling method %p, currentstate=%p\n", ThisWalkState->PrevOp, ThisWalkState)); /* @@ -607,8 +625,8 @@ AcpiDsCallControlMethod ( /* Init for new method, possibly wait on method mutex */ - Status = AcpiDsBeginMethodExecution (MethodNode, ObjDesc, - ThisWalkState); + Status = AcpiDsBeginMethodExecution ( + MethodNode, ObjDesc, ThisWalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -616,8 +634,8 @@ AcpiDsCallControlMethod ( /* Begin method parse/execution. Create a new walk state */ - NextWalkState = AcpiDsCreateWalkState (ObjDesc->Method.OwnerId, - NULL, ObjDesc, Thread); + NextWalkState = AcpiDsCreateWalkState ( + ObjDesc->Method.OwnerId, NULL, ObjDesc, Thread); if (!NextWalkState) { Status = AE_NO_MEMORY; @@ -646,8 +664,8 @@ AcpiDsCallControlMethod ( Info->Parameters = &ThisWalkState->Operands[0]; Status = AcpiDsInitAmlWalk (NextWalkState, NULL, MethodNode, - ObjDesc->Method.AmlStart, ObjDesc->Method.AmlLength, - Info, ACPI_IMODE_EXECUTE); + ObjDesc->Method.AmlStart, ObjDesc->Method.AmlLength, + Info, ACPI_IMODE_EXECUTE); ACPI_FREE (Info); if (ACPI_FAILURE (Status)) @@ -842,7 +860,8 @@ AcpiDsTerminateControlMethod ( WalkState->Thread->CurrentSyncLevel = MethodDesc->Method.Mutex->Mutex.OriginalSyncLevel; - AcpiOsReleaseMutex (MethodDesc->Method.Mutex->Mutex.OsMutex); + AcpiOsReleaseMutex ( + MethodDesc->Method.Mutex->Mutex.OsMutex); MethodDesc->Method.Mutex->Mutex.ThreadId = 0; } } @@ -872,7 +891,8 @@ AcpiDsTerminateControlMethod ( if (MethodDesc->Method.InfoFlags & ACPI_METHOD_MODIFIED_NAMESPACE) { AcpiNsDeleteNamespaceByOwner (MethodDesc->Method.OwnerId); - MethodDesc->Method.InfoFlags &= ~ACPI_METHOD_MODIFIED_NAMESPACE; + MethodDesc->Method.InfoFlags &= + ~ACPI_METHOD_MODIFIED_NAMESPACE; } } } @@ -920,7 +940,8 @@ AcpiDsTerminateControlMethod ( if (WalkState) { ACPI_INFO ((AE_INFO, - "Marking method %4.4s as Serialized because of AE_ALREADY_EXISTS error", + "Marking method %4.4s as Serialized " + "because of AE_ALREADY_EXISTS error", WalkState->MethodNode->Name.Ascii)); } @@ -935,7 +956,9 @@ AcpiDsTerminateControlMethod ( * marking the method permanently as Serialized when the last * thread exits here. */ - MethodDesc->Method.InfoFlags &= ~ACPI_METHOD_SERIALIZED_PENDING; + MethodDesc->Method.InfoFlags &= + ~ACPI_METHOD_SERIALIZED_PENDING; + MethodDesc->Method.InfoFlags |= (ACPI_METHOD_SERIALIZED | ACPI_METHOD_IGNORE_SYNC_LEVEL); MethodDesc->Method.SyncLevel = 0; @@ -950,7 +973,7 @@ AcpiDsTerminateControlMethod ( } AcpiExStopTraceMethod ((ACPI_NAMESPACE_NODE *) MethodDesc->Method.Node, - MethodDesc, WalkState); + MethodDesc, WalkState); return_VOID; } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsmthdat.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsmthdat.c index 2b7fce243c..04892a6478 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsmthdat.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsmthdat.c @@ -182,7 +182,9 @@ AcpiDsMethodDataInit ( for (i = 0; i < ACPI_METHOD_NUM_ARGS; i++) { - ACPI_MOVE_32_TO_32 (&WalkState->Arguments[i].Name, NAMEOF_ARG_NTE); + ACPI_MOVE_32_TO_32 (&WalkState->Arguments[i].Name, + NAMEOF_ARG_NTE); + WalkState->Arguments[i].Name.Integer |= (i << 24); WalkState->Arguments[i].DescriptorType = ACPI_DESC_TYPE_NAMED; WalkState->Arguments[i].Type = ACPI_TYPE_ANY; @@ -193,7 +195,8 @@ AcpiDsMethodDataInit ( for (i = 0; i < ACPI_METHOD_NUM_LOCALS; i++) { - ACPI_MOVE_32_TO_32 (&WalkState->LocalVariables[i].Name, NAMEOF_LOCAL_NTE); + ACPI_MOVE_32_TO_32 (&WalkState->LocalVariables[i].Name, + NAMEOF_LOCAL_NTE); WalkState->LocalVariables[i].Name.Integer |= (i << 24); WalkState->LocalVariables[i].DescriptorType = ACPI_DESC_TYPE_NAMED; @@ -235,7 +238,7 @@ AcpiDsMethodDataDeleteAll ( if (WalkState->LocalVariables[Index].Object) { ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Deleting Local%u=%p\n", - Index, WalkState->LocalVariables[Index].Object)); + Index, WalkState->LocalVariables[Index].Object)); /* Detach object (if present) and remove a reference */ @@ -250,7 +253,7 @@ AcpiDsMethodDataDeleteAll ( if (WalkState->Arguments[Index].Object) { ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Deleting Arg%u=%p\n", - Index, WalkState->Arguments[Index].Object)); + Index, WalkState->Arguments[Index].Object)); /* Detach object (if present) and remove a reference */ @@ -293,7 +296,8 @@ AcpiDsMethodDataInitArgs ( if (!Params) { - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "No param list passed to method\n")); + ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, + "No parameter list passed to method\n")); return_ACPI_STATUS (AE_OK); } @@ -308,8 +312,8 @@ AcpiDsMethodDataInitArgs ( * Store the argument in the method/walk descriptor. * Do not copy the arg in order to implement call by reference */ - Status = AcpiDsMethodDataSetValue (ACPI_REFCLASS_ARG, Index, - Params[Index], WalkState); + Status = AcpiDsMethodDataSetValue ( + ACPI_REFCLASS_ARG, Index, Params[Index], WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -699,7 +703,8 @@ AcpiDsStoreObjectToLocal ( NewObjDesc = ObjDesc; if (ObjDesc->Common.ReferenceCount > 1) { - Status = AcpiUtCopyIobjectToIobject (ObjDesc, &NewObjDesc, WalkState); + Status = AcpiUtCopyIobjectToIobject ( + ObjDesc, &NewObjDesc, WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -736,13 +741,16 @@ AcpiDsStoreObjectToLocal ( * If we have a valid reference object that came from RefOf(), * do the indirect store */ - if ((ACPI_GET_DESCRIPTOR_TYPE (CurrentObjDesc) == ACPI_DESC_TYPE_OPERAND) && - (CurrentObjDesc->Common.Type == ACPI_TYPE_LOCAL_REFERENCE) && - (CurrentObjDesc->Reference.Class == ACPI_REFCLASS_REFOF)) + if ((ACPI_GET_DESCRIPTOR_TYPE (CurrentObjDesc) == + ACPI_DESC_TYPE_OPERAND) && + (CurrentObjDesc->Common.Type == + ACPI_TYPE_LOCAL_REFERENCE) && + (CurrentObjDesc->Reference.Class == + ACPI_REFCLASS_REFOF)) { ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, - "Arg (%p) is an ObjRef(Node), storing in node %p\n", - NewObjDesc, CurrentObjDesc)); + "Arg (%p) is an ObjRef(Node), storing in node %p\n", + NewObjDesc, CurrentObjDesc)); /* * Store this object to the Node (perform the indirect store) @@ -750,8 +758,8 @@ AcpiDsStoreObjectToLocal ( * specification rules on storing to Locals/Args. */ Status = AcpiExStoreObjectToNode (NewObjDesc, - CurrentObjDesc->Reference.Object, WalkState, - ACPI_NO_IMPLICIT_CONVERSION); + CurrentObjDesc->Reference.Object, WalkState, + ACPI_NO_IMPLICIT_CONVERSION); /* Remove local reference if we copied the object above */ @@ -759,6 +767,7 @@ AcpiDsStoreObjectToLocal ( { AcpiUtRemoveReference (NewObjDesc); } + return_ACPI_STATUS (Status); } } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsobject.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsobject.c index 0eb2f44272..d448aaf632 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsobject.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsobject.c @@ -174,10 +174,10 @@ AcpiDsBuildInternalObject ( if (!Op->Common.Node) { Status = AcpiNsLookup (WalkState->ScopeInfo, - Op->Common.Value.String, - ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE, - ACPI_NS_SEARCH_PARENT | ACPI_NS_DONT_OPEN_SCOPE, NULL, - ACPI_CAST_INDIRECT_PTR (ACPI_NAMESPACE_NODE, &(Op->Common.Node))); + Op->Common.Value.String, + ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE, + ACPI_NS_SEARCH_PARENT | ACPI_NS_DONT_OPEN_SCOPE, NULL, + ACPI_CAST_INDIRECT_PTR (ACPI_NAMESPACE_NODE, &(Op->Common.Node))); if (ACPI_FAILURE (Status)) { /* Check if we are resolving a named reference within a package */ @@ -233,8 +233,8 @@ AcpiDsBuildInternalObject ( ObjDesc = ACPI_CAST_PTR (ACPI_OPERAND_OBJECT, Op->Common.Node); Status = AcpiExResolveNodeToValue ( - ACPI_CAST_INDIRECT_PTR (ACPI_NAMESPACE_NODE, &ObjDesc), - WalkState); + ACPI_CAST_INDIRECT_PTR (ACPI_NAMESPACE_NODE, &ObjDesc), + WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -294,14 +294,14 @@ AcpiDsBuildInternalObject ( /* Create and init a new internal ACPI object */ ObjDesc = AcpiUtCreateInternalObject ( - (AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode))->ObjectType); + (AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode))->ObjectType); if (!ObjDesc) { return_ACPI_STATUS (AE_NO_MEMORY); } - Status = AcpiDsInitObjectFromOp (WalkState, Op, Op->Common.AmlOpcode, - &ObjDesc); + Status = AcpiDsInitObjectFromOp ( + WalkState, Op, Op->Common.AmlOpcode, &ObjDesc); if (ACPI_FAILURE (Status)) { AcpiUtRemoveReference (ObjDesc); @@ -408,8 +408,8 @@ AcpiDsBuildInternalBufferObj ( } else { - ObjDesc->Buffer.Pointer = ACPI_ALLOCATE_ZEROED ( - ObjDesc->Buffer.Length); + ObjDesc->Buffer.Pointer = + ACPI_ALLOCATE_ZEROED (ObjDesc->Buffer.Length); if (!ObjDesc->Buffer.Pointer) { AcpiUtDeleteObjectDesc (ObjDesc); @@ -421,7 +421,7 @@ AcpiDsBuildInternalBufferObj ( if (ByteList) { memcpy (ObjDesc->Buffer.Pointer, ByteList->Named.Data, - ByteListLength); + ByteListLength); } } @@ -540,8 +540,8 @@ AcpiDsBuildInternalPackageObj ( * invocation, so we special case it here */ Arg->Common.AmlOpcode = AML_INT_NAMEPATH_OP; - Status = AcpiDsBuildInternalObject (WalkState, Arg, - &ObjDesc->Package.Elements[i]); + Status = AcpiDsBuildInternalObject ( + WalkState, Arg, &ObjDesc->Package.Elements[i]); } else { @@ -553,8 +553,8 @@ AcpiDsBuildInternalPackageObj ( } else { - Status = AcpiDsBuildInternalObject (WalkState, Arg, - &ObjDesc->Package.Elements[i]); + Status = AcpiDsBuildInternalObject ( + WalkState, Arg, &ObjDesc->Package.Elements[i]); } if (*ObjDescPtr) @@ -611,7 +611,8 @@ AcpiDsBuildInternalPackageObj ( } ACPI_INFO ((AE_INFO, - "Actual Package length (%u) is larger than NumElements field (%u), truncated", + "Actual Package length (%u) is larger than " + "NumElements field (%u), truncated", i, ElementCount)); } else if (i < ElementCount) @@ -621,7 +622,8 @@ AcpiDsBuildInternalPackageObj ( * Note: this is not an error, the package is padded out with NULLs. */ ACPI_DEBUG_PRINT ((ACPI_DB_INFO, - "Package List length (%u) smaller than NumElements count (%u), padded with null elements\n", + "Package List length (%u) smaller than NumElements " + "count (%u), padded with null elements\n", i, ElementCount)); } @@ -677,8 +679,8 @@ AcpiDsCreateNode ( /* Build an internal object for the argument(s) */ - Status = AcpiDsBuildInternalObject (WalkState, Op->Common.Value.Arg, - &ObjDesc); + Status = AcpiDsBuildInternalObject ( + WalkState, Op->Common.Value.Arg, &ObjDesc); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -750,9 +752,9 @@ AcpiDsInitObjectFromOp ( /* * Defer evaluation of Buffer TermArg operand */ - ObjDesc->Buffer.Node = ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, - WalkState->Operands[0]); - ObjDesc->Buffer.AmlStart = Op->Named.Data; + ObjDesc->Buffer.Node = ACPI_CAST_PTR ( + ACPI_NAMESPACE_NODE, WalkState->Operands[0]); + ObjDesc->Buffer.AmlStart = Op->Named.Data; ObjDesc->Buffer.AmlLength = Op->Named.Length; break; @@ -760,9 +762,9 @@ AcpiDsInitObjectFromOp ( /* * Defer evaluation of Package TermArg operand */ - ObjDesc->Package.Node = ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, - WalkState->Operands[0]); - ObjDesc->Package.AmlStart = Op->Named.Data; + ObjDesc->Package.Node = ACPI_CAST_PTR ( + ACPI_NAMESPACE_NODE, WalkState->Operands[0]); + ObjDesc->Package.AmlStart = Op->Named.Data; ObjDesc->Package.AmlLength = Op->Named.Length; break; @@ -872,9 +874,9 @@ AcpiDsInitObjectFromOp ( #ifndef ACPI_NO_METHOD_EXECUTION Status = AcpiDsMethodDataGetNode (ACPI_REFCLASS_LOCAL, - ObjDesc->Reference.Value, WalkState, - ACPI_CAST_INDIRECT_PTR (ACPI_NAMESPACE_NODE, - &ObjDesc->Reference.Object)); + ObjDesc->Reference.Value, WalkState, + ACPI_CAST_INDIRECT_PTR (ACPI_NAMESPACE_NODE, + &ObjDesc->Reference.Object)); #endif break; @@ -887,9 +889,9 @@ AcpiDsInitObjectFromOp ( #ifndef ACPI_NO_METHOD_EXECUTION Status = AcpiDsMethodDataGetNode (ACPI_REFCLASS_ARG, - ObjDesc->Reference.Value, WalkState, - ACPI_CAST_INDIRECT_PTR (ACPI_NAMESPACE_NODE, - &ObjDesc->Reference.Object)); + ObjDesc->Reference.Value, WalkState, + ACPI_CAST_INDIRECT_PTR (ACPI_NAMESPACE_NODE, + &ObjDesc->Reference.Object)); #endif break; diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsopcode.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsopcode.c index 6e2c784816..45a7e7a9f4 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsopcode.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsopcode.c @@ -331,8 +331,8 @@ AcpiDsInitBufferField ( * For FieldFlags, use LOCK_RULE = 0 (NO_LOCK), * UPDATE_RULE = 0 (UPDATE_PRESERVE) */ - Status = AcpiExPrepCommonFieldObject (ObjDesc, FieldFlags, 0, - BitOffset, BitCount); + Status = AcpiExPrepCommonFieldObject ( + ObjDesc, FieldFlags, 0, BitOffset, BitCount); if (ACPI_FAILURE (Status)) { goto Cleanup; @@ -429,8 +429,8 @@ AcpiDsEvalBufferFieldOperands ( /* Resolve the operands */ - Status = AcpiExResolveOperands (Op->Common.AmlOpcode, - ACPI_WALK_OPERANDS, WalkState); + Status = AcpiExResolveOperands ( + Op->Common.AmlOpcode, ACPI_WALK_OPERANDS, WalkState); if (ACPI_FAILURE (Status)) { ACPI_ERROR ((AE_INFO, "(%s) bad operand(s), status 0x%X", @@ -446,16 +446,16 @@ AcpiDsEvalBufferFieldOperands ( /* NOTE: Slightly different operands for this opcode */ Status = AcpiDsInitBufferField (Op->Common.AmlOpcode, ObjDesc, - WalkState->Operands[0], WalkState->Operands[1], - WalkState->Operands[2], WalkState->Operands[3]); + WalkState->Operands[0], WalkState->Operands[1], + WalkState->Operands[2], WalkState->Operands[3]); } else { /* All other, CreateXxxField opcodes */ Status = AcpiDsInitBufferField (Op->Common.AmlOpcode, ObjDesc, - WalkState->Operands[0], WalkState->Operands[1], - NULL, WalkState->Operands[2]); + WalkState->Operands[0], WalkState->Operands[1], + NULL, WalkState->Operands[2]); } return_ACPI_STATUS (Status); @@ -515,8 +515,8 @@ AcpiDsEvalRegionOperands ( /* Resolve the length and address operands to numbers */ - Status = AcpiExResolveOperands (Op->Common.AmlOpcode, - ACPI_WALK_OPERANDS, WalkState); + Status = AcpiExResolveOperands ( + Op->Common.AmlOpcode, ACPI_WALK_OPERANDS, WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -544,18 +544,16 @@ AcpiDsEvalRegionOperands ( OperandDesc = WalkState->Operands[WalkState->NumOperands - 2]; ObjDesc->Region.Address = (ACPI_PHYSICAL_ADDRESS) - OperandDesc->Integer.Value; + OperandDesc->Integer.Value; AcpiUtRemoveReference (OperandDesc); ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "RgnObj %p Addr %8.8X%8.8X Len %X\n", - ObjDesc, - ACPI_FORMAT_UINT64 (ObjDesc->Region.Address), + ObjDesc, ACPI_FORMAT_UINT64 (ObjDesc->Region.Address), ObjDesc->Region.Length)); /* Now the address and length are valid for this opregion */ ObjDesc->Region.Flags |= AOPOBJ_DATA_VALID; - return_ACPI_STATUS (Status); } @@ -618,8 +616,8 @@ AcpiDsEvalTableRegionOperands ( * Resolve the Signature string, OemId string, * and OemTableId string operands */ - Status = AcpiExResolveOperands (Op->Common.AmlOpcode, - ACPI_WALK_OPERANDS, WalkState); + Status = AcpiExResolveOperands ( + Op->Common.AmlOpcode, ACPI_WALK_OPERANDS, WalkState); if (ACPI_FAILURE (Status)) { goto Cleanup; @@ -628,9 +626,9 @@ AcpiDsEvalTableRegionOperands ( /* Find the ACPI table */ Status = AcpiTbFindTable ( - Operand[0]->String.Pointer, - Operand[1]->String.Pointer, - Operand[2]->String.Pointer, &TableIndex); + Operand[0]->String.Pointer, + Operand[1]->String.Pointer, + Operand[2]->String.Pointer, &TableIndex); if (ACPI_FAILURE (Status)) { if (Status == AE_NOT_FOUND) @@ -721,8 +719,8 @@ AcpiDsEvalDataObjectOperands ( } Status = AcpiExResolveOperands (WalkState->Opcode, - &(WalkState->Operands [WalkState->NumOperands -1]), - WalkState); + &(WalkState->Operands [WalkState->NumOperands -1]), + WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -750,13 +748,15 @@ AcpiDsEvalDataObjectOperands ( { case AML_BUFFER_OP: - Status = AcpiDsBuildInternalBufferObj (WalkState, Op, Length, &ObjDesc); + Status = AcpiDsBuildInternalBufferObj ( + WalkState, Op, Length, &ObjDesc); break; case AML_PACKAGE_OP: case AML_VAR_PACKAGE_OP: - Status = AcpiDsBuildInternalPackageObj (WalkState, Op, Length, &ObjDesc); + Status = AcpiDsBuildInternalPackageObj ( + WalkState, Op, Length, &ObjDesc); break; default: diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsutils.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsutils.c index 0ba26fab86..35611d777c 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsutils.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsutils.c @@ -212,9 +212,9 @@ AcpiDsDoImplicitReturn ( } ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, - "Result %p will be implicitly returned; Prev=%p\n", - ReturnDesc, - WalkState->ImplicitReturnObj)); + "Result %p will be implicitly returned; Prev=%p\n", + ReturnDesc, + WalkState->ImplicitReturnObj)); /* * Delete any "stale" implicit return value first. However, in @@ -338,7 +338,8 @@ AcpiDsIsResultUsed ( * If we are executing the predicate AND this is the predicate op, * we will use the return value */ - if ((WalkState->ControlState->Common.State == ACPI_CONTROL_PREDICATE_EXECUTING) && + if ((WalkState->ControlState->Common.State == + ACPI_CONTROL_PREDICATE_EXECUTING) && (WalkState->ControlState->Control.PredicateOp == Op)) { goto ResultUsed; @@ -595,8 +596,8 @@ AcpiDsCreateOperand ( /* Get the entire name string from the AML stream */ - Status = AcpiExGetNameString (ACPI_TYPE_ANY, Arg->Common.Value.Buffer, - &NameString, &NameLength); + Status = AcpiExGetNameString (ACPI_TYPE_ANY, + Arg->Common.Value.Buffer, &NameString, &NameLength); if (ACPI_FAILURE (Status)) { @@ -616,10 +617,11 @@ AcpiDsCreateOperand ( */ if ((WalkState->DeferredNode) && (WalkState->DeferredNode->Type == ACPI_TYPE_BUFFER_FIELD) && - (ArgIndex == (UINT32) ((WalkState->Opcode == AML_CREATE_FIELD_OP) ? 3 : 2))) + (ArgIndex == (UINT32) + ((WalkState->Opcode == AML_CREATE_FIELD_OP) ? 3 : 2))) { ObjDesc = ACPI_CAST_PTR ( - ACPI_OPERAND_OBJECT, WalkState->DeferredNode); + ACPI_OPERAND_OBJECT, WalkState->DeferredNode); Status = AE_OK; } else /* All other opcodes */ @@ -632,6 +634,7 @@ AcpiDsCreateOperand ( */ ParentOp = Arg->Common.Parent; OpInfo = AcpiPsGetOpcodeInfo (ParentOp->Common.AmlOpcode); + if ((OpInfo->Flags & AML_NSNODE) && (ParentOp->Common.AmlOpcode != AML_INT_METHODCALL_OP) && (ParentOp->Common.AmlOpcode != AML_REGION_OP) && @@ -649,10 +652,9 @@ AcpiDsCreateOperand ( } Status = AcpiNsLookup (WalkState->ScopeInfo, NameString, - ACPI_TYPE_ANY, InterpreterMode, - ACPI_NS_SEARCH_PARENT | ACPI_NS_DONT_OPEN_SCOPE, - WalkState, - ACPI_CAST_INDIRECT_PTR (ACPI_NAMESPACE_NODE, &ObjDesc)); + ACPI_TYPE_ANY, InterpreterMode, + ACPI_NS_SEARCH_PARENT | ACPI_NS_DONT_OPEN_SCOPE, WalkState, + ACPI_CAST_INDIRECT_PTR (ACPI_NAMESPACE_NODE, &ObjDesc)); /* * The only case where we pass through (ignore) a NOT_FOUND * error is for the CondRefOf opcode. @@ -668,7 +670,7 @@ AcpiDsCreateOperand ( * object to the root */ ObjDesc = ACPI_CAST_PTR ( - ACPI_OPERAND_OBJECT, AcpiGbl_RootNode); + ACPI_OPERAND_OBJECT, AcpiGbl_RootNode); Status = AE_OK; } else if (ParentOp->Common.AmlOpcode == AML_EXTERNAL_OP) @@ -714,7 +716,8 @@ AcpiDsCreateOperand ( { return_ACPI_STATUS (Status); } - ACPI_DEBUGGER_EXEC (AcpiDbDisplayArgumentObject (ObjDesc, WalkState)); + + AcpiDbDisplayArgumentObject (ObjDesc, WalkState); } else { @@ -747,13 +750,14 @@ AcpiDsCreateOperand ( return_ACPI_STATUS (AE_NOT_IMPLEMENTED); } - if ((OpInfo->Flags & AML_HAS_RETVAL) || (Arg->Common.Flags & ACPI_PARSEOP_IN_STACK)) + if ((OpInfo->Flags & AML_HAS_RETVAL) || + (Arg->Common.Flags & ACPI_PARSEOP_IN_STACK)) { ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Argument previously created, already stacked\n")); - ACPI_DEBUGGER_EXEC (AcpiDbDisplayArgumentObject ( - WalkState->Operands [WalkState->NumOperands - 1], WalkState)); + AcpiDbDisplayArgumentObject ( + WalkState->Operands [WalkState->NumOperands - 1], WalkState); /* * Use value that was already previously returned @@ -784,7 +788,7 @@ AcpiDsCreateOperand ( /* Initialize the new object */ Status = AcpiDsInitObjectFromOp ( - WalkState, Arg, Opcode, &ObjDesc); + WalkState, Arg, Opcode, &ObjDesc); if (ACPI_FAILURE (Status)) { AcpiUtDeleteObjectDesc (ObjDesc); @@ -800,7 +804,7 @@ AcpiDsCreateOperand ( return_ACPI_STATUS (Status); } - ACPI_DEBUGGER_EXEC (AcpiDbDisplayArgumentObject (ObjDesc, WalkState)); + AcpiDbDisplayArgumentObject (ObjDesc, WalkState); } return_ACPI_STATUS (AE_OK); @@ -970,7 +974,8 @@ AcpiDsEvaluateNamePath ( AcpiUtRemoveReference (*Operand); - Status = AcpiUtCopyIobjectToIobject (*Operand, &NewObjDesc, WalkState); + Status = AcpiUtCopyIobjectToIobject ( + *Operand, &NewObjDesc, WalkState); if (ACPI_FAILURE (Status)) { goto Exit; diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dswexec.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dswexec.c index f650cedf64..4cdc53dab8 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dswexec.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dswexec.c @@ -261,12 +261,13 @@ AcpiDsGetPredicateValue ( Cleanup: - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Completed a predicate eval=%X Op=%p\n", + ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, + "Completed a predicate eval=%X Op=%p\n", WalkState->ControlState->Common.Value, WalkState->Op)); - /* Break to debugger to display result */ + /* Break to debugger to display result */ - ACPI_DEBUGGER_EXEC (AcpiDbDisplayResultObject (LocalObjDesc, WalkState)); + AcpiDbDisplayResultObject (LocalObjDesc, WalkState); /* * Delete the predicate result object (we know that @@ -358,10 +359,12 @@ AcpiDsExecBeginOp ( (WalkState->ControlState->Common.State == ACPI_CONTROL_CONDITIONAL_EXECUTING)) { - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Exec predicate Op=%p State=%p\n", - Op, WalkState)); + ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, + "Exec predicate Op=%p State=%p\n", + Op, WalkState)); - WalkState->ControlState->Common.State = ACPI_CONTROL_PREDICATE_EXECUTING; + WalkState->ControlState->Common.State = + ACPI_CONTROL_PREDICATE_EXECUTING; /* Save start of predicate */ @@ -409,8 +412,8 @@ AcpiDsExecBeginOp ( } else { - Status = AcpiDsScopeStackPush (Op->Named.Node, - Op->Named.Node->Type, WalkState); + Status = AcpiDsScopeStackPush ( + Op->Named.Node, Op->Named.Node->Type, WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -469,8 +472,8 @@ AcpiDsExecEndOp ( ACPI_FUNCTION_TRACE_PTR (DsExecEndOp, WalkState); - Op = WalkState->Op; - OpType = WalkState->OpInfo->Type; + Op = WalkState->Op; + OpType = WalkState->OpInfo->Type; OpClass = WalkState->OpInfo->Class; if (OpClass == AML_CLASS_UNKNOWN) @@ -490,8 +493,11 @@ AcpiDsExecEndOp ( /* Call debugger for single step support (DEBUG build only) */ - ACPI_DEBUGGER_EXEC (Status = AcpiDbSingleStep (WalkState, Op, OpClass)); - ACPI_DEBUGGER_EXEC (if (ACPI_FAILURE (Status)) {return_ACPI_STATUS (Status);}); + Status = AcpiDbSingleStep (WalkState, Op, OpClass); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } /* Decode the Opcode Class */ @@ -528,8 +534,8 @@ AcpiDsExecEndOp ( /* Resolve all operands */ Status = AcpiExResolveOperands (WalkState->Opcode, - &(WalkState->Operands [WalkState->NumOperands -1]), - WalkState); + &(WalkState->Operands [WalkState->NumOperands -1]), + WalkState); } if (ACPI_SUCCESS (Status)) @@ -606,7 +612,8 @@ AcpiDsExecEndOp ( ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Method Reference in a Package, Op=%p\n", Op)); - Op->Common.Node = (ACPI_NAMESPACE_NODE *) Op->Asl.Value.Arg->Asl.Node; + Op->Common.Node = (ACPI_NAMESPACE_NODE *) + Op->Asl.Value.Arg->Asl.Node; AcpiUtAddReference (Op->Asl.Value.Arg->Asl.Node->Object); return_ACPI_STATUS (AE_OK); } @@ -688,12 +695,12 @@ AcpiDsExecEndOp ( * Put the Node on the object stack (Contains the ACPI Name * of this object) */ - WalkState->Operands[0] = (void *) Op->Common.Parent->Common.Node; + WalkState->Operands[0] = (void *) + Op->Common.Parent->Common.Node; WalkState->NumOperands = 1; Status = AcpiDsCreateNode (WalkState, - Op->Common.Parent->Common.Node, - Op->Common.Parent); + Op->Common.Parent->Common.Node, Op->Common.Parent); if (ACPI_FAILURE (Status)) { break; @@ -705,7 +712,7 @@ AcpiDsExecEndOp ( case AML_INT_EVAL_SUBTREE_OP: Status = AcpiDsEvalDataObjectOperands (WalkState, Op, - AcpiNsGetAttachedObject (Op->Common.Parent->Common.Node)); + AcpiNsGetAttachedObject (Op->Common.Parent->Common.Node)); break; default: @@ -786,7 +793,8 @@ AcpiDsExecEndOp ( default: ACPI_ERROR ((AE_INFO, - "Unimplemented opcode, class=0x%X type=0x%X Opcode=0x%X Op=%p", + "Unimplemented opcode, class=0x%X " + "type=0x%X Opcode=0x%X Op=%p", OpClass, OpType, Op->Common.AmlOpcode, Op)); Status = AE_NOT_IMPLEMENTED; @@ -821,8 +829,7 @@ Cleanup: { /* Break to debugger to display result */ - ACPI_DEBUGGER_EXEC (AcpiDbDisplayResultObject (WalkState->ResultObj, - WalkState)); + AcpiDbDisplayResultObject (WalkState->ResultObj,WalkState); /* * Delete the result op if and only if: diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dswload.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dswload.c index a9840755de..765102d781 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dswload.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dswload.c @@ -260,7 +260,8 @@ AcpiDsLoad1BeginOp ( ObjectType = WalkState->OpInfo->ObjectType; ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, - "State=%p Op=%p [%s]\n", WalkState, Op, AcpiUtGetTypeName (ObjectType))); + "State=%p Op=%p [%s]\n", WalkState, Op, + AcpiUtGetTypeName (ObjectType))); switch (WalkState->Opcode) { @@ -271,7 +272,7 @@ AcpiDsLoad1BeginOp ( * Allow search-to-root for single namesegs. */ Status = AcpiNsLookup (WalkState->ScopeInfo, Path, ObjectType, - ACPI_IMODE_EXECUTE, ACPI_NS_SEARCH_PARENT, WalkState, &(Node)); + ACPI_IMODE_EXECUTE, ACPI_NS_SEARCH_PARENT, WalkState, &(Node)); #ifdef ACPI_ASL_COMPILER if (Status == AE_NOT_FOUND) { @@ -282,8 +283,8 @@ AcpiDsLoad1BeginOp ( */ AcpiDmAddOpToExternalList (Op, Path, ACPI_TYPE_DEVICE, 0, 0); Status = AcpiNsLookup (WalkState->ScopeInfo, Path, ObjectType, - ACPI_IMODE_LOAD_PASS1, ACPI_NS_SEARCH_PARENT, - WalkState, &Node); + ACPI_IMODE_LOAD_PASS1, ACPI_NS_SEARCH_PARENT, + WalkState, &Node); } #endif if (ACPI_FAILURE (Status)) @@ -401,20 +402,20 @@ AcpiDsLoad1BeginOp ( { Flags |= ACPI_NS_OVERRIDE_IF_FOUND; ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "[%s] Override allowed\n", - AcpiUtGetTypeName (ObjectType))); + AcpiUtGetTypeName (ObjectType))); } else { Flags |= ACPI_NS_ERROR_IF_FOUND; ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "[%s] Cannot already exist\n", - AcpiUtGetTypeName (ObjectType))); + AcpiUtGetTypeName (ObjectType))); } } else { ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "[%s] Both Find or Create allowed\n", - AcpiUtGetTypeName (ObjectType))); + AcpiUtGetTypeName (ObjectType))); } /* @@ -424,7 +425,7 @@ AcpiDsLoad1BeginOp ( * parse tree later. */ Status = AcpiNsLookup (WalkState->ScopeInfo, Path, ObjectType, - ACPI_IMODE_LOAD_PASS1, Flags, WalkState, &Node); + ACPI_IMODE_LOAD_PASS1, Flags, WalkState, &Node); if (ACPI_FAILURE (Status)) { if (Status == AE_ALREADY_EXISTS) @@ -444,7 +445,8 @@ AcpiDsLoad1BeginOp ( if (AcpiNsOpensScope (ObjectType)) { - Status = AcpiDsScopeStackPush (Node, ObjectType, WalkState); + Status = AcpiDsScopeStackPush ( + Node, ObjectType, WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -566,8 +568,9 @@ AcpiDsLoad1EndOp ( if (Op->Common.AmlOpcode == AML_REGION_OP) { Status = AcpiExCreateRegion (Op->Named.Data, Op->Named.Length, - (ACPI_ADR_SPACE_TYPE) ((Op->Common.Value.Arg)->Common.Value.Integer), - WalkState); + (ACPI_ADR_SPACE_TYPE) + ((Op->Common.Value.Arg)->Common.Value.Integer), + WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -576,7 +579,7 @@ AcpiDsLoad1EndOp ( else if (Op->Common.AmlOpcode == AML_DATA_REGION_OP) { Status = AcpiExCreateRegion (Op->Named.Data, Op->Named.Length, - ACPI_ADR_SPACE_DATA_TABLE, WalkState); + ACPI_ADR_SPACE_DATA_TABLE, WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -628,11 +631,12 @@ AcpiDsLoad1EndOp ( WalkState->Operands[0] = ACPI_CAST_PTR (void, Op->Named.Node); WalkState->NumOperands = 1; - Status = AcpiDsCreateOperands (WalkState, Op->Common.Value.Arg); + Status = AcpiDsCreateOperands ( + WalkState, Op->Common.Value.Arg); if (ACPI_SUCCESS (Status)) { Status = AcpiExCreateMethod (Op->Named.Data, - Op->Named.Length, WalkState); + Op->Named.Length, WalkState); } WalkState->Operands[0] = NULL; diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dswload2.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dswload2.c index d5f9b1c17d..1a01a43a65 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dswload2.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dswload2.c @@ -231,8 +231,8 @@ AcpiDsLoad2BeginOp ( * for use later. */ Status = AcpiNsLookup (WalkState->ScopeInfo, BufferPtr, ObjectType, - ACPI_IMODE_EXECUTE, ACPI_NS_SEARCH_PARENT, - WalkState, &(Node)); + ACPI_IMODE_EXECUTE, ACPI_NS_SEARCH_PARENT, + WalkState, &(Node)); break; case AML_SCOPE_OP: @@ -257,8 +257,8 @@ AcpiDsLoad2BeginOp ( * for use later. */ Status = AcpiNsLookup (WalkState->ScopeInfo, BufferPtr, ObjectType, - ACPI_IMODE_EXECUTE, ACPI_NS_SEARCH_PARENT, - WalkState, &(Node)); + ACPI_IMODE_EXECUTE, ACPI_NS_SEARCH_PARENT, + WalkState, &(Node)); if (ACPI_FAILURE (Status)) { #ifdef ACPI_ASL_COMPILER @@ -395,7 +395,7 @@ AcpiDsLoad2BeginOp ( /* Add new entry or lookup existing entry */ Status = AcpiNsLookup (WalkState->ScopeInfo, BufferPtr, ObjectType, - ACPI_IMODE_LOAD_PASS2, Flags, WalkState, &Node); + ACPI_IMODE_LOAD_PASS2, Flags, WalkState, &Node); if (ACPI_SUCCESS (Status) && (Flags & ACPI_NS_TEMPORARY)) { @@ -473,7 +473,7 @@ AcpiDsLoad2EndOp ( Op = WalkState->Op; ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Opcode [%s] Op %p State %p\n", - WalkState->OpInfo->Name, Op, WalkState)); + WalkState->OpInfo->Name, Op, WalkState)); /* Check if opcode had an associated namespace object */ @@ -579,8 +579,8 @@ AcpiDsLoad2EndOp ( { case AML_INDEX_FIELD_OP: - Status = AcpiDsCreateIndexField (Op, (ACPI_HANDLE) Arg->Common.Node, - WalkState); + Status = AcpiDsCreateIndexField ( + Op, (ACPI_HANDLE) Arg->Common.Node, WalkState); break; case AML_BANK_FIELD_OP: @@ -665,7 +665,7 @@ AcpiDsLoad2EndOp ( if (Op->Common.AmlOpcode == AML_REGION_OP) { RegionSpace = (ACPI_ADR_SPACE_TYPE) - ((Op->Common.Value.Arg)->Common.Value.Integer); + ((Op->Common.Value.Arg)->Common.Value.Integer); } else { @@ -690,8 +690,8 @@ AcpiDsLoad2EndOp ( * Executing a method: initialize the region and unlock * the interpreter */ - Status = AcpiExCreateRegion (Op->Named.Data, Op->Named.Length, - RegionSpace, WalkState); + Status = AcpiExCreateRegion (Op->Named.Data, + Op->Named.Length, RegionSpace, WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -700,8 +700,8 @@ AcpiDsLoad2EndOp ( AcpiExExitInterpreter (); } - Status = AcpiEvInitializeRegion (AcpiNsGetAttachedObject (Node), - FALSE); + Status = AcpiEvInitializeRegion ( + AcpiNsGetAttachedObject (Node), FALSE); if (WalkState->MethodNode) { AcpiExEnterInterpreter (); @@ -744,12 +744,14 @@ AcpiDsLoad2EndOp ( WalkState->Operands[0] = ACPI_CAST_PTR (void, Op->Named.Node); WalkState->NumOperands = 1; - Status = AcpiDsCreateOperands (WalkState, Op->Common.Value.Arg); + Status = AcpiDsCreateOperands ( + WalkState, Op->Common.Value.Arg); if (ACPI_SUCCESS (Status)) { - Status = AcpiExCreateMethod (Op->Named.Data, - Op->Named.Length, WalkState); + Status = AcpiExCreateMethod ( + Op->Named.Data, Op->Named.Length, WalkState); } + WalkState->Operands[0] = NULL; WalkState->NumOperands = 0; @@ -784,9 +786,9 @@ AcpiDsLoad2EndOp ( * Lookup the method name and save the Node */ Status = AcpiNsLookup (WalkState->ScopeInfo, Arg->Common.Value.String, - ACPI_TYPE_ANY, ACPI_IMODE_LOAD_PASS2, - ACPI_NS_SEARCH_PARENT | ACPI_NS_DONT_OPEN_SCOPE, - WalkState, &(NewNode)); + ACPI_TYPE_ANY, ACPI_IMODE_LOAD_PASS2, + ACPI_NS_SEARCH_PARENT | ACPI_NS_DONT_OPEN_SCOPE, + WalkState, &(NewNode)); if (ACPI_SUCCESS (Status)) { /* diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dswscope.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dswscope.c index 9865dcd9db..1ce2ed9876 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dswscope.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dswscope.c @@ -154,6 +154,7 @@ AcpiDsScopeStackClear ( ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Popped object type (%s)\n", AcpiUtGetTypeName (ScopeInfo->Common.Value))); + AcpiUtDeleteGenericState (ScopeInfo); } } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dswstate.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dswstate.c index e5ea5085f7..faf6a2bc6d 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dswstate.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dswstate.c @@ -371,8 +371,8 @@ AcpiDsResultStackPop ( if (WalkState->Results == NULL) { - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Result stack underflow - State=%p\n", - WalkState)); + ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, + "Result stack underflow - State=%p\n", WalkState)); return (AE_AML_NO_OPERAND); } @@ -779,7 +779,8 @@ AcpiDsInitAmlWalk ( /* Push start scope on scope stack and make it current */ - Status = AcpiDsScopeStackPush (MethodNode, ACPI_TYPE_METHOD, WalkState); + Status = AcpiDsScopeStackPush ( + MethodNode, ACPI_TYPE_METHOD, WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -822,7 +823,7 @@ AcpiDsInitAmlWalk ( /* Push start scope on scope stack and make it current */ Status = AcpiDsScopeStackPush (ParserState->StartNode, - ParserState->StartNode->Type, WalkState); + ParserState->StartNode->Type, WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evevent.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evevent.c index e4473561a5..eda09ebb3b 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evevent.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evevent.c @@ -275,8 +275,8 @@ AcpiEvFixedEventInitialize ( if (AcpiGbl_FixedEventInfo[i].EnableRegisterId != 0xFF) { Status = AcpiWriteBitRegister ( - AcpiGbl_FixedEventInfo[i].EnableRegisterId, - ACPI_DISABLE_EVENT); + AcpiGbl_FixedEventInfo[i].EnableRegisterId, + ACPI_DISABLE_EVENT); if (ACPI_FAILURE (Status)) { return (Status); @@ -379,8 +379,8 @@ AcpiEvFixedEventDispatch ( /* Clear the status bit */ (void) AcpiWriteBitRegister ( - AcpiGbl_FixedEventInfo[Event].StatusRegisterId, - ACPI_CLEAR_STATUS); + AcpiGbl_FixedEventInfo[Event].StatusRegisterId, + ACPI_CLEAR_STATUS); /* * Make sure that a handler exists. If not, report an error @@ -389,8 +389,8 @@ AcpiEvFixedEventDispatch ( if (!AcpiGbl_FixedEventHandlers[Event].Handler) { (void) AcpiWriteBitRegister ( - AcpiGbl_FixedEventInfo[Event].EnableRegisterId, - ACPI_DISABLE_EVENT); + AcpiGbl_FixedEventInfo[Event].EnableRegisterId, + ACPI_DISABLE_EVENT); ACPI_ERROR ((AE_INFO, "No installed handler for fixed event - %s (%u), disabling", @@ -402,7 +402,7 @@ AcpiEvFixedEventDispatch ( /* Invoke the Fixed Event handler */ return ((AcpiGbl_FixedEventHandlers[Event].Handler)( - AcpiGbl_FixedEventHandlers[Event].Context)); + AcpiGbl_FixedEventHandlers[Event].Context)); } #endif /* !ACPI_REDUCED_HARDWARE */ diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evglock.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evglock.c index e1ebf190f0..8353ffbf11 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evglock.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evglock.c @@ -162,7 +162,7 @@ AcpiEvInitGlobalLockHandler ( /* Attempt installation of the global lock handler */ Status = AcpiInstallFixedEventHandler (ACPI_EVENT_GLOBAL, - AcpiEvGlobalLockHandler, NULL); + AcpiEvGlobalLockHandler, NULL); /* * If the global lock does not exist on this platform, the attempt to @@ -212,9 +212,10 @@ AcpiEvRemoveGlobalLockHandler ( ACPI_FUNCTION_TRACE (EvRemoveGlobalLockHandler); + AcpiGbl_GlobalLockPresent = FALSE; Status = AcpiRemoveFixedEventHandler (ACPI_EVENT_GLOBAL, - AcpiEvGlobalLockHandler); + AcpiEvGlobalLockHandler); AcpiOsDeleteLock (AcpiGbl_GlobalLockPendingLock); return_ACPI_STATUS (Status); @@ -374,8 +375,8 @@ AcpiEvAcquireGlobalLock ( * Wait for handshake with the global lock interrupt handler. * This interface releases the interpreter if we must wait. */ - Status = AcpiExSystemWaitSemaphore (AcpiGbl_GlobalLockSemaphore, - ACPI_WAIT_FOREVER); + Status = AcpiExSystemWaitSemaphore ( + AcpiGbl_GlobalLockSemaphore, ACPI_WAIT_FOREVER); Flags = AcpiOsAcquireLock (AcpiGbl_GlobalLockPendingLock); @@ -433,7 +434,7 @@ AcpiEvReleaseGlobalLock ( if (Pending) { Status = AcpiWriteBitRegister ( - ACPI_BITREG_GLOBAL_LOCK_RELEASE, ACPI_ENABLE_EVENT); + ACPI_BITREG_GLOBAL_LOCK_RELEASE, ACPI_ENABLE_EVENT); } ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Released hardware Global Lock\n")); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evgpe.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evgpe.c index 4dceaa4721..54316fede1 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evgpe.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evgpe.c @@ -176,8 +176,8 @@ AcpiEvUpdateGpeEnableMask ( { ACPI_SET_BIT (GpeRegisterInfo->EnableForRun, (UINT8) RegisterBit); } - GpeRegisterInfo->EnableMask = GpeRegisterInfo->EnableForRun; + GpeRegisterInfo->EnableMask = GpeRegisterInfo->EnableForRun; return_ACPI_STATUS (AE_OK); } @@ -399,7 +399,7 @@ AcpiEvGetGpeEventInfo ( for (i = 0; i < ACPI_MAX_GPE_BLOCKS; i++) { GpeInfo = AcpiEvLowGetGpeInfo (GpeNumber, - AcpiGbl_GpeFadtBlocks[i]); + AcpiGbl_GpeFadtBlocks[i]); if (GpeInfo) { return (GpeInfo); @@ -660,8 +660,8 @@ AcpiEvAsynchExecuteGpeMethod ( Notify = GpeEventInfo->Dispatch.NotifyList; while (ACPI_SUCCESS (Status) && Notify) { - Status = AcpiEvQueueNotifyRequest (Notify->DeviceNode, - ACPI_NOTIFY_DEVICE_WAKE); + Status = AcpiEvQueueNotifyRequest ( + Notify->DeviceNode, ACPI_NOTIFY_DEVICE_WAKE); Notify = Notify->Next; } @@ -705,7 +705,7 @@ AcpiEvAsynchExecuteGpeMethod ( /* Defer enabling of GPE until all notify handlers are done */ Status = AcpiOsExecute (OSL_NOTIFY_HANDLER, - AcpiEvAsynchEnableGpe, GpeEventInfo); + AcpiEvAsynchEnableGpe, GpeEventInfo); if (ACPI_SUCCESS (Status)) { return_VOID; @@ -850,8 +850,8 @@ AcpiEvGpeDispatch ( { ACPI_EXCEPTION ((AE_INFO, Status, "Unable to clear GPE %02X", GpeNumber)); - (void) AcpiHwLowSetGpe (GpeEventInfo, - ACPI_GPE_CONDITIONAL_ENABLE); + (void) AcpiHwLowSetGpe ( + GpeEventInfo, ACPI_GPE_CONDITIONAL_ENABLE); return_UINT32 (ACPI_INTERRUPT_NOT_HANDLED); } } @@ -888,7 +888,7 @@ AcpiEvGpeDispatch ( * NOTE: Level-triggered GPEs are cleared after the method completes. */ Status = AcpiOsExecute (OSL_GPE_HANDLER, - AcpiEvAsynchExecuteGpeMethod, GpeEventInfo); + AcpiEvAsynchExecuteGpeMethod, GpeEventInfo); if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evgpeblk.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evgpeblk.c index e067457c64..7a3c15d188 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evgpeblk.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evgpeblk.c @@ -265,6 +265,7 @@ AcpiEvDeleteGpeBlock ( { GpeBlock->Next->Previous = GpeBlock->Previous; } + AcpiOsReleaseLock (AcpiGbl_GpeLock, Flags); } @@ -313,8 +314,8 @@ AcpiEvCreateGpeInfoBlocks ( /* Allocate the GPE register information block */ GpeRegisterInfo = ACPI_ALLOCATE_ZEROED ( - (ACPI_SIZE) GpeBlock->RegisterCount * - sizeof (ACPI_GPE_REGISTER_INFO)); + (ACPI_SIZE) GpeBlock->RegisterCount * + sizeof (ACPI_GPE_REGISTER_INFO)); if (!GpeRegisterInfo) { ACPI_ERROR ((AE_INFO, @@ -327,7 +328,7 @@ AcpiEvCreateGpeInfoBlocks ( * per register. Initialization to zeros is sufficient. */ GpeEventInfo = ACPI_ALLOCATE_ZEROED ((ACPI_SIZE) GpeBlock->GpeCount * - sizeof (ACPI_GPE_EVENT_INFO)); + sizeof (ACPI_GPE_EVENT_INFO)); if (!GpeEventInfo) { ACPI_ERROR ((AE_INFO, @@ -339,7 +340,7 @@ AcpiEvCreateGpeInfoBlocks ( /* Save the new Info arrays in the GPE block */ GpeBlock->RegisterInfo = GpeRegisterInfo; - GpeBlock->EventInfo = GpeEventInfo; + GpeBlock->EventInfo = GpeEventInfo; /* * Initialize the GPE Register and Event structures. A goal of these @@ -348,7 +349,7 @@ AcpiEvCreateGpeInfoBlocks ( * first half, and the enable registers occupy the second half. */ ThisRegister = GpeRegisterInfo; - ThisEvent = GpeEventInfo; + ThisEvent = GpeEventInfo; for (i = 0; i < GpeBlock->RegisterCount; i++) { @@ -506,8 +507,8 @@ AcpiEvCreateGpeBlock ( WalkInfo.ExecuteByOwnerId = FALSE; Status = AcpiNsWalkNamespace (ACPI_TYPE_METHOD, GpeDevice, - ACPI_UINT32_MAX, ACPI_NS_WALK_NO_UNLOCK, - AcpiEvMatchGpeMethod, NULL, &WalkInfo, NULL); + ACPI_UINT32_MAX, ACPI_NS_WALK_NO_UNLOCK, + AcpiEvMatchGpeMethod, NULL, &WalkInfo, NULL); /* Return the new block */ diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evgpeinit.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evgpeinit.c index bf3c6e5cce..d8e4ee9b75 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evgpeinit.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evgpeinit.c @@ -210,10 +210,10 @@ AcpiEvGpeInitialize ( /* Install GPE Block 0 */ Status = AcpiEvCreateGpeBlock (AcpiGbl_FadtGpeDevice, - AcpiGbl_FADT.XGpe0Block.Address, - AcpiGbl_FADT.XGpe0Block.SpaceId, - RegisterCount0, 0, - AcpiGbl_FADT.SciInterrupt, &AcpiGbl_GpeFadtBlocks[0]); + AcpiGbl_FADT.XGpe0Block.Address, + AcpiGbl_FADT.XGpe0Block.SpaceId, + RegisterCount0, 0, + AcpiGbl_FADT.SciInterrupt, &AcpiGbl_GpeFadtBlocks[0]); if (ACPI_FAILURE (Status)) { @@ -250,11 +250,11 @@ AcpiEvGpeInitialize ( /* Install GPE Block 1 */ Status = AcpiEvCreateGpeBlock (AcpiGbl_FadtGpeDevice, - AcpiGbl_FADT.XGpe1Block.Address, - AcpiGbl_FADT.XGpe1Block.SpaceId, - RegisterCount1, - AcpiGbl_FADT.Gpe1Base, - AcpiGbl_FADT.SciInterrupt, &AcpiGbl_GpeFadtBlocks[1]); + AcpiGbl_FADT.XGpe1Block.Address, + AcpiGbl_FADT.XGpe1Block.SpaceId, + RegisterCount1, + AcpiGbl_FADT.Gpe1Base, + AcpiGbl_FADT.SciInterrupt, &AcpiGbl_GpeFadtBlocks[1]); if (ACPI_FAILURE (Status)) { @@ -267,7 +267,7 @@ AcpiEvGpeInitialize ( * space. However, GPE0 always starts at GPE number zero. */ GpeNumberMax = AcpiGbl_FADT.Gpe1Base + - ((RegisterCount1 * ACPI_GPE_REGISTER_WIDTH) - 1); + ((RegisterCount1 * ACPI_GPE_REGISTER_WIDTH) - 1); } } @@ -347,9 +347,9 @@ AcpiEvUpdateGpes ( WalkInfo.GpeDevice = GpeBlock->Node; Status = AcpiNsWalkNamespace (ACPI_TYPE_METHOD, - WalkInfo.GpeDevice, ACPI_UINT32_MAX, - ACPI_NS_WALK_NO_UNLOCK, AcpiEvMatchGpeMethod, - NULL, &WalkInfo, NULL); + WalkInfo.GpeDevice, ACPI_UINT32_MAX, + ACPI_NS_WALK_NO_UNLOCK, AcpiEvMatchGpeMethod, + NULL, &WalkInfo, NULL); if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, @@ -502,7 +502,7 @@ AcpiEvMatchGpeMethod ( } if (ACPI_GPE_DISPATCH_TYPE (GpeEventInfo->Flags) == - ACPI_GPE_DISPATCH_METHOD) + ACPI_GPE_DISPATCH_METHOD) { /* * If there is already a method, ignore this method. But check diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evgpeutil.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evgpeutil.c index f204bbadc5..aafbac949f 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evgpeutil.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evgpeutil.c @@ -310,7 +310,7 @@ AcpiEvGetGpeXruptBlock ( if (InterruptNumber != AcpiGbl_FADT.SciInterrupt) { Status = AcpiOsInstallInterruptHandler (InterruptNumber, - AcpiEvGpeXruptHandler, GpeXrupt); + AcpiEvGpeXruptHandler, GpeXrupt); if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, @@ -360,7 +360,7 @@ AcpiEvDeleteGpeXrupt ( /* Disable this interrupt */ Status = AcpiOsRemoveInterruptHandler ( - GpeXrupt->InterruptNumber, AcpiEvGpeXruptHandler); + GpeXrupt->InterruptNumber, AcpiEvGpeXruptHandler); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -446,7 +446,7 @@ AcpiEvDeleteGpeHandlers ( GpeEventInfo->Flags &= ~ACPI_GPE_DISPATCH_MASK; } else if (ACPI_GPE_DISPATCH_TYPE (GpeEventInfo->Flags) == - ACPI_GPE_DISPATCH_NOTIFY) + ACPI_GPE_DISPATCH_NOTIFY) { /* Delete the implicit notification device list */ @@ -457,6 +457,7 @@ AcpiEvDeleteGpeHandlers ( ACPI_FREE (Notify); Notify = Next; } + GpeEventInfo->Dispatch.NotifyList = NULL; GpeEventInfo->Flags &= ~ACPI_GPE_DISPATCH_MASK; } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evhandler.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evhandler.c index d02ea5325f..c7f2350e51 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evhandler.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evhandler.c @@ -132,6 +132,7 @@ AcpiEvInstallHandler ( void *Context, void **ReturnValue); + /* These are the address spaces that will get default handlers */ UINT8 AcpiGbl_DefaultAddressSpaces[ACPI_NUM_DEFAULT_SPACES] = @@ -194,8 +195,8 @@ AcpiEvInstallRegionHandlers ( for (i = 0; i < ACPI_NUM_DEFAULT_SPACES; i++) { Status = AcpiEvInstallSpaceHandler (AcpiGbl_RootNode, - AcpiGbl_DefaultAddressSpaces[i], - ACPI_DEFAULT_HANDLER, NULL, NULL); + AcpiGbl_DefaultAddressSpaces[i], + ACPI_DEFAULT_HANDLER, NULL, NULL); switch (Status) { case AE_OK: @@ -247,7 +248,7 @@ AcpiEvHasDefaultHandler ( ObjDesc = AcpiNsGetAttachedObject (Node); if (ObjDesc) { - HandlerObj = ObjDesc->Device.Handler; + HandlerObj = ObjDesc->CommonNotify.Handler; /* Walk the linked list of handlers for this object */ @@ -256,7 +257,7 @@ AcpiEvHasDefaultHandler ( if (HandlerObj->AddressSpace.SpaceId == SpaceId) { if (HandlerObj->AddressSpace.HandlerFlags & - ACPI_ADDR_HANDLER_DEFAULT_INSTALLED) + ACPI_ADDR_HANDLER_DEFAULT_INSTALLED) { return (TRUE); } @@ -348,33 +349,25 @@ AcpiEvInstallHandler ( { /* Check if this Device already has a handler for this address space */ - NextHandlerObj = ObjDesc->Device.Handler; - while (NextHandlerObj) + NextHandlerObj = AcpiEvFindRegionHandler ( + HandlerObj->AddressSpace.SpaceId, ObjDesc->CommonNotify.Handler); + if (NextHandlerObj) { /* Found a handler, is it for the same address space? */ - if (NextHandlerObj->AddressSpace.SpaceId == - HandlerObj->AddressSpace.SpaceId) - { - ACPI_DEBUG_PRINT ((ACPI_DB_OPREGION, - "Found handler for region [%s] in device %p(%p) " - "handler %p\n", - AcpiUtGetRegionName (HandlerObj->AddressSpace.SpaceId), - ObjDesc, NextHandlerObj, HandlerObj)); + ACPI_DEBUG_PRINT ((ACPI_DB_OPREGION, + "Found handler for region [%s] in device %p(%p) handler %p\n", + AcpiUtGetRegionName (HandlerObj->AddressSpace.SpaceId), + ObjDesc, NextHandlerObj, HandlerObj)); - /* - * Since the object we found it on was a device, then it - * means that someone has already installed a handler for - * the branch of the namespace from this device on. Just - * bail out telling the walk routine to not traverse this - * branch. This preserves the scoping rule for handlers. - */ - return (AE_CTRL_DEPTH); - } - - /* Walk the linked list of handlers attached to this device */ - - NextHandlerObj = NextHandlerObj->AddressSpace.Next; + /* + * Since the object we found it on was a device, then it means + * that someone has already installed a handler for the branch + * of the namespace from this device on. Just bail out telling + * the walk routine to not traverse this branch. This preserves + * the scoping rule for handlers. + */ + return (AE_CTRL_DEPTH); } /* @@ -407,6 +400,46 @@ AcpiEvInstallHandler ( } +/******************************************************************************* + * + * FUNCTION: AcpiEvFindRegionHandler + * + * PARAMETERS: SpaceId - The address space ID + * HandlerObj - Head of the handler object list + * + * RETURN: Matching handler object. NULL if space ID not matched + * + * DESCRIPTION: Search a handler object list for a match on the address + * space ID. + * + ******************************************************************************/ + +ACPI_OPERAND_OBJECT * +AcpiEvFindRegionHandler ( + ACPI_ADR_SPACE_TYPE SpaceId, + ACPI_OPERAND_OBJECT *HandlerObj) +{ + + /* Walk the handler list for this device */ + + while (HandlerObj) + { + /* Same SpaceId indicates a handler is installed */ + + if (HandlerObj->AddressSpace.SpaceId == SpaceId) + { + return (HandlerObj); + } + + /* Next handler object */ + + HandlerObj = HandlerObj->AddressSpace.Next; + } + + return (NULL); +} + + /******************************************************************************* * * FUNCTION: AcpiEvInstallSpaceHandler @@ -434,17 +467,17 @@ AcpiEvInstallSpaceHandler ( { ACPI_OPERAND_OBJECT *ObjDesc; ACPI_OPERAND_OBJECT *HandlerObj; - ACPI_STATUS Status; + ACPI_STATUS Status = AE_OK; ACPI_OBJECT_TYPE Type; - UINT8 Flags = 0; + UINT8 Flags = 0; ACPI_FUNCTION_TRACE (EvInstallSpaceHandler); /* - * This registration is valid for only the types below and the root. This - * is where the default handlers get placed. + * This registration is valid for only the types below and the root. + * The root node is where the default handlers get installed. */ if ((Node->Type != ACPI_TYPE_DEVICE) && (Node->Type != ACPI_TYPE_PROCESSOR) && @@ -517,47 +550,39 @@ AcpiEvInstallSpaceHandler ( if (ObjDesc) { /* - * The attached device object already exists. Make sure the handler - * is not already installed. + * The attached device object already exists. Now make sure + * the handler is not already installed. */ - HandlerObj = ObjDesc->Device.Handler; + HandlerObj = AcpiEvFindRegionHandler (SpaceId, + ObjDesc->CommonNotify.Handler); - /* Walk the handler list for this device */ - - while (HandlerObj) + if (HandlerObj) { - /* Same SpaceId indicates a handler already installed */ - - if (HandlerObj->AddressSpace.SpaceId == SpaceId) + if (HandlerObj->AddressSpace.Handler == Handler) { - if (HandlerObj->AddressSpace.Handler == Handler) - { - /* - * It is (relatively) OK to attempt to install the SAME - * handler twice. This can easily happen with the - * PCI_Config space. - */ - Status = AE_SAME_HANDLER; - goto UnlockAndExit; - } - else - { - /* A handler is already installed */ - - Status = AE_ALREADY_EXISTS; - } + /* + * It is (relatively) OK to attempt to install the SAME + * handler twice. This can easily happen with the + * PCI_Config space. + */ + Status = AE_SAME_HANDLER; goto UnlockAndExit; } + else + { + /* A handler is already installed */ - /* Walk the linked list of handlers */ + Status = AE_ALREADY_EXISTS; + } - HandlerObj = HandlerObj->AddressSpace.Next; + goto UnlockAndExit; } } else { ACPI_DEBUG_PRINT ((ACPI_DB_OPREGION, - "Creating object on Device %p while installing handler\n", Node)); + "Creating object on Device %p while installing handler\n", + Node)); /* ObjDesc does not exist, create one */ @@ -596,7 +621,8 @@ AcpiEvInstallSpaceHandler ( } ACPI_DEBUG_PRINT ((ACPI_DB_OPREGION, - "Installing address handler for region %s(%X) on Device %4.4s %p(%p)\n", + "Installing address handler for region %s(%X) " + "on Device %4.4s %p(%p)\n", AcpiUtGetRegionName (SpaceId), SpaceId, AcpiUtGetNodeName (Node), Node, ObjDesc)); @@ -621,33 +647,31 @@ AcpiEvInstallSpaceHandler ( HandlerObj->AddressSpace.Node = Node; HandlerObj->AddressSpace.Handler = Handler; HandlerObj->AddressSpace.Context = Context; - HandlerObj->AddressSpace.Setup = Setup; + HandlerObj->AddressSpace.Setup = Setup; /* Install at head of Device.AddressSpace list */ - HandlerObj->AddressSpace.Next = ObjDesc->Device.Handler; + HandlerObj->AddressSpace.Next = ObjDesc->CommonNotify.Handler; /* * The Device object is the first reference on the HandlerObj. * Each region that uses the handler adds a reference. */ - ObjDesc->Device.Handler = HandlerObj; + ObjDesc->CommonNotify.Handler = HandlerObj; /* - * Walk the namespace finding all of the regions this - * handler will manage. + * Walk the namespace finding all of the regions this handler will + * manage. * - * Start at the device and search the branch toward - * the leaf nodes until either the leaf is encountered or - * a device is detected that has an address handler of the - * same type. + * Start at the device and search the branch toward the leaf nodes + * until either the leaf is encountered or a device is detected that + * has an address handler of the same type. * - * In either case, back up and search down the remainder - * of the branch + * In either case, back up and search down the remainder of the branch */ - Status = AcpiNsWalkNamespace (ACPI_TYPE_ANY, Node, ACPI_UINT32_MAX, - ACPI_NS_WALK_UNLOCK, AcpiEvInstallHandler, NULL, - HandlerObj, NULL); + Status = AcpiNsWalkNamespace (ACPI_TYPE_ANY, Node, + ACPI_UINT32_MAX, ACPI_NS_WALK_UNLOCK, + AcpiEvInstallHandler, NULL, HandlerObj, NULL); UnlockAndExit: return_ACPI_STATUS (Status); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evmisc.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evmisc.c index 1735038d4c..0d6492fcd6 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evmisc.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evmisc.c @@ -147,6 +147,7 @@ BOOLEAN AcpiEvIsNotifyObject ( ACPI_NAMESPACE_NODE *Node) { + switch (Node->Type) { case ACPI_TYPE_DEVICE: @@ -255,8 +256,8 @@ AcpiEvQueueNotifyRequest ( AcpiUtGetNodeName (Node), AcpiUtGetTypeName (Node->Type), NotifyValue, AcpiUtGetNotifyName (NotifyValue, ACPI_TYPE_ANY), Node)); - Status = AcpiOsExecute (OSL_NOTIFY_HANDLER, AcpiEvNotifyDispatch, - Info); + Status = AcpiOsExecute (OSL_NOTIFY_HANDLER, + AcpiEvNotifyDispatch, Info); if (ACPI_FAILURE (Status)) { AcpiUtDeleteGenericState (Info); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evregion.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evregion.c index 24848dbe23..c251b9ba83 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evregion.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evregion.c @@ -171,6 +171,7 @@ AcpiEvInitializeOpRegions ( /* Run the _REG methods for OpRegions in each default address space */ + AcpiGbl_RegMethodsEnabled = TRUE; for (i = 0; i < ACPI_NUM_DEFAULT_SPACES; i++) { /* @@ -181,13 +182,11 @@ AcpiEvInitializeOpRegions ( if (AcpiEvHasDefaultHandler (AcpiGbl_RootNode, AcpiGbl_DefaultAddressSpaces[i])) { - Status = AcpiEvExecuteRegMethods (AcpiGbl_RootNode, - AcpiGbl_DefaultAddressSpaces[i]); + AcpiEvExecuteRegMethods (AcpiGbl_RootNode, + AcpiGbl_DefaultAddressSpaces[i], ACPI_REG_CONNECT); } } - AcpiGbl_RegMethodsExecuted = TRUE; - (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); return_ACPI_STATUS (Status); } @@ -210,6 +209,12 @@ AcpiEvInitializeOpRegions ( * DESCRIPTION: Dispatch an address space or operation region access to * a previously installed handler. * + * NOTE: During early initialization, we always install the default region + * handlers for Memory, I/O and PCI_Config. This ensures that these operation + * region address spaces are always available as per the ACPI specification. + * This is especially needed in order to support the execution of + * module-level AML code during loading of the ACPI tables. + * ******************************************************************************/ ACPI_STATUS @@ -282,7 +287,7 @@ AcpiEvAddressSpaceDispatch ( AcpiExExitInterpreter (); Status = RegionSetup (RegionObj, ACPI_REGION_ACTIVATE, - Context, &RegionContext); + Context, &RegionContext); /* Re-enter the interpreter */ @@ -364,7 +369,7 @@ AcpiEvAddressSpaceDispatch ( AcpiUtGetRegionName (RegionObj->Region.SpaceId))); if (!(HandlerDesc->AddressSpace.HandlerFlags & - ACPI_ADDR_HANDLER_DEFAULT_INSTALLED)) + ACPI_ADDR_HANDLER_DEFAULT_INSTALLED)) { /* * For handlers other than the default (supplied) handlers, we must @@ -386,13 +391,13 @@ AcpiEvAddressSpaceDispatch ( } if (!(HandlerDesc->AddressSpace.HandlerFlags & - ACPI_ADDR_HANDLER_DEFAULT_INSTALLED)) + ACPI_ADDR_HANDLER_DEFAULT_INSTALLED)) { /* * We just returned from a non-default handler, we must re-enter the * interpreter */ - AcpiExEnterInterpreter (); + AcpiExEnterInterpreter (); } return_ACPI_STATUS (Status); @@ -414,7 +419,7 @@ AcpiEvAddressSpaceDispatch ( ******************************************************************************/ void -AcpiEvDetachRegion( +AcpiEvDetachRegion ( ACPI_OPERAND_OBJECT *RegionObj, BOOLEAN AcpiNsIsLocked) { @@ -593,6 +598,13 @@ AcpiEvAttachRegion ( ACPI_FUNCTION_TRACE (EvAttachRegion); + /* Install the region's handler */ + + if (RegionObj->Region.Handler) + { + return_ACPI_STATUS (AE_ALREADY_EXISTS); + } + ACPI_DEBUG_PRINT ((ACPI_DB_OPREGION, "Adding Region [%4.4s] %p to address handler %p [%s]\n", AcpiUtGetNodeName (RegionObj->Region.Node), @@ -603,14 +615,6 @@ AcpiEvAttachRegion ( RegionObj->Region.Next = HandlerObj->AddressSpace.RegionList; HandlerObj->AddressSpace.RegionList = RegionObj; - - /* Install the region's handler */ - - if (RegionObj->Region.Handler) - { - return_ACPI_STATUS (AE_ALREADY_EXISTS); - } - RegionObj->Region.Handler = HandlerObj; AcpiUtAddReference (HandlerObj); @@ -618,6 +622,58 @@ AcpiEvAttachRegion ( } +/******************************************************************************* + * + * FUNCTION: AcpiEvAssociateRegMethod + * + * PARAMETERS: RegionObj - Region object + * + * RETURN: Status + * + * DESCRIPTION: Find and associate _REG method to a region + * + ******************************************************************************/ + +void +AcpiEvAssociateRegMethod ( + ACPI_OPERAND_OBJECT *RegionObj) +{ + ACPI_NAME *RegNamePtr = (ACPI_NAME *) METHOD_NAME__REG; + ACPI_NAMESPACE_NODE *MethodNode; + ACPI_NAMESPACE_NODE *Node; + ACPI_OPERAND_OBJECT *RegionObj2; + ACPI_STATUS Status; + + + ACPI_FUNCTION_TRACE (EvAssociateRegMethod); + + + RegionObj2 = AcpiNsGetSecondaryObject (RegionObj); + if (!RegionObj2) + { + return_VOID; + } + + Node = RegionObj->Region.Node->Parent; + + /* Find any "_REG" method associated with this region definition */ + + Status = AcpiNsSearchOneScope ( + *RegNamePtr, Node, ACPI_TYPE_METHOD, &MethodNode); + if (ACPI_SUCCESS (Status)) + { + /* + * The _REG method is optional and there can be only one per region + * definition. This will be executed when the handler is attached + * or removed + */ + RegionObj2->Extra.Method_REG = MethodNode; + } + + return_VOID; +} + + /******************************************************************************* * * FUNCTION: AcpiEvExecuteRegMethod @@ -651,7 +707,19 @@ AcpiEvExecuteRegMethod ( return_ACPI_STATUS (AE_NOT_EXIST); } - if (RegionObj2->Extra.Method_REG == NULL) + if (RegionObj2->Extra.Method_REG == NULL || + RegionObj->Region.Handler == NULL || + !AcpiGbl_RegMethodsEnabled) + { + return_ACPI_STATUS (AE_OK); + } + + /* _REG(DISCONNECT) should be paired with _REG(CONNECT) */ + + if ((Function == ACPI_REG_CONNECT && + RegionObj->Common.Flags & AOPOBJ_REG_CONNECTED) || + (Function == ACPI_REG_DISCONNECT && + !(RegionObj->Common.Flags & AOPOBJ_REG_CONNECTED))) { return_ACPI_STATUS (AE_OK); } @@ -703,6 +771,20 @@ AcpiEvExecuteRegMethod ( Status = AcpiNsEvaluate (Info); AcpiUtRemoveReference (Args[1]); + if (ACPI_FAILURE (Status)) + { + goto Cleanup2; + } + + if (Function == ACPI_REG_CONNECT) + { + RegionObj->Common.Flags |= AOPOBJ_REG_CONNECTED; + } + else + { + RegionObj->Common.Flags &= ~AOPOBJ_REG_CONNECTED; + } + Cleanup2: AcpiUtRemoveReference (Args[0]); @@ -718,26 +800,28 @@ Cleanup1: * * PARAMETERS: Node - Namespace node for the device * SpaceId - The address space ID + * Function - Passed to _REG: On (1) or Off (0) * - * RETURN: Status + * RETURN: None * * DESCRIPTION: Run all _REG methods for the input Space ID; * Note: assumes namespace is locked, or system init time. * ******************************************************************************/ -ACPI_STATUS +void AcpiEvExecuteRegMethods ( ACPI_NAMESPACE_NODE *Node, - ACPI_ADR_SPACE_TYPE SpaceId) + ACPI_ADR_SPACE_TYPE SpaceId, + UINT32 Function) { - ACPI_STATUS Status; ACPI_REG_WALK_INFO Info; ACPI_FUNCTION_TRACE (EvExecuteRegMethods); Info.SpaceId = SpaceId; + Info.Function = Function; Info.RegRunCount = 0; ACPI_DEBUG_PRINT_RAW ((ACPI_DB_NAMES, @@ -750,7 +834,7 @@ AcpiEvExecuteRegMethods ( * regions and _REG methods. (i.e. handlers must be installed for all * regions of this Space ID before we can run any _REG methods) */ - Status = AcpiNsWalkNamespace (ACPI_TYPE_ANY, Node, ACPI_UINT32_MAX, + (void) AcpiNsWalkNamespace (ACPI_TYPE_ANY, Node, ACPI_UINT32_MAX, ACPI_NS_WALK_UNLOCK, AcpiEvRegRun, NULL, &Info, NULL); /* Special case for EC: handle "orphan" _REG methods with no region */ @@ -764,7 +848,7 @@ AcpiEvExecuteRegMethods ( " Executed %u _REG methods for SpaceId %s\n", Info.RegRunCount, AcpiUtGetRegionName (Info.SpaceId))); - return_ACPI_STATUS (Status); + return_VOID; } @@ -831,7 +915,7 @@ AcpiEvRegRun ( } Info->RegRunCount++; - Status = AcpiEvExecuteRegMethod (ObjDesc, ACPI_REG_CONNECT); + Status = AcpiEvExecuteRegMethod (ObjDesc, Info->Function); return (Status); } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evrgnini.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evrgnini.c index 405af2264e..448e57e4db 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evrgnini.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evrgnini.c @@ -320,9 +320,9 @@ AcpiEvPciConfigRegionSetup ( /* Install a handler for this PCI root bridge */ Status = AcpiInstallAddressSpaceHandler ( - (ACPI_HANDLE) PciRootNode, - ACPI_ADR_SPACE_PCI_CONFIG, - ACPI_DEFAULT_HANDLER, NULL, NULL); + (ACPI_HANDLE) PciRootNode, + ACPI_ADR_SPACE_PCI_CONFIG, + ACPI_DEFAULT_HANDLER, NULL, NULL); if (ACPI_FAILURE (Status)) { if (Status == AE_SAME_HANDLER) @@ -396,7 +396,7 @@ AcpiEvPciConfigRegionSetup ( * contained in the parent's scope. */ Status = AcpiUtEvaluateNumericObject (METHOD_NAME__ADR, - PciDeviceNode, &PciValue); + PciDeviceNode, &PciValue); /* * The default is zero, and since the allocation above zeroed the data, @@ -411,7 +411,7 @@ AcpiEvPciConfigRegionSetup ( /* The PCI segment number comes from the _SEG method */ Status = AcpiUtEvaluateNumericObject (METHOD_NAME__SEG, - PciRootNode, &PciValue); + PciRootNode, &PciValue); if (ACPI_SUCCESS (Status)) { PciId->Segment = ACPI_LOWORD (PciValue); @@ -420,7 +420,7 @@ AcpiEvPciConfigRegionSetup ( /* The PCI bus number comes from the _BBN method */ Status = AcpiUtEvaluateNumericObject (METHOD_NAME__BBN, - PciRootNode, &PciValue); + PciRootNode, &PciValue); if (ACPI_SUCCESS (Status)) { PciId->Bus = ACPI_LOWORD (PciValue); @@ -639,9 +639,6 @@ AcpiEvInitializeRegion ( ACPI_ADR_SPACE_TYPE SpaceId; ACPI_NAMESPACE_NODE *Node; ACPI_STATUS Status; - ACPI_NAMESPACE_NODE *MethodNode; - ACPI_NAME *RegNamePtr = (ACPI_NAME *) METHOD_NAME__REG; - ACPI_OPERAND_OBJECT *RegionObj2; ACPI_FUNCTION_TRACE_U32 (EvInitializeRegion, AcpiNsLocked); @@ -657,39 +654,15 @@ AcpiEvInitializeRegion ( return_ACPI_STATUS (AE_OK); } - RegionObj2 = AcpiNsGetSecondaryObject (RegionObj); - if (!RegionObj2) - { - return_ACPI_STATUS (AE_NOT_EXIST); - } + AcpiEvAssociateRegMethod (RegionObj); + RegionObj->Common.Flags |= AOPOBJ_OBJECT_INITIALIZED; Node = RegionObj->Region.Node->Parent; SpaceId = RegionObj->Region.SpaceId; - /* Setup defaults */ - - RegionObj->Region.Handler = NULL; - RegionObj2->Extra.Method_REG = NULL; - RegionObj->Common.Flags &= ~(AOPOBJ_SETUP_COMPLETE); - RegionObj->Common.Flags |= AOPOBJ_OBJECT_INITIALIZED; - - /* Find any "_REG" method associated with this region definition */ - - Status = AcpiNsSearchOneScope ( - *RegNamePtr, Node, ACPI_TYPE_METHOD, &MethodNode); - if (ACPI_SUCCESS (Status)) - { - /* - * The _REG method is optional and there can be only one per region - * definition. This will be executed when the handler is attached - * or removed - */ - RegionObj2->Extra.Method_REG = MethodNode; - } - /* * The following loop depends upon the root Node having no parent - * ie: AcpiGbl_RootNode->ParentEntry being set to NULL + * ie: AcpiGbl_RootNode->Parent being set to NULL */ while (Node) { @@ -704,18 +677,10 @@ AcpiEvInitializeRegion ( switch (Node->Type) { case ACPI_TYPE_DEVICE: - - HandlerObj = ObjDesc->Device.Handler; - break; - case ACPI_TYPE_PROCESSOR: - - HandlerObj = ObjDesc->Processor.Handler; - break; - case ACPI_TYPE_THERMAL: - HandlerObj = ObjDesc->ThermalZone.Handler; + HandlerObj = ObjDesc->CommonNotify.Handler; break; case ACPI_TYPE_METHOD: @@ -739,51 +704,43 @@ AcpiEvInitializeRegion ( break; } - while (HandlerObj) + HandlerObj = AcpiEvFindRegionHandler (SpaceId, HandlerObj); + if (HandlerObj) { - /* Is this handler of the correct type? */ + /* Found correct handler */ - if (HandlerObj->AddressSpace.SpaceId == SpaceId) + ACPI_DEBUG_PRINT ((ACPI_DB_OPREGION, + "Found handler %p for region %p in obj %p\n", + HandlerObj, RegionObj, ObjDesc)); + + Status = AcpiEvAttachRegion (HandlerObj, RegionObj, + AcpiNsLocked); + + /* + * Tell all users that this region is usable by + * running the _REG method + */ + if (AcpiNsLocked) { - /* Found correct handler */ - - ACPI_DEBUG_PRINT ((ACPI_DB_OPREGION, - "Found handler %p for region %p in obj %p\n", - HandlerObj, RegionObj, ObjDesc)); - - Status = AcpiEvAttachRegion (HandlerObj, RegionObj, - AcpiNsLocked); - - /* - * Tell all users that this region is usable by - * running the _REG method - */ - if (AcpiNsLocked) + Status = AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); + if (ACPI_FAILURE (Status)) { - Status = AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } + return_ACPI_STATUS (Status); } - - Status = AcpiEvExecuteRegMethod (RegionObj, ACPI_REG_CONNECT); - - if (AcpiNsLocked) - { - Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - } - - return_ACPI_STATUS (AE_OK); } - /* Try next handler in the list */ + Status = AcpiEvExecuteRegMethod (RegionObj, ACPI_REG_CONNECT); - HandlerObj = HandlerObj->AddressSpace.Next; + if (AcpiNsLocked) + { + Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } + } + + return_ACPI_STATUS (AE_OK); } } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evsci.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evsci.c index 987b03c19d..f021ab899a 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evsci.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evsci.c @@ -291,7 +291,7 @@ AcpiEvInstallSciHandler ( Status = AcpiOsInstallInterruptHandler ((UINT32) AcpiGbl_FADT.SciInterrupt, - AcpiEvSciXruptHandler, AcpiGbl_GpeXruptListHead); + AcpiEvSciXruptHandler, AcpiGbl_GpeXruptListHead); return_ACPI_STATUS (Status); } @@ -330,7 +330,7 @@ AcpiEvRemoveAllSciHandlers ( /* Just let the OS remove the handler and disable the level */ Status = AcpiOsRemoveInterruptHandler ((UINT32) AcpiGbl_FADT.SciInterrupt, - AcpiEvSciXruptHandler); + AcpiEvSciXruptHandler); if (!AcpiGbl_SciHandlerList) { diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evxface.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evxface.c index 5e3391de8f..5469a22d07 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evxface.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evxface.c @@ -1074,8 +1074,8 @@ AcpiInstallGpeHandler ( ACPI_FUNCTION_TRACE (AcpiInstallGpeHandler); - Status = AcpiEvInstallGpeHandler (GpeDevice, GpeNumber, Type, FALSE, - Address, Context); + Status = AcpiEvInstallGpeHandler (GpeDevice, GpeNumber, Type, + FALSE, Address, Context); return_ACPI_STATUS (Status); } @@ -1115,8 +1115,8 @@ AcpiInstallGpeRawHandler ( ACPI_FUNCTION_TRACE (AcpiInstallGpeRawHandler); - Status = AcpiEvInstallGpeHandler (GpeDevice, GpeNumber, Type, TRUE, - Address, Context); + Status = AcpiEvInstallGpeHandler (GpeDevice, GpeNumber, Type, + TRUE, Address, Context); return_ACPI_STATUS (Status); } @@ -1282,7 +1282,7 @@ AcpiAcquireGlobalLock ( AcpiExEnterInterpreter (); Status = AcpiExAcquireMutexObject (Timeout, - AcpiGbl_GlobalLockMutex, AcpiOsGetThreadId ()); + AcpiGbl_GlobalLockMutex, AcpiOsGetThreadId ()); if (ACPI_SUCCESS (Status)) { diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evxfevnt.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evxfevnt.c index 271aaccc88..b4fd27ee94 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evxfevnt.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evxfevnt.c @@ -148,7 +148,7 @@ AcpiEnable ( /* ACPI tables must be present */ - if (!AcpiTbTablesLoaded ()) + if (AcpiGbl_FadtIndex == ACPI_INVALID_TABLE_INDEX) { return_ACPI_STATUS (AE_NO_ACPI_TABLES); } @@ -164,7 +164,8 @@ AcpiEnable ( if (AcpiHwGetMode() == ACPI_SYS_MODE_ACPI) { - ACPI_DEBUG_PRINT ((ACPI_DB_INIT, "System is already in ACPI mode\n")); + ACPI_DEBUG_PRINT ((ACPI_DB_INIT, + "System is already in ACPI mode\n")); } else { @@ -234,7 +235,8 @@ AcpiDisable ( return_ACPI_STATUS (Status); } - ACPI_DEBUG_PRINT ((ACPI_DB_INIT, "ACPI mode disabled\n")); + ACPI_DEBUG_PRINT ((ACPI_DB_INIT, + "ACPI mode disabled\n")); } return_ACPI_STATUS (Status); @@ -280,8 +282,8 @@ AcpiEnableEvent ( * register bit) */ Status = AcpiWriteBitRegister ( - AcpiGbl_FixedEventInfo[Event].EnableRegisterId, - ACPI_ENABLE_EVENT); + AcpiGbl_FixedEventInfo[Event].EnableRegisterId, + ACPI_ENABLE_EVENT); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -290,7 +292,7 @@ AcpiEnableEvent ( /* Make sure that the hardware responded */ Status = AcpiReadBitRegister ( - AcpiGbl_FixedEventInfo[Event].EnableRegisterId, &Value); + AcpiGbl_FixedEventInfo[Event].EnableRegisterId, &Value); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -346,15 +348,15 @@ AcpiDisableEvent ( * register bit) */ Status = AcpiWriteBitRegister ( - AcpiGbl_FixedEventInfo[Event].EnableRegisterId, - ACPI_DISABLE_EVENT); + AcpiGbl_FixedEventInfo[Event].EnableRegisterId, + ACPI_DISABLE_EVENT); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } Status = AcpiReadBitRegister ( - AcpiGbl_FixedEventInfo[Event].EnableRegisterId, &Value); + AcpiGbl_FixedEventInfo[Event].EnableRegisterId, &Value); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -407,8 +409,8 @@ AcpiClearEvent ( * register bit) */ Status = AcpiWriteBitRegister ( - AcpiGbl_FixedEventInfo[Event].StatusRegisterId, - ACPI_CLEAR_STATUS); + AcpiGbl_FixedEventInfo[Event].StatusRegisterId, + ACPI_CLEAR_STATUS); return_ACPI_STATUS (Status); } @@ -465,7 +467,7 @@ AcpiGetEventStatus ( /* Fixed event currently enabled? */ Status = AcpiReadBitRegister ( - AcpiGbl_FixedEventInfo[Event].EnableRegisterId, &InByte); + AcpiGbl_FixedEventInfo[Event].EnableRegisterId, &InByte); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -480,7 +482,7 @@ AcpiGetEventStatus ( /* Fixed event currently active? */ Status = AcpiReadBitRegister ( - AcpiGbl_FixedEventInfo[Event].StatusRegisterId, &InByte); + AcpiGbl_FixedEventInfo[Event].StatusRegisterId, &InByte); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evxfgpe.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evxfgpe.c index f4f0da1379..f55261fd22 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evxfgpe.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evxfgpe.c @@ -512,7 +512,7 @@ AcpiSetupGpeForWake ( * level-triggered (for windows compatibility). */ if (ACPI_GPE_DISPATCH_TYPE (GpeEventInfo->Flags) == - ACPI_GPE_DISPATCH_NONE) + ACPI_GPE_DISPATCH_NONE) { /* * This is the first device for implicit notify on this GPE. @@ -527,7 +527,7 @@ AcpiSetupGpeForWake ( * this device to the notify list. */ if (ACPI_GPE_DISPATCH_TYPE (GpeEventInfo->Flags) == - ACPI_GPE_DISPATCH_NOTIFY) + ACPI_GPE_DISPATCH_NOTIFY) { /* Ensure that the device is not already in the list */ @@ -992,8 +992,8 @@ AcpiInstallGpeBlock ( * is always zero */ Status = AcpiEvCreateGpeBlock (Node, GpeBlockAddress->Address, - GpeBlockAddress->SpaceId, RegisterCount, - 0, InterruptNumber, &GpeBlock); + GpeBlockAddress->SpaceId, RegisterCount, + 0, InterruptNumber, &GpeBlock); if (ACPI_FAILURE (Status)) { goto UnlockAndExit; diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evxfregn.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evxfregn.c index e220676480..6617321453 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evxfregn.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evxfregn.c @@ -186,48 +186,16 @@ AcpiInstallAddressSpaceHandler ( /* Install the handler for all Regions for this Space ID */ - Status = AcpiEvInstallSpaceHandler (Node, SpaceId, Handler, Setup, Context); + Status = AcpiEvInstallSpaceHandler ( + Node, SpaceId, Handler, Setup, Context); if (ACPI_FAILURE (Status)) { goto UnlockAndExit; } - /* - * For the default SpaceIDs, (the IDs for which there are default region handlers - * installed) Only execute the _REG methods if the global initialization _REG - * methods have already been run (via AcpiInitializeObjects). In other words, - * we will defer the execution of the _REG methods for these SpaceIDs until - * execution of AcpiInitializeObjects. This is done because we need the handlers - * for the default spaces (mem/io/pci/table) to be installed before we can run - * any control methods (or _REG methods). There is known BIOS code that depends - * on this. - * - * For all other SpaceIDs, we can safely execute the _REG methods immediately. - * This means that for IDs like EmbeddedController, this function should be called - * only after AcpiEnableSubsystem has been called. - */ - switch (SpaceId) - { - case ACPI_ADR_SPACE_SYSTEM_MEMORY: - case ACPI_ADR_SPACE_SYSTEM_IO: - case ACPI_ADR_SPACE_PCI_CONFIG: - case ACPI_ADR_SPACE_DATA_TABLE: - - if (!AcpiGbl_RegMethodsExecuted) - { - /* We will defer execution of the _REG methods for this space */ - goto UnlockAndExit; - } - break; - - default: - - break; - } - /* Run all _REG methods for this address space */ - Status = AcpiEvExecuteRegMethods (Node, SpaceId); + AcpiEvExecuteRegMethods (Node, SpaceId, ACPI_REG_CONNECT); UnlockAndExit: @@ -306,8 +274,8 @@ AcpiRemoveAddressSpaceHandler ( /* Find the address handler the user requested */ - HandlerObj = ObjDesc->Device.Handler; - LastObjPtr = &ObjDesc->Device.Handler; + HandlerObj = ObjDesc->CommonNotify.Handler; + LastObjPtr = &ObjDesc->CommonNotify.Handler; while (HandlerObj) { /* We have a handler, see if user requested this one */ diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exconfig.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exconfig.c index d4f70875ab..06aca942ad 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exconfig.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exconfig.c @@ -254,9 +254,9 @@ AcpiExLoadTableOp ( /* Find the ACPI table in the RSDT/XSDT */ Status = AcpiTbFindTable ( - Operand[0]->String.Pointer, - Operand[1]->String.Pointer, - Operand[2]->String.Pointer, &TableIndex); + Operand[0]->String.Pointer, + Operand[1]->String.Pointer, + Operand[2]->String.Pointer, &TableIndex); if (ACPI_FAILURE (Status)) { if (Status != AE_NOT_FOUND) @@ -290,7 +290,7 @@ AcpiExLoadTableOp ( * location within the namespace where the table will be loaded. */ Status = AcpiNsGetNode (StartNode, Operand[3]->String.Pointer, - ACPI_NS_SEARCH_PARENT, &ParentNode); + ACPI_NS_SEARCH_PARENT, &ParentNode); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -314,7 +314,7 @@ AcpiExLoadTableOp ( /* Find the node referenced by the ParameterPathString */ Status = AcpiNsGetNode (StartNode, Operand[4]->String.Pointer, - ACPI_NS_SEARCH_PARENT, &ParameterNode); + ACPI_NS_SEARCH_PARENT, &ParameterNode); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -336,8 +336,7 @@ AcpiExLoadTableOp ( /* Store the parameter data into the optional parameter object */ Status = AcpiExStore (Operand[5], - ACPI_CAST_PTR (ACPI_OPERAND_OBJECT, ParameterNode), - WalkState); + ACPI_CAST_PTR (ACPI_OPERAND_OBJECT, ParameterNode), WalkState); if (ACPI_FAILURE (Status)) { (void) AcpiExUnloadTable (DdbHandle); @@ -359,7 +358,7 @@ AcpiExLoadTableOp ( if (AcpiGbl_TableHandler) { (void) AcpiGbl_TableHandler (ACPI_TABLE_EVENT_LOAD, Table, - AcpiGbl_TableHandlerContext); + AcpiGbl_TableHandlerContext); } *ReturnDesc = DdbHandle; @@ -399,7 +398,7 @@ AcpiExRegionRead ( for (i = 0; i < Length; i++) { Status = AcpiEvAddressSpaceDispatch (ObjDesc, NULL, ACPI_READ, - RegionOffset, 8, &Value); + RegionOffset, 8, &Value); if (ACPI_FAILURE (Status)) { return (Status); @@ -469,8 +468,8 @@ AcpiExLoadOp ( } /* - * If the Region Address and Length have not been previously evaluated, - * evaluate them now and save the results. + * If the Region Address and Length have not been previously + * evaluated, evaluate them now and save the results. */ if (!(ObjDesc->Common.Flags & AOPOBJ_DATA_VALID)) { @@ -490,7 +489,7 @@ AcpiExLoadOp ( } Status = AcpiExRegionRead (ObjDesc, sizeof (ACPI_TABLE_HEADER), - ACPI_CAST_PTR (UINT8, TableHeader)); + ACPI_CAST_PTR (UINT8, TableHeader)); Length = TableHeader->Length; ACPI_FREE (TableHeader); @@ -533,7 +532,7 @@ AcpiExLoadOp ( /* Read the entire table */ Status = AcpiExRegionRead (ObjDesc, Length, - ACPI_CAST_PTR (UINT8, Table)); + ACPI_CAST_PTR (UINT8, Table)); if (ACPI_FAILURE (Status)) { ACPI_FREE (Table); @@ -555,7 +554,8 @@ AcpiExLoadOp ( /* Get the actual table length from the table header */ - TableHeader = ACPI_CAST_PTR (ACPI_TABLE_HEADER, ObjDesc->Buffer.Pointer); + TableHeader = ACPI_CAST_PTR ( + ACPI_TABLE_HEADER, ObjDesc->Buffer.Pointer); Length = TableHeader->Length; /* Table cannot extend beyond the buffer */ @@ -570,8 +570,8 @@ AcpiExLoadOp ( } /* - * Copy the table from the buffer because the buffer could be modified - * or even deleted in the future + * Copy the table from the buffer because the buffer could be + * modified or even deleted in the future */ Table = ACPI_ALLOCATE (Length); if (!Table) @@ -593,8 +593,8 @@ AcpiExLoadOp ( (void) AcpiUtAcquireMutex (ACPI_MTX_TABLES); Status = AcpiTbInstallStandardTable (ACPI_PTR_TO_PHYSADDR (Table), - ACPI_TABLE_ORIGIN_INTERNAL_VIRTUAL, TRUE, TRUE, - &TableIndex); + ACPI_TABLE_ORIGIN_INTERNAL_VIRTUAL, TRUE, TRUE, + &TableIndex); (void) AcpiUtReleaseMutex (ACPI_MTX_TABLES); if (ACPI_FAILURE (Status)) @@ -609,7 +609,8 @@ AcpiExLoadOp ( * Note: Now table is "INSTALLED", it must be validated before * loading. */ - Status = AcpiTbValidateTable (&AcpiGbl_RootTableList.Tables[TableIndex]); + Status = AcpiTbValidateTable ( + &AcpiGbl_RootTableList.Tables[TableIndex]); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -652,7 +653,7 @@ AcpiExLoadOp ( if (AcpiGbl_TableHandler) { (void) AcpiGbl_TableHandler (ACPI_TABLE_EVENT_LOAD, Table, - AcpiGbl_TableHandlerContext); + AcpiGbl_TableHandlerContext); } return_ACPI_STATUS (Status); @@ -729,7 +730,7 @@ AcpiExUnloadTable ( if (ACPI_SUCCESS (Status)) { (void) AcpiGbl_TableHandler (ACPI_TABLE_EVENT_UNLOAD, Table, - AcpiGbl_TableHandlerContext); + AcpiGbl_TableHandlerContext); } } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exconvrt.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exconvrt.c index 00236682dc..dc5fd9f634 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exconvrt.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exconvrt.c @@ -323,9 +323,7 @@ AcpiExConvertToBuffer ( /* Copy the integer to the buffer, LSB first */ NewBuf = ReturnDesc->Buffer.Pointer; - memcpy (NewBuf, - &ObjDesc->Integer.Value, - AcpiGbl_IntegerByteWidth); + memcpy (NewBuf, &ObjDesc->Integer.Value, AcpiGbl_IntegerByteWidth); break; case ACPI_TYPE_STRING: @@ -338,8 +336,8 @@ AcpiExConvertToBuffer ( * ASL/AML code that depends on the null being transferred to the new * buffer. */ - ReturnDesc = AcpiUtCreateBufferObject ( - (ACPI_SIZE) ObjDesc->String.Length + 1); + ReturnDesc = AcpiUtCreateBufferObject ((ACPI_SIZE) + ObjDesc->String.Length + 1); if (!ReturnDesc) { return_ACPI_STATUS (AE_NO_MEMORY); @@ -462,7 +460,8 @@ AcpiExConvertToAscii ( { /* Get one hex digit, most significant digits first */ - String[k] = (UINT8) AcpiUtHexToAsciiChar (Integer, ACPI_MUL_4 (j)); + String[k] = (UINT8) + AcpiUtHexToAsciiChar (Integer, ACPI_MUL_4 (j)); k++; } break; @@ -563,8 +562,8 @@ AcpiExConvertToString ( /* Convert integer to string */ - StringLength = AcpiExConvertToAscii (ObjDesc->Integer.Value, Base, - NewBuf, AcpiGbl_IntegerByteWidth); + StringLength = AcpiExConvertToAscii ( + ObjDesc->Integer.Value, Base, NewBuf, AcpiGbl_IntegerByteWidth); /* Null terminate at the correct place */ @@ -653,8 +652,7 @@ AcpiExConvertToString ( for (i = 0; i < ObjDesc->Buffer.Length; i++) { NewBuf += AcpiExConvertToAscii ( - (UINT64) ObjDesc->Buffer.Pointer[i], Base, - NewBuf, 1); + (UINT64) ObjDesc->Buffer.Pointer[i], Base, NewBuf, 1); *NewBuf++ = Separator; /* each separated by a comma or space */ } @@ -745,6 +743,7 @@ AcpiExConvertToTargetType ( break; case ARGI_TARGETREF: + case ARGI_STORE_TARGET: switch (DestinationType) { @@ -756,8 +755,7 @@ AcpiExConvertToTargetType ( * These types require an Integer operand. We can convert * a Buffer or a String to an Integer if necessary. */ - Status = AcpiExConvertToInteger (SourceDesc, ResultDesc, - 16); + Status = AcpiExConvertToInteger (SourceDesc, ResultDesc, 16); break; case ACPI_TYPE_STRING: @@ -766,7 +764,7 @@ AcpiExConvertToTargetType ( * Integer or Buffer if necessary */ Status = AcpiExConvertToString (SourceDesc, ResultDesc, - ACPI_IMPLICIT_CONVERT_HEX); + ACPI_IMPLICIT_CONVERT_HEX); break; case ACPI_TYPE_BUFFER: @@ -779,7 +777,8 @@ AcpiExConvertToTargetType ( default: - ACPI_ERROR ((AE_INFO, "Bad destination type during conversion: 0x%X", + ACPI_ERROR ((AE_INFO, + "Bad destination type during conversion: 0x%X", DestinationType)); Status = AE_AML_INTERNAL; break; diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/excreate.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/excreate.c index 9c7ffc13b5..f3c2004de2 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/excreate.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/excreate.c @@ -220,7 +220,7 @@ AcpiExCreateAlias ( * target node or the alias Node */ Status = AcpiNsAttachObject (AliasNode, - AcpiNsGetAttachedObject (TargetNode), TargetNode->Type); + AcpiNsGetAttachedObject (TargetNode), TargetNode->Type); break; } @@ -265,7 +265,7 @@ AcpiExCreateEvent ( * that the event is created in an unsignalled state */ Status = AcpiOsCreateSemaphore (ACPI_NO_UNIT_LIMIT, 0, - &ObjDesc->Event.OsSemaphore); + &ObjDesc->Event.OsSemaphore); if (ACPI_FAILURE (Status)) { goto Cleanup; @@ -273,8 +273,9 @@ AcpiExCreateEvent ( /* Attach object to the Node */ - Status = AcpiNsAttachObject ((ACPI_NAMESPACE_NODE *) WalkState->Operands[0], - ObjDesc, ACPI_TYPE_EVENT); + Status = AcpiNsAttachObject ( + (ACPI_NAMESPACE_NODE *) WalkState->Operands[0], + ObjDesc, ACPI_TYPE_EVENT); Cleanup: /* @@ -333,7 +334,8 @@ AcpiExCreateMutex ( ObjDesc->Mutex.SyncLevel = (UINT8) WalkState->Operands[1]->Integer.Value; ObjDesc->Mutex.Node = (ACPI_NAMESPACE_NODE *) WalkState->Operands[0]; - Status = AcpiNsAttachObject (ObjDesc->Mutex.Node, ObjDesc, ACPI_TYPE_MUTEX); + Status = AcpiNsAttachObject ( + ObjDesc->Mutex.Node, ObjDesc, ACPI_TYPE_MUTEX); Cleanup: @@ -401,7 +403,8 @@ AcpiExCreateRegion ( * a table load for this exception. Instead, if the region is * actually used at runtime, abort the executing method. */ - ACPI_ERROR ((AE_INFO, "Invalid/unknown Address Space ID: 0x%2.2X", SpaceId)); + ACPI_ERROR ((AE_INFO, + "Invalid/unknown Address Space ID: 0x%2.2X", SpaceId)); } ACPI_DEBUG_PRINT ((ACPI_DB_LOAD, "Region Type - %s (0x%X)\n", @@ -420,9 +423,10 @@ AcpiExCreateRegion ( * Remember location in AML stream of address & length * operands since they need to be evaluated at run time. */ - RegionObj2 = ObjDesc->Common.NextObject; + RegionObj2 = AcpiNsGetSecondaryObject (ObjDesc); RegionObj2->Extra.AmlStart = AmlStart; RegionObj2->Extra.AmlLength = AmlLength; + RegionObj2->Extra.Method_REG = NULL; if (WalkState->ScopeInfo) { RegionObj2->Extra.ScopeNode = WalkState->ScopeInfo->Scope.Node; @@ -438,6 +442,10 @@ AcpiExCreateRegion ( ObjDesc->Region.Address = 0; ObjDesc->Region.Length = 0; ObjDesc->Region.Node = Node; + ObjDesc->Region.Handler = NULL; + ObjDesc->Common.Flags &= + ~(AOPOBJ_SETUP_COMPLETE | AOPOBJ_REG_CONNECTED | + AOPOBJ_OBJECT_INITIALIZED); /* Install the new region object in the parent Node */ @@ -496,7 +504,7 @@ AcpiExCreateProcessor ( /* Install the processor object in the parent Node */ Status = AcpiNsAttachObject ((ACPI_NAMESPACE_NODE *) Operand[0], - ObjDesc, ACPI_TYPE_PROCESSOR); + ObjDesc, ACPI_TYPE_PROCESSOR); /* Remove local reference to the object */ @@ -547,7 +555,7 @@ AcpiExCreatePowerResource ( /* Install the power resource object in the parent Node */ Status = AcpiNsAttachObject ((ACPI_NAMESPACE_NODE *) Operand[0], - ObjDesc, ACPI_TYPE_POWER); + ObjDesc, ACPI_TYPE_POWER); /* Remove local reference to the object */ @@ -606,7 +614,8 @@ AcpiExCreateMethod ( * flag, and SyncLevel for efficiency. */ MethodFlags = (UINT8) Operand[1]->Integer.Value; - ObjDesc->Method.ParamCount = (UINT8) (MethodFlags & AML_METHOD_ARG_COUNT); + ObjDesc->Method.ParamCount = (UINT8) + (MethodFlags & AML_METHOD_ARG_COUNT); /* * Get the SyncLevel. If method is serialized, a mutex will be @@ -627,7 +636,7 @@ AcpiExCreateMethod ( /* Attach the new object to the method Node */ Status = AcpiNsAttachObject ((ACPI_NAMESPACE_NODE *) Operand[0], - ObjDesc, ACPI_TYPE_METHOD); + ObjDesc, ACPI_TYPE_METHOD); /* Remove local reference to the object */ diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exdebug.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exdebug.c index 00ec43f463..9c2c107eee 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exdebug.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exdebug.c @@ -115,26 +115,13 @@ #include "acpi.h" #include "accommon.h" -#include "acnamesp.h" #include "acinterp.h" -#include "acparser.h" #define _COMPONENT ACPI_EXECUTER ACPI_MODULE_NAME ("exdebug") -static ACPI_OPERAND_OBJECT *AcpiGbl_TraceMethodObject = NULL; - -/* Local prototypes */ - -#ifdef ACPI_DEBUG_OUTPUT -static const char * -AcpiExGetTraceEventName ( - ACPI_TRACE_EVENT_TYPE Type); -#endif - - #ifndef ACPI_NO_ERROR_MESSAGES /******************************************************************************* * @@ -181,13 +168,20 @@ AcpiExDoDebugObject ( return_VOID; } - /* - * We will emit the current timer value (in microseconds) with each - * debug output. Only need the lower 26 bits. This allows for 67 - * million microseconds or 67 seconds before rollover. - */ - Timer = ((UINT32) AcpiOsGetTimer () / 10); /* (100 nanoseconds to microseconds) */ - Timer &= 0x03FFFFFF; + /* Null string or newline -- don't emit the line header */ + + if (SourceDesc && + (ACPI_GET_DESCRIPTOR_TYPE (SourceDesc) == ACPI_DESC_TYPE_OPERAND) && + (SourceDesc->Common.Type == ACPI_TYPE_STRING)) + { + if ((SourceDesc->String.Length == 0) || + ((SourceDesc->String.Length == 1) && + (*SourceDesc->String.Pointer == '\n'))) + { + AcpiOsPrintf ("\n"); + return_VOID; + } + } /* * Print line header as long as we are not in the middle of an @@ -195,14 +189,31 @@ AcpiExDoDebugObject ( */ if (!((Level > 0) && Index == 0)) { - AcpiOsPrintf ("[ACPI Debug %.8u] %*s", Timer, Level, " "); + if (AcpiGbl_DisplayDebugTimer) + { + /* + * We will emit the current timer value (in microseconds) with each + * debug output. Only need the lower 26 bits. This allows for 67 + * million microseconds or 67 seconds before rollover. + * + * Convert 100 nanosecond units to microseconds + */ + Timer = ((UINT32) AcpiOsGetTimer () / 10); + Timer &= 0x03FFFFFF; + + AcpiOsPrintf ("[ACPI Debug T=0x%8.8X] %*s", Timer, Level, " "); + } + else + { + AcpiOsPrintf ("[ACPI Debug] %*s", Level, " "); + } } /* Display the index for package output only */ if (Index > 0) { - AcpiOsPrintf ("(%.2u) ", Index-1); + AcpiOsPrintf ("(%.2u) ", Index - 1); } if (!SourceDesc) @@ -213,7 +224,13 @@ AcpiExDoDebugObject ( if (ACPI_GET_DESCRIPTOR_TYPE (SourceDesc) == ACPI_DESC_TYPE_OPERAND) { - AcpiOsPrintf ("%s ", AcpiUtGetObjectTypeName (SourceDesc)); + /* No object type prefix needed for integers and strings */ + + if ((SourceDesc->Common.Type != ACPI_TYPE_INTEGER) && + (SourceDesc->Common.Type != ACPI_TYPE_STRING)) + { + AcpiOsPrintf ("%s ", AcpiUtGetObjectTypeName (SourceDesc)); + } if (!AcpiUtValidInternalObject (SourceDesc)) { @@ -223,9 +240,9 @@ AcpiExDoDebugObject ( } else if (ACPI_GET_DESCRIPTOR_TYPE (SourceDesc) == ACPI_DESC_TYPE_NAMED) { - AcpiOsPrintf ("%s: %p\n", + AcpiOsPrintf ("%s (Node %p)\n", AcpiUtGetTypeName (((ACPI_NAMESPACE_NODE *) SourceDesc)->Type), - SourceDesc); + SourceDesc); return_VOID; } else @@ -263,13 +280,12 @@ AcpiExDoDebugObject ( case ACPI_TYPE_STRING: - AcpiOsPrintf ("[0x%.2X] \"%s\"\n", - SourceDesc->String.Length, SourceDesc->String.Pointer); + AcpiOsPrintf ("\"%s\"\n", SourceDesc->String.Pointer); break; case ACPI_TYPE_PACKAGE: - AcpiOsPrintf ("[Contains 0x%.2X Elements]\n", + AcpiOsPrintf ("(Contains 0x%.2X Elements):\n", SourceDesc->Package.Count); /* Output the entire contents of the package */ @@ -277,7 +293,7 @@ AcpiExDoDebugObject ( for (i = 0; i < SourceDesc->Package.Count; i++) { AcpiExDoDebugObject (SourceDesc->Package.Elements[i], - Level+4, i+1); + Level + 4, i + 1); } break; @@ -313,7 +329,7 @@ AcpiExDoDebugObject ( if (SourceDesc->Reference.Node) { if (ACPI_GET_DESCRIPTOR_TYPE (SourceDesc->Reference.Node) != - ACPI_DESC_TYPE_NAMED) + ACPI_DESC_TYPE_NAMED) { AcpiOsPrintf (" %p - Not a valid namespace node\n", SourceDesc->Reference.Node); @@ -338,7 +354,7 @@ AcpiExDoDebugObject ( default: AcpiExDoDebugObject ((SourceDesc->Reference.Node)->Object, - Level+4, 0); + Level + 4, 0); break; } } @@ -346,11 +362,13 @@ AcpiExDoDebugObject ( else if (SourceDesc->Reference.Object) { if (ACPI_GET_DESCRIPTOR_TYPE (SourceDesc->Reference.Object) == - ACPI_DESC_TYPE_NAMED) + ACPI_DESC_TYPE_NAMED) { - AcpiExDoDebugObject (((ACPI_NAMESPACE_NODE *) - SourceDesc->Reference.Object)->Object, - Level+4, 0); + /* Reference object is a namespace node */ + + AcpiExDoDebugObject (ACPI_CAST_PTR (ACPI_OPERAND_OBJECT, + SourceDesc->Reference.Object), + Level + 4, 0); } else { @@ -375,8 +393,15 @@ AcpiExDoDebugObject ( case ACPI_TYPE_PACKAGE: AcpiOsPrintf ("Package[%u] = ", Value); - AcpiExDoDebugObject (*SourceDesc->Reference.Where, - Level+4, 0); + if (!(*SourceDesc->Reference.Where)) + { + AcpiOsPrintf ("[Uninitialized Package Element]\n"); + } + else + { + AcpiExDoDebugObject (*SourceDesc->Reference.Where, + Level+4, 0); + } break; default: @@ -391,7 +416,7 @@ AcpiExDoDebugObject ( default: - AcpiOsPrintf ("%p\n", SourceDesc); + AcpiOsPrintf ("(Descriptor %p)\n", SourceDesc); break; } @@ -399,362 +424,3 @@ AcpiExDoDebugObject ( return_VOID; } #endif - - -/******************************************************************************* - * - * FUNCTION: AcpiExInterpreterTraceEnabled - * - * PARAMETERS: Name - Whether method name should be matched, - * this should be checked before starting - * the tracer - * - * RETURN: TRUE if interpreter trace is enabled. - * - * DESCRIPTION: Check whether interpreter trace is enabled - * - ******************************************************************************/ - -static BOOLEAN -AcpiExInterpreterTraceEnabled ( - char *Name) -{ - - /* Check if tracing is enabled */ - - if (!(AcpiGbl_TraceFlags & ACPI_TRACE_ENABLED)) - { - return (FALSE); - } - - /* - * Check if tracing is filtered: - * - * 1. If the tracer is started, AcpiGbl_TraceMethodObject should have - * been filled by the trace starter - * 2. If the tracer is not started, AcpiGbl_TraceMethodName should be - * matched if it is specified - * 3. If the tracer is oneshot style, AcpiGbl_TraceMethodName should - * not be cleared by the trace stopper during the first match - */ - if (AcpiGbl_TraceMethodObject) - { - return (TRUE); - } - if (Name && - (AcpiGbl_TraceMethodName && - strcmp (AcpiGbl_TraceMethodName, Name))) - { - return (FALSE); - } - if ((AcpiGbl_TraceFlags & ACPI_TRACE_ONESHOT) && - !AcpiGbl_TraceMethodName) - { - return (FALSE); - } - - return (TRUE); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExGetTraceEventName - * - * PARAMETERS: Type - Trace event type - * - * RETURN: Trace event name. - * - * DESCRIPTION: Used to obtain the full trace event name. - * - ******************************************************************************/ - -#ifdef ACPI_DEBUG_OUTPUT - -static const char * -AcpiExGetTraceEventName ( - ACPI_TRACE_EVENT_TYPE Type) -{ - switch (Type) - { - case ACPI_TRACE_AML_METHOD: - - return "Method"; - - case ACPI_TRACE_AML_OPCODE: - - return "Opcode"; - - case ACPI_TRACE_AML_REGION: - - return "Region"; - - default: - - return ""; - } -} - -#endif - - -/******************************************************************************* - * - * FUNCTION: AcpiExTracePoint - * - * PARAMETERS: Type - Trace event type - * Begin - TRUE if before execution - * Aml - Executed AML address - * Pathname - Object path - * - * RETURN: None - * - * DESCRIPTION: Internal interpreter execution trace. - * - ******************************************************************************/ - -void -AcpiExTracePoint ( - ACPI_TRACE_EVENT_TYPE Type, - BOOLEAN Begin, - UINT8 *Aml, - char *Pathname) -{ - - ACPI_FUNCTION_NAME (ExTracePoint); - - - if (Pathname) - { - ACPI_DEBUG_PRINT ((ACPI_DB_TRACE_POINT, - "%s %s [0x%p:%s] execution.\n", - AcpiExGetTraceEventName (Type), Begin ? "Begin" : "End", - Aml, Pathname)); - } - else - { - ACPI_DEBUG_PRINT ((ACPI_DB_TRACE_POINT, - "%s %s [0x%p] execution.\n", - AcpiExGetTraceEventName (Type), Begin ? "Begin" : "End", - Aml)); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExStartTraceMethod - * - * PARAMETERS: MethodNode - Node of the method - * ObjDesc - The method object - * WalkState - current state, NULL if not yet executing - * a method. - * - * RETURN: None - * - * DESCRIPTION: Start control method execution trace - * - ******************************************************************************/ - -void -AcpiExStartTraceMethod ( - ACPI_NAMESPACE_NODE *MethodNode, - ACPI_OPERAND_OBJECT *ObjDesc, - ACPI_WALK_STATE *WalkState) -{ - ACPI_STATUS Status; - char *Pathname = NULL; - BOOLEAN Enabled = FALSE; - - - ACPI_FUNCTION_NAME (ExStartTraceMethod); - - - if (MethodNode) - { - Pathname = AcpiNsGetNormalizedPathname (MethodNode, TRUE); - } - - Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); - if (ACPI_FAILURE (Status)) - { - goto Exit; - } - - Enabled = AcpiExInterpreterTraceEnabled (Pathname); - if (Enabled && !AcpiGbl_TraceMethodObject) - { - AcpiGbl_TraceMethodObject = ObjDesc; - AcpiGbl_OriginalDbgLevel = AcpiDbgLevel; - AcpiGbl_OriginalDbgLayer = AcpiDbgLayer; - AcpiDbgLevel = ACPI_TRACE_LEVEL_ALL; - AcpiDbgLayer = ACPI_TRACE_LAYER_ALL; - - if (AcpiGbl_TraceDbgLevel) - { - AcpiDbgLevel = AcpiGbl_TraceDbgLevel; - } - if (AcpiGbl_TraceDbgLayer) - { - AcpiDbgLayer = AcpiGbl_TraceDbgLayer; - } - } - (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); - -Exit: - if (Enabled) - { - ACPI_TRACE_POINT (ACPI_TRACE_AML_METHOD, TRUE, - ObjDesc ? ObjDesc->Method.AmlStart : NULL, Pathname); - } - if (Pathname) - { - ACPI_FREE (Pathname); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExStopTraceMethod - * - * PARAMETERS: MethodNode - Node of the method - * ObjDesc - The method object - * WalkState - current state, NULL if not yet executing - * a method. - * - * RETURN: None - * - * DESCRIPTION: Stop control method execution trace - * - ******************************************************************************/ - -void -AcpiExStopTraceMethod ( - ACPI_NAMESPACE_NODE *MethodNode, - ACPI_OPERAND_OBJECT *ObjDesc, - ACPI_WALK_STATE *WalkState) -{ - ACPI_STATUS Status; - char *Pathname = NULL; - BOOLEAN Enabled; - - - ACPI_FUNCTION_NAME (ExStopTraceMethod); - - - if (MethodNode) - { - Pathname = AcpiNsGetNormalizedPathname (MethodNode, TRUE); - } - - Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); - if (ACPI_FAILURE (Status)) - { - goto ExitPath; - } - - Enabled = AcpiExInterpreterTraceEnabled (NULL); - - (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); - - if (Enabled) - { - ACPI_TRACE_POINT (ACPI_TRACE_AML_METHOD, FALSE, - ObjDesc ? ObjDesc->Method.AmlStart : NULL, Pathname); - } - - Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); - if (ACPI_FAILURE (Status)) - { - goto ExitPath; - } - - /* Check whether the tracer should be stopped */ - - if (AcpiGbl_TraceMethodObject == ObjDesc) - { - /* Disable further tracing if type is one-shot */ - - if (AcpiGbl_TraceFlags & ACPI_TRACE_ONESHOT) - { - AcpiGbl_TraceMethodName = NULL; - } - - AcpiDbgLevel = AcpiGbl_OriginalDbgLevel; - AcpiDbgLayer = AcpiGbl_OriginalDbgLayer; - AcpiGbl_TraceMethodObject = NULL; - } - - (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); - -ExitPath: - if (Pathname) - { - ACPI_FREE (Pathname); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExStartTraceOpcode - * - * PARAMETERS: Op - The parser opcode object - * WalkState - current state, NULL if not yet executing - * a method. - * - * RETURN: None - * - * DESCRIPTION: Start opcode execution trace - * - ******************************************************************************/ - -void -AcpiExStartTraceOpcode ( - ACPI_PARSE_OBJECT *Op, - ACPI_WALK_STATE *WalkState) -{ - - ACPI_FUNCTION_NAME (ExStartTraceOpcode); - - - if (AcpiExInterpreterTraceEnabled (NULL) && - (AcpiGbl_TraceFlags & ACPI_TRACE_OPCODE)) - { - ACPI_TRACE_POINT (ACPI_TRACE_AML_OPCODE, TRUE, - Op->Common.Aml, Op->Common.AmlOpName); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExStopTraceOpcode - * - * PARAMETERS: Op - The parser opcode object - * WalkState - current state, NULL if not yet executing - * a method. - * - * RETURN: None - * - * DESCRIPTION: Stop opcode execution trace - * - ******************************************************************************/ - -void -AcpiExStopTraceOpcode ( - ACPI_PARSE_OBJECT *Op, - ACPI_WALK_STATE *WalkState) -{ - - ACPI_FUNCTION_NAME (ExStopTraceOpcode); - - - if (AcpiExInterpreterTraceEnabled (NULL) && - (AcpiGbl_TraceFlags & ACPI_TRACE_OPCODE)) - { - ACPI_TRACE_POINT (ACPI_TRACE_AML_OPCODE, FALSE, - Op->Common.Aml, Op->Common.AmlOpName); - } -} diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exdump.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exdump.c index c682777e93..2f2836ee5b 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exdump.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exdump.c @@ -525,7 +525,8 @@ AcpiExDumpObject ( case ACPI_EXD_BUFFER: - ACPI_DUMP_BUFFER (ObjDesc->Buffer.Pointer, ObjDesc->Buffer.Length); + ACPI_DUMP_BUFFER ( + ObjDesc->Buffer.Pointer, ObjDesc->Buffer.Length); break; case ACPI_EXD_PACKAGE: @@ -544,7 +545,8 @@ AcpiExDumpObject ( case ACPI_EXD_REFERENCE: ReferenceName = AcpiUtGetReferenceName (ObjDesc); - AcpiExOutString ("Class Name", ACPI_CAST_PTR (char, ReferenceName)); + AcpiExOutString ( + "Class Name", ACPI_CAST_PTR (char, ReferenceName)); AcpiExDumpReferenceObj (ObjDesc); break; @@ -573,7 +575,8 @@ AcpiExDumpObject ( if ((Next == Start) || (Next == Data)) { - AcpiOsPrintf ("\n**** Error: Object list appears to be circular linked"); + AcpiOsPrintf ( + "\n**** Error: Object list appears to be circular linked"); break; } } @@ -591,7 +594,8 @@ AcpiExDumpObject ( if (Next) { AcpiOsPrintf ("(%s %2.2X)", - AcpiUtGetObjectTypeName (Next), Next->Common.Type); + AcpiUtGetObjectTypeName (Next), + Next->AddressSpace.SpaceId); while (Next->AddressSpace.Next) { @@ -603,11 +607,13 @@ AcpiExDumpObject ( Next = Next->AddressSpace.Next; AcpiOsPrintf ("->%p(%s %2.2X)", Next, - AcpiUtGetObjectTypeName (Next), Next->Common.Type); + AcpiUtGetObjectTypeName (Next), + Next->AddressSpace.SpaceId); if ((Next == Start) || (Next == Data)) { - AcpiOsPrintf ("\n**** Error: Handler list appears to be circular linked"); + AcpiOsPrintf ( + "\n**** Error: Handler list appears to be circular linked"); break; } } @@ -641,7 +647,8 @@ AcpiExDumpObject ( if ((Next == Start) || (Next == Data)) { - AcpiOsPrintf ("\n**** Error: Region list appears to be circular linked"); + AcpiOsPrintf ( + "\n**** Error: Region list appears to be circular linked"); break; } } @@ -749,7 +756,8 @@ AcpiExDumpOperand ( { case ACPI_TYPE_LOCAL_REFERENCE: - AcpiOsPrintf ("Reference: [%s] ", AcpiUtGetReferenceName (ObjDesc)); + AcpiOsPrintf ("Reference: [%s] ", + AcpiUtGetReferenceName (ObjDesc)); switch (ObjDesc->Reference.Class) { @@ -777,7 +785,8 @@ AcpiExDumpOperand ( case ACPI_REFCLASS_NAME: - AcpiOsPrintf ("- [%4.4s]\n", ObjDesc->Reference.Node->Name.Ascii); + AcpiOsPrintf ("- [%4.4s]\n", + ObjDesc->Reference.Node->Name.Ascii); break; case ACPI_REFCLASS_ARG: @@ -808,8 +817,8 @@ AcpiExDumpOperand ( Length = 128; } - AcpiOsPrintf ("Buffer Contents: (displaying length 0x%.2X)\n", - Length); + AcpiOsPrintf ( + "Buffer Contents: (displaying length 0x%.2X)\n", Length); ACPI_DUMP_BUFFER (ObjDesc->Buffer.Pointer, Length); } break; @@ -835,7 +844,8 @@ AcpiExDumpOperand ( { for (Index = 0; Index < ObjDesc->Package.Count; Index++) { - AcpiExDumpOperand (ObjDesc->Package.Elements[Index], Depth+1); + AcpiExDumpOperand ( + ObjDesc->Package.Elements[Index], Depth + 1); } } break; @@ -888,7 +898,7 @@ AcpiExDumpOperand ( ObjDesc->Field.BaseByteOffset, ObjDesc->Field.StartFieldBitOffset); - AcpiExDumpOperand (ObjDesc->Field.RegionObj, Depth+1); + AcpiExDumpOperand (ObjDesc->Field.RegionObj, Depth + 1); break; case ACPI_TYPE_LOCAL_INDEX_FIELD: @@ -908,13 +918,13 @@ AcpiExDumpOperand ( ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "*NULL*\n")); } else if ((ObjDesc->BufferField.BufferObj)->Common.Type != - ACPI_TYPE_BUFFER) + ACPI_TYPE_BUFFER) { AcpiOsPrintf ("*not a Buffer*\n"); } else { - AcpiExDumpOperand (ObjDesc->BufferField.BufferObj, Depth+1); + AcpiExDumpOperand (ObjDesc->BufferField.BufferObj, Depth + 1); } break; @@ -1214,7 +1224,8 @@ AcpiExDumpPackageObj ( AcpiOsPrintf ("[Buffer] Length %.2X = ", ObjDesc->Buffer.Length); if (ObjDesc->Buffer.Length) { - AcpiUtDebugDumpBuffer (ACPI_CAST_PTR (UINT8, ObjDesc->Buffer.Pointer), + AcpiUtDebugDumpBuffer ( + ACPI_CAST_PTR (UINT8, ObjDesc->Buffer.Pointer), ObjDesc->Buffer.Length, DB_DWORD_DISPLAY, _COMPONENT); } else @@ -1230,7 +1241,8 @@ AcpiExDumpPackageObj ( for (i = 0; i < ObjDesc->Package.Count; i++) { - AcpiExDumpPackageObj (ObjDesc->Package.Elements[i], Level+1, i); + AcpiExDumpPackageObj ( + ObjDesc->Package.Elements[i], Level + 1, i); } break; @@ -1328,7 +1340,8 @@ DumpObject: ObjDesc = ObjDesc->Common.NextObject; if (ObjDesc->Common.Type > ACPI_TYPE_LOCAL_MAX) { - AcpiOsPrintf ("Secondary object is not a known object type: %2.2X\n", + AcpiOsPrintf ( + "Secondary object is not a known object type: %2.2X\n", ObjDesc->Common.Type); return_VOID; diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exfield.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exfield.c index dbd294b926..b70e08069d 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exfield.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exfield.c @@ -256,28 +256,31 @@ AcpiExReadDataFromField ( ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_IPMI)) { /* - * This is an SMBus, GSBus or IPMI read. We must create a buffer to hold - * the data and then directly access the region handler. + * This is an SMBus, GSBus or IPMI read. We must create a buffer to + * hold the data and then directly access the region handler. * - * Note: SMBus and GSBus protocol value is passed in upper 16-bits of Function + * Note: SMBus and GSBus protocol value is passed in upper 16-bits + * of Function */ - if (ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_SMBUS) + if (ObjDesc->Field.RegionObj->Region.SpaceId == + ACPI_ADR_SPACE_SMBUS) { Length = ACPI_SMBUS_BUFFER_SIZE; Function = ACPI_READ | (ObjDesc->Field.Attribute << 16); } - else if (ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_GSBUS) + else if (ObjDesc->Field.RegionObj->Region.SpaceId == + ACPI_ADR_SPACE_GSBUS) { AccessorType = ObjDesc->Field.Attribute; - Length = AcpiExGetSerialAccessLength (AccessorType, - ObjDesc->Field.AccessLength); + Length = AcpiExGetSerialAccessLength ( + AccessorType, ObjDesc->Field.AccessLength); /* * Add additional 2 bytes for the GenericSerialBus data buffer: * - * Status; (Byte 0 of the data buffer) - * Length; (Byte 1 of the data buffer) - * Data[x-1]; (Bytes 2-x of the arbitrary length data buffer) + * Status; (Byte 0 of the data buffer) + * Length; (Byte 1 of the data buffer) + * Data[x-1]: (Bytes 2-x of the arbitrary length data buffer) */ Length += 2; Function = ACPI_READ | (AccessorType << 16); @@ -301,8 +304,8 @@ AcpiExReadDataFromField ( /* Call the region handler for the read */ Status = AcpiExAccessRegion (ObjDesc, 0, - ACPI_CAST_PTR (UINT64, BufferDesc->Buffer.Pointer), - Function); + ACPI_CAST_PTR (UINT64, BufferDesc->Buffer.Pointer), Function); + AcpiExReleaseGlobalLock (ObjDesc->CommonField.FieldFlags); goto Exit; } @@ -317,7 +320,9 @@ AcpiExReadDataFromField ( * * Note: Field.length is in bits. */ - Length = (ACPI_SIZE) ACPI_ROUND_BITS_UP_TO_BYTES (ObjDesc->Field.BitLength); + Length = (ACPI_SIZE) ACPI_ROUND_BITS_UP_TO_BYTES ( + ObjDesc->Field.BitLength); + if (Length > AcpiGbl_IntegerByteWidth) { /* Field is too large for an Integer, create a Buffer instead */ @@ -362,8 +367,9 @@ AcpiExReadDataFromField ( /* Perform the write */ - Status = AcpiExAccessRegion (ObjDesc, 0, - (UINT64 *) Buffer, ACPI_READ); + Status = AcpiExAccessRegion ( + ObjDesc, 0, (UINT64 *) Buffer, ACPI_READ); + AcpiExReleaseGlobalLock (ObjDesc->CommonField.FieldFlags); if (ACPI_FAILURE (Status)) { @@ -468,42 +474,47 @@ AcpiExWriteDataToField ( ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_IPMI)) { /* - * This is an SMBus, GSBus or IPMI write. We will bypass the entire field - * mechanism and handoff the buffer directly to the handler. For - * these address spaces, the buffer is bi-directional; on a write, - * return data is returned in the same buffer. + * This is an SMBus, GSBus or IPMI write. We will bypass the entire + * field mechanism and handoff the buffer directly to the handler. + * For these address spaces, the buffer is bi-directional; on a + * write, return data is returned in the same buffer. * * Source must be a buffer of sufficient size: - * ACPI_SMBUS_BUFFER_SIZE, ACPI_GSBUS_BUFFER_SIZE, or ACPI_IPMI_BUFFER_SIZE. + * ACPI_SMBUS_BUFFER_SIZE, ACPI_GSBUS_BUFFER_SIZE, or + * ACPI_IPMI_BUFFER_SIZE. * - * Note: SMBus and GSBus protocol type is passed in upper 16-bits of Function + * Note: SMBus and GSBus protocol type is passed in upper 16-bits + * of Function */ if (SourceDesc->Common.Type != ACPI_TYPE_BUFFER) { ACPI_ERROR ((AE_INFO, - "SMBus/IPMI/GenericSerialBus write requires Buffer, found type %s", + "SMBus/IPMI/GenericSerialBus write requires " + "Buffer, found type %s", AcpiUtGetObjectTypeName (SourceDesc))); return_ACPI_STATUS (AE_AML_OPERAND_TYPE); } - if (ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_SMBUS) + if (ObjDesc->Field.RegionObj->Region.SpaceId == + ACPI_ADR_SPACE_SMBUS) { Length = ACPI_SMBUS_BUFFER_SIZE; Function = ACPI_WRITE | (ObjDesc->Field.Attribute << 16); } - else if (ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_GSBUS) + else if (ObjDesc->Field.RegionObj->Region.SpaceId == + ACPI_ADR_SPACE_GSBUS) { AccessorType = ObjDesc->Field.Attribute; - Length = AcpiExGetSerialAccessLength (AccessorType, - ObjDesc->Field.AccessLength); + Length = AcpiExGetSerialAccessLength ( + AccessorType, ObjDesc->Field.AccessLength); /* * Add additional 2 bytes for the GenericSerialBus data buffer: * - * Status; (Byte 0 of the data buffer) - * Length; (Byte 1 of the data buffer) - * Data[x-1]; (Bytes 2-x of the arbitrary length data buffer) + * Status; (Byte 0 of the data buffer) + * Length; (Byte 1 of the data buffer) + * Data[x-1]: (Bytes 2-x of the arbitrary length data buffer) */ Length += 2; Function = ACPI_WRITE | (AccessorType << 16); @@ -517,7 +528,8 @@ AcpiExWriteDataToField ( if (SourceDesc->Buffer.Length < Length) { ACPI_ERROR ((AE_INFO, - "SMBus/IPMI/GenericSerialBus write requires Buffer of length %u, found length %u", + "SMBus/IPMI/GenericSerialBus write requires " + "Buffer of length %u, found length %u", Length, SourceDesc->Buffer.Length)); return_ACPI_STATUS (AE_AML_BUFFER_LIMIT); @@ -542,8 +554,8 @@ AcpiExWriteDataToField ( * Perform the write (returns status and perhaps data in the * same buffer) */ - Status = AcpiExAccessRegion (ObjDesc, 0, - (UINT64 *) Buffer, Function); + Status = AcpiExAccessRegion ( + ObjDesc, 0, (UINT64 *) Buffer, Function); AcpiExReleaseGlobalLock (ObjDesc->CommonField.FieldFlags); *ResultDesc = BufferDesc; @@ -566,7 +578,7 @@ AcpiExWriteDataToField ( } ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, - "GPIO FieldWrite [FROM]: (%s:%X), Val %.8X [TO]: Pin %u Bits %u\n", + "GPIO FieldWrite [FROM]: (%s:%X), Val %.8X [TO]: Pin %u Bits %u\n", AcpiUtGetTypeName (SourceDesc->Common.Type), SourceDesc->Common.Type, (UINT32) SourceDesc->Integer.Value, ObjDesc->Field.PinNumberIndex, ObjDesc->Field.BitLength)); @@ -579,8 +591,8 @@ AcpiExWriteDataToField ( /* Perform the write */ - Status = AcpiExAccessRegion (ObjDesc, 0, - (UINT64 *) Buffer, ACPI_WRITE); + Status = AcpiExAccessRegion ( + ObjDesc, 0, (UINT64 *) Buffer, ACPI_WRITE); AcpiExReleaseGlobalLock (ObjDesc->CommonField.FieldFlags); return_ACPI_STATUS (Status); } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exfldio.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exfldio.c index 39a0f37d55..106405a5f0 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exfldio.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exfldio.c @@ -192,7 +192,8 @@ AcpiExSetupRegion ( if (!AcpiIsValidSpaceId (SpaceId)) { - ACPI_ERROR ((AE_INFO, "Invalid/unknown Address Space ID: 0x%2.2X", SpaceId)); + ACPI_ERROR ((AE_INFO, + "Invalid/unknown Address Space ID: 0x%2.2X", SpaceId)); return_ACPI_STATUS (AE_AML_INVALID_SPACE_ID); } @@ -242,8 +243,8 @@ AcpiExSetupRegion ( * (Region length is specified in bytes) */ if (RgnDesc->Region.Length < - (ObjDesc->CommonField.BaseByteOffset + FieldDatumByteOffset + - ObjDesc->CommonField.AccessByteWidth)) + (ObjDesc->CommonField.BaseByteOffset + FieldDatumByteOffset + + ObjDesc->CommonField.AccessByteWidth)) { if (AcpiGbl_EnableInterpreterSlack) { @@ -270,7 +271,8 @@ AcpiExSetupRegion ( * byte, and a field with Dword access specified. */ ACPI_ERROR ((AE_INFO, - "Field [%4.4s] access width (%u bytes) too large for region [%4.4s] (length %u)", + "Field [%4.4s] access width (%u bytes) " + "too large for region [%4.4s] (length %u)", AcpiUtGetNodeName (ObjDesc->CommonField.Node), ObjDesc->CommonField.AccessByteWidth, AcpiUtGetNodeName (RgnDesc->Region.Node), @@ -282,7 +284,8 @@ AcpiExSetupRegion ( * exceeds region length, indicate an error */ ACPI_ERROR ((AE_INFO, - "Field [%4.4s] Base+Offset+Width %u+%u+%u is beyond end of region [%4.4s] (length %u)", + "Field [%4.4s] Base+Offset+Width %u+%u+%u " + "is beyond end of region [%4.4s] (length %u)", AcpiUtGetNodeName (ObjDesc->CommonField.Node), ObjDesc->CommonField.BaseByteOffset, FieldDatumByteOffset, ObjDesc->CommonField.AccessByteWidth, @@ -372,8 +375,8 @@ AcpiExAccessRegion ( /* Invoke the appropriate AddressSpace/OpRegion handler */ Status = AcpiEvAddressSpaceDispatch (RgnDesc, ObjDesc, - Function, RegionOffset, - ACPI_MUL_8 (ObjDesc->CommonField.AccessByteWidth), Value); + Function, RegionOffset, + ACPI_MUL_8 (ObjDesc->CommonField.AccessByteWidth), Value); if (ACPI_FAILURE (Status)) { @@ -584,8 +587,8 @@ AcpiExFieldDatumIo ( * For simple RegionFields, we just directly access the owning * Operation Region. */ - Status = AcpiExAccessRegion (ObjDesc, FieldDatumByteOffset, Value, - ReadWrite); + Status = AcpiExAccessRegion ( + ObjDesc, FieldDatumByteOffset, Value, ReadWrite); break; case ACPI_TYPE_LOCAL_INDEX_FIELD: @@ -608,8 +611,7 @@ AcpiExFieldDatumIo ( FieldDatumByteOffset)); Status = AcpiExInsertIntoField (ObjDesc->IndexField.IndexObj, - &FieldDatumByteOffset, - sizeof (FieldDatumByteOffset)); + &FieldDatumByteOffset, sizeof (FieldDatumByteOffset)); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -622,8 +624,8 @@ AcpiExFieldDatumIo ( ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, "Read from Data Register\n")); - Status = AcpiExExtractFromField (ObjDesc->IndexField.DataObj, - Value, sizeof (UINT64)); + Status = AcpiExExtractFromField ( + ObjDesc->IndexField.DataObj, Value, sizeof (UINT64)); } else { @@ -633,8 +635,8 @@ AcpiExFieldDatumIo ( "Write to Data Register: Value %8.8X%8.8X\n", ACPI_FORMAT_UINT64 (*Value))); - Status = AcpiExInsertIntoField (ObjDesc->IndexField.DataObj, - Value, sizeof (UINT64)); + Status = AcpiExInsertIntoField ( + ObjDesc->IndexField.DataObj, Value, sizeof (UINT64)); } break; @@ -716,14 +718,14 @@ AcpiExWriteWithUpdateRule ( * ones) The left shift drops the bits we want to ignore. */ if ((~Mask << (ACPI_MUL_8 (sizeof (Mask)) - - ACPI_MUL_8 (ObjDesc->CommonField.AccessByteWidth))) != 0) + ACPI_MUL_8 (ObjDesc->CommonField.AccessByteWidth))) != 0) { /* * Read the current contents of the byte/word/dword containing * the field, and merge with the new field value. */ - Status = AcpiExFieldDatumIo (ObjDesc, FieldDatumByteOffset, - &CurrentValue, ACPI_READ); + Status = AcpiExFieldDatumIo ( + ObjDesc, FieldDatumByteOffset, &CurrentValue, ACPI_READ); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -751,13 +753,15 @@ AcpiExWriteWithUpdateRule ( ACPI_ERROR ((AE_INFO, "Unknown UpdateRule value: 0x%X", - (ObjDesc->CommonField.FieldFlags & AML_FIELD_UPDATE_RULE_MASK))); + (ObjDesc->CommonField.FieldFlags & + AML_FIELD_UPDATE_RULE_MASK))); return_ACPI_STATUS (AE_AML_OPERAND_VALUE); } } ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, - "Mask %8.8X%8.8X, DatumOffset %X, Width %X, Value %8.8X%8.8X, MergedValue %8.8X%8.8X\n", + "Mask %8.8X%8.8X, DatumOffset %X, Width %X, " + "Value %8.8X%8.8X, MergedValue %8.8X%8.8X\n", ACPI_FORMAT_UINT64 (Mask), FieldDatumByteOffset, ObjDesc->CommonField.AccessByteWidth, @@ -766,8 +770,8 @@ AcpiExWriteWithUpdateRule ( /* Write the merged value */ - Status = AcpiExFieldDatumIo (ObjDesc, FieldDatumByteOffset, - &MergedValue, ACPI_WRITE); + Status = AcpiExFieldDatumIo ( + ObjDesc, FieldDatumByteOffset, &MergedValue, ACPI_WRITE); return_ACPI_STATUS (Status); } @@ -878,8 +882,8 @@ AcpiExExtractFromField ( /* Get next input datum from the field */ FieldOffset += ObjDesc->CommonField.AccessByteWidth; - Status = AcpiExFieldDatumIo (ObjDesc, FieldOffset, - &RawDatum, ACPI_READ); + Status = AcpiExFieldDatumIo ( + ObjDesc, FieldOffset, &RawDatum, ACPI_READ); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -976,7 +980,8 @@ AcpiExInsertIntoField ( NewBuffer = NULL; RequiredLength = ACPI_ROUND_BITS_UP_TO_BYTES ( - ObjDesc->CommonField.BitLength); + ObjDesc->CommonField.BitLength); + /* * We must have a buffer that is at least as long as the field * we are writing to. This is because individual fields are @@ -1054,8 +1059,8 @@ AcpiExInsertIntoField ( /* Write merged datum to the target field */ MergedDatum &= Mask; - Status = AcpiExWriteWithUpdateRule (ObjDesc, Mask, - MergedDatum, FieldOffset); + Status = AcpiExWriteWithUpdateRule ( + ObjDesc, Mask, MergedDatum, FieldOffset); if (ACPI_FAILURE (Status)) { goto Exit; @@ -1112,8 +1117,8 @@ AcpiExInsertIntoField ( /* Write the last datum to the field */ MergedDatum &= Mask; - Status = AcpiExWriteWithUpdateRule (ObjDesc, - Mask, MergedDatum, FieldOffset); + Status = AcpiExWriteWithUpdateRule ( + ObjDesc, Mask, MergedDatum, FieldOffset); Exit: /* Free temporary buffer if we used one */ diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exmisc.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exmisc.c index f678670ae4..cde2279509 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exmisc.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exmisc.c @@ -180,9 +180,9 @@ AcpiExGetObjectReference ( default: - ACPI_ERROR ((AE_INFO, "Unknown Reference Class 0x%2.2X", + ACPI_ERROR ((AE_INFO, "Invalid Reference Class 0x%2.2X", ObjDesc->Reference.Class)); - return_ACPI_STATUS (AE_AML_INTERNAL); + return_ACPI_STATUS (AE_AML_OPERAND_TYPE); } break; @@ -338,6 +338,7 @@ AcpiExDoConcatenate ( ACPI_OPERAND_OBJECT *LocalOperand1 = Operand1; ACPI_OPERAND_OBJECT *ReturnDesc; char *NewBuf; + const char *TypeString; ACPI_STATUS Status; @@ -359,9 +360,42 @@ AcpiExDoConcatenate ( break; case ACPI_TYPE_STRING: + /* + * Per the ACPI spec, Concatenate only supports int/str/buf. + * However, we support all objects here as an extension. + * This improves the usefulness of the Printf() macro. + * 12/2015. + */ + switch (Operand1->Common.Type) + { + case ACPI_TYPE_INTEGER: + case ACPI_TYPE_STRING: + case ACPI_TYPE_BUFFER: - Status = AcpiExConvertToString (Operand1, &LocalOperand1, - ACPI_IMPLICIT_CONVERT_HEX); + Status = AcpiExConvertToString ( + Operand1, &LocalOperand1, ACPI_IMPLICIT_CONVERT_HEX); + break; + + default: + /* + * Just emit a string containing the object type. + */ + TypeString = AcpiUtGetTypeName (Operand1->Common.Type); + + LocalOperand1 = AcpiUtCreateStringObject ( + ((ACPI_SIZE) strlen (TypeString) + 9)); /* 9 For "[Object]" */ + if (!LocalOperand1) + { + Status = AE_NO_MEMORY; + goto Cleanup; + } + + strcpy (LocalOperand1->String.Pointer, "["); + strcat (LocalOperand1->String.Pointer, TypeString); + strcat (LocalOperand1->String.Pointer, " Object]"); + Status = AE_OK; + break; + } break; case ACPI_TYPE_BUFFER: @@ -401,8 +435,8 @@ AcpiExDoConcatenate ( /* Result of two Integers is a Buffer */ /* Need enough buffer space for two integers */ - ReturnDesc = AcpiUtCreateBufferObject ((ACPI_SIZE) - ACPI_MUL_2 (AcpiGbl_IntegerByteWidth)); + ReturnDesc = AcpiUtCreateBufferObject ( + (ACPI_SIZE) ACPI_MUL_2 (AcpiGbl_IntegerByteWidth)); if (!ReturnDesc) { Status = AE_NO_MEMORY; @@ -414,13 +448,12 @@ AcpiExDoConcatenate ( /* Copy the first integer, LSB first */ memcpy (NewBuf, &Operand0->Integer.Value, - AcpiGbl_IntegerByteWidth); + AcpiGbl_IntegerByteWidth); /* Copy the second integer (LSB first) after the first */ memcpy (NewBuf + AcpiGbl_IntegerByteWidth, - &LocalOperand1->Integer.Value, - AcpiGbl_IntegerByteWidth); + &LocalOperand1->Integer.Value, AcpiGbl_IntegerByteWidth); break; case ACPI_TYPE_STRING: @@ -428,8 +461,8 @@ AcpiExDoConcatenate ( /* Result of two Strings is a String */ ReturnDesc = AcpiUtCreateStringObject ( - ((ACPI_SIZE) Operand0->String.Length + - LocalOperand1->String.Length)); + ((ACPI_SIZE) Operand0->String.Length + + LocalOperand1->String.Length)); if (!ReturnDesc) { Status = AE_NO_MEMORY; @@ -441,8 +474,7 @@ AcpiExDoConcatenate ( /* Concatenate the strings */ strcpy (NewBuf, Operand0->String.Pointer); - strcpy (NewBuf + Operand0->String.Length, - LocalOperand1->String.Pointer); + strcat (NewBuf, LocalOperand1->String.Pointer); break; case ACPI_TYPE_BUFFER: @@ -450,8 +482,8 @@ AcpiExDoConcatenate ( /* Result of two Buffers is a Buffer */ ReturnDesc = AcpiUtCreateBufferObject ( - ((ACPI_SIZE) Operand0->Buffer.Length + - LocalOperand1->Buffer.Length)); + ((ACPI_SIZE) Operand0->Buffer.Length + + LocalOperand1->Buffer.Length)); if (!ReturnDesc) { Status = AE_NO_MEMORY; @@ -463,10 +495,10 @@ AcpiExDoConcatenate ( /* Concatenate the buffers */ memcpy (NewBuf, Operand0->Buffer.Pointer, - Operand0->Buffer.Length); + Operand0->Buffer.Length); memcpy (NewBuf + Operand0->Buffer.Length, - LocalOperand1->Buffer.Pointer, - LocalOperand1->Buffer.Length); + LocalOperand1->Buffer.Pointer, + LocalOperand1->Buffer.Length); break; default: @@ -708,8 +740,8 @@ AcpiExDoLogicalOp ( case ACPI_TYPE_STRING: - Status = AcpiExConvertToString (Operand1, &LocalOperand1, - ACPI_IMPLICIT_CONVERT_HEX); + Status = AcpiExConvertToString ( + Operand1, &LocalOperand1, ACPI_IMPLICIT_CONVERT_HEX); break; case ACPI_TYPE_BUFFER: @@ -786,8 +818,8 @@ AcpiExDoLogicalOp ( /* Lexicographic compare: compare the data bytes */ Compare = memcmp (Operand0->Buffer.Pointer, - LocalOperand1->Buffer.Pointer, - (Length0 > Length1) ? Length1 : Length0); + LocalOperand1->Buffer.Pointer, + (Length0 > Length1) ? Length1 : Length0); switch (Opcode) { diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exmutex.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exmutex.c index c688a504e7..f3cf1bb592 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exmutex.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exmutex.c @@ -281,8 +281,7 @@ AcpiExAcquireMutexObject ( } else { - Status = AcpiExSystemWaitMutex (ObjDesc->Mutex.OsMutex, - Timeout); + Status = AcpiExSystemWaitMutex (ObjDesc->Mutex.OsMutex, Timeout); } if (ACPI_FAILURE (Status)) @@ -345,33 +344,48 @@ AcpiExAcquireMutex ( } /* - * Current sync level must be less than or equal to the sync level of the - * mutex. This mechanism provides some deadlock prevention + * Current sync level must be less than or equal to the sync level + * of the mutex. This mechanism provides some deadlock prevention. */ if (WalkState->Thread->CurrentSyncLevel > ObjDesc->Mutex.SyncLevel) { ACPI_ERROR ((AE_INFO, - "Cannot acquire Mutex [%4.4s], current SyncLevel is too large (%u)", + "Cannot acquire Mutex [%4.4s], " + "current SyncLevel is too large (%u)", AcpiUtGetNodeName (ObjDesc->Mutex.Node), WalkState->Thread->CurrentSyncLevel)); return_ACPI_STATUS (AE_AML_MUTEX_ORDER); } + ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, + "Acquiring: Mutex SyncLevel %u, Thread SyncLevel %u, " + "Depth %u TID %p\n", + ObjDesc->Mutex.SyncLevel, WalkState->Thread->CurrentSyncLevel, + ObjDesc->Mutex.AcquisitionDepth, WalkState->Thread)); + Status = AcpiExAcquireMutexObject ((UINT16) TimeDesc->Integer.Value, - ObjDesc, WalkState->Thread->ThreadId); + ObjDesc, WalkState->Thread->ThreadId); + if (ACPI_SUCCESS (Status) && ObjDesc->Mutex.AcquisitionDepth == 1) { /* Save Thread object, original/current sync levels */ ObjDesc->Mutex.OwnerThread = WalkState->Thread; - ObjDesc->Mutex.OriginalSyncLevel = WalkState->Thread->CurrentSyncLevel; - WalkState->Thread->CurrentSyncLevel = ObjDesc->Mutex.SyncLevel; + ObjDesc->Mutex.OriginalSyncLevel = + WalkState->Thread->CurrentSyncLevel; + WalkState->Thread->CurrentSyncLevel = + ObjDesc->Mutex.SyncLevel; /* Link the mutex to the current thread for force-unlock at method exit */ AcpiExLinkMutex (ObjDesc, WalkState->Thread); } + ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, + "Acquired: Mutex SyncLevel %u, Thread SyncLevel %u, Depth %u\n", + ObjDesc->Mutex.SyncLevel, WalkState->Thread->CurrentSyncLevel, + ObjDesc->Mutex.AcquisitionDepth)); + return_ACPI_STATUS (Status); } @@ -467,9 +481,9 @@ AcpiExReleaseMutex ( ACPI_OPERAND_OBJECT *ObjDesc, ACPI_WALK_STATE *WalkState) { - ACPI_STATUS Status = AE_OK; UINT8 PreviousSyncLevel; ACPI_THREAD_STATE *OwnerThread; + ACPI_STATUS Status = AE_OK; ACPI_FUNCTION_TRACE (ExReleaseMutex); @@ -527,7 +541,8 @@ AcpiExReleaseMutex ( if (ObjDesc->Mutex.SyncLevel != OwnerThread->CurrentSyncLevel) { ACPI_ERROR ((AE_INFO, - "Cannot release Mutex [%4.4s], SyncLevel mismatch: mutex %u current %u", + "Cannot release Mutex [%4.4s], SyncLevel mismatch: " + "mutex %u current %u", AcpiUtGetNodeName (ObjDesc->Mutex.Node), ObjDesc->Mutex.SyncLevel, WalkState->Thread->CurrentSyncLevel)); return_ACPI_STATUS (AE_AML_MUTEX_ORDER); @@ -541,6 +556,13 @@ AcpiExReleaseMutex ( PreviousSyncLevel = OwnerThread->AcquiredMutexList->Mutex.OriginalSyncLevel; + ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, + "Releasing: Object SyncLevel %u, Thread SyncLevel %u, " + "Prev SyncLevel %u, Depth %u TID %p\n", + ObjDesc->Mutex.SyncLevel, WalkState->Thread->CurrentSyncLevel, + PreviousSyncLevel, ObjDesc->Mutex.AcquisitionDepth, + WalkState->Thread)); + Status = AcpiExReleaseMutexObject (ObjDesc); if (ACPI_FAILURE (Status)) { @@ -554,6 +576,12 @@ AcpiExReleaseMutex ( OwnerThread->CurrentSyncLevel = PreviousSyncLevel; } + ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, + "Released: Object SyncLevel %u, Thread SyncLevel, %u, " + "Prev SyncLevel %u, Depth %u\n", + ObjDesc->Mutex.SyncLevel, WalkState->Thread->CurrentSyncLevel, + PreviousSyncLevel, ObjDesc->Mutex.AcquisitionDepth)); + return_ACPI_STATUS (Status); } @@ -584,7 +612,7 @@ AcpiExReleaseAllMutexes ( ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_FUNCTION_NAME (ExReleaseAllMutexes); + ACPI_FUNCTION_TRACE (ExReleaseAllMutexes); /* Traverse the list of owned mutexes, releasing each one */ @@ -592,14 +620,10 @@ AcpiExReleaseAllMutexes ( while (Next) { ObjDesc = Next; - Next = ObjDesc->Mutex.Next; - - ObjDesc->Mutex.Prev = NULL; - ObjDesc->Mutex.Next = NULL; - ObjDesc->Mutex.AcquisitionDepth = 0; - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, - "Force-releasing held mutex: %p\n", ObjDesc)); + "Mutex [%4.4s] force-release, SyncLevel %u Depth %u\n", + ObjDesc->Mutex.Node->Name.Ascii, ObjDesc->Mutex.SyncLevel, + ObjDesc->Mutex.AcquisitionDepth)); /* Release the mutex, special case for Global Lock */ @@ -614,13 +638,20 @@ AcpiExReleaseAllMutexes ( AcpiOsReleaseMutex (ObjDesc->Mutex.OsMutex); } - /* Mark mutex unowned */ - - ObjDesc->Mutex.OwnerThread = NULL; - ObjDesc->Mutex.ThreadId = 0; - /* Update Thread SyncLevel (Last mutex is the important one) */ Thread->CurrentSyncLevel = ObjDesc->Mutex.OriginalSyncLevel; + + /* Mark mutex unowned */ + + Next = ObjDesc->Mutex.Next; + + ObjDesc->Mutex.Prev = NULL; + ObjDesc->Mutex.Next = NULL; + ObjDesc->Mutex.AcquisitionDepth = 0; + ObjDesc->Mutex.OwnerThread = NULL; + ObjDesc->Mutex.ThreadId = 0; } + + return_VOID; } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exnames.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exnames.c index 38ceba0a09..d222a21045 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exnames.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exnames.c @@ -232,6 +232,7 @@ AcpiExAllocateNameString ( return_PTR (NameString); } + /******************************************************************************* * * FUNCTION: AcpiExNameSegment @@ -261,8 +262,8 @@ AcpiExNameSegment ( /* - * If first character is a digit, then we know that we aren't looking at a - * valid name segment + * If first character is a digit, then we know that we aren't looking + * at a valid name segment */ CharBuf[0] = *AmlAddress; @@ -466,7 +467,8 @@ AcpiExGetNameString ( AmlAddress++; NumSegments = *AmlAddress; - NameString = AcpiExAllocateNameString (PrefixCount, NumSegments); + NameString = AcpiExAllocateNameString ( + PrefixCount, NumSegments); if (!NameString) { Status = AE_NO_MEMORY; diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exoparg1.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exoparg1.c index c7addbdbe5..965de2df6b 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exoparg1.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exoparg1.c @@ -403,7 +403,7 @@ AcpiExOpcode_1A_1T_1R ( * endian unsigned value, so this boundary condition is valid. */ for (Temp32 = 0; ReturnDesc->Integer.Value && - Temp32 < ACPI_INTEGER_BIT_SIZE; ++Temp32) + Temp32 < ACPI_INTEGER_BIT_SIZE; ++Temp32) { ReturnDesc->Integer.Value >>= 1; } @@ -420,7 +420,7 @@ AcpiExOpcode_1A_1T_1R ( * endian unsigned value, so this boundary condition is valid. */ for (Temp32 = 0; ReturnDesc->Integer.Value && - Temp32 < ACPI_INTEGER_BIT_SIZE; ++Temp32) + Temp32 < ACPI_INTEGER_BIT_SIZE; ++Temp32) { ReturnDesc->Integer.Value <<= 1; } @@ -526,7 +526,7 @@ AcpiExOpcode_1A_1T_1R ( /* Get the object reference, store it, and remove our reference */ Status = AcpiExGetObjectReference (Operand[0], - &ReturnDesc2, WalkState); + &ReturnDesc2, WalkState); if (ACPI_FAILURE (Status)) { goto Cleanup; @@ -581,28 +581,30 @@ AcpiExOpcode_1A_1T_1R ( */ case AML_COPY_OP: /* Copy (Source, Target) */ - Status = AcpiUtCopyIobjectToIobject (Operand[0], &ReturnDesc, - WalkState); + Status = AcpiUtCopyIobjectToIobject ( + Operand[0], &ReturnDesc, WalkState); break; case AML_TO_DECSTRING_OP: /* ToDecimalString (Data, Result) */ - Status = AcpiExConvertToString (Operand[0], &ReturnDesc, - ACPI_EXPLICIT_CONVERT_DECIMAL); + Status = AcpiExConvertToString ( + Operand[0], &ReturnDesc, ACPI_EXPLICIT_CONVERT_DECIMAL); if (ReturnDesc == Operand[0]) { /* No conversion performed, add ref to handle return value */ + AcpiUtAddReference (ReturnDesc); } break; case AML_TO_HEXSTRING_OP: /* ToHexString (Data, Result) */ - Status = AcpiExConvertToString (Operand[0], &ReturnDesc, - ACPI_EXPLICIT_CONVERT_HEX); + Status = AcpiExConvertToString ( + Operand[0], &ReturnDesc, ACPI_EXPLICIT_CONVERT_HEX); if (ReturnDesc == Operand[0]) { /* No conversion performed, add ref to handle return value */ + AcpiUtAddReference (ReturnDesc); } break; @@ -613,17 +615,19 @@ AcpiExOpcode_1A_1T_1R ( if (ReturnDesc == Operand[0]) { /* No conversion performed, add ref to handle return value */ + AcpiUtAddReference (ReturnDesc); } break; case AML_TO_INTEGER_OP: /* ToInteger (Data, Result) */ - Status = AcpiExConvertToInteger (Operand[0], &ReturnDesc, - ACPI_ANY_BASE); + Status = AcpiExConvertToInteger ( + Operand[0], &ReturnDesc, ACPI_ANY_BASE); if (ReturnDesc == Operand[0]) { /* No conversion performed, add ref to handle return value */ + AcpiUtAddReference (ReturnDesc); } break; @@ -774,11 +778,11 @@ AcpiExOpcode_1A_0T_1R ( */ if (WalkState->Opcode == AML_INCREMENT_OP) { - ReturnDesc->Integer.Value = TempDesc->Integer.Value +1; + ReturnDesc->Integer.Value = TempDesc->Integer.Value + 1; } else { - ReturnDesc->Integer.Value = TempDesc->Integer.Value -1; + ReturnDesc->Integer.Value = TempDesc->Integer.Value - 1; } /* Finished with this Integer object */ @@ -792,7 +796,7 @@ AcpiExOpcode_1A_0T_1R ( Status = AcpiExStore (ReturnDesc, Operand[0], WalkState); break; - case AML_TYPE_OP: /* ObjectType (SourceObject) */ + case AML_OBJECT_TYPE_OP: /* ObjectType (SourceObject) */ /* * Note: The operand is not resolved at this point because we want to * get the associated object, not its value. For example, we don't @@ -826,8 +830,8 @@ AcpiExOpcode_1A_0T_1R ( /* Get the base object */ - Status = AcpiExResolveMultiple (WalkState, - Operand[0], &Type, &TempDesc); + Status = AcpiExResolveMultiple ( + WalkState, Operand[0], &Type, &TempDesc); if (ACPI_FAILURE (Status)) { goto Cleanup; @@ -873,8 +877,10 @@ AcpiExOpcode_1A_0T_1R ( default: ACPI_ERROR ((AE_INFO, - "Operand must be Buffer/Integer/String/Package - found type %s", + "Operand must be Buffer/Integer/String/Package" + " - found type %s", AcpiUtGetTypeName (Type))); + Status = AE_AML_OPERAND_TYPE; goto Cleanup; } @@ -899,7 +905,8 @@ AcpiExOpcode_1A_0T_1R ( case AML_REF_OF_OP: /* RefOf (SourceObject) */ - Status = AcpiExGetObjectReference (Operand[0], &ReturnDesc, WalkState); + Status = AcpiExGetObjectReference ( + Operand[0], &ReturnDesc, WalkState); if (ACPI_FAILURE (Status)) { goto Cleanup; @@ -946,9 +953,9 @@ AcpiExOpcode_1A_0T_1R ( /* Set Operand[0] to the value of the local/arg */ Status = AcpiDsMethodDataGetValue ( - Operand[0]->Reference.Class, - Operand[0]->Reference.Value, - WalkState, &TempDesc); + Operand[0]->Reference.Class, + Operand[0]->Reference.Value, + WalkState, &TempDesc); if (ACPI_FAILURE (Status)) { goto Cleanup; @@ -1002,19 +1009,19 @@ AcpiExOpcode_1A_0T_1R ( * Field, so we need to resolve the node to a value. */ Status = AcpiNsGetNode (WalkState->ScopeInfo->Scope.Node, - Operand[0]->String.Pointer, - ACPI_NS_SEARCH_PARENT, - ACPI_CAST_INDIRECT_PTR ( - ACPI_NAMESPACE_NODE, &ReturnDesc)); + Operand[0]->String.Pointer, + ACPI_NS_SEARCH_PARENT, + ACPI_CAST_INDIRECT_PTR ( + ACPI_NAMESPACE_NODE, &ReturnDesc)); if (ACPI_FAILURE (Status)) { goto Cleanup; } Status = AcpiExResolveNodeToValue ( - ACPI_CAST_INDIRECT_PTR ( - ACPI_NAMESPACE_NODE, &ReturnDesc), - WalkState); + ACPI_CAST_INDIRECT_PTR ( + ACPI_NAMESPACE_NODE, &ReturnDesc), + WalkState); goto Cleanup; } } @@ -1030,7 +1037,7 @@ AcpiExOpcode_1A_0T_1R ( * dereferenced above. */ ReturnDesc = AcpiNsGetAttachedObject ( - (ACPI_NAMESPACE_NODE *) Operand[0]); + (ACPI_NAMESPACE_NODE *) Operand[0]); AcpiUtAddReference (ReturnDesc); } else @@ -1097,6 +1104,7 @@ AcpiExOpcode_1A_0T_1R ( ACPI_ERROR ((AE_INFO, "Unknown Index TargetType 0x%X in reference object %p", Operand[0]->Reference.TargetType, Operand[0])); + Status = AE_AML_OPERAND_TYPE; goto Cleanup; } @@ -1127,8 +1135,8 @@ AcpiExOpcode_1A_0T_1R ( case ACPI_TYPE_LOCAL_BANK_FIELD: case ACPI_TYPE_LOCAL_INDEX_FIELD: - Status = AcpiExReadDataFromField (WalkState, - ReturnDesc, &TempDesc); + Status = AcpiExReadDataFromField ( + WalkState, ReturnDesc, &TempDesc); if (ACPI_FAILURE (Status)) { goto Cleanup; @@ -1163,6 +1171,7 @@ AcpiExOpcode_1A_0T_1R ( ACPI_ERROR ((AE_INFO, "Unknown AML opcode 0x%X", WalkState->Opcode)); + Status = AE_AML_BAD_OPCODE; goto Cleanup; } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exoparg2.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exoparg2.c index f1ab70620d..29b41a5072 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exoparg2.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exoparg2.c @@ -275,10 +275,11 @@ AcpiExOpcode_2A_2T_1R ( /* Quotient to ReturnDesc1, remainder to ReturnDesc2 */ - Status = AcpiUtDivide (Operand[0]->Integer.Value, - Operand[1]->Integer.Value, - &ReturnDesc1->Integer.Value, - &ReturnDesc2->Integer.Value); + Status = AcpiUtDivide ( + Operand[0]->Integer.Value, + Operand[1]->Integer.Value, + &ReturnDesc1->Integer.Value, + &ReturnDesc2->Integer.Value); if (ACPI_FAILURE (Status)) { goto Cleanup; @@ -289,6 +290,7 @@ AcpiExOpcode_2A_2T_1R ( ACPI_ERROR ((AE_INFO, "Unknown AML opcode 0x%X", WalkState->Opcode)); + Status = AE_AML_BAD_OPCODE; goto Cleanup; } @@ -373,9 +375,10 @@ AcpiExOpcode_2A_1T_1R ( goto Cleanup; } - ReturnDesc->Integer.Value = AcpiExDoMathOp (WalkState->Opcode, - Operand[0]->Integer.Value, - Operand[1]->Integer.Value); + ReturnDesc->Integer.Value = AcpiExDoMathOp ( + WalkState->Opcode, + Operand[0]->Integer.Value, + Operand[1]->Integer.Value); goto StoreResultToTarget; } @@ -392,16 +395,17 @@ AcpiExOpcode_2A_1T_1R ( /* ReturnDesc will contain the remainder */ - Status = AcpiUtDivide (Operand[0]->Integer.Value, - Operand[1]->Integer.Value, - NULL, - &ReturnDesc->Integer.Value); + Status = AcpiUtDivide ( + Operand[0]->Integer.Value, + Operand[1]->Integer.Value, + NULL, + &ReturnDesc->Integer.Value); break; case AML_CONCAT_OP: /* Concatenate (Data1, Data2, Result) */ - Status = AcpiExDoConcatenate (Operand[0], Operand[1], - &ReturnDesc, WalkState); + Status = AcpiExDoConcatenate ( + Operand[0], Operand[1], &ReturnDesc, WalkState); break; case AML_TO_STRING_OP: /* ToString (Buffer, Length, Result) (ACPI 2.0) */ @@ -448,8 +452,8 @@ AcpiExOpcode_2A_1T_1R ( /* ConcatenateResTemplate (Buffer, Buffer, Result) (ACPI 2.0) */ - Status = AcpiExConcatTemplate (Operand[0], Operand[1], - &ReturnDesc, WalkState); + Status = AcpiExConcatTemplate ( + Operand[0], Operand[1], &ReturnDesc, WalkState); break; case AML_INDEX_OP: /* Index (Source Index Result) */ @@ -632,8 +636,8 @@ AcpiExOpcode_2A_0T_1R ( /* LogicalOp (Operand0, Operand1) */ Status = AcpiExDoLogicalNumericOp (WalkState->Opcode, - Operand[0]->Integer.Value, Operand[1]->Integer.Value, - &LogicalResult); + Operand[0]->Integer.Value, Operand[1]->Integer.Value, + &LogicalResult); goto StoreLogicalResult; } else if (WalkState->OpInfo->Flags & AML_LOGICAL) @@ -641,7 +645,7 @@ AcpiExOpcode_2A_0T_1R ( /* LogicalOp (Operand0, Operand1) */ Status = AcpiExDoLogicalOp (WalkState->Opcode, Operand[0], - Operand[1], &LogicalResult); + Operand[1], &LogicalResult); goto StoreLogicalResult; } @@ -672,6 +676,7 @@ AcpiExOpcode_2A_0T_1R ( ACPI_ERROR ((AE_INFO, "Unknown AML opcode 0x%X", WalkState->Opcode)); + Status = AE_AML_BAD_OPCODE; goto Cleanup; } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exoparg3.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exoparg3.c index b2c49bef8d..aa52392d10 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exoparg3.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exoparg3.c @@ -178,7 +178,8 @@ AcpiExOpcode_3A_0T_0R ( case AML_FATAL_OP: /* Fatal (FatalType FatalCode FatalArg) */ ACPI_DEBUG_PRINT ((ACPI_DB_INFO, - "FatalOp: Type %X Code %X Arg %X <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n", + "FatalOp: Type %X Code %X Arg %X " + "<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n", (UINT32) Operand[0]->Integer.Value, (UINT32) Operand[1]->Integer.Value, (UINT32) Operand[2]->Integer.Value)); @@ -186,8 +187,8 @@ AcpiExOpcode_3A_0T_0R ( Fatal = ACPI_ALLOCATE (sizeof (ACPI_SIGNAL_FATAL_INFO)); if (Fatal) { - Fatal->Type = (UINT32) Operand[0]->Integer.Value; - Fatal->Code = (UINT32) Operand[1]->Integer.Value; + Fatal->Type = (UINT32) Operand[0]->Integer.Value; + Fatal->Code = (UINT32) Operand[1]->Integer.Value; Fatal->Argument = (UINT32) Operand[2]->Integer.Value; } @@ -215,6 +216,7 @@ AcpiExOpcode_3A_0T_0R ( ACPI_ERROR ((AE_INFO, "Unknown AML opcode 0x%X", WalkState->Opcode)); + Status = AE_AML_BAD_OPCODE; goto Cleanup; } @@ -262,7 +264,7 @@ AcpiExOpcode_3A_1T_1R ( * either a String or a Buffer, so just use its type. */ ReturnDesc = AcpiUtCreateInternalObject ( - (Operand[0])->Common.Type); + (Operand[0])->Common.Type); if (!ReturnDesc) { Status = AE_NO_MEMORY; @@ -287,8 +289,8 @@ AcpiExOpcode_3A_1T_1R ( else if ((Index + Length) > Operand[0]->String.Length) { - Length = (ACPI_SIZE) Operand[0]->String.Length - - (ACPI_SIZE) Index; + Length = + (ACPI_SIZE) Operand[0]->String.Length - (ACPI_SIZE) Index; } /* Strings always have a sub-pointer, not so for buffers */ @@ -334,8 +336,8 @@ AcpiExOpcode_3A_1T_1R ( { /* We have a buffer, copy the portion requested */ - memcpy (Buffer, Operand[0]->String.Pointer + Index, - Length); + memcpy (Buffer, + Operand[0]->String.Pointer + Index, Length); } /* Set the length of the new String/Buffer */ @@ -352,6 +354,7 @@ AcpiExOpcode_3A_1T_1R ( ACPI_ERROR ((AE_INFO, "Unknown AML opcode 0x%X", WalkState->Opcode)); + Status = AE_AML_BAD_OPCODE; goto Cleanup; } @@ -369,12 +372,12 @@ Cleanup: AcpiUtRemoveReference (ReturnDesc); WalkState->ResultObj = NULL; } - - /* Set the return object and exit */ - else { + /* Set the return object and exit */ + WalkState->ResultObj = ReturnDesc; } + return_ACPI_STATUS (Status); } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exoparg6.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exoparg6.c index a7d76d686c..6423334b8c 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exoparg6.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exoparg6.c @@ -205,8 +205,8 @@ AcpiExDoMatch ( * True if equal: (P[i] == M) * Change to: (M == P[i]) */ - Status = AcpiExDoLogicalOp (AML_LEQUAL_OP, MatchObj, PackageObj, - &LogicalResult); + Status = AcpiExDoLogicalOp ( + AML_LEQUAL_OP, MatchObj, PackageObj, &LogicalResult); if (ACPI_FAILURE (Status)) { return (FALSE); @@ -218,8 +218,8 @@ AcpiExDoMatch ( * True if less than or equal: (P[i] <= M) (P[i] NotGreater than M) * Change to: (M >= P[i]) (M NotLess than P[i]) */ - Status = AcpiExDoLogicalOp (AML_LLESS_OP, MatchObj, PackageObj, - &LogicalResult); + Status = AcpiExDoLogicalOp ( + AML_LLESS_OP, MatchObj, PackageObj, &LogicalResult); if (ACPI_FAILURE (Status)) { return (FALSE); @@ -232,8 +232,8 @@ AcpiExDoMatch ( * True if less than: (P[i] < M) * Change to: (M > P[i]) */ - Status = AcpiExDoLogicalOp (AML_LGREATER_OP, MatchObj, PackageObj, - &LogicalResult); + Status = AcpiExDoLogicalOp ( + AML_LGREATER_OP, MatchObj, PackageObj, &LogicalResult); if (ACPI_FAILURE (Status)) { return (FALSE); @@ -245,8 +245,8 @@ AcpiExDoMatch ( * True if greater than or equal: (P[i] >= M) (P[i] NotLess than M) * Change to: (M <= P[i]) (M NotGreater than P[i]) */ - Status = AcpiExDoLogicalOp (AML_LGREATER_OP, MatchObj, PackageObj, - &LogicalResult); + Status = AcpiExDoLogicalOp ( + AML_LGREATER_OP, MatchObj, PackageObj, &LogicalResult); if (ACPI_FAILURE (Status)) { return (FALSE); @@ -259,8 +259,8 @@ AcpiExDoMatch ( * True if greater than: (P[i] > M) * Change to: (M < P[i]) */ - Status = AcpiExDoLogicalOp (AML_LLESS_OP, MatchObj, PackageObj, - &LogicalResult); + Status = AcpiExDoLogicalOp ( + AML_LLESS_OP, MatchObj, PackageObj, &LogicalResult); if (ACPI_FAILURE (Status)) { return (FALSE); @@ -376,13 +376,13 @@ AcpiExOpcode_6A_0T_1R ( * non-match. */ if (!AcpiExDoMatch ((UINT32) Operand[1]->Integer.Value, - ThisElement, Operand[2])) + ThisElement, Operand[2])) { continue; } if (!AcpiExDoMatch ((UINT32) Operand[3]->Integer.Value, - ThisElement, Operand[4])) + ThisElement, Operand[4])) { continue; } @@ -403,6 +403,7 @@ AcpiExOpcode_6A_0T_1R ( ACPI_ERROR ((AE_INFO, "Unknown AML opcode 0x%X", WalkState->Opcode)); + Status = AE_AML_BAD_OPCODE; goto Cleanup; } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exprep.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exprep.c index d84ccc3efb..91ee2b8c0b 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exprep.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exprep.c @@ -1,6 +1,6 @@ /****************************************************************************** * - * Module Name: exprep - ACPI AML (p-code) execution - field prep utilities + * Module Name: exprep - ACPI AML field prep utilities * *****************************************************************************/ @@ -141,6 +141,7 @@ AcpiExGenerateAccess ( UINT32 FieldBitLength, UINT32 RegionLength); + /******************************************************************************* * * FUNCTION: AcpiExGenerateAccess @@ -185,10 +186,13 @@ AcpiExGenerateAccess ( /* Round Field start offset and length to "minimal" byte boundaries */ - FieldByteOffset = ACPI_DIV_8 (ACPI_ROUND_DOWN (FieldBitOffset, 8)); - FieldByteEndOffset = ACPI_DIV_8 (ACPI_ROUND_UP (FieldBitLength + - FieldBitOffset, 8)); - FieldByteLength = FieldByteEndOffset - FieldByteOffset; + FieldByteOffset = ACPI_DIV_8 ( + ACPI_ROUND_DOWN (FieldBitOffset, 8)); + + FieldByteEndOffset = ACPI_DIV_8 ( + ACPI_ROUND_UP (FieldBitLength + FieldBitOffset, 8)); + + FieldByteLength = FieldByteEndOffset - FieldByteOffset; ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, "Bit length %u, Bit offset %u\n", @@ -213,7 +217,8 @@ AcpiExGenerateAccess ( * are done. (This does not optimize for the perfectly aligned * case yet). */ - if (ACPI_ROUND_UP (FieldByteEndOffset, AccessByteWidth) <= RegionLength) + if (ACPI_ROUND_UP (FieldByteEndOffset, AccessByteWidth) <= + RegionLength) { FieldStartOffset = ACPI_ROUND_DOWN (FieldByteOffset, AccessByteWidth) / @@ -237,7 +242,8 @@ AcpiExGenerateAccess ( if (Accesses <= 1) { ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, - "Entire field can be accessed with one operation of size %u\n", + "Entire field can be accessed " + "with one operation of size %u\n", AccessByteWidth)); return_VALUE (AccessByteWidth); } @@ -248,14 +254,15 @@ AcpiExGenerateAccess ( */ if (Accesses < MinimumAccesses) { - MinimumAccesses = Accesses; + MinimumAccesses = Accesses; MinimumAccessWidth = AccessByteWidth; } } else { ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, - "AccessWidth %u end is NOT within region\n", AccessByteWidth)); + "AccessWidth %u end is NOT within region\n", + AccessByteWidth)); if (AccessByteWidth == 1) { ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, @@ -283,6 +290,7 @@ AcpiExGenerateAccess ( */ ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, "Cannot access field in one operation, using width 8\n")); + return_VALUE (8); } #endif /* ACPI_UNDER_DEVELOPMENT */ @@ -367,6 +375,7 @@ AcpiExDecodeFieldAccess ( ACPI_ERROR ((AE_INFO, "Unknown field access type 0x%X", Access)); + return_UINT32 (0); } @@ -446,8 +455,8 @@ AcpiExPrepCommonFieldObject ( * For all other access types (Byte, Word, Dword, Qword), the Bitwidth is * the same (equivalent) as the ByteAlignment. */ - AccessBitWidth = AcpiExDecodeFieldAccess (ObjDesc, FieldFlags, - &ByteAlignment); + AccessBitWidth = AcpiExDecodeFieldAccess ( + ObjDesc, FieldFlags, &ByteAlignment); if (!AccessBitWidth) { return_ACPI_STATUS (AE_AML_OPERAND_VALUE); @@ -543,8 +552,8 @@ AcpiExPrepFieldValue ( ObjDesc->CommonField.Node = Info->FieldNode; Status = AcpiExPrepCommonFieldObject (ObjDesc, - Info->FieldFlags, Info->Attribute, - Info->FieldBitPosition, Info->FieldBitLength); + Info->FieldFlags, Info->Attribute, + Info->FieldBitPosition, Info->FieldBitLength); if (ACPI_FAILURE (Status)) { AcpiUtDeleteObjectDesc (ObjDesc); @@ -576,8 +585,10 @@ AcpiExPrepFieldValue ( } } - ObjDesc->Field.ResourceBuffer = SecondDesc->Buffer.Pointer; - ObjDesc->Field.ResourceLength = (UINT16) SecondDesc->Buffer.Length; + ObjDesc->Field.ResourceBuffer = + SecondDesc->Buffer.Pointer; + ObjDesc->Field.ResourceLength = + (UINT16) SecondDesc->Buffer.Length; } else if (Info->ResourceBuffer) { @@ -599,7 +610,8 @@ AcpiExPrepFieldValue ( if (AccessByteWidth < 256) { - ObjDesc->CommonField.AccessByteWidth = (UINT8) AccessByteWidth; + ObjDesc->CommonField.AccessByteWidth = + (UINT8) AccessByteWidth; } } @@ -609,8 +621,10 @@ AcpiExPrepFieldValue ( ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, "RegionField: BitOff %X, Off %X, Gran %X, Region %p\n", - ObjDesc->Field.StartFieldBitOffset, ObjDesc->Field.BaseByteOffset, - ObjDesc->Field.AccessByteWidth, ObjDesc->Field.RegionObj)); + ObjDesc->Field.StartFieldBitOffset, + ObjDesc->Field.BaseByteOffset, + ObjDesc->Field.AccessByteWidth, + ObjDesc->Field.RegionObj)); break; case ACPI_TYPE_LOCAL_BANK_FIELD: @@ -690,7 +704,8 @@ AcpiExPrepFieldValue ( ObjDesc->IndexField.AccessByteWidth); ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, - "IndexField: BitOff %X, Off %X, Value %X, Gran %X, Index %p, Data %p\n", + "IndexField: BitOff %X, Off %X, Value %X, " + "Gran %X, Index %p, Data %p\n", ObjDesc->IndexField.StartFieldBitOffset, ObjDesc->IndexField.BaseByteOffset, ObjDesc->IndexField.Value, @@ -710,10 +725,11 @@ AcpiExPrepFieldValue ( * Store the constructed descriptor (ObjDesc) into the parent Node, * preserving the current type of that NamedObj. */ - Status = AcpiNsAttachObject (Info->FieldNode, ObjDesc, - AcpiNsGetType (Info->FieldNode)); + Status = AcpiNsAttachObject ( + Info->FieldNode, ObjDesc, AcpiNsGetType (Info->FieldNode)); - ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, "Set NamedObj %p [%4.4s], ObjDesc %p\n", + ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, + "Set NamedObj %p [%4.4s], ObjDesc %p\n", Info->FieldNode, AcpiUtGetNodeName (Info->FieldNode), ObjDesc)); /* Remove local reference to the object */ diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exregion.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exregion.c index cf60500f30..23c04dcb77 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exregion.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exregion.c @@ -489,7 +489,8 @@ AcpiExPciConfigSpaceHandler ( PciRegister = (UINT16) (UINT32) Address; ACPI_DEBUG_PRINT ((ACPI_DB_INFO, - "Pci-Config %u (%u) Seg(%04x) Bus(%04x) Dev(%04x) Func(%04x) Reg(%04x)\n", + "Pci-Config %u (%u) Seg(%04x) Bus(%04x) " + "Dev(%04x) Func(%04x) Reg(%04x)\n", Function, BitWidth, PciId->Segment, PciId->Bus, PciId->Device, PciId->Function, PciRegister)); @@ -498,14 +499,14 @@ AcpiExPciConfigSpaceHandler ( case ACPI_READ: *Value = 0; - Status = AcpiOsReadPciConfiguration (PciId, PciRegister, - Value, BitWidth); + Status = AcpiOsReadPciConfiguration ( + PciId, PciRegister, Value, BitWidth); break; case ACPI_WRITE: - Status = AcpiOsWritePciConfiguration (PciId, PciRegister, - *Value, BitWidth); + Status = AcpiOsWritePciConfiguration ( + PciId, PciRegister, *Value, BitWidth); break; default: diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exresnte.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exresnte.c index 6967bbb3f9..4c334f6ac1 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exresnte.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exresnte.c @@ -170,9 +170,9 @@ AcpiExResolveNodeToValue ( * The stack pointer points to a ACPI_NAMESPACE_NODE (Node). Get the * object that is attached to the Node. */ - Node = *ObjectPtr; + Node = *ObjectPtr; SourceDesc = AcpiNsGetAttachedObject (Node); - EntryType = AcpiNsGetType ((ACPI_HANDLE) Node); + EntryType = AcpiNsGetType ((ACPI_HANDLE) Node); ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Entry=%p SourceDesc=%p [%s]\n", Node, SourceDesc, AcpiUtGetTypeName (EntryType))); @@ -182,15 +182,15 @@ AcpiExResolveNodeToValue ( { /* There is always exactly one level of indirection */ - Node = ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, Node->Object); + Node = ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, Node->Object); SourceDesc = AcpiNsGetAttachedObject (Node); - EntryType = AcpiNsGetType ((ACPI_HANDLE) Node); + EntryType = AcpiNsGetType ((ACPI_HANDLE) Node); *ObjectPtr = Node; } /* * Several object types require no further processing: - * 1) Device/Thermal objects don't have a "real" subobject, return the Node + * 1) Device/Thermal objects don't have a "real" subobject, return Node * 2) Method locals and arguments have a pseudo-Node * 3) 10/2007: Added method type to assist with Package construction. */ diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exresolv.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exresolv.c index d32e8426e0..6628e93e63 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exresolv.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exresolv.c @@ -191,8 +191,8 @@ AcpiExResolveToValue ( if (ACPI_GET_DESCRIPTOR_TYPE (*StackPtr) == ACPI_DESC_TYPE_NAMED) { Status = AcpiExResolveNodeToValue ( - ACPI_CAST_INDIRECT_PTR (ACPI_NAMESPACE_NODE, StackPtr), - WalkState); + ACPI_CAST_INDIRECT_PTR (ACPI_NAMESPACE_NODE, StackPtr), + WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -251,7 +251,7 @@ AcpiExResolveObjectToValue ( * Note: this increments the local's object reference count */ Status = AcpiDsMethodDataGetValue (RefType, - StackDesc->Reference.Value, WalkState, &ObjDesc); + StackDesc->Reference.Value, WalkState, &ObjDesc); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -297,7 +297,6 @@ AcpiExResolveObjectToValue ( * (i.e., dereference the package index) * Delete the ref object, increment the returned object */ - AcpiUtRemoveReference (StackDesc); AcpiUtAddReference (ObjDesc); *StackPtr = ObjDesc; } @@ -308,7 +307,8 @@ AcpiExResolveObjectToValue ( * the package, can't dereference it */ ACPI_ERROR ((AE_INFO, - "Attempt to dereference an Index to NULL package element Idx=%p", + "Attempt to dereference an Index to " + "NULL package element Idx=%p", StackDesc)); Status = AE_AML_UNINITIALIZED_ELEMENT; } @@ -359,7 +359,8 @@ AcpiExResolveObjectToValue ( default: ACPI_ERROR ((AE_INFO, - "Unknown Reference type 0x%X in %p", RefType, StackDesc)); + "Unknown Reference type 0x%X in %p", + RefType, StackDesc)); Status = AE_AML_INTERNAL; break; } @@ -380,7 +381,8 @@ AcpiExResolveObjectToValue ( case ACPI_TYPE_LOCAL_BANK_FIELD: case ACPI_TYPE_LOCAL_INDEX_FIELD: - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "FieldRead SourceDesc=%p Type=%X\n", + ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, + "FieldRead SourceDesc=%p Type=%X\n", StackDesc, StackDesc->Common.Type)); Status = AcpiExReadDataFromField (WalkState, StackDesc, &ObjDesc); @@ -451,7 +453,8 @@ AcpiExResolveMultiple ( if (Type == ACPI_TYPE_LOCAL_ALIAS) { Type = ((ACPI_NAMESPACE_NODE *) ObjDesc)->Type; - ObjDesc = AcpiNsGetAttachedObject ((ACPI_NAMESPACE_NODE *) ObjDesc); + ObjDesc = AcpiNsGetAttachedObject ( + (ACPI_NAMESPACE_NODE *) ObjDesc); } if (!ObjDesc) @@ -565,7 +568,7 @@ AcpiExResolveMultiple ( if (ReturnDesc) { Status = AcpiDsMethodDataGetValue (ObjDesc->Reference.Class, - ObjDesc->Reference.Value, WalkState, &ObjDesc); + ObjDesc->Reference.Value, WalkState, &ObjDesc); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -575,7 +578,7 @@ AcpiExResolveMultiple ( else { Status = AcpiDsMethodDataGetNode (ObjDesc->Reference.Class, - ObjDesc->Reference.Value, WalkState, &Node); + ObjDesc->Reference.Value, WalkState, &Node); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -600,7 +603,8 @@ AcpiExResolveMultiple ( default: ACPI_ERROR ((AE_INFO, - "Unknown Reference Class 0x%2.2X", ObjDesc->Reference.Class)); + "Unknown Reference Class 0x%2.2X", + ObjDesc->Reference.Class)); return_ACPI_STATUS (AE_AML_INTERNAL); } } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exresop.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exresop.c index fab4993c1d..214e6de2f8 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exresop.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exresop.c @@ -171,7 +171,8 @@ AcpiExCheckObjectType ( * specification, a store to a constant is a noop.) */ if ((ThisType == ACPI_TYPE_INTEGER) && - (((ACPI_OPERAND_OBJECT *) Object)->Common.Flags & AOPOBJ_AML_CONSTANT)) + (((ACPI_OPERAND_OBJECT *) Object)->Common.Flags & + AOPOBJ_AML_CONSTANT)) { return (AE_OK); } @@ -288,7 +289,8 @@ AcpiExResolveOperands ( */ if (ObjectType == ACPI_TYPE_LOCAL_ALIAS) { - ObjDesc = AcpiNsGetAttachedObject ((ACPI_NAMESPACE_NODE *) ObjDesc); + ObjDesc = AcpiNsGetAttachedObject ( + (ACPI_NAMESPACE_NODE *) ObjDesc); *StackPtr = ObjDesc; ObjectType = ((ACPI_NAMESPACE_NODE *) ObjDesc)->Type; } @@ -369,7 +371,8 @@ AcpiExResolveOperands ( { case ARGI_REF_OR_STRING: /* Can be a String or Reference */ - if ((ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) == ACPI_DESC_TYPE_OPERAND) && + if ((ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) == + ACPI_DESC_TYPE_OPERAND) && (ObjDesc->Common.Type == ACPI_TYPE_STRING)) { /* @@ -392,6 +395,8 @@ AcpiExResolveOperands ( case ARGI_TARGETREF: /* Allows implicit conversion rules before store */ case ARGI_FIXED_TARGET: /* No implicit conversion before store to target */ case ARGI_SIMPLE_TARGET: /* Name, Local, or Arg - no implicit conversion */ + case ARGI_STORE_TARGET: + /* * Need an operand of type ACPI_TYPE_LOCAL_REFERENCE * A Namespace Node is OK as-is @@ -401,8 +406,8 @@ AcpiExResolveOperands ( goto NextOperand; } - Status = AcpiExCheckObjectType (ACPI_TYPE_LOCAL_REFERENCE, - ObjectType, ObjDesc); + Status = AcpiExCheckObjectType ( + ACPI_TYPE_LOCAL_REFERENCE, ObjectType, ObjDesc); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -553,8 +558,8 @@ AcpiExResolveOperands ( * But we can implicitly convert from a BUFFER or INTEGER * Aka - "Implicit Source Operand Conversion" */ - Status = AcpiExConvertToString (ObjDesc, StackPtr, - ACPI_IMPLICIT_CONVERT_HEX); + Status = AcpiExConvertToString ( + ObjDesc, StackPtr, ACPI_IMPLICIT_CONVERT_HEX); if (ACPI_FAILURE (Status)) { if (Status == AE_TYPE) @@ -687,8 +692,10 @@ AcpiExResolveOperands ( case ARGI_REGION_OR_BUFFER: /* Used by Load() only */ - /* Need an operand of type REGION or a BUFFER (which could be a resolved region field) */ - + /* + * Need an operand of type REGION or a BUFFER + * (which could be a resolved region field) + */ switch (ObjDesc->Common.Type) { case ACPI_TYPE_BUFFER: @@ -732,9 +739,9 @@ AcpiExResolveOperands ( if (AcpiGbl_EnableInterpreterSlack) { /* - * Enable original behavior of Store(), allowing any and all - * objects as the source operand. The ACPI spec does not - * allow this, however. + * Enable original behavior of Store(), allowing any + * and all objects as the source operand. The ACPI + * spec does not allow this, however. */ break; } @@ -747,7 +754,8 @@ AcpiExResolveOperands ( } ACPI_ERROR ((AE_INFO, - "Needed Integer/Buffer/String/Package/Ref/Ddb], found [%s] %p", + "Needed Integer/Buffer/String/Package/Ref/Ddb]" + ", found [%s] %p", AcpiUtGetObjectTypeName (ObjDesc), ObjDesc)); return_ACPI_STATUS (AE_AML_OPERAND_TYPE); @@ -769,8 +777,8 @@ AcpiExResolveOperands ( * Make sure that the original object was resolved to the * required object type (Simple cases only). */ - Status = AcpiExCheckObjectType (TypeNeeded, - (*StackPtr)->Common.Type, *StackPtr); + Status = AcpiExCheckObjectType ( + TypeNeeded, (*StackPtr)->Common.Type, *StackPtr); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exstore.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exstore.c index 47c212ddec..096d65d5bd 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exstore.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exstore.c @@ -189,8 +189,8 @@ AcpiExStore ( * Storing an object into a Named node. */ Status = AcpiExStoreObjectToNode (SourceDesc, - (ACPI_NAMESPACE_NODE *) DestDesc, WalkState, - ACPI_IMPLICIT_CONVERSION); + (ACPI_NAMESPACE_NODE *) DestDesc, WalkState, + ACPI_IMPLICIT_CONVERSION); return_ACPI_STATUS (Status); } @@ -219,7 +219,7 @@ AcpiExStore ( /* Destination is not a Reference object */ ACPI_ERROR ((AE_INFO, - "Target is not a Reference or Constant object - %s [%p]", + "Target is not a Reference or Constant object - [%s] %p", AcpiUtGetObjectTypeName (DestDesc), DestDesc)); return_ACPI_STATUS (AE_AML_OPERAND_TYPE); @@ -240,8 +240,8 @@ AcpiExStore ( /* Storing an object into a Name "container" */ Status = AcpiExStoreObjectToNode (SourceDesc, - RefDesc->Reference.Object, - WalkState, ACPI_IMPLICIT_CONVERSION); + RefDesc->Reference.Object, + WalkState, ACPI_IMPLICIT_CONVERSION); break; case ACPI_REFCLASS_INDEX: @@ -257,7 +257,7 @@ AcpiExStore ( /* Store to a method local/arg */ Status = AcpiDsStoreObjectToLocal (RefDesc->Reference.Class, - RefDesc->Reference.Value, SourceDesc, WalkState); + RefDesc->Reference.Value, SourceDesc, WalkState); break; case ACPI_REFCLASS_DEBUG: @@ -266,7 +266,7 @@ AcpiExStore ( * displayed and otherwise has no effect -- see ACPI Specification */ ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, - "**** Write to Debug Object: Object %p %s ****:\n\n", + "**** Write to Debug Object: Object %p [%s] ****:\n\n", SourceDesc, AcpiUtGetObjectTypeName (SourceDesc))); ACPI_DEBUG_OBJECT (SourceDesc, 0, 0); @@ -346,7 +346,8 @@ AcpiExStoreObjectToIndex ( { /* Normal object, copy it */ - Status = AcpiUtCopyIobjectToIobject (SourceDesc, &NewDesc, WalkState); + Status = AcpiUtCopyIobjectToIobject ( + SourceDesc, &NewDesc, WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -428,7 +429,7 @@ AcpiExStoreObjectToIndex ( /* All other types are invalid */ ACPI_ERROR ((AE_INFO, - "Source must be Integer/Buffer/String type, not %s", + "Source must be type [Integer/Buffer/String], found [%s]", AcpiUtGetObjectTypeName (SourceDesc))); return_ACPI_STATUS (AE_AML_OPERAND_TYPE); } @@ -440,8 +441,8 @@ AcpiExStoreObjectToIndex ( default: ACPI_ERROR ((AE_INFO, - "Target is not a Package or BufferField")); - Status = AE_AML_OPERAND_TYPE; + "Target is not of type [Package/BufferField]")); + Status = AE_AML_TARGET_TYPE; break; } @@ -462,20 +463,20 @@ AcpiExStoreObjectToIndex ( * * DESCRIPTION: Store the object to the named object. * - * The Assignment of an object to a named object is handled here - * The value passed in will replace the current value (if any) - * with the input value. + * The assignment of an object to a named object is handled here. + * The value passed in will replace the current value (if any) + * with the input value. * - * When storing into an object the data is converted to the - * target object type then stored in the object. This means - * that the target object type (for an initialized target) will - * not be changed by a store operation. A CopyObject can change - * the target type, however. + * When storing into an object the data is converted to the + * target object type then stored in the object. This means + * that the target object type (for an initialized target) will + * not be changed by a store operation. A CopyObject can change + * the target type, however. * - * The ImplicitConversion flag is set to NO/FALSE only when - * storing to an ArgX -- as per the rules of the ACPI spec. + * The ImplicitConversion flag is set to NO/FALSE only when + * storing to an ArgX -- as per the rules of the ACPI spec. * - * Assumes parameters are already validated. + * Assumes parameters are already validated. * ******************************************************************************/ @@ -500,9 +501,75 @@ AcpiExStoreObjectToNode ( TargetType = AcpiNsGetType (Node); TargetDesc = AcpiNsGetAttachedObject (Node); - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Storing %p (%s) to node %p (%s)\n", + ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Storing %p [%s] to node %p [%s]\n", SourceDesc, AcpiUtGetObjectTypeName (SourceDesc), - Node, AcpiUtGetTypeName (TargetType))); + Node, AcpiUtGetTypeName (TargetType))); + + /* Only limited target types possible for everything except CopyObject */ + + if (WalkState->Opcode != AML_COPY_OP) + { + /* + * Only CopyObject allows all object types to be overwritten. For + * TargetRef(s), there are restrictions on the object types that + * are allowed. + * + * Allowable operations/typing for Store: + * + * 1) Simple Store + * Integer --> Integer (Named/Local/Arg) + * String --> String (Named/Local/Arg) + * Buffer --> Buffer (Named/Local/Arg) + * Package --> Package (Named/Local/Arg) + * + * 2) Store with implicit conversion + * Integer --> String or Buffer (Named) + * String --> Integer or Buffer (Named) + * Buffer --> Integer or String (Named) + */ + switch (TargetType) + { + case ACPI_TYPE_PACKAGE: + /* + * Here, can only store a package to an existing package. + * Storing a package to a Local/Arg is OK, and handled + * elsewhere. + */ + if (WalkState->Opcode == AML_STORE_OP) + { + if (SourceDesc->Common.Type != ACPI_TYPE_PACKAGE) + { + ACPI_ERROR ((AE_INFO, + "Cannot assign type [%s] to [Package] " + "(source must be type Pkg)", + AcpiUtGetObjectTypeName (SourceDesc))); + + return_ACPI_STATUS (AE_AML_TARGET_TYPE); + } + break; + } + + /* Fallthrough */ + + case ACPI_TYPE_DEVICE: + case ACPI_TYPE_EVENT: + case ACPI_TYPE_MUTEX: + case ACPI_TYPE_REGION: + case ACPI_TYPE_POWER: + case ACPI_TYPE_PROCESSOR: + case ACPI_TYPE_THERMAL: + + ACPI_ERROR ((AE_INFO, + "Target must be [Buffer/Integer/String/Reference]" + ", found [%s] (%4.4s)", + AcpiUtGetTypeName (Node->Type), Node->Name.Ascii)); + + return_ACPI_STATUS (AE_AML_TARGET_TYPE); + + default: + break; + } + } /* * Resolve the source object to an actual value @@ -518,13 +585,13 @@ AcpiExStoreObjectToNode ( switch (TargetType) { - case ACPI_TYPE_INTEGER: - case ACPI_TYPE_STRING: - case ACPI_TYPE_BUFFER: /* * The simple data types all support implicit source operand * conversion before the store. */ + case ACPI_TYPE_INTEGER: + case ACPI_TYPE_STRING: + case ACPI_TYPE_BUFFER: if ((WalkState->Opcode == AML_COPY_OP) || !ImplicitConversion) @@ -534,8 +601,7 @@ AcpiExStoreObjectToNode ( * an implicit conversion, as per the ACPI specification. * A direct store is performed instead. */ - Status = AcpiExStoreDirectToNode (SourceDesc, Node, - WalkState); + Status = AcpiExStoreDirectToNode (SourceDesc, Node, WalkState); break; } @@ -559,11 +625,11 @@ AcpiExStoreObjectToNode ( * store has been performed such that the node/object type * has been changed. */ - Status = AcpiNsAttachObject (Node, NewDesc, - NewDesc->Common.Type); + Status = AcpiNsAttachObject ( + Node, NewDesc, NewDesc->Common.Type); ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, - "Store %s into %s via Convert/Attach\n", + "Store type [%s] into [%s] via Convert/Attach\n", AcpiUtGetObjectTypeName (SourceDesc), AcpiUtGetObjectTypeName (NewDesc))); } @@ -585,18 +651,14 @@ AcpiExStoreObjectToNode ( default: /* - * No conversions for all other types. Directly store a copy of - * the source object. This is the ACPI spec-defined behavior for - * the CopyObject operator. + * CopyObject operator: No conversions for all other types. + * Instead, directly store a copy of the source object. * - * NOTE: For the Store operator, this is a departure from the - * ACPI spec, which states "If conversion is impossible, abort - * the running control method". Instead, this code implements - * "If conversion is impossible, treat the Store operation as - * a CopyObject". + * This is the ACPI spec-defined behavior for the CopyObject + * operator. (Note, for this default case, all normal + * Store/Target operations exited above with an error). */ - Status = AcpiExStoreDirectToNode (SourceDesc, Node, - WalkState); + Status = AcpiExStoreDirectToNode (SourceDesc, Node, WalkState); break; } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exstoren.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exstoren.c index c1879b43d8..f563f8a6a9 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exstoren.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exstoren.c @@ -196,14 +196,15 @@ AcpiExResolveObject ( (SourceDesc->Common.Type != ACPI_TYPE_BUFFER) && (SourceDesc->Common.Type != ACPI_TYPE_STRING) && !((SourceDesc->Common.Type == ACPI_TYPE_LOCAL_REFERENCE) && - (SourceDesc->Reference.Class== ACPI_REFCLASS_TABLE))) + (SourceDesc->Reference.Class== ACPI_REFCLASS_TABLE))) { /* Conversion successful but still not a valid type */ ACPI_ERROR ((AE_INFO, - "Cannot assign type %s to %s (must be type Int/Str/Buf)", + "Cannot assign type [%s] to [%s] (must be type Int/Str/Buf)", AcpiUtGetObjectTypeName (SourceDesc), AcpiUtGetTypeName (TargetType))); + Status = AE_AML_OPERAND_TYPE; } break; @@ -304,7 +305,7 @@ AcpiExStoreObjectToObject ( * converted object. */ Status = AcpiExConvertToTargetType (DestDesc->Common.Type, - SourceDesc, &ActualSrcDesc, WalkState); + SourceDesc, &ActualSrcDesc, WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -356,7 +357,7 @@ AcpiExStoreObjectToObject ( /* * All other types come here. */ - ACPI_WARNING ((AE_INFO, "Store into type %s not implemented", + ACPI_WARNING ((AE_INFO, "Store into type [%s] not implemented", AcpiUtGetObjectTypeName (DestDesc))); Status = AE_NOT_IMPLEMENTED; diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exstorob.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exstorob.c index 8c23aeead9..bcfe8001b0 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exstorob.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exstorob.c @@ -1,6 +1,6 @@ /****************************************************************************** * - * Module Name: exstorob - AML Interpreter object store support, store to object + * Module Name: exstorob - AML object store support, store to object * *****************************************************************************/ @@ -293,8 +293,9 @@ AcpiExStoreStringToString ( ACPI_FREE (TargetDesc->String.Pointer); } - TargetDesc->String.Pointer = ACPI_ALLOCATE_ZEROED ( - (ACPI_SIZE) Length + 1); + TargetDesc->String.Pointer = + ACPI_ALLOCATE_ZEROED ((ACPI_SIZE) Length + 1); + if (!TargetDesc->String.Pointer) { return_ACPI_STATUS (AE_NO_MEMORY); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exsystem.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exsystem.c index 49ec2e987b..781348071d 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exsystem.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exsystem.c @@ -158,7 +158,6 @@ AcpiExSystemWaitSemaphore ( /* We must wait, so unlock the interpreter */ AcpiExExitInterpreter (); - Status = AcpiOsWaitSemaphore (Semaphore, 1, Timeout); ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, @@ -211,7 +210,6 @@ AcpiExSystemWaitMutex ( /* We must wait, so unlock the interpreter */ AcpiExExitInterpreter (); - Status = AcpiOsAcquireMutex (Mutex, Timeout); ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, @@ -262,8 +260,8 @@ AcpiExSystemDoStall ( * (ACPI specifies 100 usec as max, but this gives some slack in * order to support existing BIOSs) */ - ACPI_ERROR ((AE_INFO, "Time parameter is too large (%u)", - HowLong)); + ACPI_ERROR ((AE_INFO, + "Time parameter is too large (%u)", HowLong)); Status = AE_AML_OPERAND_VALUE; } else @@ -378,7 +376,7 @@ AcpiExSystemWaitEvent ( if (ObjDesc) { Status = AcpiExSystemWaitSemaphore (ObjDesc->Event.OsSemaphore, - (UINT16) TimeDesc->Integer.Value); + (UINT16) TimeDesc->Integer.Value); } return_ACPI_STATUS (Status); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/extrace.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/extrace.c new file mode 100644 index 0000000000..60d020e128 --- /dev/null +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/extrace.c @@ -0,0 +1,499 @@ +/****************************************************************************** + * + * Module Name: extrace - Support for interpreter execution tracing + * + *****************************************************************************/ + +/****************************************************************************** + * + * 1. Copyright Notice + * + * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * All rights reserved. + * + * 2. License + * + * 2.1. This is your license from Intel Corp. under its intellectual property + * rights. You may have additional license terms from the party that provided + * you this software, covering your right to use that party's intellectual + * property rights. + * + * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a + * copy of the source code appearing in this file ("Covered Code") an + * irrevocable, perpetual, worldwide license under Intel's copyrights in the + * base code distributed originally by Intel ("Original Intel Code") to copy, + * make derivatives, distribute, use and display any portion of the Covered + * Code in any form, with the right to sublicense such rights; and + * + * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent + * license (with the right to sublicense), under only those claims of Intel + * patents that are infringed by the Original Intel Code, to make, use, sell, + * offer to sell, and import the Covered Code and derivative works thereof + * solely to the minimum extent necessary to exercise the above copyright + * license, and in no event shall the patent license extend to any additions + * to or modifications of the Original Intel Code. No other license or right + * is granted directly or by implication, estoppel or otherwise; + * + * The above copyright and patent license is granted only if the following + * conditions are met: + * + * 3. Conditions + * + * 3.1. Redistribution of Source with Rights to Further Distribute Source. + * Redistribution of source code of any substantial portion of the Covered + * Code or modification with rights to further distribute source must include + * the above Copyright Notice, the above License, this list of Conditions, + * and the following Disclaimer and Export Compliance provision. In addition, + * Licensee must cause all Covered Code to which Licensee contributes to + * contain a file documenting the changes Licensee made to create that Covered + * Code and the date of any change. Licensee must include in that file the + * documentation of any changes made by any predecessor Licensee. Licensee + * must include a prominent statement that the modification is derived, + * directly or indirectly, from Original Intel Code. + * + * 3.2. Redistribution of Source with no Rights to Further Distribute Source. + * Redistribution of source code of any substantial portion of the Covered + * Code or modification without rights to further distribute source must + * include the following Disclaimer and Export Compliance provision in the + * documentation and/or other materials provided with distribution. In + * addition, Licensee may not authorize further sublicense of source of any + * portion of the Covered Code, and must include terms to the effect that the + * license from Licensee to its licensee is limited to the intellectual + * property embodied in the software Licensee provides to its licensee, and + * not to intellectual property embodied in modifications its licensee may + * make. + * + * 3.3. Redistribution of Executable. Redistribution in executable form of any + * substantial portion of the Covered Code or modification must reproduce the + * above Copyright Notice, and the following Disclaimer and Export Compliance + * provision in the documentation and/or other materials provided with the + * distribution. + * + * 3.4. Intel retains all right, title, and interest in and to the Original + * Intel Code. + * + * 3.5. Neither the name Intel nor any other trademark owned or controlled by + * Intel shall be used in advertising or otherwise to promote the sale, use or + * other dealings in products derived from or relating to the Covered Code + * without prior written authorization from Intel. + * + * 4. Disclaimer and Export Compliance + * + * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED + * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE + * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, + * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY + * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY + * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A + * PARTICULAR PURPOSE. + * + * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES + * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR + * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, + * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY + * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL + * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS + * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY + * LIMITED REMEDY. + * + * 4.3. Licensee shall not export, either directly or indirectly, any of this + * software or system incorporating such software without first obtaining any + * required license or other approval from the U. S. Department of Commerce or + * any other agency or department of the United States Government. In the + * event Licensee exports any such software from the United States or + * re-exports any such software from a foreign destination, Licensee shall + * ensure that the distribution and export/re-export of the software is in + * compliance with all laws, regulations, orders, or other restrictions of the + * U.S. Export Administration Regulations. Licensee agrees that neither it nor + * any of its subsidiaries will export/re-export any technical data, process, + * software, or service, directly or indirectly, to any country for which the + * United States government or any agency thereof requires an export license, + * other governmental approval, or letter of assurance, without first obtaining + * such license, approval or letter. + * + *****************************************************************************/ + +#include "acpi.h" +#include "accommon.h" +#include "acnamesp.h" +#include "acinterp.h" + + +#define _COMPONENT ACPI_EXECUTER + ACPI_MODULE_NAME ("extrace") + + +static ACPI_OPERAND_OBJECT *AcpiGbl_TraceMethodObject = NULL; + +/* Local prototypes */ + +#ifdef ACPI_DEBUG_OUTPUT +static const char * +AcpiExGetTraceEventName ( + ACPI_TRACE_EVENT_TYPE Type); +#endif + + +/******************************************************************************* + * + * FUNCTION: AcpiExInterpreterTraceEnabled + * + * PARAMETERS: Name - Whether method name should be matched, + * this should be checked before starting + * the tracer + * + * RETURN: TRUE if interpreter trace is enabled. + * + * DESCRIPTION: Check whether interpreter trace is enabled + * + ******************************************************************************/ + +static BOOLEAN +AcpiExInterpreterTraceEnabled ( + char *Name) +{ + + /* Check if tracing is enabled */ + + if (!(AcpiGbl_TraceFlags & ACPI_TRACE_ENABLED)) + { + return (FALSE); + } + + /* + * Check if tracing is filtered: + * + * 1. If the tracer is started, AcpiGbl_TraceMethodObject should have + * been filled by the trace starter + * 2. If the tracer is not started, AcpiGbl_TraceMethodName should be + * matched if it is specified + * 3. If the tracer is oneshot style, AcpiGbl_TraceMethodName should + * not be cleared by the trace stopper during the first match + */ + if (AcpiGbl_TraceMethodObject) + { + return (TRUE); + } + + if (Name && + (AcpiGbl_TraceMethodName && + strcmp (AcpiGbl_TraceMethodName, Name))) + { + return (FALSE); + } + + if ((AcpiGbl_TraceFlags & ACPI_TRACE_ONESHOT) && + !AcpiGbl_TraceMethodName) + { + return (FALSE); + } + + return (TRUE); +} + + +/******************************************************************************* + * + * FUNCTION: AcpiExGetTraceEventName + * + * PARAMETERS: Type - Trace event type + * + * RETURN: Trace event name. + * + * DESCRIPTION: Used to obtain the full trace event name. + * + ******************************************************************************/ + +#ifdef ACPI_DEBUG_OUTPUT + +static const char * +AcpiExGetTraceEventName ( + ACPI_TRACE_EVENT_TYPE Type) +{ + + switch (Type) + { + case ACPI_TRACE_AML_METHOD: + + return "Method"; + + case ACPI_TRACE_AML_OPCODE: + + return "Opcode"; + + case ACPI_TRACE_AML_REGION: + + return "Region"; + + default: + + return ""; + } +} + +#endif + + +/******************************************************************************* + * + * FUNCTION: AcpiExTracePoint + * + * PARAMETERS: Type - Trace event type + * Begin - TRUE if before execution + * Aml - Executed AML address + * Pathname - Object path + * + * RETURN: None + * + * DESCRIPTION: Internal interpreter execution trace. + * + ******************************************************************************/ + +void +AcpiExTracePoint ( + ACPI_TRACE_EVENT_TYPE Type, + BOOLEAN Begin, + UINT8 *Aml, + char *Pathname) +{ + + ACPI_FUNCTION_NAME (ExTracePoint); + + + if (Pathname) + { + ACPI_DEBUG_PRINT ((ACPI_DB_TRACE_POINT, + "%s %s [0x%p:%s] execution.\n", + AcpiExGetTraceEventName (Type), Begin ? "Begin" : "End", + Aml, Pathname)); + } + else + { + ACPI_DEBUG_PRINT ((ACPI_DB_TRACE_POINT, + "%s %s [0x%p] execution.\n", + AcpiExGetTraceEventName (Type), Begin ? "Begin" : "End", + Aml)); + } +} + + +/******************************************************************************* + * + * FUNCTION: AcpiExStartTraceMethod + * + * PARAMETERS: MethodNode - Node of the method + * ObjDesc - The method object + * WalkState - current state, NULL if not yet executing + * a method. + * + * RETURN: None + * + * DESCRIPTION: Start control method execution trace + * + ******************************************************************************/ + +void +AcpiExStartTraceMethod ( + ACPI_NAMESPACE_NODE *MethodNode, + ACPI_OPERAND_OBJECT *ObjDesc, + ACPI_WALK_STATE *WalkState) +{ + ACPI_STATUS Status; + char *Pathname = NULL; + BOOLEAN Enabled = FALSE; + + + ACPI_FUNCTION_NAME (ExStartTraceMethod); + + + if (MethodNode) + { + Pathname = AcpiNsGetNormalizedPathname (MethodNode, TRUE); + } + + Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); + if (ACPI_FAILURE (Status)) + { + goto Exit; + } + + Enabled = AcpiExInterpreterTraceEnabled (Pathname); + if (Enabled && !AcpiGbl_TraceMethodObject) + { + AcpiGbl_TraceMethodObject = ObjDesc; + AcpiGbl_OriginalDbgLevel = AcpiDbgLevel; + AcpiGbl_OriginalDbgLayer = AcpiDbgLayer; + AcpiDbgLevel = ACPI_TRACE_LEVEL_ALL; + AcpiDbgLayer = ACPI_TRACE_LAYER_ALL; + + if (AcpiGbl_TraceDbgLevel) + { + AcpiDbgLevel = AcpiGbl_TraceDbgLevel; + } + + if (AcpiGbl_TraceDbgLayer) + { + AcpiDbgLayer = AcpiGbl_TraceDbgLayer; + } + } + + (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); + +Exit: + if (Enabled) + { + ACPI_TRACE_POINT (ACPI_TRACE_AML_METHOD, TRUE, + ObjDesc ? ObjDesc->Method.AmlStart : NULL, Pathname); + } + + if (Pathname) + { + ACPI_FREE (Pathname); + } +} + + +/******************************************************************************* + * + * FUNCTION: AcpiExStopTraceMethod + * + * PARAMETERS: MethodNode - Node of the method + * ObjDesc - The method object + * WalkState - current state, NULL if not yet executing + * a method. + * + * RETURN: None + * + * DESCRIPTION: Stop control method execution trace + * + ******************************************************************************/ + +void +AcpiExStopTraceMethod ( + ACPI_NAMESPACE_NODE *MethodNode, + ACPI_OPERAND_OBJECT *ObjDesc, + ACPI_WALK_STATE *WalkState) +{ + ACPI_STATUS Status; + char *Pathname = NULL; + BOOLEAN Enabled; + + + ACPI_FUNCTION_NAME (ExStopTraceMethod); + + + if (MethodNode) + { + Pathname = AcpiNsGetNormalizedPathname (MethodNode, TRUE); + } + + Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); + if (ACPI_FAILURE (Status)) + { + goto ExitPath; + } + + Enabled = AcpiExInterpreterTraceEnabled (NULL); + + (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); + + if (Enabled) + { + ACPI_TRACE_POINT (ACPI_TRACE_AML_METHOD, FALSE, + ObjDesc ? ObjDesc->Method.AmlStart : NULL, Pathname); + } + + Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); + if (ACPI_FAILURE (Status)) + { + goto ExitPath; + } + + /* Check whether the tracer should be stopped */ + + if (AcpiGbl_TraceMethodObject == ObjDesc) + { + /* Disable further tracing if type is one-shot */ + + if (AcpiGbl_TraceFlags & ACPI_TRACE_ONESHOT) + { + AcpiGbl_TraceMethodName = NULL; + } + + AcpiDbgLevel = AcpiGbl_OriginalDbgLevel; + AcpiDbgLayer = AcpiGbl_OriginalDbgLayer; + AcpiGbl_TraceMethodObject = NULL; + } + + (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); + +ExitPath: + if (Pathname) + { + ACPI_FREE (Pathname); + } +} + + +/******************************************************************************* + * + * FUNCTION: AcpiExStartTraceOpcode + * + * PARAMETERS: Op - The parser opcode object + * WalkState - current state, NULL if not yet executing + * a method. + * + * RETURN: None + * + * DESCRIPTION: Start opcode execution trace + * + ******************************************************************************/ + +void +AcpiExStartTraceOpcode ( + ACPI_PARSE_OBJECT *Op, + ACPI_WALK_STATE *WalkState) +{ + + ACPI_FUNCTION_NAME (ExStartTraceOpcode); + + + if (AcpiExInterpreterTraceEnabled (NULL) && + (AcpiGbl_TraceFlags & ACPI_TRACE_OPCODE)) + { + ACPI_TRACE_POINT (ACPI_TRACE_AML_OPCODE, TRUE, + Op->Common.Aml, Op->Common.AmlOpName); + } +} + + +/******************************************************************************* + * + * FUNCTION: AcpiExStopTraceOpcode + * + * PARAMETERS: Op - The parser opcode object + * WalkState - current state, NULL if not yet executing + * a method. + * + * RETURN: None + * + * DESCRIPTION: Stop opcode execution trace + * + ******************************************************************************/ + +void +AcpiExStopTraceOpcode ( + ACPI_PARSE_OBJECT *Op, + ACPI_WALK_STATE *WalkState) +{ + + ACPI_FUNCTION_NAME (ExStopTraceOpcode); + + + if (AcpiExInterpreterTraceEnabled (NULL) && + (AcpiGbl_TraceFlags & ACPI_TRACE_OPCODE)) + { + ACPI_TRACE_POINT (ACPI_TRACE_AML_OPCODE, FALSE, + Op->Common.Aml, Op->Common.AmlOpName); + } +} diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exutils.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exutils.c index 90a791d122..0356a8d30f 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exutils.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exutils.c @@ -259,8 +259,8 @@ AcpiExTruncateFor32bitTable ( (ObjDesc->Integer.Value > (UINT64) ACPI_UINT32_MAX)) { /* - * We are executing in a 32-bit ACPI table. - * Truncate the value to 32 bits by zeroing out the upper 32-bit field + * We are executing in a 32-bit ACPI table. Truncate + * the value to 32 bits by zeroing out the upper 32-bit field */ ObjDesc->Integer.Value &= (UINT64) ACPI_UINT32_MAX; return (TRUE); @@ -304,7 +304,7 @@ AcpiExAcquireGlobalLock ( /* Attempt to get the global lock, wait forever */ Status = AcpiExAcquireMutexObject (ACPI_WAIT_FOREVER, - AcpiGbl_GlobalLockMutex, AcpiOsGetThreadId ()); + AcpiGbl_GlobalLockMutex, AcpiOsGetThreadId ()); if (ACPI_FAILURE (Status)) { @@ -441,7 +441,8 @@ AcpiExEisaIdToString ( if (CompressedId > ACPI_UINT32_MAX) { ACPI_WARNING ((AE_INFO, - "Expected EISAID is larger than 32 bits: 0x%8.8X%8.8X, truncating", + "Expected EISAID is larger than 32 bits: " + "0x%8.8X%8.8X, truncating", ACPI_FORMAT_UINT64 (CompressedId))); } @@ -568,5 +569,4 @@ AcpiIsValidSpaceId ( return (TRUE); } - #endif diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwacpi.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwacpi.c index 0530383533..87a41c323a 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwacpi.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwacpi.c @@ -185,7 +185,7 @@ AcpiHwSetMode ( /* BIOS should have disabled ALL fixed and GP events */ Status = AcpiHwWritePort (AcpiGbl_FADT.SmiCommand, - (UINT32) AcpiGbl_FADT.AcpiEnable, 8); + (UINT32) AcpiGbl_FADT.AcpiEnable, 8); ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Attempting to enable ACPI mode\n")); break; @@ -195,9 +195,9 @@ AcpiHwSetMode ( * enable bits to default */ Status = AcpiHwWritePort (AcpiGbl_FADT.SmiCommand, - (UINT32) AcpiGbl_FADT.AcpiDisable, 8); + (UINT32) AcpiGbl_FADT.AcpiDisable, 8); ACPI_DEBUG_PRINT ((ACPI_DB_INFO, - "Attempting to enable Legacy (non-ACPI) mode\n")); + "Attempting to enable Legacy (non-ACPI) mode\n")); break; default: @@ -221,8 +221,8 @@ AcpiHwSetMode ( { if (AcpiHwGetMode () == Mode) { - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Mode %X successfully enabled\n", - Mode)); + ACPI_DEBUG_PRINT ((ACPI_DB_INFO, + "Mode %X successfully enabled\n", Mode)); return_ACPI_STATUS (AE_OK); } AcpiOsStall (ACPI_USEC_PER_MSEC); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwesleep.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwesleep.c index ba8acdcecc..ecc729cc09 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwesleep.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwesleep.c @@ -202,7 +202,8 @@ AcpiHwExtendedSleep ( /* Clear wake status (WAK_STS) */ - Status = AcpiWrite ((UINT64) ACPI_X_WAKE_STATUS, &AcpiGbl_FADT.SleepStatus); + Status = AcpiWrite ((UINT64) ACPI_X_WAKE_STATUS, + &AcpiGbl_FADT.SleepStatus); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -274,7 +275,7 @@ AcpiHwExtendedWakePrep ( Status = AcpiGetSleepTypeData (ACPI_STATE_S0, - &AcpiGbl_SleepTypeA, &AcpiGbl_SleepTypeB); + &AcpiGbl_SleepTypeA, &AcpiGbl_SleepTypeB); if (ACPI_SUCCESS (Status)) { SleepTypeValue = ((AcpiGbl_SleepTypeA << ACPI_X_SLEEP_TYPE_POSITION) & diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwgpe.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwgpe.c index 1ab6965447..8e4cc8bbbc 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwgpe.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwgpe.c @@ -280,9 +280,7 @@ AcpiHwClearGpe ( */ RegisterBit = AcpiHwGetGpeRegisterBit (GpeEventInfo); - Status = AcpiHwWrite (RegisterBit, - &GpeRegisterInfo->StatusAddress); - + Status = AcpiHwWrite (RegisterBit, &GpeRegisterInfo->StatusAddress); return (Status); } @@ -323,7 +321,7 @@ AcpiHwGetGpeStatus ( /* GPE currently handled? */ if (ACPI_GPE_DISPATCH_TYPE (GpeEventInfo->Flags) != - ACPI_GPE_DISPATCH_NONE) + ACPI_GPE_DISPATCH_NONE) { LocalEventStatus |= ACPI_EVENT_FLAG_HAS_HANDLER; } @@ -405,8 +403,8 @@ AcpiHwGpeEnableWrite ( GpeRegisterInfo->EnableMask = EnableMask; - Status = AcpiHwWrite (EnableMask, &GpeRegisterInfo->EnableAddress); + Status = AcpiHwWrite (EnableMask, &GpeRegisterInfo->EnableAddress); return (Status); } @@ -531,7 +529,7 @@ AcpiHwEnableRuntimeGpeBlock ( /* Enable all "runtime" GPEs in this register */ Status = AcpiHwGpeEnableWrite (GpeRegisterInfo->EnableForRun, - GpeRegisterInfo); + GpeRegisterInfo); if (ACPI_FAILURE (Status)) { return (Status); @@ -578,7 +576,7 @@ AcpiHwEnableWakeupGpeBlock ( * remaining ones. */ Status = AcpiHwGpeEnableWrite (GpeRegisterInfo->EnableForWake, - GpeRegisterInfo); + GpeRegisterInfo); if (ACPI_FAILURE (Status)) { return (Status); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwregs.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwregs.c index 492833e01d..8cc2f473eb 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwregs.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwregs.c @@ -140,6 +140,7 @@ AcpiHwWriteMultiple ( #endif /* !ACPI_REDUCED_HARDWARE */ + /****************************************************************************** * * FUNCTION: AcpiHwValidateRegister @@ -268,14 +269,14 @@ AcpiHwRead ( if (Reg->SpaceId == ACPI_ADR_SPACE_SYSTEM_MEMORY) { Status = AcpiOsReadMemory ((ACPI_PHYSICAL_ADDRESS) - Address, &Value64, Reg->BitWidth); + Address, &Value64, Reg->BitWidth); *Value = (UINT32) Value64; } else /* ACPI_ADR_SPACE_SYSTEM_IO, validated earlier */ { Status = AcpiHwReadPort ((ACPI_IO_ADDRESS) - Address, Value, Reg->BitWidth); + Address, Value, Reg->BitWidth); } ACPI_DEBUG_PRINT ((ACPI_DB_IO, @@ -329,12 +330,12 @@ AcpiHwWrite ( if (Reg->SpaceId == ACPI_ADR_SPACE_SYSTEM_MEMORY) { Status = AcpiOsWriteMemory ((ACPI_PHYSICAL_ADDRESS) - Address, (UINT64) Value, Reg->BitWidth); + Address, (UINT64) Value, Reg->BitWidth); } else /* ACPI_ADR_SPACE_SYSTEM_IO, validated earlier */ { Status = AcpiHwWritePort ((ACPI_IO_ADDRESS) - Address, Value, Reg->BitWidth); + Address, Value, Reg->BitWidth); } ACPI_DEBUG_PRINT ((ACPI_DB_IO, @@ -379,7 +380,7 @@ AcpiHwClearAcpiStatus ( /* Clear the fixed events in PM1 A/B */ Status = AcpiHwRegisterWrite (ACPI_REGISTER_PM1_STATUS, - ACPI_BITMASK_ALL_FIXED_STATUS); + ACPI_BITMASK_ALL_FIXED_STATUS); AcpiOsReleaseLock (AcpiGbl_HardwareLock, LockFlags); @@ -498,22 +499,22 @@ AcpiHwRegisterRead ( case ACPI_REGISTER_PM1_STATUS: /* PM1 A/B: 16-bit access each */ Status = AcpiHwReadMultiple (&Value, - &AcpiGbl_XPm1aStatus, - &AcpiGbl_XPm1bStatus); + &AcpiGbl_XPm1aStatus, + &AcpiGbl_XPm1bStatus); break; case ACPI_REGISTER_PM1_ENABLE: /* PM1 A/B: 16-bit access each */ Status = AcpiHwReadMultiple (&Value, - &AcpiGbl_XPm1aEnable, - &AcpiGbl_XPm1bEnable); + &AcpiGbl_XPm1aEnable, + &AcpiGbl_XPm1bEnable); break; case ACPI_REGISTER_PM1_CONTROL: /* PM1 A/B: 16-bit access each */ Status = AcpiHwReadMultiple (&Value, - &AcpiGbl_FADT.XPm1aControlBlock, - &AcpiGbl_FADT.XPm1bControlBlock); + &AcpiGbl_FADT.XPm1aControlBlock, + &AcpiGbl_FADT.XPm1bControlBlock); /* * Zero the write-only bits. From the ACPI specification, "Hardware @@ -609,15 +610,15 @@ AcpiHwRegisterWrite ( Value &= ~ACPI_PM1_STATUS_PRESERVED_BITS; Status = AcpiHwWriteMultiple (Value, - &AcpiGbl_XPm1aStatus, - &AcpiGbl_XPm1bStatus); + &AcpiGbl_XPm1aStatus, + &AcpiGbl_XPm1bStatus); break; case ACPI_REGISTER_PM1_ENABLE: /* PM1 A/B: 16-bit access each */ Status = AcpiHwWriteMultiple (Value, - &AcpiGbl_XPm1aEnable, - &AcpiGbl_XPm1bEnable); + &AcpiGbl_XPm1aEnable, + &AcpiGbl_XPm1bEnable); break; case ACPI_REGISTER_PM1_CONTROL: /* PM1 A/B: 16-bit access each */ @@ -626,8 +627,8 @@ AcpiHwRegisterWrite ( * Note: This includes SCI_EN, we never want to change this bit */ Status = AcpiHwReadMultiple (&ReadValue, - &AcpiGbl_FADT.XPm1aControlBlock, - &AcpiGbl_FADT.XPm1bControlBlock); + &AcpiGbl_FADT.XPm1aControlBlock, + &AcpiGbl_FADT.XPm1bControlBlock); if (ACPI_FAILURE (Status)) { goto Exit; @@ -640,8 +641,8 @@ AcpiHwRegisterWrite ( /* Now we can write the data */ Status = AcpiHwWriteMultiple (Value, - &AcpiGbl_FADT.XPm1aControlBlock, - &AcpiGbl_FADT.XPm1bControlBlock); + &AcpiGbl_FADT.XPm1aControlBlock, + &AcpiGbl_FADT.XPm1bControlBlock); break; case ACPI_REGISTER_PM2_CONTROL: /* 8-bit access */ diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwsleep.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwsleep.c index 6438ea7aba..f80f421288 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwsleep.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwsleep.c @@ -155,7 +155,8 @@ AcpiHwLegacySleep ( /* Clear wake status */ - Status = AcpiWriteBitRegister (ACPI_BITREG_WAKE_STATUS, ACPI_CLEAR_STATUS); + Status = AcpiWriteBitRegister (ACPI_BITREG_WAKE_STATUS, + ACPI_CLEAR_STATUS); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -189,7 +190,7 @@ AcpiHwLegacySleep ( /* Get current value of PM1A control */ Status = AcpiHwRegisterRead (ACPI_REGISTER_PM1_CONTROL, - &Pm1aControl); + &Pm1aControl); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -200,7 +201,7 @@ AcpiHwLegacySleep ( /* Clear the SLP_EN and SLP_TYP fields */ Pm1aControl &= ~(SleepTypeRegInfo->AccessBitMask | - SleepEnableRegInfo->AccessBitMask); + SleepEnableRegInfo->AccessBitMask); Pm1bControl = Pm1aControl; /* Insert the SLP_TYP bits */ @@ -254,7 +255,7 @@ AcpiHwLegacySleep ( AcpiOsStall (10 * ACPI_USEC_PER_SEC); Status = AcpiHwRegisterWrite (ACPI_REGISTER_PM1_CONTROL, - SleepEnableRegInfo->AccessBitMask); + SleepEnableRegInfo->AccessBitMask); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -310,7 +311,7 @@ AcpiHwLegacyWakePrep ( * by some machines. */ Status = AcpiGetSleepTypeData (ACPI_STATE_S0, - &AcpiGbl_SleepTypeA, &AcpiGbl_SleepTypeB); + &AcpiGbl_SleepTypeA, &AcpiGbl_SleepTypeB); if (ACPI_SUCCESS (Status)) { SleepTypeRegInfo = @@ -321,7 +322,7 @@ AcpiHwLegacyWakePrep ( /* Get current value of PM1A control */ Status = AcpiHwRegisterRead (ACPI_REGISTER_PM1_CONTROL, - &Pm1aControl); + &Pm1aControl); if (ACPI_SUCCESS (Status)) { /* Clear the SLP_EN and SLP_TYP fields */ @@ -406,7 +407,8 @@ AcpiHwLegacyWake ( * and use it to determine whether the system is rebooting or * resuming. Clear WAK_STS for compatibility. */ - (void) AcpiWriteBitRegister (ACPI_BITREG_WAKE_STATUS, ACPI_CLEAR_STATUS); + (void) AcpiWriteBitRegister (ACPI_BITREG_WAKE_STATUS, + ACPI_CLEAR_STATUS); AcpiGbl_SystemAwakeAndRunning = TRUE; /* Enable power button */ diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwxface.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwxface.c index 12c4ffbfae..1a30db6aba 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwxface.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwxface.c @@ -241,7 +241,7 @@ AcpiRead ( if (Reg->SpaceId == ACPI_ADR_SPACE_SYSTEM_MEMORY) { Status = AcpiOsReadMemory ((ACPI_PHYSICAL_ADDRESS) - Address, ReturnValue, Reg->BitWidth); + Address, ReturnValue, Reg->BitWidth); if (ACPI_FAILURE (Status)) { return (Status); @@ -259,7 +259,7 @@ AcpiRead ( } Status = AcpiHwReadPort ((ACPI_IO_ADDRESS) - Address, &ValueLo, Width); + Address, &ValueLo, Width); if (ACPI_FAILURE (Status)) { return (Status); @@ -270,7 +270,7 @@ AcpiRead ( /* Read the top 32 bits */ Status = AcpiHwReadPort ((ACPI_IO_ADDRESS) - (Address + 4), &ValueHi, 32); + (Address + 4), &ValueHi, 32); if (ACPI_FAILURE (Status)) { return (Status); @@ -335,7 +335,7 @@ AcpiWrite ( if (Reg->SpaceId == ACPI_ADR_SPACE_SYSTEM_MEMORY) { Status = AcpiOsWriteMemory ((ACPI_PHYSICAL_ADDRESS) - Address, Value, Reg->BitWidth); + Address, Value, Reg->BitWidth); if (ACPI_FAILURE (Status)) { return (Status); @@ -350,7 +350,7 @@ AcpiWrite ( } Status = AcpiHwWritePort ((ACPI_IO_ADDRESS) - Address, ACPI_LODWORD (Value), Width); + Address, ACPI_LODWORD (Value), Width); if (ACPI_FAILURE (Status)) { return (Status); @@ -359,7 +359,7 @@ AcpiWrite ( if (Reg->BitWidth == 64) { Status = AcpiHwWritePort ((ACPI_IO_ADDRESS) - (Address + 4), ACPI_HIDWORD (Value), 32); + (Address + 4), ACPI_HIDWORD (Value), 32); if (ACPI_FAILURE (Status)) { return (Status); @@ -430,7 +430,7 @@ AcpiReadBitRegister ( /* Read the entire parent register */ Status = AcpiHwRegisterRead (BitRegInfo->ParentRegister, - &RegisterValue); + &RegisterValue); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -439,7 +439,7 @@ AcpiReadBitRegister ( /* Normalize the value that was read, mask off other bits */ Value = ((RegisterValue & BitRegInfo->AccessBitMask) - >> BitRegInfo->BitPosition); + >> BitRegInfo->BitPosition); ACPI_DEBUG_PRINT ((ACPI_DB_IO, "BitReg %X, ParentReg %X, Actual %8.8X, ReturnValue %8.8X\n", @@ -511,7 +511,7 @@ AcpiWriteBitRegister ( * interested in */ Status = AcpiHwRegisterRead (BitRegInfo->ParentRegister, - &RegisterValue); + &RegisterValue); if (ACPI_FAILURE (Status)) { goto UnlockAndExit; @@ -525,7 +525,7 @@ AcpiWriteBitRegister ( BitRegInfo->AccessBitMask, Value); Status = AcpiHwRegisterWrite (BitRegInfo->ParentRegister, - RegisterValue); + RegisterValue); } else { @@ -545,7 +545,7 @@ AcpiWriteBitRegister ( if (RegisterValue) { Status = AcpiHwRegisterWrite (ACPI_REGISTER_PM1_STATUS, - RegisterValue); + RegisterValue); } } @@ -637,12 +637,20 @@ AcpiGetSleepTypeData ( * Evaluate the \_Sx namespace object containing the register values * for this state */ - Info->RelativePathname = ACPI_CAST_PTR ( - char, AcpiGbl_SleepStateNames[SleepState]); + Info->RelativePathname = ACPI_CAST_PTR (char, + AcpiGbl_SleepStateNames[SleepState]); + Status = AcpiNsEvaluate (Info); if (ACPI_FAILURE (Status)) { - goto Cleanup; + if (Status == AE_NOT_FOUND) + { + /* The _Sx states are optional, ignore NOT_FOUND */ + + goto FinalCleanup; + } + + goto WarningCleanup; } /* Must have a return object */ @@ -652,7 +660,7 @@ AcpiGetSleepTypeData ( ACPI_ERROR ((AE_INFO, "No Sleep State object returned from [%s]", Info->RelativePathname)); Status = AE_AML_NO_RETURN_VALUE; - goto Cleanup; + goto WarningCleanup; } /* Return object must be of type Package */ @@ -661,7 +669,7 @@ AcpiGetSleepTypeData ( { ACPI_ERROR ((AE_INFO, "Sleep State return object is not a Package")); Status = AE_AML_OPERAND_TYPE; - goto Cleanup1; + goto ReturnValueCleanup; } /* @@ -708,16 +716,18 @@ AcpiGetSleepTypeData ( break; } -Cleanup1: +ReturnValueCleanup: AcpiUtRemoveReference (Info->ReturnObject); -Cleanup: +WarningCleanup: if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, - "While evaluating Sleep State [%s]", Info->RelativePathname)); + "While evaluating Sleep State [%s]", + Info->RelativePathname)); } +FinalCleanup: ACPI_FREE (Info); return_ACPI_STATUS (Status); } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwxfsleep.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwxfsleep.c index ce6e8eeb6a..b0abf1a5af 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwxfsleep.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwxfsleep.c @@ -244,7 +244,7 @@ AcpiSetFirmwareWakingVector ( if (AcpiGbl_FACS) { (void) AcpiHwSetFirmwareWakingVector (AcpiGbl_FACS, - PhysicalAddress, PhysicalAddress64); + PhysicalAddress, PhysicalAddress64); } return_ACPI_STATUS (AE_OK); @@ -311,7 +311,7 @@ AcpiEnterSleepStateS4bios ( ACPI_FLUSH_CPU_CACHE (); Status = AcpiHwWritePort (AcpiGbl_FADT.SmiCommand, - (UINT32) AcpiGbl_FADT.S4BiosRequest, 8); + (UINT32) AcpiGbl_FADT.S4BiosRequest, 8); do { AcpiOsStall (ACPI_USEC_PER_MSEC); @@ -320,6 +320,7 @@ AcpiEnterSleepStateS4bios ( { return_ACPI_STATUS (Status); } + } while (!InValue); return_ACPI_STATUS (AE_OK); @@ -415,7 +416,7 @@ AcpiEnterSleepStatePrep ( Status = AcpiGetSleepTypeData (SleepState, - &AcpiGbl_SleepTypeA, &AcpiGbl_SleepTypeB); + &AcpiGbl_SleepTypeA, &AcpiGbl_SleepTypeB); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsaccess.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsaccess.c index 666730849e..e44164f33e 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsaccess.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsaccess.c @@ -189,8 +189,8 @@ AcpiNsRootInitialize ( } Status = AcpiNsLookup (NULL, InitVal->Name, InitVal->Type, - ACPI_IMODE_LOAD_PASS2, ACPI_NS_NO_UPSEARCH, - NULL, &NewNode); + ACPI_IMODE_LOAD_PASS2, ACPI_NS_NO_UPSEARCH, + NULL, &NewNode); if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, @@ -291,7 +291,7 @@ AcpiNsRootInitialize ( /* Create additional counting semaphore for global lock */ Status = AcpiOsCreateSemaphore ( - 1, 0, &AcpiGbl_GlobalLockSemaphore); + 1, 0, &AcpiGbl_GlobalLockSemaphore); if (ACPI_FAILURE (Status)) { AcpiUtRemoveReference (ObjDesc); @@ -312,7 +312,7 @@ AcpiNsRootInitialize ( /* Store pointer to value descriptor in the Node */ Status = AcpiNsAttachObject (NewNode, ObjDesc, - ObjDesc->Common.Type); + ObjDesc->Common.Type); /* Remove local reference to the object */ @@ -329,7 +329,7 @@ UnlockAndExit: if (ACPI_SUCCESS (Status)) { Status = AcpiNsGetNode (NULL, "\\_GPE", ACPI_NS_NO_UPSEARCH, - &AcpiGbl_FadtGpeDevice); + &AcpiGbl_FadtGpeDevice); } return_ACPI_STATUS (Status); @@ -661,7 +661,7 @@ AcpiNsLookup ( /* Try to find the single (4 character) ACPI name */ Status = AcpiNsSearchAndEnter (SimpleName, WalkState, CurrentNode, - InterpreterMode, ThisSearchType, LocalFlags, &ThisNode); + InterpreterMode, ThisSearchType, LocalFlags, &ThisNode); if (ACPI_FAILURE (Status)) { if (Status == AE_NOT_FOUND) diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsalloc.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsalloc.c index 293bf26697..65d6ba2435 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsalloc.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsalloc.c @@ -157,7 +157,7 @@ AcpiNsCreateNode ( #ifdef ACPI_DBG_TRACK_ALLOCATIONS Temp = AcpiGbl_NsNodeList->TotalAllocated - - AcpiGbl_NsNodeList->TotalFreed; + AcpiGbl_NsNodeList->TotalFreed; if (Temp > AcpiGbl_NsNodeList->MaxOccupied) { AcpiGbl_NsNodeList->MaxOccupied = Temp; @@ -349,7 +349,8 @@ AcpiNsInstallNode ( * modified the namespace. This is used for cleanup when the * method exits. */ - WalkState->MethodDesc->Method.InfoFlags |= ACPI_METHOD_MODIFIED_NAMESPACE; + WalkState->MethodDesc->Method.InfoFlags |= + ACPI_METHOD_MODIFIED_NAMESPACE; } } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsarguments.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsarguments.c index 08e0716fa1..a5b3490605 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsarguments.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsarguments.c @@ -209,7 +209,8 @@ AcpiNsCheckAcpiCompliance ( /* Get the ACPI-required arg count from the predefined info table */ - RequiredParamCount = METHOD_GET_ARG_COUNT (Predefined->Info.ArgumentList); + RequiredParamCount = + METHOD_GET_ARG_COUNT (Predefined->Info.ArgumentList); /* * If this object is not a control method, we can check if the ACPI @@ -355,7 +356,8 @@ AcpiNsCheckArgumentCount ( * Some methods are allowed to have a "minimum" number of args (_SCP) * because their definition in ACPI has changed over time. */ - RequiredParamCount = METHOD_GET_ARG_COUNT (Predefined->Info.ArgumentList); + RequiredParamCount = + METHOD_GET_ARG_COUNT (Predefined->Info.ArgumentList); if (UserParamCount < RequiredParamCount) { diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsconvert.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsconvert.c index b79458e244..af5b255337 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsconvert.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsconvert.c @@ -156,7 +156,7 @@ AcpiNsConvertToInteger ( /* String-to-Integer conversion */ Status = AcpiUtStrtoul64 (OriginalObject->String.Pointer, - ACPI_ANY_BASE, &Value); + ACPI_ANY_BASE, &Value); if (ACPI_FAILURE (Status)) { return (Status); @@ -176,7 +176,8 @@ AcpiNsConvertToInteger ( for (i = 0; i < OriginalObject->Buffer.Length; i++) { - Value |= ((UINT64) OriginalObject->Buffer.Pointer[i] << (i * 8)); + Value |= ((UINT64) + OriginalObject->Buffer.Pointer[i] << (i * 8)); } break; @@ -239,8 +240,8 @@ AcpiNsConvertToString ( } else { - Status = AcpiExConvertToString (OriginalObject, &NewObject, - ACPI_IMPLICIT_CONVERT_HEX); + Status = AcpiExConvertToString (OriginalObject, + &NewObject, ACPI_IMPLICIT_CONVERT_HEX); if (ACPI_FAILURE (Status)) { return (Status); @@ -335,7 +336,8 @@ AcpiNsConvertToBuffer ( /* String-to-Buffer conversion. Simple data copy */ - NewObject = AcpiUtCreateBufferObject (OriginalObject->String.Length); + NewObject = AcpiUtCreateBufferObject + (OriginalObject->String.Length); if (!NewObject) { return (AE_NO_MEMORY); @@ -402,7 +404,8 @@ AcpiNsConvertToBuffer ( * * FUNCTION: AcpiNsConvertToUnicode * - * PARAMETERS: OriginalObject - ASCII String Object to be converted + * PARAMETERS: Scope - Namespace node for the method/object + * OriginalObject - ASCII String Object to be converted * ReturnObject - Where the new converted object is returned * * RETURN: Status. AE_OK if conversion was successful. @@ -413,6 +416,7 @@ AcpiNsConvertToBuffer ( ACPI_STATUS AcpiNsConvertToUnicode ( + ACPI_NAMESPACE_NODE *Scope, ACPI_OPERAND_OBJECT *OriginalObject, ACPI_OPERAND_OBJECT **ReturnObject) { @@ -474,7 +478,8 @@ AcpiNsConvertToUnicode ( * * FUNCTION: AcpiNsConvertToResource * - * PARAMETERS: OriginalObject - Object to be converted + * PARAMETERS: Scope - Namespace node for the method/object + * OriginalObject - Object to be converted * ReturnObject - Where the new converted object is returned * * RETURN: Status. AE_OK if conversion was successful @@ -486,6 +491,7 @@ AcpiNsConvertToUnicode ( ACPI_STATUS AcpiNsConvertToResource ( + ACPI_NAMESPACE_NODE *Scope, ACPI_OPERAND_OBJECT *OriginalObject, ACPI_OPERAND_OBJECT **ReturnObject) { @@ -552,3 +558,81 @@ AcpiNsConvertToResource ( *ReturnObject = NewObject; return (AE_OK); } + + +/******************************************************************************* + * + * FUNCTION: AcpiNsConvertToReference + * + * PARAMETERS: Scope - Namespace node for the method/object + * OriginalObject - Object to be converted + * ReturnObject - Where the new converted object is returned + * + * RETURN: Status. AE_OK if conversion was successful + * + * DESCRIPTION: Attempt to convert a Integer object to a ObjectReference. + * Buffer. + * + ******************************************************************************/ + +ACPI_STATUS +AcpiNsConvertToReference ( + ACPI_NAMESPACE_NODE *Scope, + ACPI_OPERAND_OBJECT *OriginalObject, + ACPI_OPERAND_OBJECT **ReturnObject) +{ + ACPI_OPERAND_OBJECT *NewObject = NULL; + ACPI_STATUS Status; + ACPI_NAMESPACE_NODE *Node; + ACPI_GENERIC_STATE ScopeInfo; + char *Name; + + + ACPI_FUNCTION_NAME (NsConvertToReference); + + + /* Convert path into internal presentation */ + + Status = AcpiNsInternalizeName (OriginalObject->String.Pointer, &Name); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } + + /* Find the namespace node */ + + ScopeInfo.Scope.Node = ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, Scope); + Status = AcpiNsLookup (&ScopeInfo, Name, + ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE, + ACPI_NS_SEARCH_PARENT | ACPI_NS_DONT_OPEN_SCOPE, NULL, &Node); + if (ACPI_FAILURE (Status)) + { + /* Check if we are resolving a named reference within a package */ + + ACPI_ERROR_NAMESPACE (OriginalObject->String.Pointer, Status); + goto ErrorExit; + } + + /* Create and init a new internal ACPI object */ + + NewObject = AcpiUtCreateInternalObject (ACPI_TYPE_LOCAL_REFERENCE); + if (!NewObject) + { + Status = AE_NO_MEMORY; + goto ErrorExit; + } + NewObject->Reference.Node = Node; + NewObject->Reference.Object = Node->Object; + NewObject->Reference.Class = ACPI_REFCLASS_NAME; + + /* + * Increase reference of the object if needed (the object is likely a + * null for device nodes). + */ + AcpiUtAddReference (Node->Object); + +ErrorExit: + ACPI_FREE (Name); + *ReturnObject = NewObject; + return (AE_OK); +} diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsdump.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsdump.c index 0d3b57eecf..6510b4f6af 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsdump.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsdump.c @@ -331,7 +331,8 @@ AcpiNsDumpOneObject ( if (Type > ACPI_TYPE_LOCAL_MAX) { - ACPI_WARNING ((AE_INFO, "Invalid ACPI Object Type 0x%08X", Type)); + ACPI_WARNING ((AE_INFO, + "Invalid ACPI Object Type 0x%08X", Type)); } AcpiOsPrintf ("%4.4s", AcpiUtGetNodeName (ThisNode)); @@ -340,7 +341,7 @@ AcpiNsDumpOneObject ( /* Now we can print out the pertinent information */ AcpiOsPrintf (" %-12s %p %2.2X ", - AcpiUtGetTypeName (Type), ThisNode, ThisNode->OwnerId); + AcpiUtGetTypeName (Type), ThisNode, ThisNode->OwnerId); DbgLevel = AcpiDbgLevel; AcpiDbgLevel = 0; @@ -427,7 +428,7 @@ AcpiNsDumpOneObject ( if (ObjDesc->Common.Flags & AOPOBJ_DATA_VALID) { AcpiOsPrintf ("Len %.2X", - ObjDesc->Buffer.Length); + ObjDesc->Buffer.Length); /* Dump some of the buffer */ @@ -608,9 +609,9 @@ AcpiNsDumpOneObject ( /* If there is an attached object, display it */ - DbgLevel = AcpiDbgLevel; + DbgLevel = AcpiDbgLevel; AcpiDbgLevel = 0; - ObjDesc = AcpiNsGetAttachedObject (ThisNode); + ObjDesc = AcpiNsGetAttachedObject (ThisNode); AcpiDbgLevel = DbgLevel; /* Dump attached objects */ @@ -637,14 +638,18 @@ AcpiNsDumpOneObject ( if (ObjType > ACPI_TYPE_LOCAL_MAX) { - AcpiOsPrintf ("(Pointer to ACPI Object type %.2X [UNKNOWN])\n", + AcpiOsPrintf ( + "(Pointer to ACPI Object type %.2X [UNKNOWN])\n", ObjType); + BytesToDump = 32; } else { - AcpiOsPrintf ("(Pointer to ACPI Object type %.2X [%s])\n", + AcpiOsPrintf ( + "(Pointer to ACPI Object type %.2X [%s])\n", ObjType, AcpiUtGetTypeName (ObjType)); + BytesToDump = sizeof (ACPI_OPERAND_OBJECT); } @@ -674,7 +679,8 @@ AcpiNsDumpOneObject ( */ BytesToDump = ObjDesc->String.Length; ObjDesc = (void *) ObjDesc->String.Pointer; - AcpiOsPrintf ( "(Buffer/String pointer %p length %X)\n", + + AcpiOsPrintf ("(Buffer/String pointer %p length %X)\n", ObjDesc, BytesToDump); ACPI_DUMP_BUFFER (ObjDesc, BytesToDump); goto Cleanup; @@ -775,8 +781,8 @@ AcpiNsDumpObjects ( Info.DisplayType = DisplayType; (void) AcpiNsWalkNamespace (Type, StartHandle, MaxDepth, - ACPI_NS_WALK_NO_UNLOCK | ACPI_NS_WALK_TEMP_NODES, - AcpiNsDumpOneObject, NULL, (void *) &Info, NULL); + ACPI_NS_WALK_NO_UNLOCK | ACPI_NS_WALK_TEMP_NODES, + AcpiNsDumpOneObject, NULL, (void *) &Info, NULL); (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); } @@ -826,7 +832,7 @@ AcpiNsDumpOneObjectPath ( return (AE_OK); } - Pathname = AcpiNsGetExternalPathname (Node); + Pathname = AcpiNsGetNormalizedPathname (Node, TRUE); PathIndent = 1; if (Level <= MaxLevel) @@ -912,14 +918,14 @@ AcpiNsDumpObjectPaths ( /* Get the max depth of the namespace tree, for formatting later */ (void) AcpiNsWalkNamespace (Type, StartHandle, MaxDepth, - ACPI_NS_WALK_NO_UNLOCK | ACPI_NS_WALK_TEMP_NODES, - AcpiNsGetMaxDepth, NULL, (void *) &MaxLevel, NULL); + ACPI_NS_WALK_NO_UNLOCK | ACPI_NS_WALK_TEMP_NODES, + AcpiNsGetMaxDepth, NULL, (void *) &MaxLevel, NULL); /* Now dump the entire namespace */ (void) AcpiNsWalkNamespace (Type, StartHandle, MaxDepth, - ACPI_NS_WALK_NO_UNLOCK | ACPI_NS_WALK_TEMP_NODES, - AcpiNsDumpOneObjectPath, NULL, (void *) &MaxLevel, NULL); + ACPI_NS_WALK_NO_UNLOCK | ACPI_NS_WALK_TEMP_NODES, + AcpiNsDumpOneObjectPath, NULL, (void *) &MaxLevel, NULL); (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); } @@ -990,7 +996,8 @@ AcpiNsDumpTables ( * If the name space has not been initialized, * there is nothing to dump. */ - ACPI_DEBUG_PRINT ((ACPI_DB_TABLES, "namespace not initialized!\n")); + ACPI_DEBUG_PRINT ((ACPI_DB_TABLES, + "namespace not initialized!\n")); return_VOID; } @@ -1003,7 +1010,7 @@ AcpiNsDumpTables ( } AcpiNsDumpObjects (ACPI_TYPE_ANY, ACPI_DISPLAY_OBJECTS, MaxDepth, - ACPI_OWNER_ID_MAX, SearchHandle); + ACPI_OWNER_ID_MAX, SearchHandle); return_VOID; } #endif diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsdumpdv.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsdumpdv.c index 8e570d1f73..9afad0b5e2 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsdumpdv.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsdumpdv.c @@ -222,8 +222,8 @@ AcpiNsDumpRootDevices ( "Display of all devices in the namespace:\n")); Status = AcpiNsWalkNamespace (ACPI_TYPE_DEVICE, SysBusHandle, - ACPI_UINT32_MAX, ACPI_NS_WALK_NO_UNLOCK, - AcpiNsDumpOneDevice, NULL, NULL, NULL); + ACPI_UINT32_MAX, ACPI_NS_WALK_NO_UNLOCK, + AcpiNsDumpOneDevice, NULL, NULL, NULL); } #endif diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nseval.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nseval.c index 7c8d6fd186..a62269fe53 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nseval.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nseval.c @@ -217,7 +217,7 @@ AcpiNsEvaluate ( /* Get the full pathname to the object, for use in warning messages */ - Info->FullPathname = AcpiNsGetExternalPathname (Info->Node); + Info->FullPathname = AcpiNsGetNormalizedPathname (Info->Node, TRUE); if (!Info->FullPathname) { return_ACPI_STATUS (AE_NO_MEMORY); @@ -491,7 +491,7 @@ AcpiNsExecModuleCodeList ( * * DESCRIPTION: Execute a control method containing a block of module-level * executable AML code. The control method is temporarily - * installed to the root node, then evaluated. + * installed to a local copy of the root node, then evaluated. * ******************************************************************************/ @@ -500,10 +500,9 @@ AcpiNsExecModuleCode ( ACPI_OPERAND_OBJECT *MethodObj, ACPI_EVALUATE_INFO *Info) { - ACPI_OPERAND_OBJECT *ParentObj; - ACPI_NAMESPACE_NODE *ParentNode; - ACPI_OBJECT_TYPE Type; ACPI_STATUS Status; + ACPI_NAMESPACE_NODE *TempNode; + ACPI_NAMESPACE_NODE *ParentNode; ACPI_FUNCTION_TRACE (NsExecModuleCode); @@ -514,22 +513,19 @@ AcpiNsExecModuleCode ( * of the method object descriptor. */ ParentNode = ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, - MethodObj->Method.NextObject); - Type = AcpiNsGetType (ParentNode); + MethodObj->Method.NextObject); - /* - * Get the region handler and save it in the method object. We may need - * this if an operation region declaration causes a _REG method to be run. - * - * We can't do this in AcpiPsLinkModuleCode because - * AcpiGbl_RootNode->Object is NULL at PASS1. - */ - if ((Type == ACPI_TYPE_DEVICE) && ParentNode->Object) + /* Take a copy of the parent node to act as parent of this method */ + + TempNode = ACPI_ALLOCATE (sizeof (ACPI_NAMESPACE_NODE)); + if (!TempNode) { - MethodObj->Method.Dispatch.Handler = - ParentNode->Object->Device.Handler; + return_VOID; } + memcpy (TempNode, ParentNode, sizeof (ACPI_NAMESPACE_NODE)); + TempNode->Object = NULL; /* Clear the subobject */ + /* Must clear NextObject (AcpiNsAttachObject needs the field) */ MethodObj->Method.NextObject = NULL; @@ -537,26 +533,14 @@ AcpiNsExecModuleCode ( /* Initialize the evaluation information block */ memset (Info, 0, sizeof (ACPI_EVALUATE_INFO)); - Info->PrefixNode = ParentNode; - - /* - * Get the currently attached parent object. Add a reference, because the - * ref count will be decreased when the method object is installed to - * the parent node. - */ - ParentObj = AcpiNsGetAttachedObject (ParentNode); - if (ParentObj) - { - AcpiUtAddReference (ParentObj); - } + Info->PrefixNode = TempNode; /* Install the method (module-level code) in the parent node */ - Status = AcpiNsAttachObject (ParentNode, MethodObj, - ACPI_TYPE_METHOD); + Status = AcpiNsAttachObject (TempNode, MethodObj, ACPI_TYPE_METHOD); if (ACPI_FAILURE (Status)) { - goto Exit; + goto Cleanup; } /* Execute the parent node as a control method */ @@ -574,25 +558,7 @@ AcpiNsExecModuleCode ( AcpiUtRemoveReference (Info->ReturnObject); } - /* Detach the temporary method object */ - - AcpiNsDetachObject (ParentNode); - - /* Restore the original parent object */ - - if (ParentObj) - { - Status = AcpiNsAttachObject (ParentNode, ParentObj, Type); - } - else - { - ParentNode->Type = (UINT8) Type; - } - -Exit: - if (ParentObj) - { - AcpiUtRemoveReference (ParentObj); - } +Cleanup: + ACPI_FREE (TempNode); return_VOID; } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsinit.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsinit.c index 6bedef95af..7b4acc1e65 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsinit.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsinit.c @@ -182,8 +182,8 @@ AcpiNsInitializeObjects ( /* Walk entire namespace from the supplied root */ Status = AcpiWalkNamespace (ACPI_TYPE_ANY, ACPI_ROOT_OBJECT, - ACPI_UINT32_MAX, AcpiNsInitOneObject, NULL, - &Info, NULL); + ACPI_UINT32_MAX, AcpiNsInitOneObject, NULL, + &Info, NULL); if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, "During WalkNamespace")); @@ -245,7 +245,7 @@ AcpiNsInitializeDevices ( /* Tree analysis: find all subtrees that contain _INI methods */ Status = AcpiNsWalkNamespace (ACPI_TYPE_ANY, ACPI_ROOT_OBJECT, - ACPI_UINT32_MAX, FALSE, AcpiNsFindIniMethods, NULL, &Info, NULL); + ACPI_UINT32_MAX, FALSE, AcpiNsFindIniMethods, NULL, &Info, NULL); if (ACPI_FAILURE (Status)) { goto ErrorExit; @@ -279,7 +279,7 @@ AcpiNsInitializeDevices ( /* Walk namespace to execute all _INIs on present devices */ Status = AcpiNsWalkNamespace (ACPI_TYPE_ANY, ACPI_ROOT_OBJECT, - ACPI_UINT32_MAX, FALSE, AcpiNsInitOneDevice, NULL, &Info, NULL); + ACPI_UINT32_MAX, FALSE, AcpiNsInitOneDevice, NULL, &Info, NULL); /* * Any _OSI requests should be completed by now. If the BIOS has @@ -703,7 +703,7 @@ AcpiNsInitOneDevice ( { /* Ignore error and move on to next device */ - char *ScopeName = AcpiNsGetExternalPathname (Info->Node); + char *ScopeName = AcpiNsGetNormalizedPathname (DeviceNode, TRUE); ACPI_EXCEPTION ((AE_INFO, Status, "during %s._INI execution", ScopeName)); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsload.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsload.c index 8e1a0c25ca..738f8978a6 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsload.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsload.c @@ -239,6 +239,24 @@ Unlock: ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "**** Completed Table Object Initialization\n")); + /* + * Execute any module-level code that was detected during the table load + * phase. Although illegal since ACPI 2.0, there are many machines that + * contain this type of code. Each block of detected executable AML code + * outside of any control method is wrapped with a temporary control + * method object and placed on a global list. The methods on this list + * are executed below. + * + * This case executes the module-level code for each table immediately + * after the table has been loaded. This provides compatibility with + * other ACPI implementations. Optionally, the execution can be deferred + * until later, see AcpiInitializeObjects. + */ + if (!AcpiGbl_GroupModuleLevelCode) + { + AcpiNsExecModuleCodeList (); + } + return_ACPI_STATUS (Status); } @@ -331,8 +349,8 @@ AcpiNsDeleteSubtree ( ParentHandle = StartHandle; - ChildHandle = NULL; - Level = 1; + ChildHandle = NULL; + Level = 1; /* * Traverse the tree of objects until we bubble back up @@ -343,7 +361,7 @@ AcpiNsDeleteSubtree ( /* Attempt to get the next object in this scope */ Status = AcpiGetNextObject (ACPI_TYPE_ANY, ParentHandle, - ChildHandle, &NextChildHandle); + ChildHandle, &NextChildHandle); ChildHandle = NextChildHandle; @@ -354,7 +372,7 @@ AcpiNsDeleteSubtree ( /* Check if this object has any children */ if (ACPI_SUCCESS (AcpiGetNextObject (ACPI_TYPE_ANY, ChildHandle, - NULL, &Dummy))) + NULL, &Dummy))) { /* * There is at least one child of this object, @@ -432,7 +450,6 @@ AcpiNsUnloadNamespace ( /* This function does the real work */ Status = AcpiNsDeleteSubtree (Handle); - return_ACPI_STATUS (Status); } #endif diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsnames.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsnames.c index 3ca04f011e..cd11cb4d4a 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsnames.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsnames.c @@ -149,7 +149,6 @@ AcpiNsGetExternalPathname ( NameBuffer = AcpiNsGetNormalizedPathname (Node, FALSE); - return_PTR (NameBuffer); } @@ -177,7 +176,6 @@ AcpiNsGetPathnameLength ( Size = AcpiNsBuildNormalizedPath (Node, NULL, 0, FALSE); - return (Size); } @@ -237,7 +235,7 @@ AcpiNsHandleToPathname ( /* Build the path in the caller buffer */ (void) AcpiNsBuildNormalizedPath (Node, Buffer->Pointer, - RequiredSize, NoTrailing); + RequiredSize, NoTrailing); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -318,6 +316,7 @@ AcpiNsBuildNormalizedPath ( { ACPI_PATH_PUT8(FullPath, PathSize, AML_DUAL_NAME_PREFIX, Length); } + ACPI_MOVE_32_TO_32 (Name, &NextNode->Name); DoNoTrailing = NoTrailing; for (i = 0; i < 4; i++) @@ -332,8 +331,10 @@ AcpiNsBuildNormalizedPath ( ACPI_PATH_PUT8(FullPath, PathSize, c, Length); } } + NextNode = NextNode->Parent; } + ACPI_PATH_PUT8(FullPath, PathSize, AML_ROOT_PREFIX, Length); /* Reverse the path string */ @@ -341,7 +342,8 @@ AcpiNsBuildNormalizedPath ( if (Length <= PathSize) { Left = FullPath; - Right = FullPath+Length-1; + Right = FullPath+Length - 1; + while (Left < Right) { c = *Left; @@ -353,7 +355,7 @@ AcpiNsBuildNormalizedPath ( /* Append the trailing null */ BuildTrailingNull: - ACPI_PATH_PUT8(FullPath, PathSize, '\0', Length); + ACPI_PATH_PUT8 (FullPath, PathSize, '\0', Length); #undef ACPI_PATH_PUT8 @@ -403,7 +405,8 @@ AcpiNsGetNormalizedPathname ( NameBuffer = ACPI_ALLOCATE_ZEROED (Size); if (!NameBuffer) { - ACPI_ERROR ((AE_INFO, "Could not allocate %u bytes", (UINT32) Size)); + ACPI_ERROR ((AE_INFO, + "Could not allocate %u bytes", (UINT32) Size)); return_PTR (NULL); } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsobject.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsobject.c index 50b1d65379..a6f887606b 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsobject.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsobject.c @@ -217,7 +217,7 @@ AcpiNsAttachObject ( * Value passed is a name handle and that name has a * non-null value. Use that name's value and type. */ - ObjDesc = ((ACPI_NAMESPACE_NODE *) Object)->Object; + ObjDesc = ((ACPI_NAMESPACE_NODE *) Object)->Object; ObjectType = ((ACPI_NAMESPACE_NODE *) Object)->Type; } @@ -267,8 +267,8 @@ AcpiNsAttachObject ( LastObjDesc->Common.NextObject = Node->Object; } - Node->Type = (UINT8) ObjectType; - Node->Object = ObjDesc; + Node->Type = (UINT8) ObjectType; + Node->Object = ObjDesc; return_ACPI_STATUS (AE_OK); } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsparse.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsparse.c index 26dd9f3467..9fcc47fe42 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsparse.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsparse.c @@ -196,7 +196,7 @@ AcpiNsOneCompleteParse ( } Status = AcpiDsInitAmlWalk (WalkState, ParseRoot, NULL, - AmlStart, AmlLength, NULL, (UINT8) PassNumber); + AmlStart, AmlLength, NULL, (UINT8) PassNumber); if (ACPI_FAILURE (Status)) { AcpiDsDeleteWalkState (WalkState); @@ -215,7 +215,8 @@ AcpiNsOneCompleteParse ( if (StartNode && StartNode != AcpiGbl_RootNode) { - Status = AcpiDsScopeStackPush (StartNode, ACPI_TYPE_METHOD, WalkState); + Status = AcpiDsScopeStackPush ( + StartNode, ACPI_TYPE_METHOD, WalkState); if (ACPI_FAILURE (Status)) { AcpiDsDeleteWalkState (WalkState); @@ -225,7 +226,8 @@ AcpiNsOneCompleteParse ( /* Parse the AML */ - ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "*PARSE* pass %u parse\n", PassNumber)); + ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, + "*PARSE* pass %u parse\n", PassNumber)); Status = AcpiPsParseAml (WalkState); Cleanup: @@ -269,8 +271,9 @@ AcpiNsParseTable ( * performs another complete parse of the AML. */ ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "**** Start pass 1\n")); + Status = AcpiNsOneCompleteParse (ACPI_IMODE_LOAD_PASS1, - TableIndex, StartNode); + TableIndex, StartNode); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -287,7 +290,7 @@ AcpiNsParseTable ( */ ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "**** Start pass 2\n")); Status = AcpiNsOneCompleteParse (ACPI_IMODE_LOAD_PASS2, - TableIndex, StartNode); + TableIndex, StartNode); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nspredef.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nspredef.c index 8a522d2d2e..85793f9de2 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nspredef.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nspredef.c @@ -321,7 +321,7 @@ AcpiNsCheckObjectType ( { ACPI_OPERAND_OBJECT *ReturnObject = *ReturnObjectPtr; ACPI_STATUS Status = AE_OK; - char TypeBuffer[48]; /* Room for 5 types */ + char TypeBuffer[96]; /* Room for 10 types */ /* A Namespace node should not get here, but make sure */ diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsprepkg.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsprepkg.c index 627ee3ecd8..aa7134eda1 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsprepkg.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsprepkg.c @@ -243,8 +243,8 @@ AcpiNsCheckPackage ( /* Validate all elements of the returned package */ Status = AcpiNsCheckPackageElements (Info, Elements, - Package->RetInfo.ObjectType1, Package->RetInfo.Count1, - Package->RetInfo.ObjectType2, Package->RetInfo.Count2, 0); + Package->RetInfo.ObjectType1, Package->RetInfo.Count1, + Package->RetInfo.ObjectType2, Package->RetInfo.Count2, 0); break; case ACPI_PTYPE1_VAR: @@ -255,7 +255,7 @@ AcpiNsCheckPackage ( for (i = 0; i < Count; i++) { Status = AcpiNsCheckObjectType (Info, Elements, - Package->RetInfo.ObjectType1, i); + Package->RetInfo.ObjectType1, i); if (ACPI_FAILURE (Status)) { return (Status); @@ -287,7 +287,7 @@ AcpiNsCheckPackage ( /* These are the required package elements (0, 1, or 2) */ Status = AcpiNsCheckObjectType (Info, Elements, - Package->RetInfo3.ObjectType[i], i); + Package->RetInfo3.ObjectType[i], i); if (ACPI_FAILURE (Status)) { return (Status); @@ -298,7 +298,7 @@ AcpiNsCheckPackage ( /* These are the optional package elements */ Status = AcpiNsCheckObjectType (Info, Elements, - Package->RetInfo3.TailObjectType, i); + Package->RetInfo3.TailObjectType, i); if (ACPI_FAILURE (Status)) { return (Status); @@ -312,8 +312,8 @@ AcpiNsCheckPackage ( /* First element is the (Integer) revision */ - Status = AcpiNsCheckObjectType (Info, Elements, - ACPI_RTYPE_INTEGER, 0); + Status = AcpiNsCheckObjectType ( + Info, Elements, ACPI_RTYPE_INTEGER, 0); if (ACPI_FAILURE (Status)) { return (Status); @@ -331,8 +331,8 @@ AcpiNsCheckPackage ( /* First element is the (Integer) count of subpackages to follow */ - Status = AcpiNsCheckObjectType (Info, Elements, - ACPI_RTYPE_INTEGER, 0); + Status = AcpiNsCheckObjectType ( + Info, Elements, ACPI_RTYPE_INTEGER, 0); if (ACPI_FAILURE (Status)) { return (Status); @@ -375,7 +375,8 @@ AcpiNsCheckPackage ( { /* Create the new outer package and populate it */ - Status = AcpiNsWrapWithPackage (Info, ReturnObject, ReturnObjectPtr); + Status = AcpiNsWrapWithPackage ( + Info, ReturnObject, ReturnObjectPtr); if (ACPI_FAILURE (Status)) { return (Status); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsrepair.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsrepair.c index fbb9c7efdb..556af7cda8 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsrepair.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsrepair.c @@ -186,6 +186,11 @@ static const ACPI_SIMPLE_REPAIR_INFO AcpiObjectRepairInfo[] = ACPI_NOT_PACKAGE_ELEMENT, AcpiNsConvertToResource }, + /* Object reference conversions */ + + { "_DEP", ACPI_RTYPE_STRING, ACPI_ALL_PACKAGE_ELEMENTS, + AcpiNsConvertToReference }, + /* Unicode conversions */ { "_MLS", ACPI_RTYPE_STRING, 1, @@ -246,7 +251,8 @@ AcpiNsSimpleRepair ( ACPI_WARN_ALWAYS, "Missing expected return value")); } - Status = Predefined->ObjectConverter (ReturnObject, &NewObject); + Status = Predefined->ObjectConverter (Info->Node, ReturnObject, + &NewObject); if (ACPI_FAILURE (Status)) { /* A fatal error occurred during a conversion */ @@ -294,7 +300,7 @@ AcpiNsSimpleRepair ( ACPI_WARN_ALWAYS, "Found unexpected NULL package element")); Status = AcpiNsRepairNullElement (Info, ExpectedBtypes, - PackageIndex, ReturnObjectPtr); + PackageIndex, ReturnObjectPtr); if (ACPI_SUCCESS (Status)) { return (AE_OK); /* Repair was successful */ @@ -445,13 +451,15 @@ AcpiNsMatchSimpleRepair ( /* Check if we can actually repair this name/type combination */ if ((ReturnBtype & ThisName->UnexpectedBtypes) && - (PackageIndex == ThisName->PackageIndex)) + (ThisName->PackageIndex == ACPI_ALL_PACKAGE_ELEMENTS || + PackageIndex == ThisName->PackageIndex)) { return (ThisName); } return (NULL); } + ThisName++; } @@ -536,11 +544,13 @@ AcpiNsRepairNullElement ( /* Set the reference count according to the parent Package object */ - NewObject->Common.ReferenceCount = Info->ParentPackage->Common.ReferenceCount; + NewObject->Common.ReferenceCount = + Info->ParentPackage->Common.ReferenceCount; ACPI_DEBUG_PRINT ((ACPI_DB_REPAIR, "%s: Converted NULL package element to expected %s at index %u\n", - Info->FullPathname, AcpiUtGetObjectTypeName (NewObject), PackageIndex)); + Info->FullPathname, AcpiUtGetObjectTypeName (NewObject), + PackageIndex)); *ReturnObjectPtr = NewObject; Info->ReturnFlags |= ACPI_OBJECT_REPAIRED; @@ -623,6 +633,7 @@ AcpiNsRemoveNullElements ( *Dest = *Source; Dest++; } + Source++; } @@ -679,8 +690,8 @@ AcpiNsWrapWithPackage ( /* - * Create the new outer package and populate it. The new package will - * have a single element, the lone sub-object. + * Create the new outer package and populate it. The new + * package will have a single element, the lone sub-object. */ PkgObjDesc = AcpiUtCreatePackageObject (1); if (!PkgObjDesc) diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsrepair2.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsrepair2.c index a252d41f38..dda6c98007 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsrepair2.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsrepair2.c @@ -326,6 +326,7 @@ AcpiNsMatchComplexRepair ( { return (ThisName); } + ThisName++; } @@ -358,7 +359,7 @@ AcpiNsRepair_ALR ( Status = AcpiNsCheckSortedList (Info, ReturnObject, 0, 2, 1, - ACPI_SORT_ASCENDING, "AmbientIlluminance"); + ACPI_SORT_ASCENDING, "AmbientIlluminance"); return (Status); } @@ -411,7 +412,8 @@ AcpiNsRepair_FDE ( if (ReturnObject->Buffer.Length != ACPI_FDE_BYTE_BUFFER_SIZE) { - ACPI_WARN_PREDEFINED ((AE_INFO, Info->FullPathname, Info->NodeFlags, + ACPI_WARN_PREDEFINED ((AE_INFO, + Info->FullPathname, Info->NodeFlags, "Incorrect return buffer length %u, expected %u", ReturnObject->Buffer.Length, ACPI_FDE_DWORD_BUFFER_SIZE)); @@ -420,7 +422,8 @@ AcpiNsRepair_FDE ( /* Create the new (larger) buffer object */ - BufferObject = AcpiUtCreateBufferObject (ACPI_FDE_DWORD_BUFFER_SIZE); + BufferObject = AcpiUtCreateBufferObject ( + ACPI_FDE_DWORD_BUFFER_SIZE); if (!BufferObject) { return (AE_NO_MEMORY); @@ -429,7 +432,8 @@ AcpiNsRepair_FDE ( /* Expand each byte to a DWORD */ ByteBuffer = ReturnObject->Buffer.Pointer; - DwordBuffer = ACPI_CAST_PTR (UINT32, BufferObject->Buffer.Pointer); + DwordBuffer = ACPI_CAST_PTR (UINT32, + BufferObject->Buffer.Pointer); for (i = 0; i < ACPI_FDE_FIELD_COUNT; i++) { @@ -582,7 +586,8 @@ AcpiNsRepair_CST ( if ((*OuterElements)->Package.Count == 0) { - ACPI_WARN_PREDEFINED ((AE_INFO, Info->FullPathname, Info->NodeFlags, + ACPI_WARN_PREDEFINED ((AE_INFO, + Info->FullPathname, Info->NodeFlags, "SubPackage[%u] - removing entry due to zero count", i)); Removing = TRUE; goto RemoveElement; @@ -591,7 +596,8 @@ AcpiNsRepair_CST ( ObjDesc = (*OuterElements)->Package.Elements[1]; /* Index1 = Type */ if ((UINT32) ObjDesc->Integer.Value == 0) { - ACPI_WARN_PREDEFINED ((AE_INFO, Info->FullPathname, Info->NodeFlags, + ACPI_WARN_PREDEFINED ((AE_INFO, + Info->FullPathname, Info->NodeFlags, "SubPackage[%u] - removing entry due to invalid Type(0)", i)); Removing = TRUE; } @@ -618,7 +624,7 @@ RemoveElement: * C-state type, in ascending order. */ Status = AcpiNsCheckSortedList (Info, ReturnObject, 1, 4, 1, - ACPI_SORT_ASCENDING, "C-State Type"); + ACPI_SORT_ASCENDING, "C-State Type"); if (ACPI_FAILURE (Status)) { return (Status); @@ -666,7 +672,8 @@ AcpiNsRepair_HID ( if (ReturnObject->String.Length == 0) { - ACPI_WARN_PREDEFINED ((AE_INFO, Info->FullPathname, Info->NodeFlags, + ACPI_WARN_PREDEFINED ((AE_INFO, + Info->FullPathname, Info->NodeFlags, "Invalid zero-length _HID or _CID string")); /* Return AE_OK anyway, let driver handle it */ @@ -828,8 +835,8 @@ AcpiNsRepair_PSS ( * incorrectly sorted, sort it. We sort by CpuFrequency, since this * should be proportional to the power. */ - Status =AcpiNsCheckSortedList (Info, ReturnObject, 0, 6, 0, - ACPI_SORT_DESCENDING, "CpuFrequency"); + Status = AcpiNsCheckSortedList (Info, ReturnObject, 0, 6, 0, + ACPI_SORT_DESCENDING, "CpuFrequency"); if (ACPI_FAILURE (Status)) { return (Status); @@ -850,7 +857,8 @@ AcpiNsRepair_PSS ( if ((UINT32) ObjDesc->Integer.Value > PreviousValue) { - ACPI_WARN_PREDEFINED ((AE_INFO, Info->FullPathname, Info->NodeFlags, + ACPI_WARN_PREDEFINED ((AE_INFO, + Info->FullPathname, Info->NodeFlags, "SubPackage[%u,%u] - suspicious power dissipation values", i-1, i)); } @@ -904,7 +912,7 @@ AcpiNsRepair_TSS ( } Status = AcpiNsCheckSortedList (Info, ReturnObject, 0, 5, 1, - ACPI_SORT_DESCENDING, "PowerDissipation"); + ACPI_SORT_DESCENDING, "PowerDissipation"); return (Status); } @@ -1136,6 +1144,7 @@ AcpiNsRemoveElement ( *Dest = *Source; Dest++; } + Source++; } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nssearch.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nssearch.c index 060b10cc81..94de93e7dc 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nssearch.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nssearch.c @@ -184,7 +184,7 @@ AcpiNsSearchOneScope ( { char *ScopeName; - ScopeName = AcpiNsGetExternalPathname (ParentNode); + ScopeName = AcpiNsGetNormalizedPathname (ParentNode, TRUE); if (ScopeName) { ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, @@ -320,7 +320,7 @@ AcpiNsSearchParentTree ( * the actual name we are searching for. Typechecking comes later. */ Status = AcpiNsSearchOneScope ( - TargetName, ParentNode, ACPI_TYPE_ANY, ReturnNode); + TargetName, ParentNode, ACPI_TYPE_ANY, ReturnNode); if (ACPI_SUCCESS (Status)) { return_ACPI_STATUS (Status); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsutils.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsutils.c index acee74970b..fd207e5734 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsutils.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsutils.c @@ -268,9 +268,10 @@ AcpiNsGetInternalNameLength ( Info->FullyQualified = FALSE; /* - * For the internal name, the required length is 4 bytes per segment, plus - * 1 each for RootPrefix, MultiNamePrefixOp, segment count, trailing null - * (which is not really needed, but no there's harm in putting it there) + * For the internal name, the required length is 4 bytes per segment, + * plus 1 each for RootPrefix, MultiNamePrefixOp, segment count, + * trailing null (which is not really needed, but no there's harm in + * putting it there) * * strlen() + 1 covers the first NameSeg, which has no path separator */ @@ -315,7 +316,7 @@ AcpiNsGetInternalNameLength ( } Info->Length = (ACPI_NAME_SIZE * Info->NumSegments) + - 4 + Info->NumCarats; + 4 + Info->NumCarats; Info->NextExternalChar = NextExternalChar; } @@ -646,7 +647,7 @@ AcpiNsExternalizeName ( * punctuation ('.') between object names, plus the NULL terminator. */ RequiredLength = PrefixLength + (4 * NumSegments) + - ((NumSegments > 0) ? (NumSegments - 1) : 0) + 1; + ((NumSegments > 0) ? (NumSegments - 1) : 0) + 1; /* * Check to see if we're still in bounds. If not, there's a problem @@ -684,7 +685,8 @@ AcpiNsExternalizeName ( /* Copy and validate the 4-char name segment */ - ACPI_MOVE_NAME (&(*ConvertedName)[j], &InternalName[NamesIndex]); + ACPI_MOVE_NAME (&(*ConvertedName)[j], + &InternalName[NamesIndex]); AcpiUtRepairName (&(*ConvertedName)[j]); j += ACPI_NAME_SIZE; @@ -885,6 +887,7 @@ AcpiNsGetNode ( { *ReturnNode = AcpiGbl_RootNode; } + return_ACPI_STATUS (AE_OK); } @@ -919,12 +922,12 @@ AcpiNsGetNode ( /* Lookup the name in the namespace */ Status = AcpiNsLookup (&ScopeInfo, InternalPath, ACPI_TYPE_ANY, - ACPI_IMODE_EXECUTE, (Flags | ACPI_NS_DONT_OPEN_SCOPE), - NULL, ReturnNode); + ACPI_IMODE_EXECUTE, (Flags | ACPI_NS_DONT_OPEN_SCOPE), + NULL, ReturnNode); if (ACPI_FAILURE (Status)) { ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "%s, %s\n", - Pathname, AcpiFormatException (Status))); + Pathname, AcpiFormatException (Status))); } (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nswalk.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nswalk.c index aa23760ff1..f02fbf4937 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nswalk.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nswalk.c @@ -290,10 +290,10 @@ AcpiNsWalkNamespace ( /* Null child means "get first node" */ - ParentNode = StartNode; - ChildNode = AcpiNsGetNextNode (ParentNode, NULL); - ChildType = ACPI_TYPE_ANY; - Level = 1; + ParentNode = StartNode; + ChildNode = AcpiNsGetNextNode (ParentNode, NULL); + ChildType = ACPI_TYPE_ANY; + Level = 1; /* * Traverse the tree of nodes until we bubble back up to where we @@ -351,7 +351,7 @@ AcpiNsWalkNamespace ( if (DescendingCallback) { Status = DescendingCallback (ChildNode, Level, - Context, ReturnValue); + Context, ReturnValue); } } else @@ -359,7 +359,7 @@ AcpiNsWalkNamespace ( if (AscendingCallback) { Status = AscendingCallback (ChildNode, Level, - Context, ReturnValue); + Context, ReturnValue); } } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsxfeval.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsxfeval.c index 06328a6123..8a4aaa8f6f 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsxfeval.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsxfeval.c @@ -504,13 +504,13 @@ AcpiEvaluateObject ( /* Get the size of the returned object */ Status = AcpiUtGetObjectSize (Info->ReturnObject, - &BufferSpaceNeeded); + &BufferSpaceNeeded); if (ACPI_SUCCESS (Status)) { /* Validate/Allocate/Clear caller buffer */ Status = AcpiUtInitializeBuffer (ReturnBuffer, - BufferSpaceNeeded); + BufferSpaceNeeded); if (ACPI_FAILURE (Status)) { /* @@ -526,8 +526,8 @@ AcpiEvaluateObject ( { /* We have enough space for the object, build it */ - Status = AcpiUtCopyIobjectToEobject (Info->ReturnObject, - ReturnBuffer); + Status = AcpiUtCopyIobjectToEobject ( + Info->ReturnObject, ReturnBuffer); } } } @@ -740,8 +740,8 @@ AcpiWalkNamespace ( } Status = AcpiNsWalkNamespace (Type, StartObject, MaxDepth, - ACPI_NS_WALK_UNLOCK, DescendingCallback, - AscendingCallback, Context, ReturnValue); + ACPI_NS_WALK_UNLOCK, DescendingCallback, + AscendingCallback, Context, ReturnValue); UnlockAndExit2: (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); @@ -892,8 +892,8 @@ AcpiNsGetDeviceCallback ( /* We have a valid device, invoke the user function */ - Status = Info->UserFunction (ObjHandle, NestingLevel, Info->Context, - ReturnValue); + Status = Info->UserFunction (ObjHandle, NestingLevel, + Info->Context, ReturnValue); return (Status); } @@ -948,8 +948,8 @@ AcpiGetDevices ( * We're going to call their callback from OUR callback, so we need * to know what it is, and their context parameter. */ - Info.Hid = HID; - Info.Context = Context; + Info.Hid = HID; + Info.Context = Context; Info.UserFunction = UserFunction; /* @@ -965,8 +965,8 @@ AcpiGetDevices ( } Status = AcpiNsWalkNamespace (ACPI_TYPE_DEVICE, ACPI_ROOT_OBJECT, - ACPI_UINT32_MAX, ACPI_NS_WALK_UNLOCK, - AcpiNsGetDeviceCallback, NULL, &Info, ReturnValue); + ACPI_UINT32_MAX, ACPI_NS_WALK_UNLOCK, + AcpiNsGetDeviceCallback, NULL, &Info, ReturnValue); (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); return_ACPI_STATUS (Status); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsxfname.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsxfname.c index 51cc4f4802..82d1c21501 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsxfname.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsxfname.c @@ -249,7 +249,7 @@ AcpiGetName ( { ACPI_STATUS Status; ACPI_NAMESPACE_NODE *Node; - char *NodeName; + const char *NodeName; /* Parameter validation */ @@ -271,7 +271,7 @@ AcpiGetName ( /* Get the full pathname (From the namespace root) */ Status = AcpiNsHandleToPathname (Handle, Buffer, - NameType == ACPI_FULL_PATHNAME ? FALSE : TRUE); + NameType == ACPI_FULL_PATHNAME ? FALSE : TRUE); return (Status); } @@ -337,7 +337,6 @@ AcpiNsCopyDeviceId ( ACPI_PNP_DEVICE_ID *Source, char *StringArea) { - /* Create the destination PNP_DEVICE_ID */ Dest->String = StringArea; @@ -363,11 +362,18 @@ AcpiNsCopyDeviceId ( * namespace node and possibly by running several standard * control methods (Such as in the case of a device.) * - * For Device and Processor objects, run the Device _HID, _UID, _CID, _SUB, - * _CLS, _STA, _ADR, _SxW, and _SxD methods. + * For Device and Processor objects, run the Device _HID, _UID, _CID, _STA, + * _CLS, _ADR, _SxW, and _SxD methods. * * Note: Allocates the return buffer, must be freed by the caller. * + * Note: This interface is intended to be used during the initial device + * discovery namespace traversal. Therefore, no complex methods can be + * executed, especially those that access operation regions. Therefore, do + * not add any additional methods that could cause problems in this area. + * this was the fate of the _SUB method which was found to cause such + * problems and was removed (11/2015). + * ******************************************************************************/ ACPI_STATUS @@ -380,7 +386,6 @@ AcpiGetObjectInfo ( ACPI_PNP_DEVICE_ID_LIST *CidList = NULL; ACPI_PNP_DEVICE_ID *Hid = NULL; ACPI_PNP_DEVICE_ID *Uid = NULL; - ACPI_PNP_DEVICE_ID *Sub = NULL; ACPI_PNP_DEVICE_ID *Cls = NULL; char *NextIdString; ACPI_OBJECT_TYPE Type; @@ -434,7 +439,7 @@ AcpiGetObjectInfo ( { /* * Get extra info for ACPI Device/Processor objects only: - * Run the Device _HID, _UID, _SUB, _CID, and _CLS methods. + * Run the Device _HID, _UID, _CLS, and _CID methods. * * Note: none of these methods are required, so they may or may * not be present for this device. The Info->Valid bitfield is used @@ -459,15 +464,6 @@ AcpiGetObjectInfo ( Valid |= ACPI_VALID_UID; } - /* Execute the Device._SUB method */ - - Status = AcpiUtExecute_SUB (Node, &Sub); - if (ACPI_SUCCESS (Status)) - { - InfoSize += Sub->Length; - Valid |= ACPI_VALID_SUB; - } - /* Execute the Device._CID method */ Status = AcpiUtExecute_CID (Node, &CidList); @@ -530,7 +526,7 @@ AcpiGetObjectInfo ( /* Execute the Device._ADR method */ Status = AcpiUtEvaluateNumericObject (METHOD_NAME__ADR, Node, - &Info->Address); + &Info->Address); if (ACPI_SUCCESS (Status)) { Valid |= ACPI_VALID_ADR; @@ -539,8 +535,8 @@ AcpiGetObjectInfo ( /* Execute the Device._SxW methods */ Status = AcpiUtExecutePowerMethods (Node, - AcpiGbl_LowestDstateNames, ACPI_NUM_SxW_METHODS, - Info->LowestDstates); + AcpiGbl_LowestDstateNames, ACPI_NUM_SxW_METHODS, + Info->LowestDstates); if (ACPI_SUCCESS (Status)) { Valid |= ACPI_VALID_SXWS; @@ -549,8 +545,8 @@ AcpiGetObjectInfo ( /* Execute the Device._SxD methods */ Status = AcpiUtExecutePowerMethods (Node, - AcpiGbl_HighestDstateNames, ACPI_NUM_SxD_METHODS, - Info->HighestDstates); + AcpiGbl_HighestDstateNames, ACPI_NUM_SxD_METHODS, + Info->HighestDstates); if (ACPI_SUCCESS (Status)) { Valid |= ACPI_VALID_SXDS; @@ -570,9 +566,8 @@ AcpiGetObjectInfo ( } /* - * Copy the HID, UID, SUB, and CIDs to the return buffer. - * The variable-length strings are copied to the reserved area - * at the end of the buffer. + * Copy the HID, UID, and CIDs to the return buffer. The variable-length + * strings are copied to the reserved area at the end of the buffer. * * For HID and CID, check if the ID is a PCI Root Bridge. */ @@ -593,12 +588,6 @@ AcpiGetObjectInfo ( Uid, NextIdString); } - if (Sub) - { - NextIdString = AcpiNsCopyDeviceId (&Info->SubsystemId, - Sub, NextIdString); - } - if (CidList) { Info->CompatibleIdList.Count = CidList->Count; @@ -645,10 +634,6 @@ Cleanup: { ACPI_FREE (Uid); } - if (Sub) - { - ACPI_FREE (Sub); - } if (CidList) { ACPI_FREE (CidList); @@ -724,6 +709,7 @@ AcpiInstallMethod ( ParserState.Aml += AcpiPsGetOpcodeSize (Opcode); ParserState.PkgEnd = AcpiPsGetNextPackageEnd (&ParserState); Path = AcpiPsGetNextNamestring (&ParserState); + MethodFlags = *ParserState.Aml++; AmlStart = ParserState.Aml; AmlLength = ACPI_PTR_DIFF (ParserState.PkgEnd, AmlStart); @@ -756,7 +742,7 @@ AcpiInstallMethod ( /* The lookup either returns an existing node or creates a new one */ Status = AcpiNsLookup (NULL, Path, ACPI_TYPE_METHOD, ACPI_IMODE_LOAD_PASS1, - ACPI_NS_DONT_OPEN_SCOPE | ACPI_NS_ERROR_IF_FOUND, NULL, &Node); + ACPI_NS_DONT_OPEN_SCOPE | ACPI_NS_ERROR_IF_FOUND, NULL, &Node); (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsxfobj.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsxfobj.c index 2ca409fcad..d2c19d6e23 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsxfobj.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsxfobj.c @@ -153,10 +153,8 @@ AcpiGetType ( return (AE_BAD_PARAMETER); } - /* - * Special case for the predefined Root Node - * (return type ANY) - */ + /* Special case for the predefined Root Node (return type ANY) */ + if (Handle == ACPI_ROOT_OBJECT) { *RetType = ACPI_TYPE_ANY; @@ -180,7 +178,6 @@ AcpiGetType ( *RetType = Node->Type; - Status = AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); return (Status); } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psargs.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psargs.c index cbb24a9f89..d6654a158f 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psargs.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psargs.c @@ -359,8 +359,8 @@ AcpiPsGetNextNamepath ( * the upsearch) */ Status = AcpiNsLookup (WalkState->ScopeInfo, Path, - ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE, - ACPI_NS_SEARCH_PARENT | ACPI_NS_DONT_OPEN_SCOPE, NULL, &Node); + ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE, + ACPI_NS_SEARCH_PARENT | ACPI_NS_DONT_OPEN_SCOPE, NULL, &Node); /* * If this name is a control method invocation, we must @@ -370,7 +370,7 @@ AcpiPsGetNextNamepath ( PossibleMethodCall && (Node->Type == ACPI_TYPE_METHOD)) { - if (WalkState->Opcode == AML_UNLOAD_OP) + if (GET_CURRENT_ARG_TYPE (WalkState->ArgTypes) == ARGP_SUPERNAME) { /* * AcpiPsGetNextNamestring has increased the AML pointer, @@ -431,7 +431,7 @@ AcpiPsGetNextNamepath ( /* 1) NotFound is ok during load pass 1/2 (allow forward references) */ if ((WalkState->ParseFlags & ACPI_PARSE_MODE_MASK) != - ACPI_PARSE_EXECUTE) + ACPI_PARSE_EXECUTE) { Status = AE_OK; } @@ -463,7 +463,7 @@ AcpiPsGetNextNamepath ( ACPI_ERROR_NAMESPACE (Path, Status); if ((WalkState->ParseFlags & ACPI_PARSE_MODE_MASK) == - ACPI_PARSE_EXECUTE) + ACPI_PARSE_EXECUTE) { /* Report a control method execution error */ @@ -816,7 +816,7 @@ AcpiPsGetNextField ( * * PARAMETERS: WalkState - Current state * ParserState - Current parser state object - * ArgType - The argument type (AML_*_ARG) + * ArgType - The parser argument type (ARGP_*) * ReturnArg - Where the next arg is returned * * RETURN: Status, and an op object containing the next argument. @@ -859,6 +859,7 @@ AcpiPsGetNextArg ( { return_ACPI_STATUS (AE_NO_MEMORY); } + AcpiPsGetNextSimpleArg (ParserState, ArgType, Arg); break; @@ -907,7 +908,7 @@ AcpiPsGetNextArg ( /* Non-empty list */ Arg = AcpiPsAllocOp (AML_INT_BYTELIST_OP, - ParserState->Aml); + ParserState->Aml); if (!Arg) { return_ACPI_STATUS (AE_NO_MEMORY); @@ -928,6 +929,7 @@ AcpiPsGetNextArg ( case ARGP_TARGET: case ARGP_SUPERNAME: case ARGP_SIMPLENAME: + case ARGP_NAME_OR_REF: Subop = AcpiPsPeekOpcode (ParserState); if (Subop == 0 || @@ -943,15 +945,16 @@ AcpiPsGetNextArg ( return_ACPI_STATUS (AE_NO_MEMORY); } - /* To support SuperName arg of Unload */ + /* SuperName allows argument to be a method call */ - if (WalkState->Opcode == AML_UNLOAD_OP) + if (ArgType == ARGP_SUPERNAME) { - Status = AcpiPsGetNextNamepath (WalkState, ParserState, Arg, 1); + Status = AcpiPsGetNextNamepath (WalkState, ParserState, + Arg, ACPI_POSSIBLE_METHOD_CALL); /* - * If the SuperName arg of Unload is a method call, - * we have restored the AML pointer, just free this Arg + * If the SuperName argument is a method call, we have + * already restored the AML pointer, just free this Arg */ if (Arg->Common.AmlOpcode == AML_INT_METHODCALL_OP) { @@ -961,7 +964,8 @@ AcpiPsGetNextArg ( } else { - Status = AcpiPsGetNextNamepath (WalkState, ParserState, Arg, 0); + Status = AcpiPsGetNextNamepath (WalkState, ParserState, + Arg, ACPI_NOT_METHOD_CALL); } } else diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psloop.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psloop.c index bd7166fa56..524a6bd09e 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psloop.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psloop.c @@ -192,7 +192,8 @@ AcpiPsGetArguments ( case AML_INT_NAMEPATH_OP: /* AML_NAMESTRING_ARG */ - Status = AcpiPsGetNextNamepath (WalkState, &(WalkState->ParserState), Op, 1); + Status = AcpiPsGetNextNamepath (WalkState, + &(WalkState->ParserState), Op, ACPI_POSSIBLE_METHOD_CALL); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -205,12 +206,13 @@ AcpiPsGetArguments ( /* * Op is not a constant or string, append each argument to the Op */ - while (GET_CURRENT_ARG_TYPE (WalkState->ArgTypes) && !WalkState->ArgCount) + while (GET_CURRENT_ARG_TYPE (WalkState->ArgTypes) && + !WalkState->ArgCount) { WalkState->Aml = WalkState->ParserState.Aml; Status = AcpiPsGetNextArg (WalkState, &(WalkState->ParserState), - GET_CURRENT_ARG_TYPE (WalkState->ArgTypes), &Arg); + GET_CURRENT_ARG_TYPE (WalkState->ArgTypes), &Arg); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -622,7 +624,7 @@ AcpiPsParseLoop ( * prepare for argument */ Status = AcpiPsPushScope (ParserState, Op, - WalkState->ArgTypes, WalkState->ArgCount); + WalkState->ArgTypes, WalkState->ArgCount); if (ACPI_FAILURE (Status)) { Status = AcpiPsCompleteOp (WalkState, &Op, Status); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psobject.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psobject.c index 77e94345a8..0037871d9f 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psobject.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psobject.c @@ -181,7 +181,7 @@ AcpiPsGetAmlOpcode ( if (WalkState->PassNumber == 2) { AmlOffset = (UINT32) ACPI_PTR_DIFF (WalkState->Aml, - WalkState->ParserState.AmlStart); + WalkState->ParserState.AmlStart); ACPI_ERROR ((AE_INFO, "Unknown opcode 0x%.2X at table offset 0x%.4X, ignoring", @@ -223,7 +223,8 @@ AcpiPsGetAmlOpcode ( /* Found opcode info, this is a normal opcode */ - WalkState->ParserState.Aml += AcpiPsGetOpcodeSize (WalkState->Opcode); + WalkState->ParserState.Aml += + AcpiPsGetOpcodeSize (WalkState->Opcode); WalkState->ArgTypes = WalkState->OpInfo->ParseArgs; break; } @@ -273,7 +274,7 @@ AcpiPsBuildNamedOp ( (GET_CURRENT_ARG_TYPE (WalkState->ArgTypes) != ARGP_NAME)) { Status = AcpiPsGetNextArg (WalkState, &(WalkState->ParserState), - GET_CURRENT_ARG_TYPE (WalkState->ArgTypes), &Arg); + GET_CURRENT_ARG_TYPE (WalkState->ArgTypes), &Arg); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psopcode.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psopcode.c index 41181c61b0..45908155e4 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psopcode.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psopcode.c @@ -317,7 +317,7 @@ const ACPI_OPCODE_INFO AcpiGbl_AmlOpInfo[AML_NUM_OPCODES] = /* 34 */ ACPI_OP ("CreateWordField", ARGP_CREATE_WORD_FIELD_OP, ARGI_CREATE_WORD_FIELD_OP, ACPI_TYPE_BUFFER_FIELD, AML_CLASS_CREATE, AML_TYPE_CREATE_FIELD, AML_HAS_ARGS | AML_NSOBJECT | AML_NSNODE | AML_DEFER | AML_CREATE), /* 35 */ ACPI_OP ("CreateByteField", ARGP_CREATE_BYTE_FIELD_OP, ARGI_CREATE_BYTE_FIELD_OP, ACPI_TYPE_BUFFER_FIELD, AML_CLASS_CREATE, AML_TYPE_CREATE_FIELD, AML_HAS_ARGS | AML_NSOBJECT | AML_NSNODE | AML_DEFER | AML_CREATE), /* 36 */ ACPI_OP ("CreateBitField", ARGP_CREATE_BIT_FIELD_OP, ARGI_CREATE_BIT_FIELD_OP, ACPI_TYPE_BUFFER_FIELD, AML_CLASS_CREATE, AML_TYPE_CREATE_FIELD, AML_HAS_ARGS | AML_NSOBJECT | AML_NSNODE | AML_DEFER | AML_CREATE), -/* 37 */ ACPI_OP ("ObjectType", ARGP_TYPE_OP, ARGI_TYPE_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_1R, AML_FLAGS_EXEC_1A_0T_1R | AML_NO_OPERAND_RESOLVE), +/* 37 */ ACPI_OP ("ObjectType", ARGP_OBJECT_TYPE_OP, ARGI_OBJECT_TYPE_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_1R, AML_FLAGS_EXEC_1A_0T_1R | AML_NO_OPERAND_RESOLVE), /* 38 */ ACPI_OP ("LAnd", ARGP_LAND_OP, ARGI_LAND_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_0T_1R, AML_FLAGS_EXEC_2A_0T_1R | AML_LOGICAL_NUMERIC | AML_CONSTANT), /* 39 */ ACPI_OP ("LOr", ARGP_LOR_OP, ARGI_LOR_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_0T_1R, AML_FLAGS_EXEC_2A_0T_1R | AML_LOGICAL_NUMERIC | AML_CONSTANT), /* 3A */ ACPI_OP ("LNot", ARGP_LNOT_OP, ARGI_LNOT_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_1R, AML_FLAGS_EXEC_1A_0T_1R | AML_CONSTANT), diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psparse.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psparse.c index 599a766e56..a1d6612c36 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psparse.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psparse.c @@ -272,8 +272,8 @@ AcpiPsCompleteThisOp ( * These opcodes contain TermArg operands. The current * op must be replaced by a placeholder return op */ - ReplacementOp = AcpiPsAllocOp (AML_INT_RETURN_VALUE_OP, - Op->Common.Aml); + ReplacementOp = AcpiPsAllocOp ( + AML_INT_RETURN_VALUE_OP, Op->Common.Aml); if (!ReplacementOp) { Status = AE_NO_MEMORY; @@ -292,8 +292,8 @@ AcpiPsCompleteThisOp ( (Op->Common.Parent->Common.AmlOpcode == AML_BANK_FIELD_OP) || (Op->Common.Parent->Common.AmlOpcode == AML_VAR_PACKAGE_OP)) { - ReplacementOp = AcpiPsAllocOp (AML_INT_RETURN_VALUE_OP, - Op->Common.Aml); + ReplacementOp = AcpiPsAllocOp ( + AML_INT_RETURN_VALUE_OP, Op->Common.Aml); if (!ReplacementOp) { Status = AE_NO_MEMORY; @@ -307,7 +307,7 @@ AcpiPsCompleteThisOp ( (Op->Common.AmlOpcode == AML_VAR_PACKAGE_OP)) { ReplacementOp = AcpiPsAllocOp (Op->Common.AmlOpcode, - Op->Common.Aml); + Op->Common.Aml); if (!ReplacementOp) { Status = AE_NO_MEMORY; @@ -323,8 +323,8 @@ AcpiPsCompleteThisOp ( default: - ReplacementOp = AcpiPsAllocOp (AML_INT_RETURN_VALUE_OP, - Op->Common.Aml); + ReplacementOp = AcpiPsAllocOp ( + AML_INT_RETURN_VALUE_OP, Op->Common.Aml); if (!ReplacementOp) { Status = AE_NO_MEMORY; @@ -339,11 +339,11 @@ AcpiPsCompleteThisOp ( if (ReplacementOp) { - ReplacementOp->Common.Parent = Op->Common.Parent; - ReplacementOp->Common.Value.Arg = NULL; - ReplacementOp->Common.Node = Op->Common.Node; + ReplacementOp->Common.Parent = Op->Common.Parent; + ReplacementOp->Common.Value.Arg = NULL; + ReplacementOp->Common.Node = Op->Common.Node; Op->Common.Parent->Common.Value.Arg = ReplacementOp; - ReplacementOp->Common.Next = Op->Common.Next; + ReplacementOp->Common.Next = Op->Common.Next; } else { @@ -362,11 +362,11 @@ AcpiPsCompleteThisOp ( { if (ReplacementOp) { - ReplacementOp->Common.Parent = Op->Common.Parent; + ReplacementOp->Common.Parent = Op->Common.Parent; ReplacementOp->Common.Value.Arg = NULL; - ReplacementOp->Common.Node = Op->Common.Node; - Prev->Common.Next = ReplacementOp; - ReplacementOp->Common.Next = Op->Common.Next; + ReplacementOp->Common.Node = Op->Common.Node; + Prev->Common.Next = ReplacementOp; + ReplacementOp->Common.Next = Op->Common.Next; Next = NULL; } else @@ -566,7 +566,8 @@ AcpiPsParseAml ( */ if (WalkState->MethodDesc) { - WalkState->Thread->CurrentSyncLevel = WalkState->MethodDesc->Method.SyncLevel; + WalkState->Thread->CurrentSyncLevel = + WalkState->MethodDesc->Method.SyncLevel; } AcpiDsPushWalkState (WalkState, Thread); @@ -612,8 +613,8 @@ AcpiPsParseAml ( } /* - * If the transfer to the new method method call worked, a new walk - * state was created -- get it + * If the transfer to the new method method call worked + *, a new walk state was created -- get it */ WalkState = AcpiDsGetCurrentWalkState (Thread); continue; @@ -632,7 +633,8 @@ AcpiPsParseAml ( /* Check for possible multi-thread reentrancy problem */ if ((Status == AE_ALREADY_EXISTS) && - (!(WalkState->MethodDesc->Method.InfoFlags & ACPI_METHOD_SERIALIZED))) + (!(WalkState->MethodDesc->Method.InfoFlags & + ACPI_METHOD_SERIALIZED))) { /* * Method is not serialized and tried to create an object @@ -658,7 +660,8 @@ AcpiPsParseAml ( * encountered an error during the method parse phase, there's lots of * cleanup to do */ - if (((WalkState->ParseFlags & ACPI_PARSE_MODE_MASK) == ACPI_PARSE_EXECUTE) || + if (((WalkState->ParseFlags & ACPI_PARSE_MODE_MASK) == + ACPI_PARSE_EXECUTE) || (ACPI_FAILURE (Status))) { AcpiDsTerminateControlMethod (WalkState->MethodDesc, WalkState); @@ -705,7 +708,7 @@ AcpiPsParseAml ( /* Restart the calling control method */ Status = AcpiDsRestartControlMethod (WalkState, - PreviousWalkState->ImplicitReturnObj); + PreviousWalkState->ImplicitReturnObj); } else { @@ -716,7 +719,7 @@ AcpiPsParseAml ( AcpiDsClearImplicitReturn (PreviousWalkState); Status = AcpiDsRestartControlMethod (WalkState, - PreviousWalkState->ReturnDesc); + PreviousWalkState->ReturnDesc); } if (ACPI_SUCCESS (Status)) { diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psscope.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psscope.c index f44ea48897..60e03b4eee 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psscope.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psscope.c @@ -308,9 +308,9 @@ AcpiPsPopScope ( /* Return to parsing previous op */ - *Op = Scope->ParseScope.Op; - *ArgList = Scope->ParseScope.ArgList; - *ArgCount = Scope->ParseScope.ArgCount; + *Op = Scope->ParseScope.Op; + *ArgList = Scope->ParseScope.ArgList; + *ArgCount = Scope->ParseScope.ArgCount; ParserState->PkgEnd = Scope->ParseScope.PkgEnd; /* All done with this scope state structure */ @@ -321,8 +321,8 @@ AcpiPsPopScope ( { /* Empty parse stack, prepare to fetch next opcode */ - *Op = NULL; - *ArgList = 0; + *Op = NULL; + *ArgList = 0; *ArgCount = 0; } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psutils.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psutils.c index 3aa4954ae1..168f098f91 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psutils.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psutils.c @@ -177,8 +177,8 @@ AcpiPsInitOp ( Op->Common.AmlOpcode = Opcode; ACPI_DISASM_ONLY_MEMBERS (strncpy (Op->Common.AmlOpName, - (AcpiPsGetOpcodeInfo (Opcode))->Name, - sizeof (Op->Common.AmlOpName))); + (AcpiPsGetOpcodeInfo (Opcode))->Name, + sizeof (Op->Common.AmlOpName))); } @@ -277,7 +277,8 @@ AcpiPsFreeOp ( if (Op->Common.AmlOpcode == AML_INT_RETURN_VALUE_OP) { - ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, "Free retval op: %p\n", Op)); + ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, + "Free retval op: %p\n", Op)); } if (Op->Common.Flags & ACPI_PARSEOP_GENERIC) diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/pswalk.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/pswalk.c index a447970c4b..fa837ee2e3 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/pswalk.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/pswalk.c @@ -178,6 +178,7 @@ AcpiPsDeleteParseTree ( { return_VOID; } + if (Next) { Op = Next; diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psxface.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psxface.c index eb5c0182b6..b03f776a52 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psxface.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psxface.c @@ -255,7 +255,7 @@ AcpiPsExecuteMethod ( Info->PassNumber = ACPI_IMODE_EXECUTE; WalkState = AcpiDsCreateWalkState ( - Info->ObjDesc->Method.OwnerId, NULL, NULL, NULL); + Info->ObjDesc->Method.OwnerId, NULL, NULL, NULL); if (!WalkState) { Status = AE_NO_MEMORY; @@ -263,8 +263,8 @@ AcpiPsExecuteMethod ( } Status = AcpiDsInitAmlWalk (WalkState, Op, Info->Node, - Info->ObjDesc->Method.AmlStart, - Info->ObjDesc->Method.AmlLength, Info, Info->PassNumber); + Info->ObjDesc->Method.AmlStart, + Info->ObjDesc->Method.AmlLength, Info, Info->PassNumber); if (ACPI_FAILURE (Status)) { AcpiDsDeleteWalkState (WalkState); @@ -375,7 +375,8 @@ AcpiPsUpdateParameterList ( { /* Ignore errors, just do them all */ - (void) AcpiUtUpdateObjectReference (Info->Parameters[i], Action); + (void) AcpiUtUpdateObjectReference ( + Info->Parameters[i], Action); } } } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rsaddr.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rsaddr.c index 9d1d4d7390..2b603f0bda 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rsaddr.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rsaddr.c @@ -400,30 +400,35 @@ AcpiRsGetAddressCommon ( /* Validate the Resource Type */ - if ((Aml->Address.ResourceType > 2) && (Aml->Address.ResourceType < 0xC0)) + if ((Aml->Address.ResourceType > 2) && + (Aml->Address.ResourceType < 0xC0)) { return (FALSE); } /* Get the Resource Type and General Flags */ - (void) AcpiRsConvertAmlToResource (Resource, Aml, AcpiRsConvertGeneralFlags); + (void) AcpiRsConvertAmlToResource ( + Resource, Aml, AcpiRsConvertGeneralFlags); /* Get the Type-Specific Flags (Memory and I/O descriptors only) */ if (Resource->Data.Address.ResourceType == ACPI_MEMORY_RANGE) { - (void) AcpiRsConvertAmlToResource (Resource, Aml, AcpiRsConvertMemFlags); + (void) AcpiRsConvertAmlToResource ( + Resource, Aml, AcpiRsConvertMemFlags); } else if (Resource->Data.Address.ResourceType == ACPI_IO_RANGE) { - (void) AcpiRsConvertAmlToResource (Resource, Aml, AcpiRsConvertIoFlags); + (void) AcpiRsConvertAmlToResource ( + Resource, Aml, AcpiRsConvertIoFlags); } else { /* Generic resource type, just grab the TypeSpecific byte */ - Resource->Data.Address.Info.TypeSpecific = Aml->Address.SpecificFlags; + Resource->Data.Address.Info.TypeSpecific = + Aml->Address.SpecificFlags; } return (TRUE); @@ -454,22 +459,26 @@ AcpiRsSetAddressCommon ( /* Set the Resource Type and General Flags */ - (void) AcpiRsConvertResourceToAml (Resource, Aml, AcpiRsConvertGeneralFlags); + (void) AcpiRsConvertResourceToAml ( + Resource, Aml, AcpiRsConvertGeneralFlags); /* Set the Type-Specific Flags (Memory and I/O descriptors only) */ if (Resource->Data.Address.ResourceType == ACPI_MEMORY_RANGE) { - (void) AcpiRsConvertResourceToAml (Resource, Aml, AcpiRsConvertMemFlags); + (void) AcpiRsConvertResourceToAml ( + Resource, Aml, AcpiRsConvertMemFlags); } else if (Resource->Data.Address.ResourceType == ACPI_IO_RANGE) { - (void) AcpiRsConvertResourceToAml (Resource, Aml, AcpiRsConvertIoFlags); + (void) AcpiRsConvertResourceToAml ( + Resource, Aml, AcpiRsConvertIoFlags); } else { /* Generic resource type, just copy the TypeSpecific byte */ - Aml->Address.SpecificFlags = Resource->Data.Address.Info.TypeSpecific; + Aml->Address.SpecificFlags = + Resource->Data.Address.Info.TypeSpecific; } } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rscalc.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rscalc.c index 33a438ea6f..deab7e2a33 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rscalc.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rscalc.c @@ -236,16 +236,17 @@ AcpiRsStreamOptionLength ( /* - * The ResourceSourceIndex and ResourceSource are optional elements of some - * Large-type resource descriptors. + * The ResourceSourceIndex and ResourceSource are optional elements of + * some Large-type resource descriptors. */ /* - * If the length of the actual resource descriptor is greater than the ACPI - * spec-defined minimum length, it means that a ResourceSourceIndex exists - * and is followed by a (required) null terminated string. The string length - * (including the null terminator) is the resource length minus the minimum - * length, minus one byte for the ResourceSourceIndex itself. + * If the length of the actual resource descriptor is greater than the + * ACPI spec-defined minimum length, it means that a ResourceSourceIndex + * exists and is followed by a (required) null terminated string. The + * string length (including the null terminator) is the resource length + * minus the minimum length, minus one byte for the ResourceSourceIndex + * itself. */ if (ResourceLength > MinimumAmlResourceLength) { @@ -381,9 +382,9 @@ AcpiRsGetAmlLength ( * 16-Bit Address Resource: * Add the size of the optional ResourceSource info */ - TotalSize = (ACPI_RS_LENGTH) - (TotalSize + AcpiRsStructOptionLength ( - &Resource->Data.Address16.ResourceSource)); + TotalSize = (ACPI_RS_LENGTH) (TotalSize + + AcpiRsStructOptionLength ( + &Resource->Data.Address16.ResourceSource)); break; @@ -392,9 +393,9 @@ AcpiRsGetAmlLength ( * 32-Bit Address Resource: * Add the size of the optional ResourceSource info */ - TotalSize = (ACPI_RS_LENGTH) - (TotalSize + AcpiRsStructOptionLength ( - &Resource->Data.Address32.ResourceSource)); + TotalSize = (ACPI_RS_LENGTH) (TotalSize + + AcpiRsStructOptionLength ( + &Resource->Data.Address32.ResourceSource)); break; @@ -403,9 +404,9 @@ AcpiRsGetAmlLength ( * 64-Bit Address Resource: * Add the size of the optional ResourceSource info */ - TotalSize = (ACPI_RS_LENGTH) - (TotalSize + AcpiRsStructOptionLength ( - &Resource->Data.Address64.ResourceSource)); + TotalSize = (ACPI_RS_LENGTH) (TotalSize + + AcpiRsStructOptionLength ( + &Resource->Data.Address64.ResourceSource)); break; @@ -415,8 +416,7 @@ AcpiRsGetAmlLength ( * Add the size of each additional optional interrupt beyond the * required 1 (4 bytes for each UINT32 interrupt number) */ - TotalSize = (ACPI_RS_LENGTH) - (TotalSize + + TotalSize = (ACPI_RS_LENGTH) (TotalSize + ((Resource->Data.ExtendedIrq.InterruptCount - 1) * 4) + /* Add the size of the optional ResourceSource info */ @@ -428,7 +428,8 @@ AcpiRsGetAmlLength ( case ACPI_RESOURCE_TYPE_GPIO: - TotalSize = (ACPI_RS_LENGTH) (TotalSize + (Resource->Data.Gpio.PinTableLength * 2) + + TotalSize = (ACPI_RS_LENGTH) (TotalSize + + (Resource->Data.Gpio.PinTableLength * 2) + Resource->Data.Gpio.ResourceSource.StringLength + Resource->Data.Gpio.VendorLength); @@ -437,7 +438,8 @@ AcpiRsGetAmlLength ( case ACPI_RESOURCE_TYPE_SERIAL_BUS: - TotalSize = AcpiGbl_AmlResourceSerialBusSizes [Resource->Data.CommonSerialBus.Type]; + TotalSize = AcpiGbl_AmlResourceSerialBusSizes [ + Resource->Data.CommonSerialBus.Type]; TotalSize = (ACPI_RS_LENGTH) (TotalSize + Resource->Data.I2cSerialBus.ResourceSource.StringLength + @@ -616,12 +618,15 @@ AcpiRsGetListLength ( if (AmlResource->Gpio.VendorLength) { - ExtraStructBytes += AmlResource->Gpio.VendorOffset - - AmlResource->Gpio.PinTableOffset + AmlResource->Gpio.VendorLength; + ExtraStructBytes += + AmlResource->Gpio.VendorOffset - + AmlResource->Gpio.PinTableOffset + + AmlResource->Gpio.VendorLength; } else { - ExtraStructBytes += AmlResource->LargeHeader.ResourceLength + + ExtraStructBytes += + AmlResource->LargeHeader.ResourceLength + sizeof (AML_RESOURCE_LARGE_HEADER) - AmlResource->Gpio.PinTableOffset; } @@ -631,7 +636,8 @@ AcpiRsGetListLength ( MinimumAmlResourceLength = AcpiGbl_ResourceAmlSerialBusSizes[ AmlResource->CommonSerialBus.Type]; - ExtraStructBytes += AmlResource->CommonSerialBus.ResourceLength - + ExtraStructBytes += + AmlResource->CommonSerialBus.ResourceLength - MinimumAmlResourceLength; break; @@ -646,7 +652,8 @@ AcpiRsGetListLength ( * Important: Round the size up for the appropriate alignment. This * is a requirement on IA64. */ - if (AcpiUtGetResourceType (AmlBuffer) == ACPI_RESOURCE_NAME_SERIAL_BUS) + if (AcpiUtGetResourceType (AmlBuffer) == + ACPI_RESOURCE_NAME_SERIAL_BUS) { BufferSize = AcpiGbl_ResourceStructSerialBusSizes[ AmlResource->CommonSerialBus.Type] + ExtraStructBytes; @@ -654,10 +661,10 @@ AcpiRsGetListLength ( else { BufferSize = AcpiGbl_ResourceStructSizes[ResourceIndex] + - ExtraStructBytes; + ExtraStructBytes; } - BufferSize = (UINT32) ACPI_ROUND_UP_TO_NATIVE_WORD (BufferSize); + BufferSize = (UINT32) ACPI_ROUND_UP_TO_NATIVE_WORD (BufferSize); *SizeNeeded += BufferSize; ACPI_DEBUG_PRINT ((ACPI_DB_RESOURCES, @@ -794,7 +801,7 @@ AcpiRsGetPciRoutingTableLength ( else { TempSizeNeeded += AcpiNsGetPathnameLength ( - (*SubObjectList)->Reference.Node); + (*SubObjectList)->Reference.Node); } } else diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rscreate.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rscreate.c index 8cf00d3c50..0bf0ec5dc3 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rscreate.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rscreate.c @@ -158,8 +158,8 @@ AcpiBufferToResource ( /* Get the required length for the converted resource */ - Status = AcpiRsGetListLength (AmlBuffer, AmlBufferLength, - &ListSizeNeeded); + Status = AcpiRsGetListLength ( + AmlBuffer, AmlBufferLength, &ListSizeNeeded); if (Status == AE_AML_NO_RESOURCE_END_TAG) { Status = AE_OK; @@ -181,7 +181,7 @@ AcpiBufferToResource ( /* Perform the AML-to-Resource conversion */ Status = AcpiUtWalkAmlResources (NULL, AmlBuffer, AmlBufferLength, - AcpiRsConvertAmlToResources, &CurrentResourcePtr); + AcpiRsConvertAmlToResources, &CurrentResourcePtr); if (Status == AE_AML_NO_RESOURCE_END_TAG) { Status = AE_OK; @@ -269,14 +269,14 @@ AcpiRsCreateResourceList ( Resource = OutputBuffer->Pointer; Status = AcpiUtWalkAmlResources (NULL, AmlStart, AmlBufferLength, - AcpiRsConvertAmlToResources, &Resource); + AcpiRsConvertAmlToResources, &Resource); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "OutputBuffer %p Length %X\n", - OutputBuffer->Pointer, (UINT32) OutputBuffer->Length)); + OutputBuffer->Pointer, (UINT32) OutputBuffer->Length)); return_ACPI_STATUS (AE_OK); } @@ -327,8 +327,8 @@ AcpiRsCreatePciRoutingTable ( /* Get the required buffer length */ - Status = AcpiRsGetPciRoutingTableLength (PackageObject, - &BufferSizeNeeded); + Status = AcpiRsGetPciRoutingTableLength ( + PackageObject,&BufferSizeNeeded); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -350,10 +350,10 @@ AcpiRsCreatePciRoutingTable ( * package that in turn contains an UINT64 Address, a UINT8 Pin, * a Name, and a UINT8 SourceIndex. */ - TopObjectList = PackageObject->Package.Elements; + TopObjectList = PackageObject->Package.Elements; NumberOfElements = PackageObject->Package.Count; - Buffer = OutputBuffer->Pointer; - UserPrt = ACPI_CAST_PTR (ACPI_PCI_ROUTING_TABLE, Buffer); + Buffer = OutputBuffer->Pointer; + UserPrt = ACPI_CAST_PTR (ACPI_PCI_ROUTING_TABLE, Buffer); for (Index = 0; Index < NumberOfElements; Index++) { @@ -367,9 +367,9 @@ AcpiRsCreatePciRoutingTable ( UserPrt = ACPI_CAST_PTR (ACPI_PCI_ROUTING_TABLE, Buffer); /* - * Fill in the Length field with the information we have at this point. - * The minus four is to subtract the size of the UINT8 Source[4] member - * because it is added below. + * Fill in the Length field with the information we have at this + * point. The minus four is to subtract the size of the UINT8 + * Source[4] member because it is added below. */ UserPrt->Length = (sizeof (ACPI_PCI_ROUTING_TABLE) - 4); @@ -395,7 +395,8 @@ AcpiRsCreatePciRoutingTable ( ObjDesc = SubObjectList[0]; if (!ObjDesc || ObjDesc->Common.Type != ACPI_TYPE_INTEGER) { - ACPI_ERROR ((AE_INFO, "(PRT[%u].Address) Need Integer, found %s", + ACPI_ERROR ((AE_INFO, + "(PRT[%u].Address) Need Integer, found %s", Index, AcpiUtGetObjectTypeName (ObjDesc))); return_ACPI_STATUS (AE_BAD_DATA); } @@ -438,12 +439,12 @@ AcpiRsCreatePciRoutingTable ( /* Use *remaining* length of the buffer as max for pathname */ PathBuffer.Length = OutputBuffer->Length - - (UINT32) ((UINT8 *) UserPrt->Source - - (UINT8 *) OutputBuffer->Pointer); + (UINT32) ((UINT8 *) UserPrt->Source - + (UINT8 *) OutputBuffer->Pointer); PathBuffer.Pointer = UserPrt->Source; - Status = AcpiNsHandleToPathname ((ACPI_HANDLE) Node, - &PathBuffer, FALSE); + Status = AcpiNsHandleToPathname ( + (ACPI_HANDLE) Node, &PathBuffer, FALSE); /* +1 to include null terminator */ @@ -463,8 +464,8 @@ AcpiRsCreatePciRoutingTable ( case ACPI_TYPE_INTEGER: /* - * If this is a number, then the Source Name is NULL, since the - * entire buffer was zeroed out, we can leave this alone. + * If this is a number, then the Source Name is NULL, since + * the entire buffer was zeroed out, we can leave this alone. * * Add to the Length field the length of the UINT32 NULL */ @@ -503,7 +504,7 @@ AcpiRsCreatePciRoutingTable ( } ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "OutputBuffer %p Length %X\n", - OutputBuffer->Pointer, (UINT32) OutputBuffer->Length)); + OutputBuffer->Pointer, (UINT32) OutputBuffer->Length)); return_ACPI_STATUS (AE_OK); } @@ -544,8 +545,8 @@ AcpiRsCreateAmlResources ( /* Get the buffer size needed for the AML byte stream */ - Status = AcpiRsGetAmlLength (ResourceList->Pointer, - ResourceList->Length, &AmlSizeNeeded); + Status = AcpiRsGetAmlLength ( + ResourceList->Pointer, ResourceList->Length, &AmlSizeNeeded); ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "AmlSizeNeeded=%X, %s\n", (UINT32) AmlSizeNeeded, AcpiFormatException (Status))); @@ -565,7 +566,7 @@ AcpiRsCreateAmlResources ( /* Do the conversion */ Status = AcpiRsConvertResourcesToAml (ResourceList->Pointer, - AmlSizeNeeded, OutputBuffer->Pointer); + AmlSizeNeeded, OutputBuffer->Pointer); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rslist.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rslist.c index 4fda294ce5..8e6460f3e1 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rslist.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rslist.c @@ -169,9 +169,12 @@ AcpiRsConvertAmlToResources ( /* Get the appropriate conversion info table */ AmlResource = ACPI_CAST_PTR (AML_RESOURCE, Aml); - if (AcpiUtGetResourceType (Aml) == ACPI_RESOURCE_NAME_SERIAL_BUS) + + if (AcpiUtGetResourceType (Aml) == + ACPI_RESOURCE_NAME_SERIAL_BUS) { - if (AmlResource->CommonSerialBus.Type > AML_RESOURCE_MAX_SERIALBUSTYPE) + if (AmlResource->CommonSerialBus.Type > + AML_RESOURCE_MAX_SERIALBUSTYPE) { ConversionTable = NULL; } @@ -179,15 +182,13 @@ AcpiRsConvertAmlToResources ( { /* This is an I2C, SPI, or UART SerialBus descriptor */ - ConversionTable = - AcpiGbl_ConvertResourceSerialBusDispatch[ - AmlResource->CommonSerialBus.Type]; + ConversionTable = AcpiGbl_ConvertResourceSerialBusDispatch [ + AmlResource->CommonSerialBus.Type]; } } else { - ConversionTable = - AcpiGbl_GetResourceDispatch[ResourceIndex]; + ConversionTable = AcpiGbl_GetResourceDispatch[ResourceIndex]; } if (!ConversionTable) @@ -282,7 +283,8 @@ AcpiRsConvertResourcesToAml ( if (Resource->Type == ACPI_RESOURCE_TYPE_SERIAL_BUS) { - if (Resource->Data.CommonSerialBus.Type > AML_RESOURCE_MAX_SERIALBUSTYPE) + if (Resource->Data.CommonSerialBus.Type > + AML_RESOURCE_MAX_SERIALBUSTYPE) { ConversionTable = NULL; } @@ -308,8 +310,7 @@ AcpiRsConvertResourcesToAml ( } Status = AcpiRsConvertResourceToAml (Resource, - ACPI_CAST_PTR (AML_RESOURCE, Aml), - ConversionTable); + ACPI_CAST_PTR (AML_RESOURCE, Aml), ConversionTable); if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, @@ -320,8 +321,8 @@ AcpiRsConvertResourcesToAml ( /* Perform final sanity check on the new AML resource descriptor */ - Status = AcpiUtValidateResource (NULL, - ACPI_CAST_PTR (AML_RESOURCE, Aml), NULL); + Status = AcpiUtValidateResource ( + NULL, ACPI_CAST_PTR (AML_RESOURCE, Aml), NULL); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rsmisc.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rsmisc.c index 1a5512e175..04c1765c64 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rsmisc.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rsmisc.c @@ -193,7 +193,7 @@ AcpiRsConvertAmlToResource ( * Source is the external AML byte stream buffer, * destination is the internal resource descriptor */ - Source = ACPI_ADD_PTR (void, Aml, Info->AmlOffset); + Source = ACPI_ADD_PTR (void, Aml, Info->AmlOffset); Destination = ACPI_ADD_PTR (void, Resource, Info->ResourceOffset); switch (Info->Opcode) @@ -272,8 +272,7 @@ AcpiRsConvertAmlToResource ( ItemCount = ACPI_GET8 (Source); ACPI_SET8 (Destination, ItemCount); - Resource->Length = Resource->Length + - (Info->Value * ItemCount); + Resource->Length = Resource->Length + (Info->Value * ItemCount); break; case ACPI_RSC_COUNT_GPIO_RES: @@ -345,7 +344,7 @@ AcpiRsConvertAmlToResource ( /* Generate and set the PIN data pointer */ Target = (char *) ACPI_ADD_PTR (void, Resource, - (Resource->Length - ItemCount * 2)); + (Resource->Length - ItemCount * 2)); *(UINT16 **) Destination = ACPI_CAST_PTR (UINT16, Target); /* Copy the PIN data */ @@ -359,7 +358,7 @@ AcpiRsConvertAmlToResource ( /* Generate and set the ResourceSource string pointer */ Target = (char *) ACPI_ADD_PTR (void, Resource, - (Resource->Length - ItemCount)); + (Resource->Length - ItemCount)); *(UINT8 **) Destination = ACPI_CAST_PTR (UINT8, Target); /* Copy the ResourceSource string */ @@ -373,7 +372,7 @@ AcpiRsConvertAmlToResource ( /* Generate and set the Vendor Data pointer */ Target = (char *) ACPI_ADD_PTR (void, Resource, - (Resource->Length - ItemCount)); + (Resource->Length - ItemCount)); *(UINT8 **) Destination = ACPI_CAST_PTR (UINT8, Target); /* Copy the Vendor Data */ @@ -387,12 +386,13 @@ AcpiRsConvertAmlToResource ( /* Generate and set the ResourceSource string pointer */ Target = (char *) ACPI_ADD_PTR (void, Resource, - (Resource->Length - ItemCount)); + (Resource->Length - ItemCount)); *(UINT8 **) Destination = ACPI_CAST_PTR (UINT8, Target); /* Copy the ResourceSource string */ - Source = ACPI_ADD_PTR (void, Aml, (ACPI_GET16 (Source) + Info->Value)); + Source = ACPI_ADD_PTR ( + void, Aml, (ACPI_GET16 (Source) + Info->Value)); AcpiRsMoveData (Target, Source, ItemCount, Info->Opcode); break; @@ -514,7 +514,8 @@ Exit: { /* Round the resource struct length up to the next boundary (32 or 64) */ - Resource->Length = (UINT32) ACPI_ROUND_UP_TO_NATIVE_WORD (Resource->Length); + Resource->Length = (UINT32) + ACPI_ROUND_UP_TO_NATIVE_WORD (Resource->Length); } return_ACPI_STATUS (AE_OK); } @@ -570,7 +571,7 @@ AcpiRsConvertResourceToAml ( * Source is the internal resource descriptor, * destination is the external AML byte stream buffer */ - Source = ACPI_ADD_PTR (void, Resource, Info->ResourceOffset); + Source = ACPI_ADD_PTR (void, Resource, Info->ResourceOffset); Destination = ACPI_ADD_PTR (void, Aml, Info->AmlOffset); switch (Info->Opcode) @@ -579,7 +580,8 @@ AcpiRsConvertResourceToAml ( memset (Aml, 0, INIT_RESOURCE_LENGTH (Info)); AmlLength = INIT_RESOURCE_LENGTH (Info); - AcpiRsSetResourceHeader (INIT_RESOURCE_TYPE (Info), AmlLength, Aml); + AcpiRsSetResourceHeader ( + INIT_RESOURCE_TYPE (Info), AmlLength, Aml); break; case ACPI_RSC_INITGET: @@ -621,7 +623,8 @@ AcpiRsConvertResourceToAml ( ItemCount = ACPI_GET8 (Source); ACPI_SET8 (Destination, ItemCount); - AmlLength = (UINT16) (AmlLength + (Info->Value * (ItemCount - 1))); + AmlLength = (UINT16) + (AmlLength + (Info->Value * (ItemCount - 1))); break; case ACPI_RSC_COUNT16: @@ -647,7 +650,8 @@ AcpiRsConvertResourceToAml ( ItemCount = ACPI_GET16 (Source); ACPI_SET16 (Destination, ItemCount); - AmlLength = (UINT16) (AmlLength + (Info->Value * ItemCount)); + AmlLength = (UINT16) ( + AmlLength + (Info->Value * ItemCount)); AcpiRsSetResourceLength (AmlLength, Aml); break; @@ -708,7 +712,7 @@ AcpiRsConvertResourceToAml ( case ACPI_RSC_MOVE_GPIO_PIN: Destination = (char *) ACPI_ADD_PTR (void, Aml, - ACPI_GET16 (Destination)); + ACPI_GET16 (Destination)); Source = * (UINT16 **) Source; AcpiRsMoveData (Destination, Source, ItemCount, Info->Opcode); break; @@ -718,7 +722,7 @@ AcpiRsConvertResourceToAml ( /* Used for both ResourceSource string and VendorData */ Destination = (char *) ACPI_ADD_PTR (void, Aml, - ACPI_GET16 (Destination)); + ACPI_GET16 (Destination)); Source = * (UINT8 **) Source; AcpiRsMoveData (Destination, Source, ItemCount, Info->Opcode); break; @@ -726,7 +730,7 @@ AcpiRsConvertResourceToAml ( case ACPI_RSC_MOVE_SERIAL_VEN: Destination = (char *) ACPI_ADD_PTR (void, Aml, - (AmlLength - ItemCount)); + (AmlLength - ItemCount)); Source = * (UINT8 **) Source; AcpiRsMoveData (Destination, Source, ItemCount, Info->Opcode); break; @@ -734,7 +738,7 @@ AcpiRsConvertResourceToAml ( case ACPI_RSC_MOVE_SERIAL_RES: Destination = (char *) ACPI_ADD_PTR (void, Aml, - (AmlLength - ItemCount)); + (AmlLength - ItemCount)); Source = * (UINT8 **) Source; AcpiRsMoveData (Destination, Source, ItemCount, Info->Opcode); break; @@ -751,7 +755,7 @@ AcpiRsConvertResourceToAml ( * Optional ResourceSource (Index and String) */ AmlLength = AcpiRsSetResourceSource ( - Aml, (ACPI_RS_LENGTH) AmlLength, Source); + Aml, (ACPI_RS_LENGTH) AmlLength, Source); AcpiRsSetResourceLength (AmlLength, Aml); break; @@ -777,8 +781,8 @@ AcpiRsConvertResourceToAml ( /* * 16-bit encoded bitmask (IRQ macro) */ - Temp16 = AcpiRsEncodeBitmask (Source, - *ACPI_ADD_PTR (UINT8, Resource, Info->Value)); + Temp16 = AcpiRsEncodeBitmask ( + Source, *ACPI_ADD_PTR (UINT8, Resource, Info->Value)); ACPI_MOVE_16_TO_16 (Destination, &Temp16); break; @@ -801,7 +805,7 @@ AcpiRsConvertResourceToAml ( case ACPI_RSC_COMPARE_VALUE: if (*ACPI_ADD_PTR (UINT8, Resource, - COMPARE_TARGET (Info)) != COMPARE_VALUE (Info)) + COMPARE_TARGET (Info)) != COMPARE_VALUE (Info)) { goto Exit; } @@ -819,7 +823,7 @@ AcpiRsConvertResourceToAml ( * Control - Exit conversion if equal */ if (*ACPI_ADD_PTR (UINT8, Resource, - COMPARE_TARGET (Info)) == COMPARE_VALUE (Info)) + COMPARE_TARGET (Info)) == COMPARE_VALUE (Info)) { goto Exit; } @@ -843,7 +847,8 @@ Exit: #if 0 /* Previous resource validations */ - if (Aml->ExtAddress64.RevisionID != AML_RESOURCE_EXTENDED_ADDRESS_REVISION) + if (Aml->ExtAddress64.RevisionID != + AML_RESOURCE_EXTENDED_ADDRESS_REVISION) { return_ACPI_STATUS (AE_SUPPORT); } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rsutils.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rsutils.c index a7dc2150b1..f8d5cefd75 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rsutils.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rsutils.c @@ -257,20 +257,23 @@ AcpiRsMoveData ( case ACPI_RSC_MOVE16: case ACPI_RSC_MOVE_GPIO_PIN: - ACPI_MOVE_16_TO_16 (&ACPI_CAST_PTR (UINT16, Destination)[i], - &ACPI_CAST_PTR (UINT16, Source)[i]); + ACPI_MOVE_16_TO_16 ( + &ACPI_CAST_PTR (UINT16, Destination)[i], + &ACPI_CAST_PTR (UINT16, Source)[i]); break; case ACPI_RSC_MOVE32: - ACPI_MOVE_32_TO_32 (&ACPI_CAST_PTR (UINT32, Destination)[i], - &ACPI_CAST_PTR (UINT32, Source)[i]); + ACPI_MOVE_32_TO_32 ( + &ACPI_CAST_PTR (UINT32, Destination)[i], + &ACPI_CAST_PTR (UINT32, Source)[i]); break; case ACPI_RSC_MOVE64: - ACPI_MOVE_64_TO_64 (&ACPI_CAST_PTR (UINT64, Destination)[i], - &ACPI_CAST_PTR (UINT64, Source)[i]); + ACPI_MOVE_64_TO_64 ( + &ACPI_CAST_PTR (UINT64, Destination)[i], + &ACPI_CAST_PTR (UINT64, Source)[i]); break; default: @@ -320,18 +323,18 @@ AcpiRsSetResourceLength ( { /* Large descriptor -- bytes 1-2 contain the 16-bit length */ - ACPI_MOVE_16_TO_16 (&Aml->LargeHeader.ResourceLength, &ResourceLength); + ACPI_MOVE_16_TO_16 ( + &Aml->LargeHeader.ResourceLength, &ResourceLength); } else { - /* Small descriptor -- bits 2:0 of byte 0 contain the length */ - + /* + * Small descriptor -- bits 2:0 of byte 0 contain the length + * Clear any existing length, preserving descriptor type bits + */ Aml->SmallHeader.DescriptorType = (UINT8) - - /* Clear any existing length, preserving descriptor type bits */ - - ((Aml->SmallHeader.DescriptorType & ~ACPI_RESOURCE_NAME_SMALL_LENGTH_MASK) - + ((Aml->SmallHeader.DescriptorType & + ~ACPI_RESOURCE_NAME_SMALL_LENGTH_MASK) | ResourceLength); } } @@ -450,8 +453,8 @@ AcpiRsGetResourceSource ( AmlResourceSource = ACPI_ADD_PTR (UINT8, Aml, MinimumLength); /* - * ResourceSource is present if the length of the descriptor is longer than - * the minimum length. + * ResourceSource is present if the length of the descriptor is longer + * than the minimum length. * * Note: Some resource descriptors will have an additional null, so * we add 1 to the minimum length. @@ -469,8 +472,8 @@ AcpiRsGetResourceSource ( * String destination pointer is not specified; Set the String * pointer to the end of the current ResourceSource structure. */ - ResourceSource->StringPtr = ACPI_ADD_PTR (char, ResourceSource, - sizeof (ACPI_RESOURCE_SOURCE)); + ResourceSource->StringPtr = ACPI_ADD_PTR ( + char, ResourceSource, sizeof (ACPI_RESOURCE_SOURCE)); } /* @@ -482,13 +485,15 @@ AcpiRsGetResourceSource ( */ TotalLength = (UINT32) strlen ( ACPI_CAST_PTR (char, &AmlResourceSource[1])) + 1; + TotalLength = (UINT32) ACPI_ROUND_UP_TO_NATIVE_WORD (TotalLength); memset (ResourceSource->StringPtr, 0, TotalLength); /* Copy the ResourceSource string to the destination */ - ResourceSource->StringLength = AcpiRsStrcpy (ResourceSource->StringPtr, + ResourceSource->StringLength = AcpiRsStrcpy ( + ResourceSource->StringPtr, ACPI_CAST_PTR (char, &AmlResourceSource[1])); return ((ACPI_RS_LENGTH) TotalLength); @@ -556,7 +561,8 @@ AcpiRsSetResourceSource ( * Add the length of the string (+ 1 for null terminator) to the * final descriptor length */ - DescriptorLength += ((ACPI_RSDESC_SIZE) ResourceSource->StringLength + 1); + DescriptorLength += ((ACPI_RSDESC_SIZE) + ResourceSource->StringLength + 1); } /* Return the new total length of the AML descriptor */ @@ -599,8 +605,8 @@ AcpiRsGetPrtMethodData ( /* Execute the method, no parameters */ - Status = AcpiUtEvaluateObject (Node, METHOD_NAME__PRT, - ACPI_BTYPE_PACKAGE, &ObjDesc); + Status = AcpiUtEvaluateObject ( + Node, METHOD_NAME__PRT, ACPI_BTYPE_PACKAGE, &ObjDesc); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -653,8 +659,8 @@ AcpiRsGetCrsMethodData ( /* Execute the method, no parameters */ - Status = AcpiUtEvaluateObject (Node, METHOD_NAME__CRS, - ACPI_BTYPE_BUFFER, &ObjDesc); + Status = AcpiUtEvaluateObject ( + Node, METHOD_NAME__CRS, ACPI_BTYPE_BUFFER, &ObjDesc); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -708,8 +714,8 @@ AcpiRsGetPrsMethodData ( /* Execute the method, no parameters */ - Status = AcpiUtEvaluateObject (Node, METHOD_NAME__PRS, - ACPI_BTYPE_BUFFER, &ObjDesc); + Status = AcpiUtEvaluateObject ( + Node, METHOD_NAME__PRS, ACPI_BTYPE_BUFFER, &ObjDesc); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -763,8 +769,8 @@ AcpiRsGetAeiMethodData ( /* Execute the method, no parameters */ - Status = AcpiUtEvaluateObject (Node, METHOD_NAME__AEI, - ACPI_BTYPE_BUFFER, &ObjDesc); + Status = AcpiUtEvaluateObject ( + Node, METHOD_NAME__AEI, ACPI_BTYPE_BUFFER, &ObjDesc); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -820,7 +826,8 @@ AcpiRsGetMethodData ( /* Execute the method, no parameters */ - Status = AcpiUtEvaluateObject (ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, Handle), + Status = AcpiUtEvaluateObject ( + ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, Handle), Path, ACPI_BTYPE_BUFFER, &ObjDesc); if (ACPI_FAILURE (Status)) { diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rsxface.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rsxface.c index 9aea3dcb2d..9580053749 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rsxface.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rsxface.c @@ -126,7 +126,7 @@ /* Local macros for 16,32-bit to 64-bit conversion */ #define ACPI_COPY_FIELD(Out, In, Field) ((Out)->Field = (In)->Field) -#define ACPI_COPY_ADDRESS(Out, In) \ +#define ACPI_COPY_ADDRESS(Out, In) \ ACPI_COPY_FIELD(Out, In, ResourceType); \ ACPI_COPY_FIELD(Out, In, ProducerConsumer); \ ACPI_COPY_FIELD(Out, In, Decode); \ @@ -505,13 +505,15 @@ AcpiResourceToAddress64 ( { case ACPI_RESOURCE_TYPE_ADDRESS16: - Address16 = ACPI_CAST_PTR (ACPI_RESOURCE_ADDRESS16, &Resource->Data); + Address16 = ACPI_CAST_PTR ( + ACPI_RESOURCE_ADDRESS16, &Resource->Data); ACPI_COPY_ADDRESS (Out, Address16); break; case ACPI_RESOURCE_TYPE_ADDRESS32: - Address32 = ACPI_CAST_PTR (ACPI_RESOURCE_ADDRESS32, &Resource->Data); + Address32 = ACPI_CAST_PTR ( + ACPI_RESOURCE_ADDRESS32, &Resource->Data); ACPI_COPY_ADDRESS (Out, Address32); break; @@ -576,8 +578,8 @@ AcpiGetVendorResource ( /* Walk the _CRS or _PRS resource list for this device */ - Status = AcpiWalkResources (DeviceHandle, Name, AcpiRsMatchVendorResource, - &Info); + Status = AcpiWalkResources ( + DeviceHandle, Name, AcpiRsMatchVendorResource, &Info); if (ACPI_FAILURE (Status)) { return (Status); @@ -696,7 +698,8 @@ AcpiWalkResourceBuffer ( /* Buffer contains the resource list and length */ Resource = ACPI_CAST_PTR (ACPI_RESOURCE, Buffer->Pointer); - ResourceEnd = ACPI_ADD_PTR (ACPI_RESOURCE, Buffer->Pointer, Buffer->Length); + ResourceEnd = ACPI_ADD_PTR ( + ACPI_RESOURCE, Buffer->Pointer, Buffer->Length); /* Walk the resource list until the EndTag is found (or buffer end) */ diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbdata.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbdata.c index daacf41e28..8b388f446a 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbdata.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbdata.c @@ -194,7 +194,7 @@ AcpiTbAcquireTable ( case ACPI_TABLE_ORIGIN_EXTERNAL_VIRTUAL: Table = ACPI_CAST_PTR (ACPI_TABLE_HEADER, - ACPI_PHYSADDR_TO_PTR (TableDesc->Address)); + ACPI_PHYSADDR_TO_PTR (TableDesc->Address)); break; default: @@ -301,7 +301,7 @@ AcpiTbAcquireTempTable ( case ACPI_TABLE_ORIGIN_EXTERNAL_VIRTUAL: TableHeader = ACPI_CAST_PTR (ACPI_TABLE_HEADER, - ACPI_PHYSADDR_TO_PTR (Address)); + ACPI_PHYSADDR_TO_PTR (Address)); if (!TableHeader) { return (AE_NO_MEMORY); @@ -375,7 +375,7 @@ AcpiTbValidateTable ( if (!TableDesc->Pointer) { Status = AcpiTbAcquireTable (TableDesc, &TableDesc->Pointer, - &TableDesc->Length, &TableDesc->Flags); + &TableDesc->Length, &TableDesc->Flags); if (!TableDesc->Pointer) { Status = AE_NO_MEMORY; @@ -516,6 +516,7 @@ AcpiTbVerifyTempTable ( AcpiUtValidAcpiName (TableDesc->Signature.Ascii) ? TableDesc->Signature.Ascii : "????", ACPI_FORMAT_UINT64 (TableDesc->Address))); + goto InvalidateAndExit; } } @@ -793,7 +794,7 @@ AcpiTbAllocateOwnerId ( if (TableIndex < AcpiGbl_RootTableList.CurrentTableCount) { Status = AcpiUtAllocateOwnerId ( - &(AcpiGbl_RootTableList.Tables[TableIndex].OwnerId)); + &(AcpiGbl_RootTableList.Tables[TableIndex].OwnerId)); } (void) AcpiUtReleaseMutex (ACPI_MTX_TABLES); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbfadt.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbfadt.c index 4f82733974..dc933d6314 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbfadt.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbfadt.c @@ -398,7 +398,7 @@ AcpiTbSelectAddress ( * * FUNCTION: AcpiTbParseFadt * - * PARAMETERS: TableIndex - Index for the FADT + * PARAMETERS: None * * RETURN: None * @@ -409,7 +409,7 @@ AcpiTbSelectAddress ( void AcpiTbParseFadt ( - UINT32 TableIndex) + void) { UINT32 Length; ACPI_TABLE_HEADER *Table; @@ -422,10 +422,10 @@ AcpiTbParseFadt ( * Get a local copy of the FADT and convert it to a common format * Map entire FADT, assumed to be smaller than one page. */ - Length = AcpiGbl_RootTableList.Tables[TableIndex].Length; + Length = AcpiGbl_RootTableList.Tables[AcpiGbl_FadtIndex].Length; Table = AcpiOsMapMemory ( - AcpiGbl_RootTableList.Tables[TableIndex].Address, Length); + AcpiGbl_RootTableList.Tables[AcpiGbl_FadtIndex].Address, Length); if (!Table) { return; diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbfind.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbfind.c index bf692b8a88..3a7f705cd7 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbfind.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbfind.c @@ -180,7 +180,7 @@ AcpiTbFindTable ( for (i = 0; i < AcpiGbl_RootTableList.CurrentTableCount; ++i) { if (memcmp (&(AcpiGbl_RootTableList.Tables[i].Signature), - Header.Signature, ACPI_NAME_SIZE)) + Header.Signature, ACPI_NAME_SIZE)) { /* Not the requested table */ @@ -208,13 +208,13 @@ AcpiTbFindTable ( /* Check for table match on all IDs */ if (!memcmp (AcpiGbl_RootTableList.Tables[i].Pointer->Signature, - Header.Signature, ACPI_NAME_SIZE) && + Header.Signature, ACPI_NAME_SIZE) && (!OemId[0] || !memcmp (AcpiGbl_RootTableList.Tables[i].Pointer->OemId, - Header.OemId, ACPI_OEM_ID_SIZE)) && + Header.OemId, ACPI_OEM_ID_SIZE)) && (!OemTableId[0] || !memcmp (AcpiGbl_RootTableList.Tables[i].Pointer->OemTableId, - Header.OemTableId, ACPI_OEM_TABLE_ID_SIZE))) + Header.OemTableId, ACPI_OEM_TABLE_ID_SIZE))) { *TableIndex = i; diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbinstal.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbinstal.c index 2d7bb9456f..9c5b9c144e 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbinstal.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbinstal.c @@ -155,7 +155,7 @@ AcpiTbCompareTables ( Status = AcpiTbAcquireTable (&AcpiGbl_RootTableList.Tables[TableIndex], - &Table, &TableLength, &TableFlags); + &Table, &TableLength, &TableFlags); if (ACPI_FAILURE (Status)) { return (FALSE); @@ -278,7 +278,7 @@ AcpiTbInstallFixedTable ( /* Fill a table descriptor for validation */ Status = AcpiTbAcquireTempTable (&NewTableDesc, Address, - ACPI_TABLE_ORIGIN_INTERNAL_PHYSICAL); + ACPI_TABLE_ORIGIN_INTERNAL_PHYSICAL); if (ACPI_FAILURE (Status)) { ACPI_ERROR ((AE_INFO, "Could not acquire table length at %8.8X%8.8X", @@ -350,7 +350,8 @@ AcpiTbInstallStandardTable ( Status = AcpiTbAcquireTempTable (&NewTableDesc, Address, Flags); if (ACPI_FAILURE (Status)) { - ACPI_ERROR ((AE_INFO, "Could not acquire table length at %8.8X%8.8X", + ACPI_ERROR ((AE_INFO, + "Could not acquire table length at %8.8X%8.8X", ACPI_FORMAT_UINT64 (Address))); return_ACPI_STATUS (Status); } @@ -363,7 +364,8 @@ AcpiTbInstallStandardTable ( AcpiGbl_DisableSsdtTableInstall && ACPI_COMPARE_NAME (&NewTableDesc.Signature, ACPI_SIG_SSDT)) { - ACPI_INFO ((AE_INFO, "Ignoring installation of %4.4s at %8.8X%8.8X", + ACPI_INFO ((AE_INFO, + "Ignoring installation of %4.4s at %8.8X%8.8X", NewTableDesc.Signature.Ascii, ACPI_FORMAT_UINT64 (Address))); goto ReleaseAndExit; } @@ -431,7 +433,8 @@ AcpiTbInstallStandardTable ( * need to be unregistered when they are unloaded, and slots in the * root table list should be reused when empty. */ - if (AcpiGbl_RootTableList.Tables[i].Flags & ACPI_TABLE_IS_LOADED) + if (AcpiGbl_RootTableList.Tables[i].Flags & + ACPI_TABLE_IS_LOADED) { /* Table is still loaded, this is an error */ diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbprint.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbprint.c index e958041672..ff221d2187 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbprint.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbprint.c @@ -160,6 +160,7 @@ AcpiTbFixString ( { *String = '?'; } + String++; Length--; } @@ -228,8 +229,8 @@ AcpiTbPrintTableHeader ( { /* RSDP has no common fields */ - memcpy (LocalHeader.OemId, - ACPI_CAST_PTR (ACPI_TABLE_RSDP, Header)->OemId, ACPI_OEM_ID_SIZE); + memcpy (LocalHeader.OemId, ACPI_CAST_PTR (ACPI_TABLE_RSDP, + Header)->OemId, ACPI_OEM_ID_SIZE); AcpiTbFixString (LocalHeader.OemId, ACPI_OEM_ID_SIZE); ACPI_INFO ((AE_INFO, "RSDP 0x%8.8X%8.8X %06X (v%.2d %-6.6s)", diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbutils.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbutils.c index 05704258c1..0f25fda984 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbutils.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbutils.c @@ -158,16 +158,16 @@ AcpiTbInitializeFacs ( return (AE_OK); } else if (AcpiGbl_FADT.XFacs && - (!AcpiGbl_FADT.Facs || !AcpiGbl_Use32BitFacsAddresses)) + (!AcpiGbl_FADT.Facs || !AcpiGbl_Use32BitFacsAddresses)) { (void) AcpiGetTableByIndex (AcpiGbl_XFacsIndex, - ACPI_CAST_INDIRECT_PTR (ACPI_TABLE_HEADER, &Facs)); + ACPI_CAST_INDIRECT_PTR (ACPI_TABLE_HEADER, &Facs)); AcpiGbl_FACS = Facs; } else if (AcpiGbl_FADT.Facs) { (void) AcpiGetTableByIndex (AcpiGbl_FacsIndex, - ACPI_CAST_INDIRECT_PTR (ACPI_TABLE_HEADER, &Facs)); + ACPI_CAST_INDIRECT_PTR (ACPI_TABLE_HEADER, &Facs)); AcpiGbl_FACS = Facs; } @@ -178,33 +178,6 @@ AcpiTbInitializeFacs ( #endif /* !ACPI_REDUCED_HARDWARE */ -/******************************************************************************* - * - * FUNCTION: AcpiTbTablesLoaded - * - * PARAMETERS: None - * - * RETURN: TRUE if required ACPI tables are loaded - * - * DESCRIPTION: Determine if the minimum required ACPI tables are present - * (FADT, FACS, DSDT) - * - ******************************************************************************/ - -BOOLEAN -AcpiTbTablesLoaded ( - void) -{ - - if (AcpiGbl_RootTableList.CurrentTableCount >= 4) - { - return (TRUE); - } - - return (FALSE); -} - - /******************************************************************************* * * FUNCTION: AcpiTbCheckDsdtHeader @@ -232,6 +205,7 @@ AcpiTbCheckDsdtHeader ( ACPI_BIOS_ERROR ((AE_INFO, "The DSDT has been corrupted or replaced - " "old, new headers below")); + AcpiTbPrintTableHeader (0, &AcpiGbl_OriginalDsdtHeader); AcpiTbPrintTableHeader (0, AcpiGbl_DSDT); @@ -280,8 +254,8 @@ AcpiTbCopyDsdt ( AcpiTbInitTableDescriptor ( &AcpiGbl_RootTableList.Tables[AcpiGbl_DsdtIndex], - ACPI_PTR_TO_PHYSADDR (NewTable), ACPI_TABLE_ORIGIN_INTERNAL_VIRTUAL, - NewTable); + ACPI_PTR_TO_PHYSADDR (NewTable), + ACPI_TABLE_ORIGIN_INTERNAL_VIRTUAL, NewTable); ACPI_INFO ((AE_INFO, "Forced DSDT copy: length 0x%05X copied locally, original unmapped", @@ -326,7 +300,8 @@ AcpiTbGetRootTableEntry ( * 32-bit platform, RSDT: Return 32-bit table entry * 64-bit platform, RSDT: Expand 32-bit to 64-bit and return */ - return ((ACPI_PHYSICAL_ADDRESS) (*ACPI_CAST_PTR (UINT32, TableEntry))); + return ((ACPI_PHYSICAL_ADDRESS) (*ACPI_CAST_PTR ( + UINT32, TableEntry))); } else { @@ -492,10 +467,12 @@ AcpiTbParseRootTable ( ACPI_TABLE_ORIGIN_INTERNAL_PHYSICAL, FALSE, TRUE, &TableIndex); if (ACPI_SUCCESS (Status) && - ACPI_COMPARE_NAME (&AcpiGbl_RootTableList.Tables[TableIndex].Signature, + ACPI_COMPARE_NAME ( + &AcpiGbl_RootTableList.Tables[TableIndex].Signature, ACPI_SIG_FADT)) { - AcpiTbParseFadt (TableIndex); + AcpiGbl_FadtIndex = TableIndex; + AcpiTbParseFadt (); } NextTable: @@ -504,7 +481,6 @@ NextTable: } AcpiOsUnmapMemory (Table, Length); - return_ACPI_STATUS (AE_OK); } @@ -515,7 +491,7 @@ NextTable: * * PARAMETERS: Signature - Sig string to be validated * - * RETURN: TRUE if signature is correct length and has valid characters + * RETURN: TRUE if signature is has 4 valid ACPI characters * * DESCRIPTION: Validate an ACPI table signature. * @@ -528,13 +504,6 @@ AcpiIsValidSignature ( UINT32 i; - /* Validate the signature length */ - - if (strlen (Signature) != ACPI_NAME_SIZE) - { - return (FALSE); - } - /* Validate each character in the signature */ for (i = 0; i < ACPI_NAME_SIZE; i++) diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbxface.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbxface.c index 25e140553d..83de853e12 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbxface.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbxface.c @@ -318,8 +318,8 @@ AcpiGetTableHeader ( for (i = 0, j = 0; i < AcpiGbl_RootTableList.CurrentTableCount; i++) { - if (!ACPI_COMPARE_NAME (&(AcpiGbl_RootTableList.Tables[i].Signature), - Signature)) + if (!ACPI_COMPARE_NAME ( + &(AcpiGbl_RootTableList.Tables[i].Signature), Signature)) { continue; } @@ -336,15 +336,14 @@ AcpiGetTableHeader ( ACPI_TABLE_ORIGIN_INTERNAL_PHYSICAL) { Header = AcpiOsMapMemory ( - AcpiGbl_RootTableList.Tables[i].Address, - sizeof (ACPI_TABLE_HEADER)); + AcpiGbl_RootTableList.Tables[i].Address, + sizeof (ACPI_TABLE_HEADER)); if (!Header) { return (AE_NO_MEMORY); } - memcpy (OutTableHeader, Header, - sizeof (ACPI_TABLE_HEADER)); + memcpy (OutTableHeader, Header, sizeof (ACPI_TABLE_HEADER)); AcpiOsUnmapMemory (Header, sizeof (ACPI_TABLE_HEADER)); } else @@ -405,8 +404,8 @@ AcpiGetTable ( for (i = 0, j = 0; i < AcpiGbl_RootTableList.CurrentTableCount; i++) { - if (!ACPI_COMPARE_NAME (&(AcpiGbl_RootTableList.Tables[i].Signature), - Signature)) + if (!ACPI_COMPARE_NAME ( + &(AcpiGbl_RootTableList.Tables[i].Signature), Signature)) { continue; } @@ -477,7 +476,8 @@ AcpiGetTableByIndex ( { /* Table is not mapped, map it */ - Status = AcpiTbValidateTable (&AcpiGbl_RootTableList.Tables[TableIndex]); + Status = AcpiTbValidateTable ( + &AcpiGbl_RootTableList.Tables[TableIndex]); if (ACPI_FAILURE (Status)) { (void) AcpiUtReleaseMutex (ACPI_MTX_TABLES); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbxfload.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbxfload.c index 1d51c913f5..2290e16e05 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbxfload.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbxfload.c @@ -282,6 +282,7 @@ AcpiTbLoadNamespace ( { ACPI_EXCEPTION ((AE_INFO, Status, "(%4.4s:%8.8s) while loading table", Table->Signature.Ascii, Table->Pointer->OemTableId)); + TablesFailed++; ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INIT, @@ -299,7 +300,7 @@ AcpiTbLoadNamespace ( if (!TablesFailed) { ACPI_INFO ((AE_INFO, - "%u ACPI AML tables successfully acquired and loaded", + "%u ACPI AML tables successfully acquired and loaded\n", TablesLoaded)); } else @@ -415,8 +416,8 @@ AcpiLoadTable ( (void) AcpiUtAcquireMutex (ACPI_MTX_TABLES); Status = AcpiTbInstallStandardTable (ACPI_PTR_TO_PHYSADDR (Table), - ACPI_TABLE_ORIGIN_EXTERNAL_VIRTUAL, TRUE, FALSE, - &TableIndex); + ACPI_TABLE_ORIGIN_EXTERNAL_VIRTUAL, TRUE, FALSE, + &TableIndex); (void) AcpiUtReleaseMutex (ACPI_MTX_TABLES); if (ACPI_FAILURE (Status)) @@ -428,7 +429,8 @@ AcpiLoadTable ( * Note: Now table is "INSTALLED", it must be validated before * using. */ - Status = AcpiTbValidateTable (&AcpiGbl_RootTableList.Tables[TableIndex]); + Status = AcpiTbValidateTable ( + &AcpiGbl_RootTableList.Tables[TableIndex]); if (ACPI_FAILURE (Status)) { goto UnlockAndExit; @@ -441,7 +443,7 @@ AcpiLoadTable ( if (AcpiGbl_TableHandler) { (void) AcpiGbl_TableHandler (ACPI_TABLE_EVENT_LOAD, Table, - AcpiGbl_TableHandlerContext); + AcpiGbl_TableHandlerContext); } UnlockAndExit: @@ -524,8 +526,8 @@ AcpiUnloadParentTable ( * that can create namespace objects. */ if (ACPI_COMPARE_NAME ( - AcpiGbl_RootTableList.Tables[i].Signature.Ascii, - ACPI_SIG_DSDT)) + AcpiGbl_RootTableList.Tables[i].Signature.Ascii, + ACPI_SIG_DSDT)) { Status = AE_TYPE; break; @@ -544,8 +546,8 @@ AcpiUnloadParentTable ( if (AcpiGbl_TableHandler) { (void) AcpiGbl_TableHandler (ACPI_TABLE_EVENT_UNLOAD, - AcpiGbl_RootTableList.Tables[i].Pointer, - AcpiGbl_TableHandlerContext); + AcpiGbl_RootTableList.Tables[i].Pointer, + AcpiGbl_TableHandlerContext); } /* diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbxfroot.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbxfroot.c index 45d7d54675..582ff67dba 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbxfroot.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbxfroot.c @@ -243,8 +243,8 @@ AcpiFindRootPointer ( /* 1a) Get the location of the Extended BIOS Data Area (EBDA) */ TablePtr = AcpiOsMapMemory ( - (ACPI_PHYSICAL_ADDRESS) ACPI_EBDA_PTR_LOCATION, - ACPI_EBDA_PTR_LENGTH); + (ACPI_PHYSICAL_ADDRESS) ACPI_EBDA_PTR_LOCATION, + ACPI_EBDA_PTR_LENGTH); if (!TablePtr) { ACPI_ERROR ((AE_INFO, @@ -270,8 +270,8 @@ AcpiFindRootPointer ( * minimum of 1K length) */ TablePtr = AcpiOsMapMemory ( - (ACPI_PHYSICAL_ADDRESS) PhysicalAddress, - ACPI_EBDA_WINDOW_SIZE); + (ACPI_PHYSICAL_ADDRESS) PhysicalAddress, + ACPI_EBDA_WINDOW_SIZE); if (!TablePtr) { ACPI_ERROR ((AE_INFO, @@ -281,14 +281,16 @@ AcpiFindRootPointer ( return_ACPI_STATUS (AE_NO_MEMORY); } - MemRover = AcpiTbScanMemoryForRsdp (TablePtr, ACPI_EBDA_WINDOW_SIZE); + MemRover = AcpiTbScanMemoryForRsdp ( + TablePtr, ACPI_EBDA_WINDOW_SIZE); AcpiOsUnmapMemory (TablePtr, ACPI_EBDA_WINDOW_SIZE); if (MemRover) { /* Return the physical address */ - PhysicalAddress += (UINT32) ACPI_PTR_DIFF (MemRover, TablePtr); + PhysicalAddress += + (UINT32) ACPI_PTR_DIFF (MemRover, TablePtr); *TableAddress = (ACPI_PHYSICAL_ADDRESS) PhysicalAddress; return_ACPI_STATUS (AE_OK); @@ -299,8 +301,8 @@ AcpiFindRootPointer ( * 2) Search upper memory: 16-byte boundaries in E0000h-FFFFFh */ TablePtr = AcpiOsMapMemory ( - (ACPI_PHYSICAL_ADDRESS) ACPI_HI_RSDP_WINDOW_BASE, - ACPI_HI_RSDP_WINDOW_SIZE); + (ACPI_PHYSICAL_ADDRESS) ACPI_HI_RSDP_WINDOW_BASE, + ACPI_HI_RSDP_WINDOW_SIZE); if (!TablePtr) { @@ -311,7 +313,8 @@ AcpiFindRootPointer ( return_ACPI_STATUS (AE_NO_MEMORY); } - MemRover = AcpiTbScanMemoryForRsdp (TablePtr, ACPI_HI_RSDP_WINDOW_SIZE); + MemRover = AcpiTbScanMemoryForRsdp ( + TablePtr, ACPI_HI_RSDP_WINDOW_SIZE); AcpiOsUnmapMemory (TablePtr, ACPI_HI_RSDP_WINDOW_SIZE); if (MemRover) @@ -369,7 +372,8 @@ AcpiTbScanMemoryForRsdp ( { /* The RSDP signature and checksum must both be correct */ - Status = AcpiTbValidateRsdp (ACPI_CAST_PTR (ACPI_TABLE_RSDP, MemRover)); + Status = AcpiTbValidateRsdp ( + ACPI_CAST_PTR (ACPI_TABLE_RSDP, MemRover)); if (ACPI_SUCCESS (Status)) { /* Sig and checksum valid, we have found a real RSDP */ diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utaddress.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utaddress.c index 9d65019b42..18f39bd7cd 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utaddress.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utaddress.c @@ -335,7 +335,7 @@ AcpiUtCheckAddressRange ( OverlapCount++; if (Warn) /* Optional warning message */ { - Pathname = AcpiNsGetExternalPathname (RangeInfo->RegionNode); + Pathname = AcpiNsGetNormalizedPathname (RangeInfo->RegionNode, TRUE); ACPI_WARNING ((AE_INFO, "%s range 0x%8.8X%8.8X-0x%8.8X%8.8X conflicts with OpRegion 0x%8.8X%8.8X-0x%8.8X%8.8X (%s)", diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utalloc.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utalloc.c index 62c3e28f31..22ebf3e29c 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utalloc.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utalloc.c @@ -182,35 +182,35 @@ AcpiUtCreateCaches ( /* Object Caches, for frequently used objects */ Status = AcpiOsCreateCache ("Acpi-Namespace", sizeof (ACPI_NAMESPACE_NODE), - ACPI_MAX_NAMESPACE_CACHE_DEPTH, &AcpiGbl_NamespaceCache); + ACPI_MAX_NAMESPACE_CACHE_DEPTH, &AcpiGbl_NamespaceCache); if (ACPI_FAILURE (Status)) { return (Status); } Status = AcpiOsCreateCache ("Acpi-State", sizeof (ACPI_GENERIC_STATE), - ACPI_MAX_STATE_CACHE_DEPTH, &AcpiGbl_StateCache); + ACPI_MAX_STATE_CACHE_DEPTH, &AcpiGbl_StateCache); if (ACPI_FAILURE (Status)) { return (Status); } Status = AcpiOsCreateCache ("Acpi-Parse", sizeof (ACPI_PARSE_OBJ_COMMON), - ACPI_MAX_PARSE_CACHE_DEPTH, &AcpiGbl_PsNodeCache); + ACPI_MAX_PARSE_CACHE_DEPTH, &AcpiGbl_PsNodeCache); if (ACPI_FAILURE (Status)) { return (Status); } Status = AcpiOsCreateCache ("Acpi-ParseExt", sizeof (ACPI_PARSE_OBJ_NAMED), - ACPI_MAX_EXTPARSE_CACHE_DEPTH, &AcpiGbl_PsNodeExtCache); + ACPI_MAX_EXTPARSE_CACHE_DEPTH, &AcpiGbl_PsNodeExtCache); if (ACPI_FAILURE (Status)) { return (Status); } Status = AcpiOsCreateCache ("Acpi-Operand", sizeof (ACPI_OPERAND_OBJECT), - ACPI_MAX_OBJECT_CACHE_DEPTH, &AcpiGbl_OperandCache); + ACPI_MAX_OBJECT_CACHE_DEPTH, &AcpiGbl_OperandCache); if (ACPI_FAILURE (Status)) { return (Status); @@ -222,14 +222,14 @@ AcpiUtCreateCaches ( /* Memory allocation lists */ Status = AcpiUtCreateList ("Acpi-Global", 0, - &AcpiGbl_GlobalList); + &AcpiGbl_GlobalList); if (ACPI_FAILURE (Status)) { return (Status); } Status = AcpiUtCreateList ("Acpi-Namespace", sizeof (ACPI_NAMESPACE_NODE), - &AcpiGbl_NsNodeList); + &AcpiGbl_NsNodeList); if (ACPI_FAILURE (Status)) { return (Status); @@ -259,6 +259,7 @@ AcpiUtDeleteCaches ( #ifdef ACPI_DBG_TRACK_ALLOCATIONS char Buffer[7]; + if (AcpiGbl_DisplayFinalMemStats) { strcpy (Buffer, "MEMORY"); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utcache.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utcache.c index 5cf52502eb..b0cf6b0677 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utcache.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utcache.c @@ -165,9 +165,9 @@ AcpiOsCreateCache ( /* Populate the cache object and return it */ memset (Cache, 0, sizeof (ACPI_MEMORY_LIST)); - Cache->ListName = CacheName; + Cache->ListName = CacheName; Cache->ObjectSize = ObjectSize; - Cache->MaxDepth = MaxDepth; + Cache->MaxDepth = MaxDepth; *ReturnCache = Cache; return (AE_OK); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utcopy.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utcopy.c index bc777876e3..5ba4a221c4 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utcopy.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utcopy.c @@ -235,7 +235,7 @@ AcpiUtCopyIsimpleToEsimple ( ExternalObject->String.Pointer = (char *) DataSpace; ExternalObject->String.Length = InternalObject->String.Length; *BufferSpaceUsed = ACPI_ROUND_UP_TO_NATIVE_WORD ( - (ACPI_SIZE) InternalObject->String.Length + 1); + (ACPI_SIZE) InternalObject->String.Length + 1); memcpy ((void *) DataSpace, (void *) InternalObject->String.Pointer, @@ -247,7 +247,7 @@ AcpiUtCopyIsimpleToEsimple ( ExternalObject->Buffer.Pointer = DataSpace; ExternalObject->Buffer.Length = InternalObject->Buffer.Length; *BufferSpaceUsed = ACPI_ROUND_UP_TO_NATIVE_WORD ( - InternalObject->String.Length); + InternalObject->String.Length); memcpy ((void *) DataSpace, (void *) InternalObject->Buffer.Pointer, @@ -347,9 +347,9 @@ AcpiUtCopyIelementToEelement ( ACPI_FUNCTION_ENTRY (); - ThisIndex = State->Pkg.Index; - TargetObject = (ACPI_OBJECT *) - &((ACPI_OBJECT *)(State->Pkg.DestObject))->Package.Elements[ThisIndex]; + ThisIndex = State->Pkg.Index; + TargetObject = (ACPI_OBJECT *) &((ACPI_OBJECT *) + (State->Pkg.DestObject))->Package.Elements[ThisIndex]; switch (ObjectType) { @@ -358,7 +358,7 @@ AcpiUtCopyIelementToEelement ( * This is a simple or null object */ Status = AcpiUtCopyIsimpleToEsimple (SourceObject, - TargetObject, Info->FreeSpace, &ObjectSpace); + TargetObject, Info->FreeSpace, &ObjectSpace); if (ACPI_FAILURE (Status)) { return (Status); @@ -369,9 +369,9 @@ AcpiUtCopyIelementToEelement ( /* * Build the package object */ - TargetObject->Type = ACPI_TYPE_PACKAGE; - TargetObject->Package.Count = SourceObject->Package.Count; - TargetObject->Package.Elements = + TargetObject->Type = ACPI_TYPE_PACKAGE; + TargetObject->Package.Count = SourceObject->Package.Count; + TargetObject->Package.Elements = ACPI_CAST_PTR (ACPI_OBJECT, Info->FreeSpace); /* @@ -384,8 +384,8 @@ AcpiUtCopyIelementToEelement ( * update the buffer length counter */ ObjectSpace = ACPI_ROUND_UP_TO_NATIVE_WORD ( - (ACPI_SIZE) TargetObject->Package.Count * - sizeof (ACPI_OBJECT)); + (ACPI_SIZE) TargetObject->Package.Count * + sizeof (ACPI_OBJECT)); break; default: @@ -393,8 +393,8 @@ AcpiUtCopyIelementToEelement ( return (AE_BAD_PARAMETER); } - Info->FreeSpace += ObjectSpace; - Info->Length += ObjectSpace; + Info->FreeSpace += ObjectSpace; + Info->Length += ObjectSpace; return (Status); } @@ -440,28 +440,28 @@ AcpiUtCopyIpackageToEpackage ( /* * Free space begins right after the first package */ - Info.Length = ACPI_ROUND_UP_TO_NATIVE_WORD (sizeof (ACPI_OBJECT)); - Info.FreeSpace = Buffer + ACPI_ROUND_UP_TO_NATIVE_WORD ( - sizeof (ACPI_OBJECT)); + Info.Length = ACPI_ROUND_UP_TO_NATIVE_WORD (sizeof (ACPI_OBJECT)); + Info.FreeSpace = Buffer + + ACPI_ROUND_UP_TO_NATIVE_WORD (sizeof (ACPI_OBJECT)); Info.ObjectSpace = 0; Info.NumPackages = 1; - ExternalObject->Type = InternalObject->Common.Type; - ExternalObject->Package.Count = InternalObject->Package.Count; - ExternalObject->Package.Elements = ACPI_CAST_PTR (ACPI_OBJECT, - Info.FreeSpace); + ExternalObject->Type = InternalObject->Common.Type; + ExternalObject->Package.Count = InternalObject->Package.Count; + ExternalObject->Package.Elements = + ACPI_CAST_PTR (ACPI_OBJECT, Info.FreeSpace); /* * Leave room for an array of ACPI_OBJECTS in the buffer * and move the free space past it */ - Info.Length += (ACPI_SIZE) ExternalObject->Package.Count * - ACPI_ROUND_UP_TO_NATIVE_WORD (sizeof (ACPI_OBJECT)); + Info.Length += (ACPI_SIZE) ExternalObject->Package.Count * + ACPI_ROUND_UP_TO_NATIVE_WORD (sizeof (ACPI_OBJECT)); Info.FreeSpace += ExternalObject->Package.Count * - ACPI_ROUND_UP_TO_NATIVE_WORD (sizeof (ACPI_OBJECT)); + ACPI_ROUND_UP_TO_NATIVE_WORD (sizeof (ACPI_OBJECT)); Status = AcpiUtWalkPackageTree (InternalObject, ExternalObject, - AcpiUtCopyIelementToEelement, &Info); + AcpiUtCopyIelementToEelement, &Info); *SpaceUsed = Info.Length; return_ACPI_STATUS (Status); @@ -500,7 +500,7 @@ AcpiUtCopyIobjectToEobject ( * nested packages) */ Status = AcpiUtCopyIpackageToEpackage (InternalObject, - RetBuffer->Pointer, &RetBuffer->Length); + RetBuffer->Pointer, &RetBuffer->Length); } else { @@ -508,10 +508,10 @@ AcpiUtCopyIobjectToEobject ( * Build a simple object (no nested objects) */ Status = AcpiUtCopyIsimpleToEsimple (InternalObject, - ACPI_CAST_PTR (ACPI_OBJECT, RetBuffer->Pointer), - ACPI_ADD_PTR (UINT8, RetBuffer->Pointer, - ACPI_ROUND_UP_TO_NATIVE_WORD (sizeof (ACPI_OBJECT))), - &RetBuffer->Length); + ACPI_CAST_PTR (ACPI_OBJECT, RetBuffer->Pointer), + ACPI_ADD_PTR (UINT8, RetBuffer->Pointer, + ACPI_ROUND_UP_TO_NATIVE_WORD (sizeof (ACPI_OBJECT))), + &RetBuffer->Length); /* * build simple does not include the object size in the length * so we add it in here @@ -561,7 +561,7 @@ AcpiUtCopyEsimpleToIsimple ( case ACPI_TYPE_LOCAL_REFERENCE: InternalObject = AcpiUtCreateInternalObject ( - (UINT8) ExternalObject->Type); + (UINT8) ExternalObject->Type); if (!InternalObject) { return_ACPI_STATUS (AE_NO_MEMORY); @@ -601,10 +601,10 @@ AcpiUtCopyEsimpleToIsimple ( } memcpy (InternalObject->String.Pointer, - ExternalObject->String.Pointer, - ExternalObject->String.Length); + ExternalObject->String.Pointer, + ExternalObject->String.Length); - InternalObject->String.Length = ExternalObject->String.Length; + InternalObject->String.Length = ExternalObject->String.Length; break; case ACPI_TYPE_BUFFER: @@ -617,10 +617,10 @@ AcpiUtCopyEsimpleToIsimple ( } memcpy (InternalObject->Buffer.Pointer, - ExternalObject->Buffer.Pointer, - ExternalObject->Buffer.Length); + ExternalObject->Buffer.Pointer, + ExternalObject->Buffer.Length); - InternalObject->Buffer.Length = ExternalObject->Buffer.Length; + InternalObject->Buffer.Length = ExternalObject->Buffer.Length; /* Mark buffer data valid */ @@ -629,7 +629,7 @@ AcpiUtCopyEsimpleToIsimple ( case ACPI_TYPE_INTEGER: - InternalObject->Integer.Value = ExternalObject->Integer.Value; + InternalObject->Integer.Value = ExternalObject->Integer.Value; break; case ACPI_TYPE_LOCAL_REFERENCE: @@ -687,7 +687,8 @@ AcpiUtCopyEpackageToIpackage ( /* Create the package object */ - PackageObject = AcpiUtCreatePackageObject (ExternalObject->Package.Count); + PackageObject = AcpiUtCreatePackageObject ( + ExternalObject->Package.Count); if (!PackageObject) { return_ACPI_STATUS (AE_NO_MEMORY); @@ -696,14 +697,14 @@ AcpiUtCopyEpackageToIpackage ( PackageElements = PackageObject->Package.Elements; /* - * Recursive implementation. Probably ok, since nested external packages - * as parameters should be very rare. + * Recursive implementation. Probably ok, since nested external + * packages as parameters should be very rare. */ for (i = 0; i < ExternalObject->Package.Count; i++) { Status = AcpiUtCopyEobjectToIobject ( - &ExternalObject->Package.Elements[i], - &PackageElements[i]); + &ExternalObject->Package.Elements[i], + &PackageElements[i]); if (ACPI_FAILURE (Status)) { /* Truncate package and delete it */ @@ -750,14 +751,16 @@ AcpiUtCopyEobjectToIobject ( if (ExternalObject->Type == ACPI_TYPE_PACKAGE) { - Status = AcpiUtCopyEpackageToIpackage (ExternalObject, InternalObject); + Status = AcpiUtCopyEpackageToIpackage ( + ExternalObject, InternalObject); } else { /* * Build a simple object (no nested objects) */ - Status = AcpiUtCopyEsimpleToIsimple (ExternalObject, InternalObject); + Status = AcpiUtCopyEsimpleToIsimple (ExternalObject, + InternalObject); } return_ACPI_STATUS (Status); @@ -908,7 +911,7 @@ AcpiUtCopySimpleObject ( case ACPI_TYPE_EVENT: Status = AcpiOsCreateSemaphore (ACPI_NO_UNIT_LIMIT, 0, - &DestDesc->Event.OsSemaphore); + &DestDesc->Event.OsSemaphore); if (ACPI_FAILURE (Status)) { return (Status); @@ -954,9 +957,9 @@ AcpiUtCopyIelementToIelement ( ACPI_FUNCTION_ENTRY (); - ThisIndex = State->Pkg.Index; + ThisIndex = State->Pkg.Index; ThisTargetPtr = (ACPI_OPERAND_OBJECT **) - &State->Pkg.DestObject->Package.Elements[ThisIndex]; + &State->Pkg.DestObject->Package.Elements[ThisIndex]; switch (ObjectType) { @@ -970,7 +973,7 @@ AcpiUtCopyIelementToIelement ( * This is a simple object, just copy it */ TargetObject = AcpiUtCreateInternalObject ( - SourceObject->Common.Type); + SourceObject->Common.Type); if (!TargetObject) { return (AE_NO_MEMORY); @@ -997,7 +1000,8 @@ AcpiUtCopyIelementToIelement ( * This object is a package - go down another nesting level * Create and build the package object */ - TargetObject = AcpiUtCreatePackageObject (SourceObject->Package.Count); + TargetObject = AcpiUtCreatePackageObject ( + SourceObject->Package.Count); if (!TargetObject) { return (AE_NO_MEMORY); @@ -1054,16 +1058,16 @@ AcpiUtCopyIpackageToIpackage ( ACPI_FUNCTION_TRACE (UtCopyIpackageToIpackage); - DestObj->Common.Type = SourceObj->Common.Type; - DestObj->Common.Flags = SourceObj->Common.Flags; - DestObj->Package.Count = SourceObj->Package.Count; + DestObj->Common.Type = SourceObj->Common.Type; + DestObj->Common.Flags = SourceObj->Common.Flags; + DestObj->Package.Count = SourceObj->Package.Count; /* * Create the object array and walk the source package tree */ DestObj->Package.Elements = ACPI_ALLOCATE_ZEROED ( - ((ACPI_SIZE) SourceObj->Package.Count + 1) * - sizeof (void *)); + ((ACPI_SIZE) SourceObj->Package.Count + 1) * + sizeof (void *)); if (!DestObj->Package.Elements) { ACPI_ERROR ((AE_INFO, "Package allocation failure")); @@ -1075,7 +1079,7 @@ AcpiUtCopyIpackageToIpackage ( * This handles nested packages of arbitrary depth. */ Status = AcpiUtWalkPackageTree (SourceObj, DestObj, - AcpiUtCopyIelementToIelement, WalkState); + AcpiUtCopyIelementToIelement, WalkState); if (ACPI_FAILURE (Status)) { /* On failure, delete the destination package object */ @@ -1125,8 +1129,8 @@ AcpiUtCopyIobjectToIobject ( if (SourceDesc->Common.Type == ACPI_TYPE_PACKAGE) { - Status = AcpiUtCopyIpackageToIpackage (SourceDesc, *DestDesc, - WalkState); + Status = AcpiUtCopyIpackageToIpackage ( + SourceDesc, *DestDesc, WalkState); } else { @@ -1137,7 +1141,7 @@ AcpiUtCopyIobjectToIobject ( if (ACPI_FAILURE (Status)) { - AcpiUtRemoveReference(*DestDesc); + AcpiUtRemoveReference (*DestDesc); } return_ACPI_STATUS (Status); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utdecode.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utdecode.c index eb0dc9f27d..3d927f511c 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utdecode.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utdecode.c @@ -191,7 +191,7 @@ const char *AcpiGbl_RegionTypes[ACPI_NUM_PREDEFINED_REGIONS] = }; -char * +const char * AcpiUtGetRegionName ( UINT8 SpaceId) { @@ -213,7 +213,7 @@ AcpiUtGetRegionName ( return ("InvalidSpaceId"); } - return (ACPI_CAST_PTR (char, AcpiGbl_RegionTypes[SpaceId])); + return (AcpiGbl_RegionTypes[SpaceId]); } @@ -241,7 +241,7 @@ static const char *AcpiGbl_EventTypes[ACPI_NUM_FIXED_EVENTS] = }; -char * +const char * AcpiUtGetEventName ( UINT32 EventId) { @@ -251,7 +251,7 @@ AcpiUtGetEventName ( return ("InvalidEventID"); } - return (ACPI_CAST_PTR (char, AcpiGbl_EventTypes[EventId])); + return (AcpiGbl_EventTypes[EventId]); } @@ -273,7 +273,8 @@ AcpiUtGetEventName ( * * The type ACPI_TYPE_ANY (Untyped) is used as a "don't care" when searching; * when stored in a table it really means that we have thus far seen no - * evidence to indicate what type is actually going to be stored for this entry. + * evidence to indicate what type is actually going to be stored for this + & entry. */ static const char AcpiGbl_BadType[] = "UNDEFINED"; @@ -315,31 +316,47 @@ static const char *AcpiGbl_NsTypeNames[] = }; -char * +const char * AcpiUtGetTypeName ( ACPI_OBJECT_TYPE Type) { if (Type > ACPI_TYPE_INVALID) { - return (ACPI_CAST_PTR (char, AcpiGbl_BadType)); + return (AcpiGbl_BadType); } - return (ACPI_CAST_PTR (char, AcpiGbl_NsTypeNames[Type])); + return (AcpiGbl_NsTypeNames[Type]); } -char * +const char * AcpiUtGetObjectTypeName ( ACPI_OPERAND_OBJECT *ObjDesc) { + ACPI_FUNCTION_TRACE (UtGetObjectTypeName); + if (!ObjDesc) { - return ("[NULL Object Descriptor]"); + ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Null Object Descriptor\n")); + return_PTR ("[NULL Object Descriptor]"); } - return (AcpiUtGetTypeName (ObjDesc->Common.Type)); + /* These descriptor types share a common area */ + + if ((ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) != ACPI_DESC_TYPE_OPERAND) && + (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) != ACPI_DESC_TYPE_NAMED)) + { + ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, + "Invalid object descriptor type: 0x%2.2X [%s] (%p)\n", + ACPI_GET_DESCRIPTOR_TYPE (ObjDesc), + AcpiUtGetDescriptorName (ObjDesc), ObjDesc)); + + return_PTR ("Invalid object"); + } + + return_PTR (AcpiUtGetTypeName (ObjDesc->Common.Type)); } @@ -355,7 +372,7 @@ AcpiUtGetObjectTypeName ( * ******************************************************************************/ -char * +const char * AcpiUtGetNodeName ( void *Object) { @@ -431,7 +448,7 @@ static const char *AcpiGbl_DescTypeNames[] = }; -char * +const char * AcpiUtGetDescriptorName ( void *Object) { @@ -446,9 +463,7 @@ AcpiUtGetDescriptorName ( return ("Not a Descriptor"); } - return (ACPI_CAST_PTR (char, - AcpiGbl_DescTypeNames[ACPI_GET_DESCRIPTOR_TYPE (Object)])); - + return (AcpiGbl_DescTypeNames[ACPI_GET_DESCRIPTOR_TYPE (Object)]); } @@ -525,7 +540,7 @@ AcpiUtGetReferenceName ( /* Names for internal mutex objects, used for debug output */ -static char *AcpiGbl_MutexNames[ACPI_NUM_MUTEX] = +static const char *AcpiGbl_MutexNames[ACPI_NUM_MUTEX] = { "ACPI_MTX_Interpreter", "ACPI_MTX_Namespace", @@ -533,11 +548,9 @@ static char *AcpiGbl_MutexNames[ACPI_NUM_MUTEX] = "ACPI_MTX_Events", "ACPI_MTX_Caches", "ACPI_MTX_Memory", - "ACPI_MTX_CommandComplete", - "ACPI_MTX_CommandReady" }; -char * +const char * AcpiUtGetMutexName ( UINT32 MutexId) { diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utdelete.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utdelete.c index 8a55c8edea..4fa093c4dc 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utdelete.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utdelete.c @@ -292,6 +292,7 @@ AcpiUtDeleteInternalObj ( AcpiUtDeleteObjectDesc (Object->Method.Mutex); Object->Method.Mutex = NULL; } + if (Object->Method.Node) { Object->Method.Node = NULL; @@ -625,8 +626,8 @@ AcpiUtUpdateObjectReference ( } /* - * All sub-objects must have their reference count incremented also. - * Different object types have different subobjects. + * All sub-objects must have their reference count incremented + * also. Different object types have different subobjects. */ switch (Object->Common.Type) { @@ -686,7 +687,7 @@ AcpiUtUpdateObjectReference ( * for later processing (this eliminates recursion.) */ Status = AcpiUtCreateUpdateStateAndPush ( - NextObject, Action, &StateList); + NextObject, Action, &StateList); if (ACPI_FAILURE (Status)) { goto ErrorExit; @@ -711,7 +712,7 @@ AcpiUtUpdateObjectReference ( NextObject = Object->BankField.BankObj; Status = AcpiUtCreateUpdateStateAndPush ( - Object->BankField.RegionObj, Action, &StateList); + Object->BankField.RegionObj, Action, &StateList); if (ACPI_FAILURE (Status)) { goto ErrorExit; @@ -722,7 +723,7 @@ AcpiUtUpdateObjectReference ( NextObject = Object->IndexField.IndexObj; Status = AcpiUtCreateUpdateStateAndPush ( - Object->IndexField.DataObj, Action, &StateList); + Object->IndexField.DataObj, Action, &StateList); if (ACPI_FAILURE (Status)) { goto ErrorExit; diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/uterror.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/uterror.c index 52b9ae064f..cd8b913dc8 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/uterror.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/uterror.c @@ -316,8 +316,8 @@ AcpiUtNamespaceError ( { /* Convert path to external format */ - Status = AcpiNsExternalizeName (ACPI_UINT32_MAX, - InternalName, NULL, &Name); + Status = AcpiNsExternalizeName ( + ACPI_UINT32_MAX, InternalName, NULL, &Name); /* Print target name */ @@ -379,8 +379,8 @@ AcpiUtMethodError ( if (Path) { - Status = AcpiNsGetNode (PrefixNode, Path, ACPI_NS_NO_UPSEARCH, - &Node); + Status = AcpiNsGetNode (PrefixNode, Path, + ACPI_NS_NO_UPSEARCH, &Node); if (ACPI_FAILURE (Status)) { AcpiOsPrintf ("[Could not get node by pathname]"); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/uteval.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/uteval.c index dd754c0974..81c155c89d 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/uteval.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/uteval.c @@ -303,7 +303,7 @@ AcpiUtEvaluateNumericObject ( Status = AcpiUtEvaluateObject (DeviceNode, ObjectName, - ACPI_BTYPE_INTEGER, &ObjDesc); + ACPI_BTYPE_INTEGER, &ObjDesc); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -350,7 +350,7 @@ AcpiUtExecute_STA ( Status = AcpiUtEvaluateObject (DeviceNode, METHOD_NAME__STA, - ACPI_BTYPE_INTEGER, &ObjDesc); + ACPI_BTYPE_INTEGER, &ObjDesc); if (ACPI_FAILURE (Status)) { if (AE_NOT_FOUND == Status) @@ -423,8 +423,8 @@ AcpiUtExecutePowerMethods ( * return type is an Integer. */ Status = AcpiUtEvaluateObject (DeviceNode, - ACPI_CAST_PTR (char, MethodNames[i]), - ACPI_BTYPE_INTEGER, &ObjDesc); + ACPI_CAST_PTR (char, MethodNames[i]), + ACPI_BTYPE_INTEGER, &ObjDesc); if (ACPI_SUCCESS (Status)) { OutValues[i] = (UINT8) ObjDesc->Integer.Value; diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/uthex.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/uthex.c index c652f6a0fa..3a320034e8 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/uthex.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/uthex.c @@ -122,7 +122,7 @@ /* Hex to ASCII conversion table */ -static char AcpiGbl_HexToAscii[] = +static const char AcpiGbl_HexToAscii[] = { '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F' }; diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utids.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utids.c index 3bb12f0053..6d9a59fd5f 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utids.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utids.c @@ -155,7 +155,7 @@ AcpiUtExecute_HID ( Status = AcpiUtEvaluateObject (DeviceNode, METHOD_NAME__HID, - ACPI_BTYPE_INTEGER | ACPI_BTYPE_STRING, &ObjDesc); + ACPI_BTYPE_INTEGER | ACPI_BTYPE_STRING, &ObjDesc); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -174,7 +174,8 @@ AcpiUtExecute_HID ( /* Allocate a buffer for the HID */ - Hid = ACPI_ALLOCATE_ZEROED (sizeof (ACPI_PNP_DEVICE_ID) + (ACPI_SIZE) Length); + Hid = ACPI_ALLOCATE_ZEROED ( + sizeof (ACPI_PNP_DEVICE_ID) + (ACPI_SIZE) Length); if (!Hid) { Status = AE_NO_MEMORY; @@ -209,77 +210,6 @@ Cleanup: } -/******************************************************************************* - * - * FUNCTION: AcpiUtExecute_SUB - * - * PARAMETERS: DeviceNode - Node for the device - * ReturnId - Where the _SUB is returned - * - * RETURN: Status - * - * DESCRIPTION: Executes the _SUB control method that returns the subsystem - * ID of the device. The _SUB value is always a string containing - * either a valid PNP or ACPI ID. - * - * NOTE: Internal function, no parameter validation - * - ******************************************************************************/ - -ACPI_STATUS -AcpiUtExecute_SUB ( - ACPI_NAMESPACE_NODE *DeviceNode, - ACPI_PNP_DEVICE_ID **ReturnId) -{ - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_PNP_DEVICE_ID *Sub; - UINT32 Length; - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (UtExecute_SUB); - - - Status = AcpiUtEvaluateObject (DeviceNode, METHOD_NAME__SUB, - ACPI_BTYPE_STRING, &ObjDesc); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Get the size of the String to be returned, includes null terminator */ - - Length = ObjDesc->String.Length + 1; - - /* Allocate a buffer for the SUB */ - - Sub = ACPI_ALLOCATE_ZEROED (sizeof (ACPI_PNP_DEVICE_ID) + (ACPI_SIZE) Length); - if (!Sub) - { - Status = AE_NO_MEMORY; - goto Cleanup; - } - - /* Area for the string starts after PNP_DEVICE_ID struct */ - - Sub->String = ACPI_ADD_PTR (char, Sub, sizeof (ACPI_PNP_DEVICE_ID)); - - /* Simply copy existing string */ - - strcpy (Sub->String, ObjDesc->String.Pointer); - Sub->Length = Length; - *ReturnId = Sub; - - -Cleanup: - - /* On exit, we must delete the return object */ - - AcpiUtRemoveReference (ObjDesc); - return_ACPI_STATUS (Status); -} - - /******************************************************************************* * * FUNCTION: AcpiUtExecute_UID @@ -313,7 +243,7 @@ AcpiUtExecute_UID ( Status = AcpiUtEvaluateObject (DeviceNode, METHOD_NAME__UID, - ACPI_BTYPE_INTEGER | ACPI_BTYPE_STRING, &ObjDesc); + ACPI_BTYPE_INTEGER | ACPI_BTYPE_STRING, &ObjDesc); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -332,7 +262,8 @@ AcpiUtExecute_UID ( /* Allocate a buffer for the UID */ - Uid = ACPI_ALLOCATE_ZEROED (sizeof (ACPI_PNP_DEVICE_ID) + (ACPI_SIZE) Length); + Uid = ACPI_ALLOCATE_ZEROED ( + sizeof (ACPI_PNP_DEVICE_ID) + (ACPI_SIZE) Length); if (!Uid) { Status = AE_NO_MEMORY; @@ -413,8 +344,8 @@ AcpiUtExecute_CID ( /* Evaluate the _CID method for this device */ Status = AcpiUtEvaluateObject (DeviceNode, METHOD_NAME__CID, - ACPI_BTYPE_INTEGER | ACPI_BTYPE_STRING | ACPI_BTYPE_PACKAGE, - &ObjDesc); + ACPI_BTYPE_INTEGER | ACPI_BTYPE_STRING | ACPI_BTYPE_PACKAGE, + &ObjDesc); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -491,7 +422,8 @@ AcpiUtExecute_CID ( { /* Convert the Integer (EISAID) CID to a string */ - AcpiExEisaIdToString (NextIdString, CidObjects[i]->Integer.Value); + AcpiExEisaIdToString ( + NextIdString, CidObjects[i]->Integer.Value); Length = ACPI_EISAID_STRING_SIZE; } else /* ACPI_TYPE_STRING */ @@ -560,7 +492,7 @@ AcpiUtExecute_CLS ( Status = AcpiUtEvaluateObject (DeviceNode, METHOD_NAME__CLS, - ACPI_BTYPE_PACKAGE, &ObjDesc); + ACPI_BTYPE_PACKAGE, &ObjDesc); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -590,7 +522,8 @@ AcpiUtExecute_CLS ( /* Allocate a buffer for the CLS */ - Cls = ACPI_ALLOCATE_ZEROED (sizeof (ACPI_PNP_DEVICE_ID) + (ACPI_SIZE) Length); + Cls = ACPI_ALLOCATE_ZEROED ( + sizeof (ACPI_PNP_DEVICE_ID) + (ACPI_SIZE) Length); if (!Cls) { Status = AE_NO_MEMORY; diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utinit.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utinit.c index ed090f1314..c29f2886d2 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utinit.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utinit.c @@ -298,7 +298,6 @@ AcpiUtInitGlobals ( AcpiGbl_NextOwnerIdOffset = 0; AcpiGbl_DebuggerConfiguration = DEBUGGER_THREADING; AcpiGbl_OsiMutex = NULL; - AcpiGbl_RegMethodsExecuted = FALSE; AcpiGbl_MaxLoopIterations = 0xFFFF; /* Hardware oriented */ @@ -334,8 +333,6 @@ AcpiUtInitGlobals ( AcpiGbl_DisableMemTracking = FALSE; #endif - ACPI_DEBUGGER_EXEC (AcpiGbl_DbTerminateThreads = FALSE); - return_ACPI_STATUS (AE_OK); } @@ -384,6 +381,20 @@ AcpiUtSubsystemShutdown ( ACPI_FUNCTION_TRACE (UtSubsystemShutdown); + /* Just exit if subsystem is already shutdown */ + + if (AcpiGbl_Shutdown) + { + ACPI_ERROR ((AE_INFO, "ACPI Subsystem is already terminated")); + return_VOID; + } + + /* Subsystem appears active, go ahead and shut it down */ + + AcpiGbl_Shutdown = TRUE; + AcpiGbl_StartupFlags = 0; + ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Shutting down ACPI Subsystem\n")); + #ifndef ACPI_ASL_COMPILER /* Close the AcpiEvent Handling */ diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utmath.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utmath.c index dafba6d8e3..b8d04224e7 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utmath.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utmath.c @@ -194,9 +194,10 @@ AcpiUtShortDivide ( * and is generated by the second divide. */ ACPI_DIV_64_BY_32 (0, DividendOvl.Part.Hi, Divisor, - Quotient.Part.Hi, Remainder32); + Quotient.Part.Hi, Remainder32); + ACPI_DIV_64_BY_32 (Remainder32, DividendOvl.Part.Lo, Divisor, - Quotient.Part.Lo, Remainder32); + Quotient.Part.Lo, Remainder32); /* Return only what was requested */ @@ -272,9 +273,10 @@ AcpiUtDivide ( * and is generated by the second divide. */ ACPI_DIV_64_BY_32 (0, Dividend.Part.Hi, Divisor.Part.Lo, - Quotient.Part.Hi, Partial1); + Quotient.Part.Hi, Partial1); + ACPI_DIV_64_BY_32 (Partial1, Dividend.Part.Lo, Divisor.Part.Lo, - Quotient.Part.Lo, Remainder.Part.Lo); + Quotient.Part.Lo, Remainder.Part.Lo); } else @@ -291,25 +293,24 @@ AcpiUtDivide ( do { - ACPI_SHIFT_RIGHT_64 (NormalizedDivisor.Part.Hi, - NormalizedDivisor.Part.Lo); - ACPI_SHIFT_RIGHT_64 (NormalizedDividend.Part.Hi, - NormalizedDividend.Part.Lo); + ACPI_SHIFT_RIGHT_64 ( + NormalizedDivisor.Part.Hi, NormalizedDivisor.Part.Lo); + ACPI_SHIFT_RIGHT_64 ( + NormalizedDividend.Part.Hi, NormalizedDividend.Part.Lo); } while (NormalizedDivisor.Part.Hi != 0); /* Partial divide */ - ACPI_DIV_64_BY_32 (NormalizedDividend.Part.Hi, - NormalizedDividend.Part.Lo, - NormalizedDivisor.Part.Lo, - Quotient.Part.Lo, Partial1); + ACPI_DIV_64_BY_32 ( + NormalizedDividend.Part.Hi, NormalizedDividend.Part.Lo, + NormalizedDivisor.Part.Lo, Quotient.Part.Lo, Partial1); /* - * The quotient is always 32 bits, and simply requires adjustment. - * The 64-bit remainder must be generated. + * The quotient is always 32 bits, and simply requires + * adjustment. The 64-bit remainder must be generated. */ - Partial1 = Quotient.Part.Lo * Divisor.Part.Hi; + Partial1 = Quotient.Part.Lo * Divisor.Part.Hi; Partial2.Full = (UINT64) Quotient.Part.Lo * Divisor.Part.Lo; Partial3.Full = (UINT64) Partial2.Part.Hi + Partial1; @@ -335,7 +336,7 @@ AcpiUtDivide ( } } - Remainder.Full = Remainder.Full - Dividend.Full; + Remainder.Full = Remainder.Full - Dividend.Full; Remainder.Part.Hi = (UINT32) -((INT32) Remainder.Part.Hi); Remainder.Part.Lo = (UINT32) -((INT32) Remainder.Part.Lo); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utmisc.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utmisc.c index ecf22db7ce..4a248d76da 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utmisc.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utmisc.c @@ -144,10 +144,10 @@ AcpiUtIsPciRootBridge ( * ACPI 3.0+: check for a PCI Express root also. */ if (!(strcmp (Id, - PCI_ROOT_HID_STRING)) || + PCI_ROOT_HID_STRING)) || !(strcmp (Id, - PCI_EXPRESS_ROOT_HID_STRING))) + PCI_EXPRESS_ROOT_HID_STRING))) { return (TRUE); } @@ -257,17 +257,17 @@ AcpiUtSetIntegerWidth ( { /* 32-bit case */ - AcpiGbl_IntegerBitWidth = 32; + AcpiGbl_IntegerBitWidth = 32; AcpiGbl_IntegerNybbleWidth = 8; - AcpiGbl_IntegerByteWidth = 4; + AcpiGbl_IntegerByteWidth = 4; } else { /* 64-bit case (ACPI 2.0+) */ - AcpiGbl_IntegerBitWidth = 64; + AcpiGbl_IntegerBitWidth = 64; AcpiGbl_IntegerNybbleWidth = 16; - AcpiGbl_IntegerByteWidth = 8; + AcpiGbl_IntegerByteWidth = 8; } } @@ -358,9 +358,9 @@ AcpiUtWalkPackageTree ( { /* Get one element of the package */ - ThisIndex = State->Pkg.Index; + ThisIndex = State->Pkg.Index; ThisSourceObj = (ACPI_OPERAND_OBJECT *) - State->Pkg.SourceObject->Package.Elements[ThisIndex]; + State->Pkg.SourceObject->Package.Elements[ThisIndex]; /* * Check for: @@ -371,7 +371,8 @@ AcpiUtWalkPackageTree ( * case below. */ if ((!ThisSourceObj) || - (ACPI_GET_DESCRIPTOR_TYPE (ThisSourceObj) != ACPI_DESC_TYPE_OPERAND) || + (ACPI_GET_DESCRIPTOR_TYPE (ThisSourceObj) != + ACPI_DESC_TYPE_OPERAND) || (ThisSourceObj->Common.Type != ACPI_TYPE_PACKAGE)) { Status = WalkCallback (ACPI_COPY_TYPE_SIMPLE, ThisSourceObj, @@ -382,7 +383,8 @@ AcpiUtWalkPackageTree ( } State->Pkg.Index++; - while (State->Pkg.Index >= State->Pkg.SourceObject->Package.Count) + while (State->Pkg.Index >= + State->Pkg.SourceObject->Package.Count) { /* * We've handled all of the objects at this level, This means @@ -417,8 +419,8 @@ AcpiUtWalkPackageTree ( { /* This is a subobject of type package */ - Status = WalkCallback (ACPI_COPY_TYPE_PACKAGE, ThisSourceObj, - State, Context); + Status = WalkCallback ( + ACPI_COPY_TYPE_PACKAGE, ThisSourceObj, State, Context); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -429,8 +431,8 @@ AcpiUtWalkPackageTree ( * The callback above returned a new target package object. */ AcpiUtPushGenericState (&StateList, State); - State = AcpiUtCreatePkgState (ThisSourceObj, - State->Pkg.ThisTargetObj, 0); + State = AcpiUtCreatePkgState ( + ThisSourceObj, State->Pkg.ThisTargetObj, 0); if (!State) { /* Free any stacked Update State objects */ diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utmutex.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utmutex.c index f5b864f707..b07adea8da 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utmutex.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utmutex.c @@ -196,6 +196,24 @@ AcpiUtMutexInitialize ( /* Create the reader/writer lock for namespace access */ Status = AcpiUtCreateRwLock (&AcpiGbl_NamespaceRwLock); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } + +#ifdef ACPI_DEBUGGER + + /* Debugger Support */ + + Status = AcpiOsCreateMutex (&AcpiGbl_DbCommandReady); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } + + Status = AcpiOsCreateMutex (&AcpiGbl_DbCommandComplete); +#endif + return_ACPI_STATUS (Status); } @@ -241,6 +259,12 @@ AcpiUtMutexTerminate ( /* Delete the reader/writer lock */ AcpiUtDeleteRwLock (&AcpiGbl_NamespaceRwLock); + +#ifdef ACPI_DEBUGGER + AcpiOsDeleteMutex (AcpiGbl_DbCommandReady); + AcpiOsDeleteMutex (AcpiGbl_DbCommandComplete); +#endif + return_VOID; } @@ -377,11 +401,12 @@ AcpiUtAcquireMutex ( "Thread %u attempting to acquire Mutex [%s]\n", (UINT32) ThisThreadId, AcpiUtGetMutexName (MutexId))); - Status = AcpiOsAcquireMutex (AcpiGbl_MutexInfo[MutexId].Mutex, - ACPI_WAIT_FOREVER); + Status = AcpiOsAcquireMutex ( + AcpiGbl_MutexInfo[MutexId].Mutex, ACPI_WAIT_FOREVER); if (ACPI_SUCCESS (Status)) { - ACPI_DEBUG_PRINT ((ACPI_DB_MUTEX, "Thread %u acquired Mutex [%s]\n", + ACPI_DEBUG_PRINT ((ACPI_DB_MUTEX, + "Thread %u acquired Mutex [%s]\n", (UINT32) ThisThreadId, AcpiUtGetMutexName (MutexId))); AcpiGbl_MutexInfo[MutexId].UseCount++; diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utnonansi.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utnonansi.c index 01a4361af2..b69c494d6c 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utnonansi.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utnonansi.c @@ -404,8 +404,8 @@ AcpiUtStrtoul64 ( /* Divide the digit into the correct position */ - (void) AcpiUtShortDivide ((Dividend - (UINT64) ThisDigit), - Base, &Quotient, NULL); + (void) AcpiUtShortDivide ( + (Dividend - (UINT64) ThisDigit), Base, &Quotient, NULL); if (ReturnValue > Quotient) { diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utobject.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utobject.c index fb4efaf360..8116b35273 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utobject.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utobject.c @@ -179,7 +179,8 @@ AcpiUtCreateInternalObjectDbg ( /* Allocate the raw object descriptor */ - Object = AcpiUtAllocateObjectDescDbg (ModuleName, LineNumber, ComponentId); + Object = AcpiUtAllocateObjectDescDbg ( + ModuleName, LineNumber, ComponentId); if (!Object) { return_PTR (NULL); @@ -193,8 +194,8 @@ AcpiUtCreateInternalObjectDbg ( /* These types require a secondary object */ - SecondObject = AcpiUtAllocateObjectDescDbg (ModuleName, - LineNumber, ComponentId); + SecondObject = AcpiUtAllocateObjectDescDbg ( + ModuleName, LineNumber, ComponentId); if (!SecondObject) { AcpiUtDeleteObjectDesc (Object); @@ -265,7 +266,7 @@ AcpiUtCreatePackageObject ( * terminated. */ PackageElements = ACPI_ALLOCATE_ZEROED ( - ((ACPI_SIZE) Count + 1) * sizeof (void *)); + ((ACPI_SIZE) Count + 1) * sizeof (void *)); if (!PackageElements) { ACPI_FREE (PackageDesc); @@ -355,6 +356,7 @@ AcpiUtCreateBufferObject ( { ACPI_ERROR ((AE_INFO, "Could not allocate size %u", (UINT32) BufferSize)); + AcpiUtRemoveReference (BufferDesc); return_PTR (NULL); } @@ -414,6 +416,7 @@ AcpiUtCreateStringObject ( { ACPI_ERROR ((AE_INFO, "Could not allocate size %u", (UINT32) StringSize)); + AcpiUtRemoveReference (StringDesc); return_PTR (NULL); } @@ -470,8 +473,8 @@ AcpiUtValidInternalObject ( default: ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, - "%p is not an ACPI operand obj [%s]\n", - Object, AcpiUtGetDescriptorName (Object))); + "%p is not an ACPI operand obj [%s]\n", + Object, AcpiUtGetDescriptorName (Object))); break; } @@ -520,7 +523,7 @@ AcpiUtAllocateObjectDescDbg ( ACPI_SET_DESCRIPTOR_TYPE (Object, ACPI_DESC_TYPE_OPERAND); ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, "%p Size %X\n", - Object, (UINT32) sizeof (ACPI_OPERAND_OBJECT))); + Object, (UINT32) sizeof (ACPI_OPERAND_OBJECT))); return_PTR (Object); } @@ -783,12 +786,12 @@ AcpiUtGetPackageObjectSize ( ACPI_FUNCTION_TRACE_PTR (UtGetPackageObjectSize, InternalObject); - Info.Length = 0; + Info.Length = 0; Info.ObjectSpace = 0; Info.NumPackages = 1; - Status = AcpiUtWalkPackageTree (InternalObject, NULL, - AcpiUtGetElementLength, &Info); + Status = AcpiUtWalkPackageTree ( + InternalObject, NULL, AcpiUtGetElementLength, &Info); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -799,8 +802,8 @@ AcpiUtGetPackageObjectSize ( * just add the length of the package objects themselves. * Round up to the next machine word. */ - Info.Length += ACPI_ROUND_UP_TO_NATIVE_WORD (sizeof (ACPI_OBJECT)) * - (ACPI_SIZE) Info.NumPackages; + Info.Length += ACPI_ROUND_UP_TO_NATIVE_WORD ( + sizeof (ACPI_OBJECT)) * (ACPI_SIZE) Info.NumPackages; /* Return the total package length */ @@ -834,7 +837,8 @@ AcpiUtGetObjectSize ( ACPI_FUNCTION_ENTRY (); - if ((ACPI_GET_DESCRIPTOR_TYPE (InternalObject) == ACPI_DESC_TYPE_OPERAND) && + if ((ACPI_GET_DESCRIPTOR_TYPE (InternalObject) == + ACPI_DESC_TYPE_OPERAND) && (InternalObject->Common.Type == ACPI_TYPE_PACKAGE)) { Status = AcpiUtGetPackageObjectSize (InternalObject, ObjLength); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utosi.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utosi.c index b4d8a71524..930c45dbb1 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utosi.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utosi.c @@ -228,7 +228,9 @@ AcpiUtInitializeInterfaces ( /* Link the static list of supported interfaces */ - for (i = 0; i < (ACPI_ARRAY_LENGTH (AcpiDefaultSupportedInterfaces) - 1); i++) + for (i = 0; + i < (ACPI_ARRAY_LENGTH (AcpiDefaultSupportedInterfaces) - 1); + i++) { AcpiDefaultSupportedInterfaces[i].Next = &AcpiDefaultSupportedInterfaces[(ACPI_SIZE) i + 1]; @@ -372,8 +374,10 @@ AcpiUtRemoveInterface ( { if (!strcmp (InterfaceName, NextInterface->Name)) { - /* Found: name is in either the static list or was added at runtime */ - + /* + * Found: name is in either the static list + * or was added at runtime + */ if (NextInterface->Flags & ACPI_OSI_DYNAMIC) { /* Interface was added dynamically, remove and free it */ @@ -393,8 +397,8 @@ AcpiUtRemoveInterface ( else { /* - * Interface is in static list. If marked invalid, then it - * does not actually exist. Else, mark it invalid. + * Interface is in static list. If marked invalid, then + * it does not actually exist. Else, mark it invalid. */ if (NextInterface->Flags & ACPI_OSI_INVALID) { diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utownerid.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utownerid.c index bf391e11f1..25773a89f8 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utownerid.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utownerid.c @@ -153,7 +153,8 @@ AcpiUtAllocateOwnerId ( if (*OwnerId) { - ACPI_ERROR ((AE_INFO, "Owner ID [0x%2.2X] already exists", *OwnerId)); + ACPI_ERROR ((AE_INFO, + "Owner ID [0x%2.2X] already exists", *OwnerId)); return_ACPI_STATUS (AE_ALREADY_EXISTS); } @@ -167,8 +168,8 @@ AcpiUtAllocateOwnerId ( /* * Find a free owner ID, cycle through all possible IDs on repeated - * allocations. (ACPI_NUM_OWNERID_MASKS + 1) because first index may have - * to be scanned twice. + * allocations. (ACPI_NUM_OWNERID_MASKS + 1) because first index + * may have to be scanned twice. */ for (i = 0, j = AcpiGbl_LastOwnerIdIndex; i < (ACPI_NUM_OWNERID_MASKS + 1); @@ -224,8 +225,8 @@ AcpiUtAllocateOwnerId ( * they are released when a table is unloaded or a method completes * execution. * - * If this error happens, there may be very deep nesting of invoked control - * methods, or there may be a bug where the IDs are not released. + * If this error happens, there may be very deep nesting of invoked + * control methods, or there may be a bug where the IDs are not released. */ Status = AE_OWNER_ID_LIMIT; ACPI_ERROR ((AE_INFO, diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utpredef.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utpredef.c index 11471c7738..e72fd88dcf 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utpredef.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utpredef.c @@ -326,8 +326,10 @@ AcpiUtMatchResourceName ( const ACPI_PREDEFINED_INFO *ThisName; - /* Quick check for a predefined name, first character must be underscore */ - + /* + * Quick check for a predefined name, first character must + * be underscore + */ if (Name[0] != '_') { return (NULL); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utprint.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utprint.c index b3e8fd24a4..02602ddde4 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utprint.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utprint.c @@ -462,8 +462,8 @@ AcpiUtFormatNumber ( String = AcpiUtBoundStringOutput (String, End, '0'); if (Base == 16) { - String = AcpiUtBoundStringOutput (String, End, - Upper ? 'X' : 'x'); + String = AcpiUtBoundStringOutput ( + String, End, Upper ? 'X' : 'x'); } } if (!(Type & ACPI_FORMAT_LEFT)) @@ -572,6 +572,7 @@ AcpiUtVsnprintf ( { break; } + } while (1); /* Process width */ @@ -609,6 +610,7 @@ AcpiUtVsnprintf ( ++Format; Precision = va_arg (Args, int); } + if (Precision < 0) { Precision = 0; @@ -671,11 +673,13 @@ AcpiUtVsnprintf ( Pos = AcpiUtBoundStringOutput (Pos, End, ' '); } } + for (i = 0; i < Length; ++i) { Pos = AcpiUtBoundStringOutput (Pos, End, *s); ++s; } + while (Length < Width--) { Pos = AcpiUtBoundStringOutput (Pos, End, ' '); @@ -714,8 +718,8 @@ AcpiUtVsnprintf ( } p = va_arg (Args, void *); - Pos = AcpiUtFormatNumber (Pos, End, - ACPI_TO_INTEGER (p), 16, Width, Precision, Type); + Pos = AcpiUtFormatNumber ( + Pos, End, ACPI_TO_INTEGER (p), 16, Width, Precision, Type); continue; default: @@ -766,7 +770,7 @@ AcpiUtVsnprintf ( } Pos = AcpiUtFormatNumber (Pos, End, Number, Base, - Width, Precision, Type); + Width, Precision, Type); } if (Size > 0) @@ -845,7 +849,7 @@ AcpiUtFileVprintf ( Flags = AcpiOsAcquireLock (AcpiGbl_PrintLock); Length = AcpiUtVsnprintf (AcpiGbl_PrintBuffer, - sizeof (AcpiGbl_PrintBuffer), Format, Args); + sizeof (AcpiGbl_PrintBuffer), Format, Args); (void) AcpiOsWriteFile (File, AcpiGbl_PrintBuffer, Length, 1); AcpiOsReleaseLock (AcpiGbl_PrintLock, Flags); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utresrc.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utresrc.c index 44a4c66338..1657972716 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utresrc.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utresrc.c @@ -561,8 +561,8 @@ AcpiUtWalkAmlResources ( if (ACPI_FAILURE (Status)) { /* - * Exit on failure. Cannot continue because the descriptor length - * may be bogus also. + * Exit on failure. Cannot continue because the descriptor + * length may be bogus also. */ return_ACPI_STATUS (Status); } @@ -575,7 +575,8 @@ AcpiUtWalkAmlResources ( if (UserFunction) { - Status = UserFunction (Aml, Length, Offset, ResourceIndex, Context); + Status = UserFunction ( + Aml, Length, Offset, ResourceIndex, Context); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -697,8 +698,8 @@ AcpiUtValidateResource ( } /* - * Check validity of the resource type, via AcpiGbl_ResourceTypes. Zero - * indicates an invalid resource. + * Check validity of the resource type, via AcpiGbl_ResourceTypes. + * Zero indicates an invalid resource. */ if (!AcpiGbl_ResourceTypes[ResourceIndex]) { @@ -885,7 +886,7 @@ AcpiUtGetResourceLength ( /* Small Resource type -- bits 2:0 of byte 0 contain the length */ ResourceLength = (UINT16) (ACPI_GET8 (Aml) & - ACPI_RESOURCE_NAME_SMALL_LENGTH_MASK); + ACPI_RESOURCE_NAME_SMALL_LENGTH_MASK); } return (ResourceLength); @@ -950,7 +951,7 @@ AcpiUtGetDescriptorLength ( * the header length (depends on if this is a small or large resource) */ return (AcpiUtGetResourceLength (Aml) + - AcpiUtGetResourceHeaderLength (Aml)); + AcpiUtGetResourceHeaderLength (Aml)); } @@ -990,7 +991,7 @@ AcpiUtGetResourceEndTag ( /* Validate the template and get a pointer to the EndTag */ Status = AcpiUtWalkAmlResources (NULL, ObjDesc->Buffer.Pointer, - ObjDesc->Buffer.Length, NULL, (void **) EndTag); + ObjDesc->Buffer.Length, NULL, (void **) EndTag); return_ACPI_STATUS (Status); } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utstate.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utstate.c index 1e6418662d..6e5d335450 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utstate.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utstate.c @@ -350,6 +350,7 @@ AcpiUtCreatePkgState ( State->Pkg.DestObject = ExternalObject; State->Pkg.Index= Index; State->Pkg.NumPackages = 1; + return (State); } @@ -389,6 +390,7 @@ AcpiUtCreateControlState ( State->Common.DescriptorType = ACPI_DESC_TYPE_STATE_CONTROL; State->Common.State = ACPI_CONTROL_CONDITIONAL_EXECUTING; + return (State); } @@ -419,5 +421,6 @@ AcpiUtDeleteGenericState ( { (void) AcpiOsReleaseObject (AcpiGbl_StateCache, State); } + return; } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utstring.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utstring.c index 3660cbb215..05178cff54 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utstring.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utstring.c @@ -219,6 +219,7 @@ AcpiUtPrintString ( break; } } + AcpiOsPrintf ("\""); if (i == MaxLength && String[i]) @@ -342,6 +343,15 @@ AcpiUtRepairName ( ACPI_FUNCTION_NAME (UtRepairName); + /* + * Special case for the root node. This can happen if we get an + * error during the execution of module-level code. + */ + if (ACPI_COMPARE_NAME (Name, "\\___")) + { + return; + } + ACPI_MOVE_NAME (&OriginalName, Name); /* Check each character in the name */ diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/uttrack.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/uttrack.c index f7f0bce901..8906866b9b 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/uttrack.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/uttrack.c @@ -187,7 +187,7 @@ AcpiUtCreateList ( memset (Cache, 0, sizeof (ACPI_MEMORY_LIST)); - Cache->ListName = ListName; + Cache->ListName = ListName; Cache->ObjectSize = ObjectSize; *ReturnCache = Cache; @@ -241,8 +241,8 @@ AcpiUtAllocateAndTrack ( return (NULL); } - Status = AcpiUtTrackAllocation (Allocation, Size, - ACPI_MEM_MALLOC, Component, Module, Line); + Status = AcpiUtTrackAllocation ( + Allocation, Size, ACPI_MEM_MALLOC, Component, Module, Line); if (ACPI_FAILURE (Status)) { AcpiOsFree (Allocation); @@ -252,9 +252,12 @@ AcpiUtAllocateAndTrack ( AcpiGbl_GlobalList->TotalAllocated++; AcpiGbl_GlobalList->TotalSize += (UINT32) Size; AcpiGbl_GlobalList->CurrentTotalSize += (UINT32) Size; - if (AcpiGbl_GlobalList->CurrentTotalSize > AcpiGbl_GlobalList->MaxOccupied) + + if (AcpiGbl_GlobalList->CurrentTotalSize > + AcpiGbl_GlobalList->MaxOccupied) { - AcpiGbl_GlobalList->MaxOccupied = AcpiGbl_GlobalList->CurrentTotalSize; + AcpiGbl_GlobalList->MaxOccupied = + AcpiGbl_GlobalList->CurrentTotalSize; } return ((void *) &Allocation->UserSpace); @@ -296,7 +299,8 @@ AcpiUtAllocateZeroedAndTrack ( Size = 1; } - Allocation = AcpiOsAllocateZeroed (Size + sizeof (ACPI_DEBUG_MEM_HEADER)); + Allocation = AcpiOsAllocateZeroed ( + Size + sizeof (ACPI_DEBUG_MEM_HEADER)); if (!Allocation) { /* Report allocation error */ @@ -307,7 +311,7 @@ AcpiUtAllocateZeroedAndTrack ( } Status = AcpiUtTrackAllocation (Allocation, Size, - ACPI_MEM_CALLOC, Component, Module, Line); + ACPI_MEM_CALLOC, Component, Module, Line); if (ACPI_FAILURE (Status)) { AcpiOsFree (Allocation); @@ -317,9 +321,12 @@ AcpiUtAllocateZeroedAndTrack ( AcpiGbl_GlobalList->TotalAllocated++; AcpiGbl_GlobalList->TotalSize += (UINT32) Size; AcpiGbl_GlobalList->CurrentTotalSize += (UINT32) Size; - if (AcpiGbl_GlobalList->CurrentTotalSize > AcpiGbl_GlobalList->MaxOccupied) + + if (AcpiGbl_GlobalList->CurrentTotalSize > + AcpiGbl_GlobalList->MaxOccupied) { - AcpiGbl_GlobalList->MaxOccupied = AcpiGbl_GlobalList->CurrentTotalSize; + AcpiGbl_GlobalList->MaxOccupied = + AcpiGbl_GlobalList->CurrentTotalSize; } return ((void *) &Allocation->UserSpace); @@ -364,13 +371,12 @@ AcpiUtFreeAndTrack ( } DebugBlock = ACPI_CAST_PTR (ACPI_DEBUG_MEM_BLOCK, - (((char *) Allocation) - sizeof (ACPI_DEBUG_MEM_HEADER))); + (((char *) Allocation) - sizeof (ACPI_DEBUG_MEM_HEADER))); AcpiGbl_GlobalList->TotalFreed++; AcpiGbl_GlobalList->CurrentTotalSize -= DebugBlock->Size; - Status = AcpiUtRemoveAllocation (DebugBlock, - Component, Module, Line); + Status = AcpiUtRemoveAllocation (DebugBlock, Component, Module, Line); if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, "Could not free memory")); @@ -512,10 +518,10 @@ AcpiUtTrackAllocation ( /* Fill in the instance data */ - Allocation->Size = (UINT32) Size; + Allocation->Size = (UINT32) Size; Allocation->AllocType = AllocType; Allocation->Component = Component; - Allocation->Line = Line; + Allocation->Line = Line; strncpy (Allocation->Module, Module, ACPI_MAX_MODULE_NAME); Allocation->Module[ACPI_MAX_MODULE_NAME-1] = 0; @@ -526,7 +532,8 @@ AcpiUtTrackAllocation ( if (MemList->ListHead) { - ((ACPI_DEBUG_MEM_BLOCK *)(MemList->ListHead))->Previous = Allocation; + ((ACPI_DEBUG_MEM_BLOCK *)(MemList->ListHead))->Previous = + Allocation; } Allocation->Next = MemList->ListHead; @@ -659,37 +666,37 @@ AcpiUtDumpAllocationInfo ( /* ACPI_DEBUG_PRINT (TRACE_ALLOCATIONS | TRACE_TABLES, - ("%30s: %4d (%3d Kb)\n", "Current allocations", - MemList->CurrentCount, - ROUND_UP_TO_1K (MemList->CurrentSize))); + ("%30s: %4d (%3d Kb)\n", "Current allocations", + MemList->CurrentCount, + ROUND_UP_TO_1K (MemList->CurrentSize))); ACPI_DEBUG_PRINT (TRACE_ALLOCATIONS | TRACE_TABLES, - ("%30s: %4d (%3d Kb)\n", "Max concurrent allocations", - MemList->MaxConcurrentCount, - ROUND_UP_TO_1K (MemList->MaxConcurrentSize))); + ("%30s: %4d (%3d Kb)\n", "Max concurrent allocations", + MemList->MaxConcurrentCount, + ROUND_UP_TO_1K (MemList->MaxConcurrentSize))); ACPI_DEBUG_PRINT (TRACE_ALLOCATIONS | TRACE_TABLES, - ("%30s: %4d (%3d Kb)\n", "Total (all) internal objects", - RunningObjectCount, - ROUND_UP_TO_1K (RunningObjectSize))); + ("%30s: %4d (%3d Kb)\n", "Total (all) internal objects", + RunningObjectCount, + ROUND_UP_TO_1K (RunningObjectSize))); ACPI_DEBUG_PRINT (TRACE_ALLOCATIONS | TRACE_TABLES, - ("%30s: %4d (%3d Kb)\n", "Total (all) allocations", - RunningAllocCount, - ROUND_UP_TO_1K (RunningAllocSize))); + ("%30s: %4d (%3d Kb)\n", "Total (all) allocations", + RunningAllocCount, + ROUND_UP_TO_1K (RunningAllocSize))); ACPI_DEBUG_PRINT (TRACE_ALLOCATIONS | TRACE_TABLES, - ("%30s: %4d (%3d Kb)\n", "Current Nodes", - AcpiGbl_CurrentNodeCount, - ROUND_UP_TO_1K (AcpiGbl_CurrentNodeSize))); + ("%30s: %4d (%3d Kb)\n", "Current Nodes", + AcpiGbl_CurrentNodeCount, + ROUND_UP_TO_1K (AcpiGbl_CurrentNodeSize))); ACPI_DEBUG_PRINT (TRACE_ALLOCATIONS | TRACE_TABLES, - ("%30s: %4d (%3d Kb)\n", "Max Nodes", - AcpiGbl_MaxConcurrentNodeCount, - ROUND_UP_TO_1K ((AcpiGbl_MaxConcurrentNodeCount * - sizeof (ACPI_NAMESPACE_NODE))))); + ("%30s: %4d (%3d Kb)\n", "Max Nodes", + AcpiGbl_MaxConcurrentNodeCount, + ROUND_UP_TO_1K ((AcpiGbl_MaxConcurrentNodeCount * + sizeof (ACPI_NAMESPACE_NODE))))); */ return_VOID; } @@ -741,7 +748,8 @@ AcpiUtDumpAllocations ( if ((Element->Component & Component) && ((Module == NULL) || (0 == strcmp (Module, Element->Module)))) { - Descriptor = ACPI_CAST_PTR (ACPI_DESCRIPTOR, &Element->UserSpace); + Descriptor = ACPI_CAST_PTR ( + ACPI_DESCRIPTOR, &Element->UserSpace); if (Element->Size < sizeof (ACPI_COMMON_DESCRIPTOR)) { @@ -754,7 +762,8 @@ AcpiUtDumpAllocations ( { /* Ignore allocated objects that are in a cache */ - if (ACPI_GET_DESCRIPTOR_TYPE (Descriptor) != ACPI_DESC_TYPE_CACHED) + if (ACPI_GET_DESCRIPTOR_TYPE (Descriptor) != + ACPI_DESC_TYPE_CACHED) { AcpiOsPrintf ("%p Length 0x%04X %9.9s-%u [%s] ", Descriptor, Element->Size, Element->Module, diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utuuid.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utuuid.c index 71fa0bc874..7a6f698029 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utuuid.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utuuid.c @@ -165,11 +165,11 @@ AcpiUtConvertStringToUuid ( for (i = 0; i < UUID_BUFFER_LENGTH; i++) { - UuidBuffer[i] = - (AcpiUtAsciiCharToHex (InString[AcpiGbl_MapToUuidOffset[i]]) << 4); + UuidBuffer[i] = (AcpiUtAsciiCharToHex ( + InString[AcpiGbl_MapToUuidOffset[i]]) << 4); - UuidBuffer[i] |= - AcpiUtAsciiCharToHex (InString[AcpiGbl_MapToUuidOffset[i] + 1]); + UuidBuffer[i] |= AcpiUtAsciiCharToHex ( + InString[AcpiGbl_MapToUuidOffset[i] + 1]); } } #endif diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utxface.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utxface.c index a34970e9b6..35fb8a0243 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utxface.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utxface.c @@ -145,24 +145,6 @@ AcpiTerminate ( ACPI_FUNCTION_TRACE (AcpiTerminate); - /* Just exit if subsystem is already shutdown */ - - if (AcpiGbl_Shutdown) - { - ACPI_ERROR ((AE_INFO, "ACPI Subsystem is already terminated")); - return_ACPI_STATUS (AE_OK); - } - - /* Subsystem appears active, go ahead and shut it down */ - - AcpiGbl_Shutdown = TRUE; - AcpiGbl_StartupFlags = 0; - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Shutting down ACPI Subsystem\n")); - - /* Terminate the AML Debugger if present */ - - ACPI_DEBUGGER_EXEC (AcpiGbl_DbTerminateThreads = TRUE); - /* Shutdown and free all resources */ AcpiUtSubsystemShutdown (); @@ -262,7 +244,6 @@ AcpiGetSystemInfo ( * Populate the return buffer */ InfoPtr = (ACPI_SYSTEM_INFO *) OutBuffer->Pointer; - InfoPtr->AcpiCaVersion = ACPI_CA_VERSION; /* System flags (ACPI capabilities) */ @@ -330,11 +311,9 @@ AcpiGetStatistics ( memcpy (Stats->FixedEventCount, AcpiFixedEventCount, sizeof (AcpiFixedEventCount)); - /* Other counters */ Stats->MethodCount = AcpiMethodCount; - return_ACPI_STATUS (AE_OK); } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utxferror.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utxferror.c index b62e5df77f..bbc0cf6ff7 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utxferror.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utxferror.c @@ -205,8 +205,10 @@ AcpiException ( } else { - AcpiOsPrintf (ACPI_MSG_EXCEPTION "%s, ", AcpiFormatException (Status)); + AcpiOsPrintf (ACPI_MSG_EXCEPTION "%s, ", + AcpiFormatException (Status)); } + va_start (ArgList, Format); AcpiOsVprintf (Format, ArgList); ACPI_MSG_SUFFIX; diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utxfinit.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utxfinit.c index 4703dc18ce..841aaa4345 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utxfinit.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utxfinit.c @@ -204,6 +204,25 @@ AcpiInitializeSubsystem ( return_ACPI_STATUS (Status); } + if (!AcpiGbl_OverrideDefaultRegionHandlers) + { + /* + * Install the default operation region handlers. These are the + * handlers that are defined by the ACPI specification to be + * "always accessible" -- namely, SystemMemory, SystemIO, and + * PCI_Config. This also means that no _REG methods need to be + * run for these address spaces. We need to have these handlers + * installed before any AML code can be executed, especially any + * module-level code (11/2015). + */ + Status = AcpiEvInstallRegionHandlers (); + if (ACPI_FAILURE (Status)) + { + ACPI_EXCEPTION ((AE_INFO, Status, "During Region initialization")); + return_ACPI_STATUS (Status); + } + } + return_ACPI_STATUS (AE_OK); } @@ -233,6 +252,33 @@ AcpiEnableSubsystem ( ACPI_FUNCTION_TRACE (AcpiEnableSubsystem); + /* + * The early initialization phase is complete. The namespace is loaded, + * and we can now support address spaces other than Memory, I/O, and + * PCI_Config. + */ + AcpiGbl_EarlyInitialization = FALSE; + + if (AcpiGbl_OverrideDefaultRegionHandlers) + { + /* + * Install the default operation region handlers. These are the + * handlers that are defined by the ACPI specification to be + * "always accessible" -- namely, SystemMemory, SystemIO, and + * PCI_Config. This also means that no _REG methods need to be + * run for these address spaces. We need to have these handlers + * installed before any AML code can be executed, especially any + * module-level code (11/2015). + */ + Status = AcpiEvInstallRegionHandlers (); + if (ACPI_FAILURE (Status)) + { + ACPI_EXCEPTION ((AE_INFO, Status, "During Region initialization")); + return_ACPI_STATUS (Status); + } + } + + #if (!ACPI_REDUCED_HARDWARE) /* Enable ACPI mode */ @@ -265,26 +311,6 @@ AcpiEnableSubsystem ( } } -#endif /* !ACPI_REDUCED_HARDWARE */ - - /* - * Install the default OpRegion handlers. These are installed unless - * other handlers have already been installed via the - * InstallAddressSpaceHandler interface. - */ - if (!(Flags & ACPI_NO_ADDRESS_SPACE_INIT)) - { - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, - "[Init] Installing default address space handlers\n")); - - Status = AcpiEvInstallRegionHandlers (); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - } - -#if (!ACPI_REDUCED_HARDWARE) /* * Initialize ACPI Event handling (Fixed and General Purpose) * @@ -392,8 +418,15 @@ AcpiInitializeObjects ( * outside of any control method is wrapped with a temporary control * method object and placed on a global list. The methods on this list * are executed below. + * + * This case executes the module-level code for all tables only after + * all of the tables have been loaded. It is a legacy option and is + * not compatible with other ACPI implementations. See AcpiNsLoadTable. */ - AcpiNsExecModuleCodeList (); + if (AcpiGbl_GroupModuleLevelCode) + { + AcpiNsExecModuleCodeList (); + } /* * Initialize the objects that remain uninitialized. This runs the diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utxfmutex.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utxfmutex.c index 2b6342d5fb..53cc4cce94 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utxfmutex.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utxfmutex.c @@ -170,8 +170,8 @@ AcpiUtGetMutexObject ( MutexNode = Handle; if (Pathname != NULL) { - Status = AcpiGetHandle (Handle, Pathname, - ACPI_CAST_PTR (ACPI_HANDLE, &MutexNode)); + Status = AcpiGetHandle ( + Handle, Pathname, ACPI_CAST_PTR (ACPI_HANDLE, &MutexNode)); if (ACPI_FAILURE (Status)) { return (Status); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acapps.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acapps.h index 11536425dd..ed206b2f10 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acapps.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acapps.h @@ -116,6 +116,7 @@ #ifndef _ACAPPS #define _ACAPPS +#include #ifdef _MSC_VER /* disable some level-4 warnings */ #pragma warning(disable:4100) /* warning C4100: unreferenced formal parameter */ @@ -162,11 +163,49 @@ AcpiOsPrintf (Description); #define ACPI_OPTION(Name, Description) \ - AcpiOsPrintf (" %-18s%s\n", Name, Description); + AcpiOsPrintf (" %-20s%s\n", Name, Description); +/* Check for unexpected exceptions */ + +#define ACPI_CHECK_STATUS(Name, Status, Expected) \ + if (Status != Expected) \ + { \ + AcpiOsPrintf ("Unexpected %s from %s (%s-%d)\n", \ + AcpiFormatException (Status), #Name, _AcpiModuleName, __LINE__); \ + } + +/* Check for unexpected non-AE_OK errors */ + + +#define ACPI_CHECK_OK(Name, Status) ACPI_CHECK_STATUS (Name, Status, AE_OK); + #define FILE_SUFFIX_DISASSEMBLY "dsl" -#define ACPI_TABLE_FILE_SUFFIX ".dat" +#define FILE_SUFFIX_BINARY_TABLE ".dat" /* Needs the dot */ + + +/* acfileio */ + +ACPI_STATUS +AcGetAllTablesFromFile ( + char *Filename, + UINT8 GetOnlyAmlTables, + ACPI_NEW_TABLE_DESC **ReturnListHead); + +BOOLEAN +AcIsFileBinary ( + FILE *File); + +ACPI_STATUS +AcValidateTableHeader ( + FILE *File, + long TableOffset); + + +/* Values for GetOnlyAmlTables */ + +#define ACPI_GET_ONLY_AML_TABLES TRUE +#define ACPI_GET_ALL_TABLES FALSE /* @@ -197,51 +236,6 @@ CmGetFileSize ( ACPI_FILE File); -#ifndef ACPI_DUMP_APP -/* - * adisasm - */ -ACPI_STATUS -AdAmlDisassemble ( - BOOLEAN OutToFile, - char *Filename, - char *Prefix, - char **OutFilename); - -void -AdPrintStatistics ( - void); - -ACPI_STATUS -AdFindDsdt( - UINT8 **DsdtPtr, - UINT32 *DsdtLength); - -void -AdDumpTables ( - void); - -ACPI_STATUS -AdGetLocalTables ( - void); - -ACPI_STATUS -AdParseTable ( - ACPI_TABLE_HEADER *Table, - ACPI_OWNER_ID *OwnerId, - BOOLEAN LoadTable, - BOOLEAN External); - -ACPI_STATUS -AdDisplayTables ( - char *Filename, - ACPI_TABLE_HEADER *Table); - -ACPI_STATUS -AdDisplayStatistics ( - void); - - /* * adwalk */ @@ -300,6 +294,5 @@ AdWriteTable ( UINT32 Length, char *TableName, char *OemTableId); -#endif #endif /* _ACAPPS */ diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acdebug.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acdebug.h index 3b245b0764..d208b2e256 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acdebug.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acdebug.h @@ -163,11 +163,17 @@ typedef struct acpi_db_execute_walk /* * dbxface - external debugger interfaces */ +ACPI_DBR_DEPENDENT_RETURN_OK ( ACPI_STATUS AcpiDbSingleStep ( ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT *Op, - UINT32 OpType); + UINT32 OpType)) + +ACPI_DBR_DEPENDENT_RETURN_VOID ( +void +AcpiDbSignalBreakPoint ( + ACPI_WALK_STATE *WalkState)) /* @@ -362,10 +368,11 @@ AcpiDbDecodeAndDisplayObject ( char *Target, char *OutputType); +ACPI_DBR_DEPENDENT_RETURN_VOID ( void AcpiDbDisplayResultObject ( ACPI_OPERAND_OBJECT *ObjDesc, - ACPI_WALK_STATE *WalkState); + ACPI_WALK_STATE *WalkState)) ACPI_STATUS AcpiDbDisplayAllMethods ( @@ -391,10 +398,11 @@ void AcpiDbDisplayObjectType ( char *ObjectArg); +ACPI_DBR_DEPENDENT_RETURN_VOID ( void AcpiDbDisplayArgumentObject ( ACPI_OPERAND_OBJECT *ObjDesc, - ACPI_WALK_STATE *WalkState); + ACPI_WALK_STATE *WalkState)) /* @@ -446,10 +454,8 @@ AcpiDbLoadAcpiTable ( char *Filename); ACPI_STATUS -AcpiDbGetTableFromFile ( - char *Filename, - ACPI_TABLE_HEADER **Table, - BOOLEAN MustBeAmlTable); +AcpiDbLoadTables ( + ACPI_NEW_TABLE_DESC *ListHead); /* diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acdisasm.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acdisasm.h index d448b9f7da..2ff2dab5de 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acdisasm.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acdisasm.h @@ -1119,7 +1119,7 @@ AcpiDmCloseOperator ( /* - * acdisasm + * dmtables */ void AdDisassemblerHeader ( @@ -1129,4 +1129,35 @@ AdDisassemblerHeader ( #define ACPI_IS_AML_TABLE 0 #define ACPI_IS_DATA_TABLE 1 + +/* + * adisasm + */ +ACPI_STATUS +AdAmlDisassemble ( + BOOLEAN OutToFile, + char *Filename, + char *Prefix, + char **OutFilename); + +ACPI_STATUS +AdGetLocalTables ( + void); + +ACPI_STATUS +AdParseTable ( + ACPI_TABLE_HEADER *Table, + ACPI_OWNER_ID *OwnerId, + BOOLEAN LoadTable, + BOOLEAN External); + +ACPI_STATUS +AdDisplayTables ( + char *Filename, + ACPI_TABLE_HEADER *Table); + +ACPI_STATUS +AdDisplayStatistics ( + void); + #endif /* __ACDISASM_H__ */ diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acevents.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acevents.h index 467e14f997..e1b1d9bf8b 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acevents.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acevents.h @@ -294,6 +294,11 @@ AcpiEvDeleteGpeHandlers ( /* * evhandler - Address space handling */ +ACPI_OPERAND_OBJECT * +AcpiEvFindRegionHandler ( + ACPI_ADR_SPACE_TYPE SpaceId, + ACPI_OPERAND_OBJECT *HandlerObj); + BOOLEAN AcpiEvHasDefaultHandler ( ACPI_NAMESPACE_NODE *Node, @@ -336,17 +341,22 @@ AcpiEvAttachRegion ( void AcpiEvDetachRegion ( - ACPI_OPERAND_OBJECT *RegionObj, + ACPI_OPERAND_OBJECT *RegionObj, BOOLEAN AcpiNsIsLocked); -ACPI_STATUS +void +AcpiEvAssociateRegMethod ( + ACPI_OPERAND_OBJECT *RegionObj); + +void AcpiEvExecuteRegMethods ( ACPI_NAMESPACE_NODE *Node, - ACPI_ADR_SPACE_TYPE SpaceId); + ACPI_ADR_SPACE_TYPE SpaceId, + UINT32 Function); ACPI_STATUS AcpiEvExecuteRegMethod ( - ACPI_OPERAND_OBJECT *RegionObj, + ACPI_OPERAND_OBJECT *RegionObj, UINT32 Function); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acexcep.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acexcep.h index cf89df2a82..60292137c8 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acexcep.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acexcep.h @@ -200,8 +200,9 @@ typedef struct acpi_exception_info #define AE_OWNER_ID_LIMIT EXCEP_ENV (0x001B) #define AE_NOT_CONFIGURED EXCEP_ENV (0x001C) #define AE_ACCESS EXCEP_ENV (0x001D) +#define AE_IO_ERROR EXCEP_ENV (0x001E) -#define AE_CODE_ENV_MAX 0x001D +#define AE_CODE_ENV_MAX 0x001E /* @@ -270,8 +271,9 @@ typedef struct acpi_exception_info #define AE_AML_ILLEGAL_ADDRESS EXCEP_AML (0x0020) #define AE_AML_INFINITE_LOOP EXCEP_AML (0x0021) #define AE_AML_UNINITIALIZED_NODE EXCEP_AML (0x0022) +#define AE_AML_TARGET_TYPE EXCEP_AML (0x0023) -#define AE_CODE_AML_MAX 0x0022 +#define AE_CODE_AML_MAX 0x0023 /* @@ -333,7 +335,8 @@ static const ACPI_EXCEPTION_INFO AcpiGbl_ExceptionNames_Env[] = EXCEP_TXT ("AE_NO_HANDLER", "A handler for the operation is not installed"), EXCEP_TXT ("AE_OWNER_ID_LIMIT", "There are no more Owner IDs available for ACPI tables or control methods"), EXCEP_TXT ("AE_NOT_CONFIGURED", "The interface is not part of the current subsystem configuration"), - EXCEP_TXT ("AE_ACCESS", "Permission denied for the requested operation") + EXCEP_TXT ("AE_ACCESS", "Permission denied for the requested operation"), + EXCEP_TXT ("AE_IO_ERROR", "An I/O error occurred") }; static const ACPI_EXCEPTION_INFO AcpiGbl_ExceptionNames_Pgm[] = @@ -396,7 +399,8 @@ static const ACPI_EXCEPTION_INFO AcpiGbl_ExceptionNames_Aml[] = EXCEP_TXT ("AE_AML_BAD_RESOURCE_LENGTH", "The length of a Resource Descriptor in the AML is incorrect"), EXCEP_TXT ("AE_AML_ILLEGAL_ADDRESS", "A memory, I/O, or PCI configuration address is invalid"), EXCEP_TXT ("AE_AML_INFINITE_LOOP", "An apparent infinite AML While loop, method was aborted"), - EXCEP_TXT ("AE_AML_UNINITIALIZED_NODE", "A namespace node is uninitialized or unresolved") + EXCEP_TXT ("AE_AML_UNINITIALIZED_NODE", "A namespace node is uninitialized or unresolved"), + EXCEP_TXT ("AE_AML_TARGET_TYPE", "A target operand of an incorrect type was encountered") }; static const ACPI_EXCEPTION_INFO AcpiGbl_ExceptionNames_Ctrl[] = diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acglobal.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acglobal.h index 2d8bd88cbe..c0286cc4f7 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acglobal.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acglobal.h @@ -134,6 +134,7 @@ ACPI_GLOBAL (ACPI_TABLE_HEADER, AcpiGbl_OriginalDsdtHeader); ACPI_INIT_GLOBAL (UINT32, AcpiGbl_DsdtIndex, ACPI_INVALID_TABLE_INDEX); ACPI_INIT_GLOBAL (UINT32, AcpiGbl_FacsIndex, ACPI_INVALID_TABLE_INDEX); ACPI_INIT_GLOBAL (UINT32, AcpiGbl_XFacsIndex, ACPI_INVALID_TABLE_INDEX); +ACPI_INIT_GLOBAL (UINT32, AcpiGbl_FadtIndex, ACPI_INVALID_TABLE_INDEX); #if (!ACPI_REDUCED_HARDWARE) ACPI_GLOBAL (ACPI_TABLE_FACS *, AcpiGbl_FACS); @@ -157,6 +158,8 @@ ACPI_GLOBAL (UINT8, AcpiGbl_IntegerBitWidth); ACPI_GLOBAL (UINT8, AcpiGbl_IntegerByteWidth); ACPI_GLOBAL (UINT8, AcpiGbl_IntegerNybbleWidth); +ACPI_INIT_GLOBAL (UINT8, AcpiGbl_GroupModuleLevelCode, FALSE); + /***************************************************************************** * @@ -219,6 +222,7 @@ ACPI_GLOBAL (ACPI_CACHE_T *, AcpiGbl_OperandCache); ACPI_INIT_GLOBAL (UINT32, AcpiGbl_StartupFlags, 0); ACPI_INIT_GLOBAL (BOOLEAN, AcpiGbl_Shutdown, TRUE); +ACPI_INIT_GLOBAL (BOOLEAN, AcpiGbl_EarlyInitialization, TRUE); /* Global handlers */ @@ -238,7 +242,7 @@ ACPI_GLOBAL (UINT8, AcpiGbl_NextOwnerIdOffset); /* Initialization sequencing */ -ACPI_GLOBAL (BOOLEAN, AcpiGbl_RegMethodsExecuted); +ACPI_INIT_GLOBAL (BOOLEAN, AcpiGbl_RegMethodsEnabled, FALSE); /* Misc */ @@ -400,9 +404,9 @@ ACPI_GLOBAL (ACPI_EXTERNAL_FILE *, AcpiGbl_ExternalFileList); #ifdef ACPI_DEBUGGER -ACPI_INIT_GLOBAL (BOOLEAN, AcpiGbl_DbTerminateThreads, FALSE); ACPI_INIT_GLOBAL (BOOLEAN, AcpiGbl_AbortMethod, FALSE); ACPI_INIT_GLOBAL (BOOLEAN, AcpiGbl_MethodExecuting, FALSE); +ACPI_INIT_GLOBAL (ACPI_THREAD_ID, AcpiGbl_DbThreadId, ACPI_INVALID_THREAD_ID); ACPI_GLOBAL (BOOLEAN, AcpiGbl_DbOpt_NoIniMethods); ACPI_GLOBAL (BOOLEAN, AcpiGbl_DbOpt_NoRegionSupport); @@ -412,6 +416,8 @@ ACPI_GLOBAL (char *, AcpiGbl_DbFilename); ACPI_GLOBAL (UINT32, AcpiGbl_DbDebugLevel); ACPI_GLOBAL (UINT32, AcpiGbl_DbConsoleDebugLevel); ACPI_GLOBAL (ACPI_NAMESPACE_NODE *, AcpiGbl_DbScopeNode); +ACPI_GLOBAL (BOOLEAN, AcpiGbl_DbTerminateLoop); +ACPI_GLOBAL (BOOLEAN, AcpiGbl_DbThreadsTerminated); ACPI_GLOBAL (char *, AcpiGbl_DbArgs[ACPI_DEBUGGER_MAX_ARGS]); ACPI_GLOBAL (ACPI_OBJECT_TYPE, AcpiGbl_DbArgTypes[ACPI_DEBUGGER_MAX_ARGS]); @@ -433,6 +439,9 @@ ACPI_GLOBAL (UINT16, AcpiGbl_NodeTypeCountMisc); ACPI_GLOBAL (UINT32, AcpiGbl_NumNodes); ACPI_GLOBAL (UINT32, AcpiGbl_NumObjects); +ACPI_GLOBAL (ACPI_MUTEX, AcpiGbl_DbCommandReady); +ACPI_GLOBAL (ACPI_MUTEX, AcpiGbl_DbCommandComplete); + #endif /* ACPI_DEBUGGER */ diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/aclocal.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/aclocal.h index 58f232063a..b6974fcb07 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/aclocal.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/aclocal.h @@ -159,10 +159,8 @@ union acpi_parse_object; #define ACPI_MTX_EVENTS 3 /* Data for ACPI events */ #define ACPI_MTX_CACHES 4 /* Internal caches, general purposes */ #define ACPI_MTX_MEMORY 5 /* Debug memory tracking lists */ -#define ACPI_MTX_DEBUG_CMD_COMPLETE 6 /* AML debugger */ -#define ACPI_MTX_DEBUG_CMD_READY 7 /* AML debugger */ -#define ACPI_MAX_MUTEX 7 +#define ACPI_MAX_MUTEX 5 #define ACPI_NUM_MUTEX ACPI_MAX_MUTEX+1 @@ -192,6 +190,14 @@ typedef struct acpi_rw_lock #define ACPI_MUTEX_NOT_ACQUIRED (ACPI_THREAD_ID) -1 +/* This Thread ID means an invalid thread ID */ + +#ifdef ACPI_OS_INVALID_THREAD_ID +#define ACPI_INVALID_THREAD_ID ACPI_OS_INVALID_THREAD_ID +#else +#define ACPI_INVALID_THREAD_ID ((ACPI_THREAD_ID) 0xFFFFFFFF) +#endif + /* Table for the global mutexes */ typedef struct acpi_mutex_info @@ -310,6 +316,16 @@ typedef struct acpi_table_list #define ACPI_ROOT_ALLOW_RESIZE (2) +/* List to manage incoming ACPI tables */ + +typedef struct acpi_new_table_desc +{ + ACPI_TABLE_HEADER *Table; + struct acpi_new_table_desc *Next; + +} ACPI_NEW_TABLE_DESC; + + /* Predefined table indexes */ #define ACPI_INVALID_TABLE_INDEX (0xFFFFFFFF) @@ -400,13 +416,17 @@ ACPI_STATUS (*ACPI_INTERNAL_METHOD) ( #define ACPI_BTYPE_BUFFER_FIELD 0x00002000 #define ACPI_BTYPE_DDB_HANDLE 0x00004000 #define ACPI_BTYPE_DEBUG_OBJECT 0x00008000 -#define ACPI_BTYPE_REFERENCE 0x00010000 +#define ACPI_BTYPE_REFERENCE_OBJECT 0x00010000 /* From Index(), RefOf(), etc (Type6Opcodes) */ #define ACPI_BTYPE_RESOURCE 0x00020000 +#define ACPI_BTYPE_NAMED_REFERENCE 0x00040000 /* Generic unresolved Name or Namepath */ #define ACPI_BTYPE_COMPUTE_DATA (ACPI_BTYPE_INTEGER | ACPI_BTYPE_STRING | ACPI_BTYPE_BUFFER) #define ACPI_BTYPE_DATA (ACPI_BTYPE_COMPUTE_DATA | ACPI_BTYPE_PACKAGE) -#define ACPI_BTYPE_DATA_REFERENCE (ACPI_BTYPE_DATA | ACPI_BTYPE_REFERENCE | ACPI_BTYPE_DDB_HANDLE) + + /* Used by Copy, DeRefOf, Store, Printf, Fprintf */ + +#define ACPI_BTYPE_DATA_REFERENCE (ACPI_BTYPE_DATA | ACPI_BTYPE_REFERENCE_OBJECT | ACPI_BTYPE_DDB_HANDLE) #define ACPI_BTYPE_DEVICE_OBJECTS (ACPI_BTYPE_DEVICE | ACPI_BTYPE_THERMAL | ACPI_BTYPE_PROCESSOR) #define ACPI_BTYPE_OBJECTS_AND_REFS 0x0001FFFF /* ARG or LOCAL */ #define ACPI_BTYPE_ALL_OBJECTS 0x0000FFFF @@ -505,6 +525,7 @@ typedef union acpi_predefined_info /* Return object auto-repair info */ typedef ACPI_STATUS (*ACPI_OBJECT_CONVERTER) ( + struct acpi_namespace_node *Scope, union acpi_operand_object *OriginalObject, union acpi_operand_object **ConvertedObject); @@ -540,6 +561,7 @@ typedef struct acpi_simple_repair_info typedef struct acpi_reg_walk_info { ACPI_ADR_SPACE_TYPE SpaceId; + UINT32 Function; UINT32 RegRunCount; } ACPI_REG_WALK_INFO; @@ -1089,9 +1111,10 @@ typedef struct acpi_parse_state #define ACPI_PARSEOP_PARAMLIST 0x02 #define ACPI_PARSEOP_EMPTY_TERMLIST 0x04 #define ACPI_PARSEOP_PREDEF_CHECKED 0x08 -#define ACPI_PARSEOP_SPECIAL 0x10 +#define ACPI_PARSEOP_CLOSING_PAREN 0x10 #define ACPI_PARSEOP_COMPOUND 0x20 #define ACPI_PARSEOP_ASSIGNMENT 0x40 +#define ACPI_PARSEOP_ELSEIF 0x80 /***************************************************************************** diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acmacros.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acmacros.h index f8dfffb34c..ba407326c5 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acmacros.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acmacros.h @@ -477,18 +477,6 @@ #endif -/* - * Some code only gets executed when the debugger is built in. - * Note that this is entirely independent of whether the - * DEBUG_PRINT stuff (set by ACPI_DEBUG_OUTPUT) is on, or not. - */ -#ifdef ACPI_DEBUGGER -#define ACPI_DEBUGGER_EXEC(a) a -#else -#define ACPI_DEBUGGER_EXEC(a) -#endif - - /* * Macros used for ACPICA utilities only */ diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acnamesp.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acnamesp.h index db7f1148be..fc109f46dd 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acnamesp.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acnamesp.h @@ -150,6 +150,7 @@ /* Object is not a package element */ #define ACPI_NOT_PACKAGE_ELEMENT ACPI_UINT32_MAX +#define ACPI_ALL_PACKAGE_ELEMENTS (ACPI_UINT32_MAX-1) /* Always emit warning message, not dependent on node flags */ @@ -296,11 +297,19 @@ AcpiNsConvertToBuffer ( ACPI_STATUS AcpiNsConvertToUnicode ( + ACPI_NAMESPACE_NODE *Scope, ACPI_OPERAND_OBJECT *OriginalObject, ACPI_OPERAND_OBJECT **ReturnObject); ACPI_STATUS AcpiNsConvertToResource ( + ACPI_NAMESPACE_NODE *Scope, + ACPI_OPERAND_OBJECT *OriginalObject, + ACPI_OPERAND_OBJECT **ReturnObject); + +ACPI_STATUS +AcpiNsConvertToReference ( + ACPI_NAMESPACE_NODE *Scope, ACPI_OPERAND_OBJECT *OriginalObject, ACPI_OPERAND_OBJECT **ReturnObject); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acobject.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acobject.h index feaa9d16bf..0d4a333fee 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acobject.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acobject.h @@ -166,9 +166,10 @@ #define AOPOBJ_AML_CONSTANT 0x01 /* Integer is an AML constant */ #define AOPOBJ_STATIC_POINTER 0x02 /* Data is part of an ACPI table, don't delete */ #define AOPOBJ_DATA_VALID 0x04 /* Object is initialized and data is valid */ -#define AOPOBJ_OBJECT_INITIALIZED 0x08 /* Region is initialized, _REG was run */ -#define AOPOBJ_SETUP_COMPLETE 0x10 /* Region setup is complete */ -#define AOPOBJ_INVALID 0x20 /* Host OS won't allow a Region address */ +#define AOPOBJ_OBJECT_INITIALIZED 0x08 /* Region is initialized */ +#define AOPOBJ_REG_CONNECTED 0x10 /* _REG was run */ +#define AOPOBJ_SETUP_COMPLETE 0x20 /* Region setup is complete */ +#define AOPOBJ_INVALID 0x40 /* Host OS won't allow a Region address */ /****************************************************************************** diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acopcode.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acopcode.h index 133e1347d0..c6b88c1f3c 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acopcode.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acopcode.h @@ -165,7 +165,7 @@ #define ARGP_BYTELIST_OP ARGP_LIST1 (ARGP_NAMESTRING) #define ARGP_CONCAT_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET) #define ARGP_CONCAT_RES_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET) -#define ARGP_COND_REF_OF_OP ARGP_LIST2 (ARGP_SUPERNAME, ARGP_SUPERNAME) +#define ARGP_COND_REF_OF_OP ARGP_LIST2 (ARGP_NAME_OR_REF,ARGP_TARGET) #define ARGP_CONNECTFIELD_OP ARGP_LIST1 (ARGP_NAMESTRING) #define ARGP_CONTINUE_OP ARG_NONE #define ARGP_COPY_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_SIMPLENAME) @@ -225,13 +225,14 @@ #define ARGP_NAMEPATH_OP ARGP_LIST1 (ARGP_NAMESTRING) #define ARGP_NOOP_OP ARG_NONE #define ARGP_NOTIFY_OP ARGP_LIST2 (ARGP_SUPERNAME, ARGP_TERMARG) +#define ARGP_OBJECT_TYPE_OP ARGP_LIST1 (ARGP_NAME_OR_REF) #define ARGP_ONE_OP ARG_NONE #define ARGP_ONES_OP ARG_NONE #define ARGP_PACKAGE_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_BYTEDATA, ARGP_DATAOBJLIST) #define ARGP_POWER_RES_OP ARGP_LIST5 (ARGP_PKGLENGTH, ARGP_NAME, ARGP_BYTEDATA, ARGP_WORDDATA, ARGP_OBJLIST) #define ARGP_PROCESSOR_OP ARGP_LIST6 (ARGP_PKGLENGTH, ARGP_NAME, ARGP_BYTEDATA, ARGP_DWORDDATA, ARGP_BYTEDATA, ARGP_OBJLIST) #define ARGP_QWORD_OP ARGP_LIST1 (ARGP_QWORDDATA) -#define ARGP_REF_OF_OP ARGP_LIST1 (ARGP_SUPERNAME) +#define ARGP_REF_OF_OP ARGP_LIST1 (ARGP_NAME_OR_REF) #define ARGP_REGION_OP ARGP_LIST4 (ARGP_NAME, ARGP_BYTEDATA, ARGP_TERMARG, ARGP_TERMARG) #define ARGP_RELEASE_OP ARGP_LIST1 (ARGP_SUPERNAME) #define ARGP_RESERVEDFIELD_OP ARGP_LIST1 (ARGP_NAMESTRING) @@ -258,7 +259,6 @@ #define ARGP_TO_HEX_STR_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TARGET) #define ARGP_TO_INTEGER_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TARGET) #define ARGP_TO_STRING_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET) -#define ARGP_TYPE_OP ARGP_LIST1 (ARGP_SUPERNAME) #define ARGP_UNLOAD_OP ARGP_LIST1 (ARGP_SUPERNAME) #define ARGP_VAR_PACKAGE_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_TERMARG, ARGP_DATAOBJLIST) #define ARGP_WAIT_OP ARGP_LIST2 (ARGP_SUPERNAME, ARGP_TERMARG) @@ -285,7 +285,7 @@ #define ARGI_ARG4 ARG_NONE #define ARGI_ARG5 ARG_NONE #define ARGI_ARG6 ARG_NONE -#define ARGI_BANK_FIELD_OP ARGI_INVALID_OPCODE +#define ARGI_BANK_FIELD_OP ARGI_LIST1 (ARGI_INTEGER) #define ARGI_BIT_AND_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF) #define ARGI_BIT_NAND_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF) #define ARGI_BIT_NOR_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF) @@ -297,7 +297,7 @@ #define ARGI_BUFFER_OP ARGI_LIST1 (ARGI_INTEGER) #define ARGI_BYTE_OP ARGI_INVALID_OPCODE #define ARGI_BYTELIST_OP ARGI_INVALID_OPCODE -#define ARGI_CONCAT_OP ARGI_LIST3 (ARGI_COMPUTEDATA,ARGI_COMPUTEDATA, ARGI_TARGETREF) +#define ARGI_CONCAT_OP ARGI_LIST3 (ARGI_ANYTYPE, ARGI_ANYTYPE, ARGI_TARGETREF) #define ARGI_CONCAT_RES_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_BUFFER, ARGI_TARGETREF) #define ARGI_COND_REF_OF_OP ARGI_LIST2 (ARGI_OBJECT_REF, ARGI_TARGETREF) #define ARGI_CONNECTFIELD_OP ARGI_INVALID_OPCODE @@ -359,6 +359,7 @@ #define ARGI_NAMEPATH_OP ARGI_INVALID_OPCODE #define ARGI_NOOP_OP ARG_NONE #define ARGI_NOTIFY_OP ARGI_LIST2 (ARGI_DEVICE_REF, ARGI_INTEGER) +#define ARGI_OBJECT_TYPE_OP ARGI_LIST1 (ARGI_ANYTYPE) #define ARGI_ONE_OP ARG_NONE #define ARGI_ONES_OP ARG_NONE #define ARGI_PACKAGE_OP ARGI_LIST1 (ARGI_INTEGER) @@ -381,7 +382,7 @@ #define ARGI_SLEEP_OP ARGI_LIST1 (ARGI_INTEGER) #define ARGI_STALL_OP ARGI_LIST1 (ARGI_INTEGER) #define ARGI_STATICSTRING_OP ARGI_INVALID_OPCODE -#define ARGI_STORE_OP ARGI_LIST2 (ARGI_DATAREFOBJ, ARGI_TARGETREF) +#define ARGI_STORE_OP ARGI_LIST2 (ARGI_DATAREFOBJ, ARGI_STORE_TARGET) #define ARGI_STRING_OP ARGI_INVALID_OPCODE #define ARGI_SUBTRACT_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF) #define ARGI_THERMAL_ZONE_OP ARGI_INVALID_OPCODE @@ -392,7 +393,6 @@ #define ARGI_TO_HEX_STR_OP ARGI_LIST2 (ARGI_COMPUTEDATA,ARGI_FIXED_TARGET) #define ARGI_TO_INTEGER_OP ARGI_LIST2 (ARGI_COMPUTEDATA,ARGI_FIXED_TARGET) #define ARGI_TO_STRING_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_INTEGER, ARGI_FIXED_TARGET) -#define ARGI_TYPE_OP ARGI_LIST1 (ARGI_ANYTYPE) #define ARGI_UNLOAD_OP ARGI_LIST1 (ARGI_DDBHANDLE) #define ARGI_VAR_PACKAGE_OP ARGI_LIST1 (ARGI_INTEGER) #define ARGI_WAIT_OP ARGI_LIST2 (ARGI_EVENT, ARGI_INTEGER) diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acparser.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acparser.h index c525dd33cf..587638319c 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acparser.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acparser.h @@ -178,7 +178,12 @@ AcpiPsGetNextNamepath ( ACPI_WALK_STATE *WalkState, ACPI_PARSE_STATE *ParserState, ACPI_PARSE_OBJECT *Arg, - BOOLEAN MethodCall); + BOOLEAN PossibleMethodCall); + +/* Values for BOOLEAN above */ + +#define ACPI_NOT_METHOD_CALL FALSE +#define ACPI_POSSIBLE_METHOD_CALL TRUE ACPI_STATUS AcpiPsGetNextArg ( diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acpiosxf.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acpiosxf.h index 45cec744af..4afc7d505a 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acpiosxf.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acpiosxf.h @@ -129,7 +129,8 @@ typedef enum OSL_GLOBAL_LOCK_HANDLER, OSL_NOTIFY_HANDLER, OSL_GPE_HANDLER, - OSL_DEBUGGER_THREAD, + OSL_DEBUGGER_MAIN_THREAD, + OSL_DEBUGGER_EXEC_THREAD, OSL_EC_POLL_HANDLER, OSL_EC_BURST_HANDLER diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acpixf.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acpixf.h index e0cd0d0929..096c52709c 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acpixf.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acpixf.h @@ -118,7 +118,7 @@ /* Current ACPICA subsystem version in YYYYMMDD format */ -#define ACPI_CA_VERSION 0x20150818 +#define ACPI_CA_VERSION 0x20151218 #include "acconfig.h" #include "actypes.h" @@ -263,6 +263,11 @@ ACPI_INIT_GLOBAL (UINT8, AcpiGbl_CopyDsdtLocally, FALSE); */ ACPI_INIT_GLOBAL (UINT8, AcpiGbl_DoNotUseXsdt, FALSE); +/* + * Optionally allow default region handlers to be overridden. + */ +ACPI_INIT_GLOBAL (UINT8, AcpiGbl_OverrideDefaultRegionHandlers, FALSE); + /* * Optionally use 32-bit FADT addresses if and when there is a conflict * (address mismatch) between the 32-bit and 64-bit versions of the @@ -341,6 +346,10 @@ ACPI_INIT_GLOBAL (UINT32, AcpiDbgLevel, ACPI_NORMAL_DEFAULT); #endif ACPI_INIT_GLOBAL (UINT32, AcpiDbgLayer, ACPI_COMPONENT_DEFAULT); +/* Optionally enable timer output with Debug Object output */ + +ACPI_INIT_GLOBAL (UINT8, AcpiGbl_DisplayDebugTimer, FALSE); + /* * Other miscellaneous globals */ @@ -449,6 +458,30 @@ ACPI_GLOBAL (BOOLEAN, AcpiGbl_SystemAwakeAndRunning); #endif /* ACPI_APPLICATION */ +/* + * Debugger prototypes + * + * All interfaces used by debugger will be configured + * out of the ACPICA build unless the ACPI_DEBUGGER + * flag is defined. + */ +#ifdef ACPI_DEBUGGER +#define ACPI_DBR_DEPENDENT_RETURN_OK(Prototype) \ + ACPI_EXTERNAL_RETURN_OK(Prototype) + +#define ACPI_DBR_DEPENDENT_RETURN_VOID(Prototype) \ + ACPI_EXTERNAL_RETURN_VOID(Prototype) + +#else +#define ACPI_DBR_DEPENDENT_RETURN_OK(Prototype) \ + static ACPI_INLINE Prototype {return(AE_OK);} + +#define ACPI_DBR_DEPENDENT_RETURN_VOID(Prototype) \ + static ACPI_INLINE Prototype {return;} + +#endif /* ACPI_DEBUGGER */ + + /***************************************************************************** * * ACPICA public interface prototypes @@ -1288,4 +1321,8 @@ void AcpiTerminateDebugger ( void); +void +AcpiSetDebuggerThreadId ( + ACPI_THREAD_ID ThreadId); + #endif /* __ACXFACE_H__ */ diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/actables.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/actables.h index 10fb56da1b..3fbeb3b64f 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/actables.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/actables.h @@ -187,7 +187,7 @@ AcpiTbSetTableLoadedFlag ( */ void AcpiTbParseFadt ( - UINT32 TableIndex); + void); void AcpiTbCreateLocalFadt ( @@ -279,10 +279,6 @@ ACPI_STATUS AcpiTbInitializeFacs ( void); -BOOLEAN -AcpiTbTablesLoaded ( - void); - void AcpiTbPrintTableHeader( ACPI_PHYSICAL_ADDRESS Address, diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/actbl1.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/actbl1.h index f7eaa4c603..dd00f20104 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/actbl1.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/actbl1.h @@ -1256,7 +1256,7 @@ typedef struct acpi_nfit_memory_map #define ACPI_NFIT_MEM_SAVE_FAILED (1) /* 00: Last SAVE to Memory Device failed */ #define ACPI_NFIT_MEM_RESTORE_FAILED (1<<1) /* 01: Last RESTORE from Memory Device failed */ #define ACPI_NFIT_MEM_FLUSH_FAILED (1<<2) /* 02: Platform flush failed */ -#define ACPI_NFIT_MEM_ARMED (1<<3) /* 03: Memory Device observed to be not armed */ +#define ACPI_NFIT_MEM_NOT_ARMED (1<<3) /* 03: Memory Device is not armed */ #define ACPI_NFIT_MEM_HEALTH_OBSERVED (1<<4) /* 04: Memory Device observed SMART/health events */ #define ACPI_NFIT_MEM_HEALTH_ENABLED (1<<5) /* 05: SMART/health events enabled */ diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/actypes.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/actypes.h index e9e765d642..09a2d82453 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/actypes.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/actypes.h @@ -1304,7 +1304,7 @@ UINT32 (*ACPI_INTERFACE_HANDLER) ( #define ACPI_PCICLS_STRING_SIZE 7 /* Includes null terminator */ -/* Structures used for device/processor HID, UID, CID, and SUB */ +/* Structures used for device/processor HID, UID, CID */ typedef struct acpi_pnp_device_id { @@ -1339,7 +1339,6 @@ typedef struct acpi_device_info UINT64 Address; /* _ADR value */ ACPI_PNP_DEVICE_ID HardwareId; /* _HID value */ ACPI_PNP_DEVICE_ID UniqueId; /* _UID value */ - ACPI_PNP_DEVICE_ID SubsystemId; /* _SUB value */ ACPI_PNP_DEVICE_ID ClassCode; /* _CLS value */ ACPI_PNP_DEVICE_ID_LIST CompatibleIdList; /* _CID list */ @@ -1355,13 +1354,12 @@ typedef struct acpi_device_info #define ACPI_VALID_ADR 0x0002 #define ACPI_VALID_HID 0x0004 #define ACPI_VALID_UID 0x0008 -#define ACPI_VALID_SUB 0x0010 #define ACPI_VALID_CID 0x0020 #define ACPI_VALID_CLS 0x0040 #define ACPI_VALID_SXDS 0x0100 #define ACPI_VALID_SXWS 0x0200 -/* Flags for _STA return value (CurrentStatus above) */ +/* Flags for _STA method */ #define ACPI_STA_DEVICE_PRESENT 0x01 #define ACPI_STA_DEVICE_ENABLED 0x02 diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acutils.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acutils.h index 4fc44ff3f0..c85ab838f4 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acutils.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acutils.h @@ -278,7 +278,7 @@ AcpiUtInitGlobals ( #if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER) -char * +const char * AcpiUtGetMutexName ( UINT32 MutexId); @@ -288,15 +288,15 @@ AcpiUtGetNotifyName ( ACPI_OBJECT_TYPE Type); #endif -char * +const char * AcpiUtGetTypeName ( ACPI_OBJECT_TYPE Type); -char * +const char * AcpiUtGetNodeName ( void *Object); -char * +const char * AcpiUtGetDescriptorName ( void *Object); @@ -304,15 +304,15 @@ const char * AcpiUtGetReferenceName ( ACPI_OPERAND_OBJECT *Object); -char * +const char * AcpiUtGetObjectTypeName ( ACPI_OPERAND_OBJECT *ObjDesc); -char * +const char * AcpiUtGetRegionName ( UINT8 SpaceId); -char * +const char * AcpiUtGetEventName ( UINT32 EventId); @@ -555,17 +555,6 @@ AcpiUtExecutePowerMethods ( UINT8 *OutValues); -/* - * utfileio - file operations - */ -#ifdef ACPI_APPLICATION -ACPI_STATUS -AcpiUtReadTableFromFile ( - char *Filename, - ACPI_TABLE_HEADER **Table); -#endif - - /* * utids - device ID support */ @@ -579,11 +568,6 @@ AcpiUtExecute_UID ( ACPI_NAMESPACE_NODE *DeviceNode, ACPI_PNP_DEVICE_ID **ReturnId); -ACPI_STATUS -AcpiUtExecute_SUB ( - ACPI_NAMESPACE_NODE *DeviceNode, - ACPI_PNP_DEVICE_ID **ReturnId); - ACPI_STATUS AcpiUtExecute_CID ( ACPI_NAMESPACE_NODE *DeviceNode, diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/amlcode.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/amlcode.h index 34ac987629..8a0ddcc0d2 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/amlcode.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/amlcode.h @@ -192,7 +192,7 @@ #define AML_CREATE_WORD_FIELD_OP (UINT16) 0x8b #define AML_CREATE_BYTE_FIELD_OP (UINT16) 0x8c #define AML_CREATE_BIT_FIELD_OP (UINT16) 0x8d -#define AML_TYPE_OP (UINT16) 0x8e +#define AML_OBJECT_TYPE_OP (UINT16) 0x8e #define AML_CREATE_QWORD_FIELD_OP (UINT16) 0x8f /* ACPI 2.0 */ #define AML_LAND_OP (UINT16) 0x90 #define AML_LOR_OP (UINT16) 0x91 @@ -313,7 +313,8 @@ #define ARGP_TERMLIST 0x0F #define ARGP_WORDDATA 0x10 #define ARGP_QWORDDATA 0x11 -#define ARGP_SIMPLENAME 0x12 +#define ARGP_SIMPLENAME 0x12 /* NameString | LocalTerm | ArgTerm */ +#define ARGP_NAME_OR_REF 0x13 /* For ObjectType only */ /* * Resolved argument types for the AML Interpreter @@ -352,14 +353,15 @@ #define ARGI_TARGETREF 0x0F /* Target, subject to implicit conversion */ #define ARGI_FIXED_TARGET 0x10 /* Target, no implicit conversion */ #define ARGI_SIMPLE_TARGET 0x11 /* Name, Local, Arg -- no implicit conversion */ +#define ARGI_STORE_TARGET 0x12 /* Target for store is TARGETREF + package objects */ /* Multiple/complex types */ -#define ARGI_DATAOBJECT 0x12 /* Buffer, String, package or reference to a Node - Used only by SizeOf operator*/ -#define ARGI_COMPLEXOBJ 0x13 /* Buffer, String, or package (Used by INDEX op only) */ -#define ARGI_REF_OR_STRING 0x14 /* Reference or String (Used by DEREFOF op only) */ -#define ARGI_REGION_OR_BUFFER 0x15 /* Used by LOAD op only */ -#define ARGI_DATAREFOBJ 0x16 +#define ARGI_DATAOBJECT 0x13 /* Buffer, String, package or reference to a Node - Used only by SizeOf operator*/ +#define ARGI_COMPLEXOBJ 0x14 /* Buffer, String, or package (Used by INDEX op only) */ +#define ARGI_REF_OR_STRING 0x15 /* Reference or String (Used by DEREFOF op only) */ +#define ARGI_REGION_OR_BUFFER 0x16 /* Used by LOAD op only */ +#define ARGI_DATAREFOBJ 0x17 /* Note: types above can expand to 0x1F maximum */ diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/platform/acenv.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/platform/acenv.h index 614a538bb0..d393af28a8 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/platform/acenv.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/platform/acenv.h @@ -369,6 +369,7 @@ #define ACPI_INTERNAL_VAR_XFACE #endif + /* * Debugger threading model * Use single threaded if the entire subsystem is contained in an application @@ -378,11 +379,11 @@ * multi-threaded if ACPI_APPLICATION is not set. */ #ifndef DEBUGGER_THREADING -#ifdef ACPI_APPLICATION -#define DEBUGGER_THREADING DEBUGGER_SINGLE_THREADED +#if !defined (ACPI_APPLICATION) || defined (ACPI_EXEC_APP) +#define DEBUGGER_THREADING DEBUGGER_MULTI_THREADED #else -#define DEBUGGER_THREADING DEBUGGER_MULTI_THREADED +#define DEBUGGER_THREADING DEBUGGER_SINGLE_THREADED #endif #endif /* !DEBUGGER_THREADING */ From 9ec8a1e4d930355a292c7ae97573cf22442c429e Mon Sep 17 00:00:00 2001 From: Adrien Destugues Date: Tue, 29 Dec 2015 10:07:35 +0100 Subject: [PATCH 010/242] Kernel POSIX: add stpcpy. - Required by new GCC versions, which are able to optimize string appends using it. - Fixes build of ACPICA for x86/gcc4. --- src/system/kernel/lib/Jamfile | 1 + 1 file changed, 1 insertion(+) diff --git a/src/system/kernel/lib/Jamfile b/src/system/kernel/lib/Jamfile index e890322ca9..339945d020 100644 --- a/src/system/kernel/lib/Jamfile +++ b/src/system/kernel/lib/Jamfile @@ -123,6 +123,7 @@ KernelMergeObject kernel_lib_posix.o : strstr.c strtok.c strupr.c + stpcpy.c : $(TARGET_KERNEL_PIC_CCFLAGS) ; From d4fb4ebd675bcb3b6a3b307b172cdafd43b58710 Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Tue, 29 Dec 2015 11:26:20 -0500 Subject: [PATCH 011/242] ACPI: Remove manual address space handler initialization. These are now done in AcpiInitializeSubsystem(), as part of the early init so they can be present when the tables are loaded. Should fix ACPI not working since the merge. --- .../kernel/bus_managers/acpi/BusManager.cpp | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/src/add-ons/kernel/bus_managers/acpi/BusManager.cpp b/src/add-ons/kernel/bus_managers/acpi/BusManager.cpp index fda246661a..48254f76d6 100644 --- a/src/add-ons/kernel/bus_managers/acpi/BusManager.cpp +++ b/src/add-ons/kernel/bus_managers/acpi/BusManager.cpp @@ -231,25 +231,6 @@ acpi_std_ops(int32 op,...) "AcpiLoadTables failed")) goto err; - /* Install the default address space handlers. */ - if (checkAndLogFailure(AcpiInstallAddressSpaceHandler( - ACPI_ROOT_OBJECT, ACPI_ADR_SPACE_SYSTEM_MEMORY, - ACPI_DEFAULT_HANDLER, NULL, NULL), - "Could not initialise SystemMemory handler:")) - goto err; - - if (checkAndLogFailure(AcpiInstallAddressSpaceHandler( - ACPI_ROOT_OBJECT, ACPI_ADR_SPACE_SYSTEM_IO, - ACPI_DEFAULT_HANDLER, NULL, NULL), - "Could not initialise SystemIO handler:")) - goto err; - - if (checkAndLogFailure(AcpiInstallAddressSpaceHandler( - ACPI_ROOT_OBJECT, ACPI_ADR_SPACE_PCI_CONFIG, - ACPI_DEFAULT_HANDLER, NULL, NULL), - "Could not initialise PciConfig handler:")) - goto err; - arg.Integer.Type = ACPI_TYPE_INTEGER; arg.Integer.Value = apic_available() ? APIC_MODE : PIC_MODE; From 3cc632615c710a5138f27c10b335bb5c2f2090c1 Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Tue, 29 Dec 2015 12:09:56 -0500 Subject: [PATCH 012/242] busses/usb: Trim trailing whitespace. --- src/add-ons/kernel/busses/usb/Jamfile | 2 +- src/add-ons/kernel/busses/usb/xhci.cpp | 54 +++++++++---------- src/add-ons/kernel/busses/usb/xhci_hardware.h | 2 +- 3 files changed, 29 insertions(+), 29 deletions(-) diff --git a/src/add-ons/kernel/busses/usb/Jamfile b/src/add-ons/kernel/busses/usb/Jamfile index f1a2252030..fb71288dd3 100644 --- a/src/add-ons/kernel/busses/usb/Jamfile +++ b/src/add-ons/kernel/busses/usb/Jamfile @@ -2,7 +2,7 @@ SubDir HAIKU_TOP src add-ons kernel busses usb ; SubDirC++Flags -fno-rtti ; -UsePrivateKernelHeaders ; +UsePrivateKernelHeaders ; UseHeaders [ FDirName $(HAIKU_TOP) src add-ons kernel bus_managers usb ] ; KernelAddon uhci : diff --git a/src/add-ons/kernel/busses/usb/xhci.cpp b/src/add-ons/kernel/busses/usb/xhci.cpp index 6b06bcd9eb..0ae5ce174b 100644 --- a/src/add-ons/kernel/busses/usb/xhci.cpp +++ b/src/add-ons/kernel/busses/usb/xhci.cpp @@ -201,23 +201,23 @@ XHCI::XHCI(pci_info *info, Stack *stack) eec = ReadCapReg32(eecp); if (XECP_ID(eec) != XHCI_LEGSUP_CAPID) continue; - + TRACE("eecp register: 0x%08" B_PRIx32 "\n", eecp); if (eec & XHCI_LEGSUP_BIOSOWNED) { TRACE_ALWAYS("the host controller is bios owned, claiming" " ownership\n"); WriteCapReg32(eecp, eec | XHCI_LEGSUP_OSOWNED); - + for (int32 i = 0; i < 20; i++) { eec = ReadCapReg32(eecp); - + if ((eec & XHCI_LEGSUP_BIOSOWNED) == 0) break; - + TRACE_ALWAYS("controller is still bios owned, waiting\n"); snooze(50000); } - + if (eec & XHCI_LEGSUP_BIOSOWNED) { TRACE_ERROR("bios won't give up control over the host " "controller (ignoring)\n"); @@ -225,7 +225,7 @@ XHCI::XHCI(pci_info *info, Stack *stack) TRACE_ALWAYS("successfully took ownership of the host " "controller\n"); } - + // Force off the BIOS owned flag, and clear all SMIs. Some BIOSes // do indicate a successful handover but do not remove their SMIs // and then freeze the system when interrupts are generated. @@ -238,7 +238,7 @@ XHCI::XHCI(pci_info *info, Stack *stack) legctlsts |= XHCI_LEGCTLSTS_EVENTS_SMI; WriteCapReg32(eecp + XHCI_LEGCTLSTS, legctlsts); - // On Intel's Panther Point and Lynx Point Chipset taking ownership + // On Intel's Panther Point and Lynx Point Chipset taking ownership // of EHCI owned ports, is what we do here. if (fPCIInfo->vendor_id == PCI_VENDOR_INTEL) { switch (fPCIInfo->device_id) { @@ -383,7 +383,7 @@ XHCI::Start() } // read port count from capability register - uint32 capabilities = ReadCapReg32(XHCI_HCSPARAMS1); + uint32 capabilities = ReadCapReg32(XHCI_HCSPARAMS1); fPortCount = HCS_MAX_PORTS(capabilities); if (fPortCount == 0) { TRACE_ERROR("Invalid number of ports: %u\n", fPortCount); @@ -513,9 +513,9 @@ XHCI::Start() fCmdRing[XHCI_MAX_COMMANDS - 1].qwtrb0 = dmaAddress; TRACE("setting interrupt rate\n"); - + // Setting IMOD below 0x3F8 on Intel Lynx Point can cause IRQ lockups - if (fPCIInfo->vendor_id == PCI_VENDOR_INTEL + if (fPCIInfo->vendor_id == PCI_VENDOR_INTEL && (fPCIInfo->device_id == PCI_DEVICE_INTEL_PANTHER_POINT_XHCI || fPCIInfo->device_id == PCI_DEVICE_INTEL_LYNX_POINT_XHCI || fPCIInfo->device_id == PCI_DEVICE_INTEL_LYNX_POINT_LP_XHCI @@ -639,12 +639,12 @@ XHCI::SubmitControlRequest(Transfer *transfer) TRACE("SubmitControlRequest() request linked\n"); - TRACE("Endpoint status 0x%" B_PRIx32 " 0x%" B_PRIx32 " 0x%" B_PRIx64 "\n", + TRACE("Endpoint status 0x%" B_PRIx32 " 0x%" B_PRIx32 " 0x%" B_PRIx64 "\n", endpoint->device->device_ctx->endpoints[id-1].dwendpoint0, endpoint->device->device_ctx->endpoints[id-1].dwendpoint1, endpoint->device->device_ctx->endpoints[id-1].qwendpoint2); Ring(endpoint->device->slot, id); - TRACE("Endpoint status 0x%" B_PRIx32 " 0x%" B_PRIx32 " 0x%" B_PRIx64 "\n", + TRACE("Endpoint status 0x%" B_PRIx32 " 0x%" B_PRIx32 " 0x%" B_PRIx64 "\n", endpoint->device->device_ctx->endpoints[id-1].dwendpoint0, endpoint->device->device_ctx->endpoints[id-1].dwendpoint1, endpoint->device->device_ctx->endpoints[id-1].qwendpoint2); @@ -696,7 +696,7 @@ XHCI::SubmitNormalRequest(Transfer *transfer) TRACE("SubmitNormalRequest() request linked\n"); - TRACE("Endpoint status 0x%" B_PRIx32 " 0x%" B_PRIx32 " 0x%" B_PRIx64 "\n", + TRACE("Endpoint status 0x%" B_PRIx32 " 0x%" B_PRIx32 " 0x%" B_PRIx64 "\n", endpoint->device->device_ctx->endpoints[id - 1].dwendpoint0, endpoint->device->device_ctx->endpoints[id - 1].dwendpoint1, endpoint->device->device_ctx->endpoints[id - 1].qwendpoint2); @@ -1133,7 +1133,7 @@ XHCI::AllocateDevice(Hub *parent, int8 hubAddress, uint8 hubPort, device->input_ctx->slot.dwslot1 = SLOT_1_RH_PORT(rhPort); // TODO enable power save device->input_ctx->slot.dwslot2 = SLOT_2_IRQ_TARGET(0); - + // If LS/FS device connected to non-root HS device if (route != 0 && parent->Speed() == USB_SPEED_HIGHSPEED && (speed == USB_SPEED_LOWSPEED || speed == USB_SPEED_FULLSPEED)) { @@ -1156,7 +1156,7 @@ XHCI::AllocateDevice(Hub *parent, int8 hubAddress, uint8 hubPort, "XHCI device context"); if (device->device_ctx_area < B_OK) { TRACE_ERROR("unable to create a device context area\n"); - device->state = XHCI_STATE_DISABLED; + device->state = XHCI_STATE_DISABLED; delete_area(device->input_ctx_area); return NULL; } @@ -1272,7 +1272,7 @@ XHCI::AllocateDevice(Hub *parent, int8 hubAddress, uint8 hubPort, TRACE("device_class: %d device_subclass %d device_protocol %d\n", deviceDescriptor.device_class, deviceDescriptor.device_subclass, deviceDescriptor.device_protocol); - + if (speed == USB_SPEED_FULLSPEED && deviceDescriptor.max_packet_size_0 != 8) { TRACE("Full speed device with different max packet size for Endpoint 0\n"); device->input_ctx->endpoints[0].dwendpoint1 &= @@ -1299,7 +1299,7 @@ XHCI::AllocateDevice(Hub *parent, int8 hubAddress, uint8 hubPort, (void *)&hubDescriptor, // buffer sizeof(usb_hub_descriptor), // buffer length &actualLength); - + if (actualLength != sizeof(usb_hub_descriptor)) { TRACE_ERROR("error while getting the hub descriptor\n"); device->state = XHCI_STATE_DISABLED; @@ -1308,14 +1308,14 @@ XHCI::AllocateDevice(Hub *parent, int8 hubAddress, uint8 hubPort, delete_area(device->trb_area); return NULL; } - + device->input_ctx->slot.dwslot0 |= SLOT_0_HUB_BIT; device->input_ctx->slot.dwslot1 |= SLOT_1_NUM_PORTS(hubDescriptor.num_ports); if (speed == USB_SPEED_HIGHSPEED) { device->input_ctx->slot.dwslot2 |= - SLOT_2_TT_TIME(HUB_TTT_GET(hubDescriptor.characteristics)); + SLOT_2_TT_TIME(HUB_TTT_GET(hubDescriptor.characteristics)); } - + deviceObject = new(std::nothrow) Hub(parent, hubAddress, hubPort, deviceDescriptor, device->address + 1, speed, false, device); } else { @@ -1356,7 +1356,7 @@ XHCI::FreeDevice(Device *device) status_t XHCI::_InsertEndpointForPipe(Pipe *pipe) { - TRACE("_InsertEndpointForPipe endpoint address %" B_PRId8 "\n", + TRACE("_InsertEndpointForPipe endpoint address %" B_PRId8 "\n", pipe->EndpointAddress()); if (pipe->ControllerCookie() != NULL || pipe->Parent()->Type() != USB_OBJECT_DEVICE) { @@ -2258,11 +2258,11 @@ XHCI::FinishTransfers() Unlock(); TRACE("finishing transfer td %p\n", td); - + Transfer* transfer = td->transfer; bool directionIn = (transfer->TransferPipe()->Direction() != Pipe::Out); usb_request_data *requestData = transfer->RequestData(); - + status_t callbackStatus = B_OK; switch (td->trb_completion_code) { case COMP_SHORT_PACKET: @@ -2287,15 +2287,15 @@ XHCI::FinishTransfers() callbackStatus = B_DEV_STALLED; break; } - + size_t actualLength = 0; if (callbackStatus == B_OK) { actualLength = requestData ? requestData->Length : transfer->DataLength(); - + if (td->trb_completion_code == COMP_SHORT_PACKET) actualLength -= td->trb_left; - + if (directionIn && actualLength > 0) { if (requestData) { TRACE("copying in data %d bytes\n", requestData->Length); @@ -2310,7 +2310,7 @@ XHCI::FinishTransfers() } } } - transfer->Finished(callbackStatus, actualLength); + transfer->Finished(callbackStatus, actualLength); delete transfer; FreeDescriptor(td); Lock(); diff --git a/src/add-ons/kernel/busses/usb/xhci_hardware.h b/src/add-ons/kernel/busses/usb/xhci_hardware.h index a128ae56f5..1f53eb68e4 100644 --- a/src/add-ons/kernel/busses/usb/xhci_hardware.h +++ b/src/add-ons/kernel/busses/usb/xhci_hardware.h @@ -27,7 +27,7 @@ // Host Controller Capability Registers #define XHCI_HCI_CAPLENGTH 0x00 // HCI Capability Register Length -#define HCI_CAPLENGTH(p) (((p) >> 0) & 0xff) +#define HCI_CAPLENGTH(p) (((p) >> 0) & 0xff) #define HCI_VERSION(p) (((p) >> 16) & 0xffff) // HCI Version #define XHCI_HCSPARAMS1 0x04 // Structural Parameters 1 // HCSPARAMS1 From f91361e0dba9932079cc1e852d1ccbdaba2dc6c9 Mon Sep 17 00:00:00 2001 From: Akshay Jaggi Date: Sat, 2 Aug 2014 19:15:25 +0530 Subject: [PATCH 013/242] XHCI: Even more fixes. * Fix Endpoint Context Initialisation (Refer xHCI v1.1 - 6.2.3) * Fix Interval Calculation (Refer xHCI v1.1 - 6.2.3.6 , USB 2.0 - 9.6.6 page 271) * Fix MaxBurst, MaxPacketSize Calculation (Refer xHCI v1.1 - 6.2.3.5, USB 2.0 - 9.6.6 page 271) * Fix MaxESITPayload Calculation (Refer xHCI v1.1 - 4.14.2) * Remove Link TRBs as they were never being used * Increase Number of TRBs per endpoint (to utilise the whole area allocated for Device TRBs) * Fix usage of XHCI_MAX_ENDPOINTS (most of the checks were failing at corner cases) * Some coding style fixes. Signed-off-by: Augustin Cavalier Before this patch, writes to USB disks on XHCI in VirtualBox (which emulates an Intel C210) stalled or failed. After this patch, they apparently work, although I got mixed results - a BFS disk seemed to work perfectly, a FAT32 one also seemed to work OK but after a reboot there was data corruption. USB mouse is still as busted as ever. --- src/add-ons/kernel/busses/usb/xhci.cpp | 141 ++++++++++-------- src/add-ons/kernel/busses/usb/xhci.h | 6 +- src/add-ons/kernel/busses/usb/xhci_hardware.h | 2 +- 3 files changed, 80 insertions(+), 69 deletions(-) diff --git a/src/add-ons/kernel/busses/usb/xhci.cpp b/src/add-ons/kernel/busses/usb/xhci.cpp index 0ae5ce174b..9d5e590d19 100644 --- a/src/add-ons/kernel/busses/usb/xhci.cpp +++ b/src/add-ons/kernel/busses/usb/xhci.cpp @@ -509,7 +509,7 @@ XHCI::Start() TRACE("setting CRCR addr = 0x%" B_PRIxPHYSADDR "\n", dmaAddress); WriteOpReg(XHCI_CRCR_LO, (uint32)dmaAddress | CRCR_RCS); WriteOpReg(XHCI_CRCR_HI, /*(uint32)(dmaAddress >> 32)*/0); - //link trb + // link trb fCmdRing[XHCI_MAX_COMMANDS - 1].qwtrb0 = dmaAddress; TRACE("setting interrupt rate\n"); @@ -1173,14 +1173,6 @@ XHCI::AllocateDevice(Hub *parent, int8 hubAddress, uint8 hubPort, return NULL; } - for (uint32 i = 0; i < XHCI_MAX_ENDPOINTS; i++) { - struct xhci_trb *linkTrb = device->trbs + (i + 1) * XHCI_MAX_TRANSFERS - 1; - linkTrb->qwtrb0 = device->trb_addr - + i * XHCI_MAX_TRANSFERS * sizeof(xhci_trb); - linkTrb->dwtrb2 = TRB_2_IRQ(0); - linkTrb->dwtrb3 = TRB_3_CYCLE_BIT | TRB_3_TYPE(TRB_TYPE_LINK); - } - // set up slot pointer to device context fDcba->baseAddress[slot] = device->device_ctx_addr; @@ -1199,8 +1191,8 @@ XHCI::AllocateDevice(Hub *parent, int8 hubAddress, uint8 hubPort, } // configure the Control endpoint 0 (type 4) - if (ConfigureEndpoint(slot, 0, 4, device->trb_addr, 0, 1, 1, 0, - maxPacketSize, maxPacketSize, speed) != B_OK) { + if (ConfigureEndpoint(slot, 0, 4, device->trb_addr, 0, + maxPacketSize, maxPacketSize & 0x7ff, speed) != B_OK) { TRACE_ERROR("unable to configure default control endpoint\n"); device->state = XHCI_STATE_DISABLED; delete_area(device->input_ctx_area); @@ -1239,7 +1231,7 @@ XHCI::AllocateDevice(Hub *parent, int8 hubAddress, uint8 hubPort, // Create a temporary pipe with the new address ControlPipe pipe(parent); pipe.SetControllerCookie(&device->endpoints[0]); - pipe.InitCommon(device->address + 1, 0, speed, Pipe::Default, 8, 0, + pipe.InitCommon(device->address + 1, 0, speed, Pipe::Default, maxPacketSize, 0, hubAddress, hubPort); // Get the device descriptor @@ -1375,7 +1367,7 @@ XHCI::_InsertEndpointForPipe(Pipe *pipe) } uint8 id = XHCI_ENDPOINT_ID(pipe) - 1; - if (id >= XHCI_MAX_ENDPOINTS) + if (id >= XHCI_MAX_ENDPOINTS - 1) return B_BAD_VALUE; if (id > 0) { @@ -1427,7 +1419,7 @@ XHCI::_InsertEndpointForPipe(Pipe *pipe) if (ConfigureEndpoint(device->slot, id, type, device->endpoints[id].trb_addr, pipe->Interval(), - 1, 1, 0, pipe->MaxPacketSize(), pipe->MaxPacketSize(), + pipe->MaxPacketSize(), pipe->MaxPacketSize() & 0x7ff, usbDevice->Speed()) != B_OK) { TRACE_ERROR("unable to configure endpoint\n"); return B_ERROR; @@ -1468,7 +1460,7 @@ XHCI::_LinkDescriptorForPipe(xhci_td *descriptor, xhci_endpoint *endpoint) { TRACE("_LinkDescriptorForPipe\n"); MutexLocker endpointLocker(endpoint->lock); - if (endpoint->used >= XHCI_MAX_TRANSFERS) { + if (endpoint->used > XHCI_MAX_TRANSFERS) { TRACE_ERROR("_LinkDescriptorForPipe max transfers count exceeded\n"); return B_BAD_VALUE; } @@ -1481,7 +1473,7 @@ XHCI::_LinkDescriptorForPipe(xhci_td *descriptor, xhci_endpoint *endpoint) endpoint->td_head = descriptor; uint8 current = endpoint->current; - uint8 next = (current + 1) % (XHCI_MAX_TRANSFERS - 1); + uint8 next = (current + 1) % (XHCI_MAX_TRANSFERS); TRACE("_LinkDescriptorForPipe current %d, next %d\n", current, next); @@ -1537,47 +1529,65 @@ XHCI::_UnlinkDescriptorForPipe(xhci_td *descriptor, xhci_endpoint *endpoint) status_t -XHCI::ConfigureEndpoint(uint8 slot, uint8 number, uint8 type, uint64 ringAddr, uint16 interval, - uint8 maxPacketCount, uint8 mult, uint8 fpsShift, uint16 maxPacketSize, - uint16 maxFrameSize, usb_speed speed) +XHCI::ConfigureEndpoint(uint8 slot, uint8 number, uint8 type, uint64 ringAddr, + uint16 interval, uint16 maxPacketSize, uint16 maxFrameSize, usb_speed speed) { - struct xhci_device *device = &fDevices[slot]; - struct xhci_endpoint_ctx *endpoint = &device->input_ctx->endpoints[number]; + struct xhci_device* device = &fDevices[slot]; + struct xhci_endpoint_ctx* endpoint = &device->input_ctx->endpoints[number]; - if (mult == 0 || maxPacketCount == 0) - return B_BAD_VALUE; + uint8 maxBurst = (maxPacketSize & 0x1800) >> 11; + maxPacketSize = (maxPacketSize & 0x7ff); - maxPacketCount--; + endpoint->dwendpoint0 = 0; + endpoint->dwendpoint1 = 0; + endpoint->qwendpoint2 = 0; + endpoint->dwendpoint4 = 0; - endpoint->dwendpoint0 = ENDPOINT_0_STATE(0) | ENDPOINT_0_MAXPSTREAMS(0); - // add mult for isochronous and interrupt types - switch (speed) { - case USB_SPEED_LOWSPEED: - case USB_SPEED_FULLSPEED: - fpsShift += 3; - break; - default: - break; + // Assigning Interval + uint16 calcInterval = 0; + if (speed == USB_SPEED_HIGHSPEED && (type == 4 || type == 2)) { + if (interval != 0) { + while ((1< 3) - fpsShift--; - case 3: - case 7: - endpoint->dwendpoint0 |= ENDPOINT_0_INTERVAL(fpsShift); - break; - default: - break; + if ((type & 0x3) == 3 && + (speed == USB_SPEED_FULLSPEED || speed == USB_SPEED_LOWSPEED)) { + while ((1<dwendpoint1 = ENDPOINT_1_EPTYPE(type) - | ENDPOINT_1_MAXBURST(maxPacketCount) - | ENDPOINT_1_MAXPACKETSIZE(maxPacketSize) - | ENDPOINT_1_CERR(3); - endpoint->qwendpoint2 = ENDPOINT_2_DCS_BIT | ringAddr; - // 8 for Control endpoint + if ((type & 0x3) == 1 && speed == USB_SPEED_FULLSPEED) { + calcInterval = interval + 2; + } + if (((type & 0x3) == 1 || (type & 0x3) == 3) && + (speed == USB_SPEED_HIGHSPEED || speed == USB_SPEED_SUPER)) { + calcInterval = interval - 1; + } + + endpoint->dwendpoint0 |= ENDPOINT_0_INTERVAL(calcInterval); + + // Assigning CERR for non-isoch endpoints + if ((type & 0x3) != 1) { + endpoint->dwendpoint1 |= ENDPOINT_1_CERR(3); + } + + endpoint->dwendpoint1 |= ENDPOINT_1_EPTYPE(type); + + // Assigning MaxBurst for HighSpeed + if (speed == USB_SPEED_HIGHSPEED && + ((type & 0x3) == 1 || (type & 0x3) == 3)) { + endpoint->dwendpoint1 |= ENDPOINT_1_MAXBURST(maxBurst); + } + + // TODO Assign MaxBurst for SuperSpeed + + endpoint->dwendpoint1 |= ENDPOINT_1_MAXPACKETSIZE(maxPacketSize); + endpoint->qwendpoint2 |= ENDPOINT_2_DCS_BIT | ringAddr; + + // Assign MaxESITPayload + // Assign AvgTRBLength switch (type) { case 4: endpoint->dwendpoint4 = ENDPOINT_4_AVGTRBLENGTH(8); @@ -1587,10 +1597,12 @@ XHCI::ConfigureEndpoint(uint8 slot, uint8 number, uint8 type, uint64 ringAddr, u case 5: case 7: endpoint->dwendpoint4 = ENDPOINT_4_AVGTRBLENGTH(min_c(maxFrameSize, - B_PAGE_SIZE)) | ENDPOINT_4_MAXESITPAYLOAD(maxFrameSize); + B_PAGE_SIZE)) | ENDPOINT_4_MAXESITPAYLOAD(( + (maxBurst+1) * maxPacketSize)); break; default: endpoint->dwendpoint4 = ENDPOINT_4_AVGTRBLENGTH(B_PAGE_SIZE); + break; } TRACE("endpoint 0x%" B_PRIx32 " 0x%" B_PRIx32 " 0x%" B_PRIx64 " 0x%" @@ -1602,7 +1614,7 @@ XHCI::ConfigureEndpoint(uint8 slot, uint8 number, uint8 type, uint64 ringAddr, u status_t -XHCI::GetPortSpeed(uint8 index, usb_speed *speed) +XHCI::GetPortSpeed(uint8 index, usb_speed* speed) { uint32 portStatus = ReadOpReg(XHCI_PORTSC(index)); @@ -1631,7 +1643,7 @@ XHCI::GetPortSpeed(uint8 index, usb_speed *speed) status_t -XHCI::GetPortStatus(uint8 index, usb_port_status *status) +XHCI::GetPortStatus(uint8 index, usb_port_status* status) { if (index >= fPortCount) return B_BAD_INDEX; @@ -1819,9 +1831,9 @@ XHCI::ControllerReset() int32 -XHCI::InterruptHandler(void *data) +XHCI::InterruptHandler(void* data) { - return ((XHCI *)data)->Interrupt(); + return ((XHCI*)data)->Interrupt(); } @@ -1867,7 +1879,7 @@ XHCI::Ring(uint8 slot, uint8 endpoint) TRACE("Ding Dong! slot:%d endpoint %d\n", slot, endpoint) if ((slot == 0 && endpoint > 0) || (slot > 0 && endpoint == 0)) panic("Ring() invalid slot/endpoint combination\n"); - if (slot > fSlotCount || endpoint > XHCI_MAX_ENDPOINTS) + if (slot > fSlotCount || endpoint >= XHCI_MAX_ENDPOINTS) panic("Ring() invalid slot or endpoint\n"); WriteDoorReg32(XHCI_DOORBELL(slot), XHCI_DOORBELL_TARGET(endpoint) | XHCI_DOORBELL_STREAMID(0)); @@ -1877,7 +1889,7 @@ XHCI::Ring(uint8 slot, uint8 endpoint) void -XHCI::QueueCommand(xhci_trb *trb) +XHCI::QueueCommand(xhci_trb* trb) { uint8 i, j; uint32 temp; @@ -1920,7 +1932,7 @@ XHCI::QueueCommand(xhci_trb *trb) void -XHCI::HandleCmdComplete(xhci_trb *trb) +XHCI::HandleCmdComplete(xhci_trb* trb) { if (fCmdAddr == trb->qwtrb0) { TRACE("Received command event\n"); @@ -1933,7 +1945,7 @@ XHCI::HandleCmdComplete(xhci_trb *trb) void -XHCI::HandleTransferComplete(xhci_trb *trb) +XHCI::HandleTransferComplete(xhci_trb* trb) { TRACE("HandleTransferComplete trb %p\n", trb); addr_t source = trb->qwtrb0; @@ -1944,7 +1956,7 @@ XHCI::HandleTransferComplete(xhci_trb *trb) if (slot > fSlotCount) TRACE_ERROR("invalid slot\n"); - if (endpointNumber == 0 || endpointNumber > XHCI_MAX_ENDPOINTS) + if (endpointNumber == 0 || endpointNumber >= XHCI_MAX_ENDPOINTS) TRACE_ERROR("invalid endpoint\n"); xhci_device *device = &fDevices[slot]; @@ -1969,7 +1981,7 @@ XHCI::HandleTransferComplete(xhci_trb *trb) status_t -XHCI::DoCommand(xhci_trb *trb) +XHCI::DoCommand(xhci_trb* trb) { if (!Lock()) return B_ERROR; @@ -2020,7 +2032,7 @@ XHCI::Noop() status_t -XHCI::EnableSlot(uint8 *slot) +XHCI::EnableSlot(uint8* slot) { TRACE("Enable Slot\n"); xhci_trb trb; @@ -2181,7 +2193,7 @@ XHCI::CompleteEvents() while (1) { uint32 temp = fEventRing[i].dwtrb3; - TRACE_ALWAYS("event[%u] = %u (0x%016" B_PRIx64 " 0x%08" B_PRIx32 " 0x%08" + TRACE("event[%u] = %u (0x%016" B_PRIx64 " 0x%08" B_PRIx32 " 0x%08" B_PRIx32 ")\n", i, (uint8)TRB_3_TYPE_GET(temp), fEventRing[i].qwtrb0, fEventRing[i].dwtrb2, fEventRing[i].dwtrb3); uint8 k = (temp & TRB_3_CYCLE_BIT) ? 1 : 0; @@ -2320,6 +2332,7 @@ XHCI::FinishTransfers() } } + inline void XHCI::WriteOpReg(uint32 reg, uint32 value) { diff --git a/src/add-ons/kernel/busses/usb/xhci.h b/src/add-ons/kernel/busses/usb/xhci.h index dab94cb541..fc2d028e19 100644 --- a/src/add-ons/kernel/busses/usb/xhci.h +++ b/src/add-ons/kernel/busses/usb/xhci.h @@ -102,10 +102,8 @@ public: usb_speed speed); status_t ConfigureEndpoint(uint8 slot, uint8 number, uint8 type, uint64 ringAddr, - uint16 interval, uint8 maxPacketCount, - uint8 mult, uint8 fpsShift, - uint16 maxPacketSize, uint16 maxFrameSize, - usb_speed speed); + uint16 interval, uint16 maxPacketSize, + uint16 maxFrameSize, usb_speed speed); virtual void FreeDevice(Device *device); status_t _InsertEndpointForPipe(Pipe *pipe); diff --git a/src/add-ons/kernel/busses/usb/xhci_hardware.h b/src/add-ons/kernel/busses/usb/xhci_hardware.h index 1f53eb68e4..83203660b1 100644 --- a/src/add-ons/kernel/busses/usb/xhci_hardware.h +++ b/src/add-ons/kernel/busses/usb/xhci_hardware.h @@ -281,7 +281,7 @@ #define XHCI_MAX_ENDPOINTS 32 #define XHCI_MAX_SCRATCHPADS 32 #define XHCI_MAX_DEVICES 128 -#define XHCI_MAX_TRANSFERS 4 +#define XHCI_MAX_TRANSFERS 8 #define XHCI_MAX_TRBS_PER_TD 18 From 2839ab9cdad24e7bdf5fa30c2f8ee34589e69c6e Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Wed, 30 Dec 2015 08:06:52 -0500 Subject: [PATCH 014/242] ACPICA: Exclude from build & delete utclib.c. ACPI_USE_SYSTEM_CLIBRARY is/has been defined, so it isn't used. --- src/add-ons/kernel/bus_managers/acpi/Jamfile | 1 - .../acpi/acpica/components/utilities/utclib.c | 990 ------------------ 2 files changed, 991 deletions(-) delete mode 100644 src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utclib.c diff --git a/src/add-ons/kernel/bus_managers/acpi/Jamfile b/src/add-ons/kernel/bus_managers/acpi/Jamfile index 03bab0d934..95f06c2ded 100644 --- a/src/add-ons/kernel/bus_managers/acpi/Jamfile +++ b/src/add-ons/kernel/bus_managers/acpi/Jamfile @@ -165,7 +165,6 @@ local utilities_src = utalloc.c utbuffer.c utcache.c - utclib.c utcopy.c utdecode.c utdebug.c diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utclib.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utclib.c deleted file mode 100644 index 5c62672e50..0000000000 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utclib.c +++ /dev/null @@ -1,990 +0,0 @@ -/****************************************************************************** - * - * Module Name: utclib - ACPICA implementations of C library functions - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#define ACPI_CLIBRARY -#include "acpi.h" -#include "accommon.h" - -/* - * This module contains implementations of the standard C library functions - * that are required by the ACPICA code at both application level and kernel - * level. - * - * The module is an optional feature that can be used if a local/system - * C library is not available. Some operating system kernels may not have - * an internal C library. - * - * In general, these functions are less efficient than an inline or assembly - * code implementation. - * - * These C functions and the associated prototypes are enabled by default - * unless the ACPI_USE_SYSTEM_CLIBRARY symbol is defined. This is usually - * automatically defined for the ACPICA applications such as iASL and - * AcpiExec, so that these user-level applications use the local C library - * instead of the functions in this module. - */ - -/******************************************************************************* - * - * Functions implemented in this module: - * - * FUNCTION: memcmp - * FUNCTION: memcpy - * FUNCTION: memset - * FUNCTION: strlen - * FUNCTION: strcpy - * FUNCTION: strncpy - * FUNCTION: strcmp - * FUNCTION: strchr - * FUNCTION: strncmp - * FUNCTION: strcat - * FUNCTION: strncat - * FUNCTION: strstr - * FUNCTION: strtoul - * FUNCTION: toupper - * FUNCTION: tolower - * FUNCTION: is* functions - * - ******************************************************************************/ - -#define _COMPONENT ACPI_UTILITIES - ACPI_MODULE_NAME ("utclib") - - -#ifndef ACPI_USE_SYSTEM_CLIBRARY /* Entire module */ - - -/******************************************************************************* - * - * FUNCTION: memcmp - * - * PARAMETERS: Buffer1 - First Buffer - * Buffer2 - Second Buffer - * Count - Maximum # of bytes to compare - * - * RETURN: Index where Buffers mismatched, or 0 if Buffers matched - * - * DESCRIPTION: Compare two Buffers, with a maximum length - * - ******************************************************************************/ - -int -memcmp ( - void *VBuffer1, - void *VBuffer2, - ACPI_SIZE Count) -{ - char *Buffer1 = (char *) VBuffer1; - char *Buffer2 = (char *) VBuffer2; - - - for ( ; Count-- && (*Buffer1 == *Buffer2); Buffer1++, Buffer2++) - { - } - - return ((Count == ACPI_SIZE_MAX) ? 0 : ((unsigned char) *Buffer1 - - (unsigned char) *Buffer2)); -} - - -/******************************************************************************* - * - * FUNCTION: memcpy - * - * PARAMETERS: Dest - Target of the copy - * Src - Source buffer to copy - * Count - Number of bytes to copy - * - * RETURN: Dest - * - * DESCRIPTION: Copy arbitrary bytes of memory - * - ******************************************************************************/ - -void * -memcpy ( - void *Dest, - const void *Src, - ACPI_SIZE Count) -{ - char *New = (char *) Dest; - char *Old = (char *) Src; - - - while (Count) - { - *New = *Old; - New++; - Old++; - Count--; - } - - return (Dest); -} - - -/******************************************************************************* - * - * FUNCTION: memset - * - * PARAMETERS: Dest - Buffer to set - * Value - Value to set each byte of memory - * Count - Number of bytes to set - * - * RETURN: Dest - * - * DESCRIPTION: Initialize a buffer to a known value. - * - ******************************************************************************/ - -void * -memset ( - void *Dest, - int Value, - ACPI_SIZE Count) -{ - char *New = (char *) Dest; - - - while (Count) - { - *New = (char) Value; - New++; - Count--; - } - - return (Dest); -} - - -/******************************************************************************* - * - * FUNCTION: strlen - * - * PARAMETERS: String - Null terminated string - * - * RETURN: Length - * - * DESCRIPTION: Returns the length of the input string - * - ******************************************************************************/ - - -ACPI_SIZE -strlen ( - const char *String) -{ - UINT32 Length = 0; - - - /* Count the string until a null is encountered */ - - while (*String) - { - Length++; - String++; - } - - return (Length); -} - - -/******************************************************************************* - * - * FUNCTION: strcpy - * - * PARAMETERS: DstString - Target of the copy - * SrcString - The source string to copy - * - * RETURN: DstString - * - * DESCRIPTION: Copy a null terminated string - * - ******************************************************************************/ - -char * -strcpy ( - char *DstString, - const char *SrcString) -{ - char *String = DstString; - - - /* Move bytes brute force */ - - while (*SrcString) - { - *String = *SrcString; - - String++; - SrcString++; - } - - /* Null terminate */ - - *String = 0; - return (DstString); -} - - -/******************************************************************************* - * - * FUNCTION: strncpy - * - * PARAMETERS: DstString - Target of the copy - * SrcString - The source string to copy - * Count - Maximum # of bytes to copy - * - * RETURN: DstString - * - * DESCRIPTION: Copy a null terminated string, with a maximum length - * - ******************************************************************************/ - -char * -strncpy ( - char *DstString, - const char *SrcString, - ACPI_SIZE Count) -{ - char *String = DstString; - - - /* Copy the string */ - - for (String = DstString; - Count && (Count--, (*String++ = *SrcString++)); ) - {;} - - /* Pad with nulls if necessary */ - - while (Count--) - { - *String = 0; - String++; - } - - /* Return original pointer */ - - return (DstString); -} - - -/******************************************************************************* - * - * FUNCTION: strcmp - * - * PARAMETERS: String1 - First string - * String2 - Second string - * - * RETURN: Index where strings mismatched, or 0 if strings matched - * - * DESCRIPTION: Compare two null terminated strings - * - ******************************************************************************/ - -int -strcmp ( - const char *String1, - const char *String2) -{ - - - for ( ; (*String1 == *String2); String2++) - { - if (!*String1++) - { - return (0); - } - } - - return ((unsigned char) *String1 - (unsigned char) *String2); -} - - -/******************************************************************************* - * - * FUNCTION: strchr - * - * PARAMETERS: String - Search string - * ch - character to search for - * - * RETURN: Ptr to char or NULL if not found - * - * DESCRIPTION: Search a string for a character - * - ******************************************************************************/ - -char * -strchr ( - const char *String, - int ch) -{ - - - for ( ; (*String); String++) - { - if ((*String) == (char) ch) - { - return ((char *) String); - } - } - - return (NULL); -} - - -/******************************************************************************* - * - * FUNCTION: strncmp - * - * PARAMETERS: String1 - First string - * String2 - Second string - * Count - Maximum # of bytes to compare - * - * RETURN: Index where strings mismatched, or 0 if strings matched - * - * DESCRIPTION: Compare two null terminated strings, with a maximum length - * - ******************************************************************************/ - -int -strncmp ( - const char *String1, - const char *String2, - ACPI_SIZE Count) -{ - - - for ( ; Count-- && (*String1 == *String2); String2++) - { - if (!*String1++) - { - return (0); - } - } - - return ((Count == ACPI_SIZE_MAX) ? 0 : ((unsigned char) *String1 - - (unsigned char) *String2)); -} - - -/******************************************************************************* - * - * FUNCTION: strcat - * - * PARAMETERS: DstString - Target of the copy - * SrcString - The source string to copy - * - * RETURN: DstString - * - * DESCRIPTION: Append a null terminated string to a null terminated string - * - ******************************************************************************/ - -char * -strcat ( - char *DstString, - const char *SrcString) -{ - char *String; - - - /* Find end of the destination string */ - - for (String = DstString; *String++; ) - { ; } - - /* Concatenate the string */ - - for (--String; (*String++ = *SrcString++); ) - { ; } - - return (DstString); -} - - -/******************************************************************************* - * - * FUNCTION: strncat - * - * PARAMETERS: DstString - Target of the copy - * SrcString - The source string to copy - * Count - Maximum # of bytes to copy - * - * RETURN: DstString - * - * DESCRIPTION: Append a null terminated string to a null terminated string, - * with a maximum count. - * - ******************************************************************************/ - -char * -strncat ( - char *DstString, - const char *SrcString, - ACPI_SIZE Count) -{ - char *String; - - - if (Count) - { - /* Find end of the destination string */ - - for (String = DstString; *String++; ) - { ; } - - /* Concatenate the string */ - - for (--String; (*String++ = *SrcString++) && --Count; ) - { ; } - - /* Null terminate if necessary */ - - if (!Count) - { - *String = 0; - } - } - - return (DstString); -} - - -/******************************************************************************* - * - * FUNCTION: strstr - * - * PARAMETERS: String1 - Target string - * String2 - Substring to search for - * - * RETURN: Where substring match starts, Null if no match found - * - * DESCRIPTION: Checks if String2 occurs in String1. This is not really a - * full implementation of strstr, only sufficient for command - * matching - * - ******************************************************************************/ - -char * -strstr ( - char *String1, - char *String2) -{ - UINT32 Length; - - - Length = strlen (String2); - if (!Length) - { - return (String1); - } - - while (strlen (String1) >= Length) - { - if (memcmp (String1, String2, Length) == 0) - { - return (String1); - } - String1++; - } - - return (NULL); -} - - -/******************************************************************************* - * - * FUNCTION: strtoul - * - * PARAMETERS: String - Null terminated string - * Terminater - Where a pointer to the terminating byte is - * returned - * Base - Radix of the string - * - * RETURN: Converted value - * - * DESCRIPTION: Convert a string into a 32-bit unsigned value. - * Note: use strtoul64 for 64-bit integers. - * - ******************************************************************************/ - -UINT32 -strtoul ( - const char *String, - char **Terminator, - UINT32 Base) -{ - UINT32 converted = 0; - UINT32 index; - UINT32 sign; - const char *StringStart; - UINT32 ReturnValue = 0; - ACPI_STATUS Status = AE_OK; - - - /* - * Save the value of the pointer to the buffer's first - * character, save the current errno value, and then - * skip over any white space in the buffer: - */ - StringStart = String; - while (isspace (*String) || *String == '\t') - { - ++String; - } - - /* - * The buffer may contain an optional plus or minus sign. - * If it does, then skip over it but remember what is was: - */ - if (*String == '-') - { - sign = ACPI_SIGN_NEGATIVE; - ++String; - } - else if (*String == '+') - { - ++String; - sign = ACPI_SIGN_POSITIVE; - } - else - { - sign = ACPI_SIGN_POSITIVE; - } - - /* - * If the input parameter Base is zero, then we need to - * determine if it is octal, decimal, or hexadecimal: - */ - if (Base == 0) - { - if (*String == '0') - { - if (tolower (*(++String)) == 'x') - { - Base = 16; - ++String; - } - else - { - Base = 8; - } - } - else - { - Base = 10; - } - } - else if (Base < 2 || Base > 36) - { - /* - * The specified Base parameter is not in the domain of - * this function: - */ - goto done; - } - - /* - * For octal and hexadecimal bases, skip over the leading - * 0 or 0x, if they are present. - */ - if (Base == 8 && *String == '0') - { - String++; - } - - if (Base == 16 && - *String == '0' && - tolower (*(++String)) == 'x') - { - String++; - } - - /* - * Main loop: convert the string to an unsigned long: - */ - while (*String) - { - if (isdigit (*String)) - { - index = (UINT32) ((UINT8) *String - '0'); - } - else - { - index = (UINT32) toupper (*String); - if (isupper (index)) - { - index = index - 'A' + 10; - } - else - { - goto done; - } - } - - if (index >= Base) - { - goto done; - } - - /* - * Check to see if value is out of range: - */ - - if (ReturnValue > ((ACPI_UINT32_MAX - (UINT32) index) / - (UINT32) Base)) - { - Status = AE_ERROR; - ReturnValue = 0; /* reset */ - } - else - { - ReturnValue *= Base; - ReturnValue += index; - converted = 1; - } - - ++String; - } - -done: - /* - * If appropriate, update the caller's pointer to the next - * unconverted character in the buffer. - */ - if (Terminator) - { - if (converted == 0 && ReturnValue == 0 && String != NULL) - { - *Terminator = (char *) StringStart; - } - else - { - *Terminator = (char *) String; - } - } - - if (Status == AE_ERROR) - { - ReturnValue = ACPI_UINT32_MAX; - } - - /* - * If a minus sign was present, then "the conversion is negated": - */ - if (sign == ACPI_SIGN_NEGATIVE) - { - ReturnValue = (ACPI_UINT32_MAX - ReturnValue) + 1; - } - - return (ReturnValue); -} - - -/******************************************************************************* - * - * FUNCTION: toupper - * - * PARAMETERS: c - Character to convert - * - * RETURN: Converted character as an int - * - * DESCRIPTION: Convert character to uppercase - * - ******************************************************************************/ - -int -toupper ( - int c) -{ - - return (islower(c) ? ((c)-0x20) : (c)); -} - - -/******************************************************************************* - * - * FUNCTION: tolower - * - * PARAMETERS: c - Character to convert - * - * RETURN: Converted character as an int - * - * DESCRIPTION: Convert character to lowercase - * - ******************************************************************************/ - -int -tolower ( - int c) -{ - - return (isupper(c) ? ((c)+0x20) : (c)); -} - - -/******************************************************************************* - * - * FUNCTION: is* function array - * - * DESCRIPTION: is* functions use the ctype table below - * - ******************************************************************************/ - -const UINT8 AcpiGbl_Ctypes[257] = { - _ACPI_CN, /* 0x00 0 NUL */ - _ACPI_CN, /* 0x01 1 SOH */ - _ACPI_CN, /* 0x02 2 STX */ - _ACPI_CN, /* 0x03 3 ETX */ - _ACPI_CN, /* 0x04 4 EOT */ - _ACPI_CN, /* 0x05 5 ENQ */ - _ACPI_CN, /* 0x06 6 ACK */ - _ACPI_CN, /* 0x07 7 BEL */ - _ACPI_CN, /* 0x08 8 BS */ - _ACPI_CN|_ACPI_SP, /* 0x09 9 TAB */ - _ACPI_CN|_ACPI_SP, /* 0x0A 10 LF */ - _ACPI_CN|_ACPI_SP, /* 0x0B 11 VT */ - _ACPI_CN|_ACPI_SP, /* 0x0C 12 FF */ - _ACPI_CN|_ACPI_SP, /* 0x0D 13 CR */ - _ACPI_CN, /* 0x0E 14 SO */ - _ACPI_CN, /* 0x0F 15 SI */ - _ACPI_CN, /* 0x10 16 DLE */ - _ACPI_CN, /* 0x11 17 DC1 */ - _ACPI_CN, /* 0x12 18 DC2 */ - _ACPI_CN, /* 0x13 19 DC3 */ - _ACPI_CN, /* 0x14 20 DC4 */ - _ACPI_CN, /* 0x15 21 NAK */ - _ACPI_CN, /* 0x16 22 SYN */ - _ACPI_CN, /* 0x17 23 ETB */ - _ACPI_CN, /* 0x18 24 CAN */ - _ACPI_CN, /* 0x19 25 EM */ - _ACPI_CN, /* 0x1A 26 SUB */ - _ACPI_CN, /* 0x1B 27 ESC */ - _ACPI_CN, /* 0x1C 28 FS */ - _ACPI_CN, /* 0x1D 29 GS */ - _ACPI_CN, /* 0x1E 30 RS */ - _ACPI_CN, /* 0x1F 31 US */ - _ACPI_XS|_ACPI_SP, /* 0x20 32 ' ' */ - _ACPI_PU, /* 0x21 33 '!' */ - _ACPI_PU, /* 0x22 34 '"' */ - _ACPI_PU, /* 0x23 35 '#' */ - _ACPI_PU, /* 0x24 36 '$' */ - _ACPI_PU, /* 0x25 37 '%' */ - _ACPI_PU, /* 0x26 38 '&' */ - _ACPI_PU, /* 0x27 39 ''' */ - _ACPI_PU, /* 0x28 40 '(' */ - _ACPI_PU, /* 0x29 41 ')' */ - _ACPI_PU, /* 0x2A 42 '*' */ - _ACPI_PU, /* 0x2B 43 '+' */ - _ACPI_PU, /* 0x2C 44 ',' */ - _ACPI_PU, /* 0x2D 45 '-' */ - _ACPI_PU, /* 0x2E 46 '.' */ - _ACPI_PU, /* 0x2F 47 '/' */ - _ACPI_XD|_ACPI_DI, /* 0x30 48 '0' */ - _ACPI_XD|_ACPI_DI, /* 0x31 49 '1' */ - _ACPI_XD|_ACPI_DI, /* 0x32 50 '2' */ - _ACPI_XD|_ACPI_DI, /* 0x33 51 '3' */ - _ACPI_XD|_ACPI_DI, /* 0x34 52 '4' */ - _ACPI_XD|_ACPI_DI, /* 0x35 53 '5' */ - _ACPI_XD|_ACPI_DI, /* 0x36 54 '6' */ - _ACPI_XD|_ACPI_DI, /* 0x37 55 '7' */ - _ACPI_XD|_ACPI_DI, /* 0x38 56 '8' */ - _ACPI_XD|_ACPI_DI, /* 0x39 57 '9' */ - _ACPI_PU, /* 0x3A 58 ':' */ - _ACPI_PU, /* 0x3B 59 ';' */ - _ACPI_PU, /* 0x3C 60 '<' */ - _ACPI_PU, /* 0x3D 61 '=' */ - _ACPI_PU, /* 0x3E 62 '>' */ - _ACPI_PU, /* 0x3F 63 '?' */ - _ACPI_PU, /* 0x40 64 '@' */ - _ACPI_XD|_ACPI_UP, /* 0x41 65 'A' */ - _ACPI_XD|_ACPI_UP, /* 0x42 66 'B' */ - _ACPI_XD|_ACPI_UP, /* 0x43 67 'C' */ - _ACPI_XD|_ACPI_UP, /* 0x44 68 'D' */ - _ACPI_XD|_ACPI_UP, /* 0x45 69 'E' */ - _ACPI_XD|_ACPI_UP, /* 0x46 70 'F' */ - _ACPI_UP, /* 0x47 71 'G' */ - _ACPI_UP, /* 0x48 72 'H' */ - _ACPI_UP, /* 0x49 73 'I' */ - _ACPI_UP, /* 0x4A 74 'J' */ - _ACPI_UP, /* 0x4B 75 'K' */ - _ACPI_UP, /* 0x4C 76 'L' */ - _ACPI_UP, /* 0x4D 77 'M' */ - _ACPI_UP, /* 0x4E 78 'N' */ - _ACPI_UP, /* 0x4F 79 'O' */ - _ACPI_UP, /* 0x50 80 'P' */ - _ACPI_UP, /* 0x51 81 'Q' */ - _ACPI_UP, /* 0x52 82 'R' */ - _ACPI_UP, /* 0x53 83 'S' */ - _ACPI_UP, /* 0x54 84 'T' */ - _ACPI_UP, /* 0x55 85 'U' */ - _ACPI_UP, /* 0x56 86 'V' */ - _ACPI_UP, /* 0x57 87 'W' */ - _ACPI_UP, /* 0x58 88 'X' */ - _ACPI_UP, /* 0x59 89 'Y' */ - _ACPI_UP, /* 0x5A 90 'Z' */ - _ACPI_PU, /* 0x5B 91 '[' */ - _ACPI_PU, /* 0x5C 92 '\' */ - _ACPI_PU, /* 0x5D 93 ']' */ - _ACPI_PU, /* 0x5E 94 '^' */ - _ACPI_PU, /* 0x5F 95 '_' */ - _ACPI_PU, /* 0x60 96 '`' */ - _ACPI_XD|_ACPI_LO, /* 0x61 97 'a' */ - _ACPI_XD|_ACPI_LO, /* 0x62 98 'b' */ - _ACPI_XD|_ACPI_LO, /* 0x63 99 'c' */ - _ACPI_XD|_ACPI_LO, /* 0x64 100 'd' */ - _ACPI_XD|_ACPI_LO, /* 0x65 101 'e' */ - _ACPI_XD|_ACPI_LO, /* 0x66 102 'f' */ - _ACPI_LO, /* 0x67 103 'g' */ - _ACPI_LO, /* 0x68 104 'h' */ - _ACPI_LO, /* 0x69 105 'i' */ - _ACPI_LO, /* 0x6A 106 'j' */ - _ACPI_LO, /* 0x6B 107 'k' */ - _ACPI_LO, /* 0x6C 108 'l' */ - _ACPI_LO, /* 0x6D 109 'm' */ - _ACPI_LO, /* 0x6E 110 'n' */ - _ACPI_LO, /* 0x6F 111 'o' */ - _ACPI_LO, /* 0x70 112 'p' */ - _ACPI_LO, /* 0x71 113 'q' */ - _ACPI_LO, /* 0x72 114 'r' */ - _ACPI_LO, /* 0x73 115 's' */ - _ACPI_LO, /* 0x74 116 't' */ - _ACPI_LO, /* 0x75 117 'u' */ - _ACPI_LO, /* 0x76 118 'v' */ - _ACPI_LO, /* 0x77 119 'w' */ - _ACPI_LO, /* 0x78 120 'x' */ - _ACPI_LO, /* 0x79 121 'y' */ - _ACPI_LO, /* 0x7A 122 'z' */ - _ACPI_PU, /* 0x7B 123 '{' */ - _ACPI_PU, /* 0x7C 124 '|' */ - _ACPI_PU, /* 0x7D 125 '}' */ - _ACPI_PU, /* 0x7E 126 '~' */ - _ACPI_CN, /* 0x7F 127 DEL */ - - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x80 to 0x8F */ - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x90 to 0x9F */ - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0xA0 to 0xAF */ - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0xB0 to 0xBF */ - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0xC0 to 0xCF */ - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0xD0 to 0xDF */ - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0xE0 to 0xEF */ - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0xF0 to 0xFF */ - 0 /* 0x100 */ -}; - - -#endif /* ACPI_USE_SYSTEM_CLIBRARY */ From 57346752bb128f5cf4d2d72f18bf891f461dfb45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Revol?= Date: Wed, 30 Dec 2015 19:56:01 +0100 Subject: [PATCH 015/242] listfont: remove (broken) check for R5 bug --- src/bin/listfont.cpp | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/bin/listfont.cpp b/src/bin/listfont.cpp index 6daf02547a..bcd15dcc53 100644 --- a/src/bin/listfont.cpp +++ b/src/bin/listfont.cpp @@ -133,10 +133,6 @@ main(int argc, char **argv) if ((flags & B_IS_FIXED) != 0) printf("fixed"); -#if B_BEOS_VERSION == B_BEOS_VERSION_5 - /* seems R5 is broken there :-( locks up on 'a> recv' */ - printf("\t%s", (flags & B_HAS_TUNED_FONT) != 0 ? "hastuned " : ""); -#else if ((flags & B_HAS_TUNED_FONT) != 0) { if (displayTuned) printf("\n "); @@ -157,7 +153,6 @@ main(int argc, char **argv) } } } -#endif putchar('\n'); } } From ccb3f7e7a0ec921bbe2f6756b4b8dfebd7af5f0a Mon Sep 17 00:00:00 2001 From: Automatic Committer Date: Thu, 31 Dec 2015 05:20:29 +0100 Subject: [PATCH 016/242] Update pci.ids from pciids.sourceforge.net --- src/data/ids/pci.ids | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/data/ids/pci.ids b/src/data/ids/pci.ids index b19a39ff97..00c157be90 100644 --- a/src/data/ids/pci.ids +++ b/src/data/ids/pci.ids @@ -1,8 +1,8 @@ # # List of PCI ID's # -# Version: 2015.12.24 -# Date: 2015-12-24 03:15:02 +# Version: 2015.12.25 +# Date: 2015-12-25 03:15:01 # # Maintained by Albert Pool, Martin Mares, and other volunteers from # the PCI ID Project at http://pci-ids.ucw.cz/. @@ -18041,8 +18041,10 @@ 1a56 2000 Killer Wireless-N 1102 Half-size Mini PCIe Card [AR9382] 1a56 2001 Killer Wireless-N 1103 Half-size Mini PCIe Card [AR9380] 0032 AR9485 Wireless Network Adapter + 1028 0208 Wireless 1506 WLAN Half Mini-Card 103c 1838 AR9485/HB125 802.11bgn 1×1 Wi-Fi Adapter 105b e044 Unex DHXA-225 + 1a3b 1186 AW-NE186H 0033 AR9580 Wireless Network Adapter 0034 AR9462 Wireless Network Adapter 1a56 2003 Killer Wireless-N 1202 Half-size Mini PCIe Card From 8113bbfe40ac11df601f9e581b502ef0f9ab4c0e Mon Sep 17 00:00:00 2001 From: Jessica Hamilton Date: Tue, 29 Dec 2015 17:43:24 +1300 Subject: [PATCH 017/242] ffmpeg addon: only use swresample for planar audio. Fixes #12547. --- .../media/plugins/ffmpeg/AVCodecDecoder.cpp | 43 +++++++++++-------- src/add-ons/media/plugins/ffmpeg/Utilities.h | 16 +++++++ 2 files changed, 41 insertions(+), 18 deletions(-) diff --git a/src/add-ons/media/plugins/ffmpeg/AVCodecDecoder.cpp b/src/add-ons/media/plugins/ffmpeg/AVCodecDecoder.cpp index c162b13491..69e405b577 100644 --- a/src/add-ons/media/plugins/ffmpeg/AVCodecDecoder.cpp +++ b/src/add-ons/media/plugins/ffmpeg/AVCodecDecoder.cpp @@ -408,12 +408,14 @@ AVCodecDecoder::_NegotiateAudioOutputFormat(media_format* inOutFormat) if (fRawDecodedAudio->opaque == NULL) return B_NO_MEMORY; - fResampleContext = swr_alloc_set_opts(NULL, - fContext->channel_layout, fContext->request_sample_fmt, - fContext->sample_rate, - fContext->channel_layout, fContext->sample_fmt, fContext->sample_rate, - 0, NULL); - swr_init(fResampleContext); + if (AVSampleFormatIsPlanar(fContext->sample_fmt)) { + fResampleContext = swr_alloc_set_opts(NULL, + fContext->channel_layout, fContext->request_sample_fmt, + fContext->sample_rate, + fContext->channel_layout, fContext->sample_fmt, fContext->sample_rate, + 0, NULL); + swr_init(fResampleContext); + } TRACE(" bit_rate = %d, sample_rate = %d, channels = %d, " "output frame size: %d, count: %ld, rate: %.2f\n", @@ -923,24 +925,29 @@ AVCodecDecoder::_MoveAudioFramesToRawDecodedAudioAndUpdateStartTimes() // "planar" audio (each channel separated instead of interleaved samples). // In that case, we use swresample to convert the data (and it is // smart enough to do just a copy, when possible) - const uint8_t* ptr[8]; - for (int i = 0; i < 8; i++) { - if (fDecodedDataBuffer->data[i] == NULL) - ptr[i] = NULL; - else - ptr[i] = fDecodedDataBuffer->data[i] + fDecodedDataBufferOffset; - } + if (AVSampleFormatIsPlanar(fContext->sample_fmt)) { + const uint8_t* ptr[8]; + for (int i = 0; i < 8; i++) { + if (fDecodedDataBuffer->data[i] == NULL) + ptr[i] = NULL; + else + ptr[i] = fDecodedDataBuffer->data[i] + fDecodedDataBufferOffset; + } - int32 result = swr_convert(fResampleContext, fRawDecodedAudio->data, - outFrames, ptr, inFrames); + int32 result = swr_convert(fResampleContext, fRawDecodedAudio->data, + outFrames, ptr, inFrames); + + if (result < 0) + debugger("resampling failed"); + } else { + memcpy(fRawDecodedAudio->data[0], fDecodedDataBuffer->data[0] + + fDecodedDataBufferOffset, frames * fOutputFrameSize); + } size_t remainingSize = inFrames * fOutputFrameSize; size_t decodedSize = outFrames * fOutputFrameSize; fDecodedDataBufferSize -= inFrames; - if (result < 0) - debugger("resampling failed"); - bool firstAudioFramesCopiedToRawDecodedAudio = fRawDecodedAudio->data[0] != fDecodedData; if (!firstAudioFramesCopiedToRawDecodedAudio) { diff --git a/src/add-ons/media/plugins/ffmpeg/Utilities.h b/src/add-ons/media/plugins/ffmpeg/Utilities.h index 209bd1eb17..3a9e0e405f 100644 --- a/src/add-ons/media/plugins/ffmpeg/Utilities.h +++ b/src/add-ons/media/plugins/ffmpeg/Utilities.h @@ -317,4 +317,20 @@ ConvertAVSampleFormatToRawAudioFormat(AVSampleFormat sampleFormatIn, } +inline bool +AVSampleFormatIsPlanar(AVSampleFormat sampleFormat) +{ + switch (sampleFormat) { + case AV_SAMPLE_FMT_FLTP: + case AV_SAMPLE_FMT_DBLP: + case AV_SAMPLE_FMT_S32P: + case AV_SAMPLE_FMT_S16P: + case AV_SAMPLE_FMT_U8P: + return true; + default: + return false; + } +} + + #endif // UTILITIES_H From 2c499439807d903b42a746b7fcb3ef7bcff18d5a Mon Sep 17 00:00:00 2001 From: Adrien Destugues Date: Thu, 31 Dec 2015 16:16:51 +0100 Subject: [PATCH 018/242] Use the existing ffmpeg function to decide if a format is planar. --- .../media/plugins/ffmpeg/AVCodecDecoder.cpp | 17 +++++------------ src/add-ons/media/plugins/ffmpeg/Utilities.h | 16 ---------------- 2 files changed, 5 insertions(+), 28 deletions(-) diff --git a/src/add-ons/media/plugins/ffmpeg/AVCodecDecoder.cpp b/src/add-ons/media/plugins/ffmpeg/AVCodecDecoder.cpp index 69e405b577..99357f1dac 100644 --- a/src/add-ons/media/plugins/ffmpeg/AVCodecDecoder.cpp +++ b/src/add-ons/media/plugins/ffmpeg/AVCodecDecoder.cpp @@ -408,7 +408,7 @@ AVCodecDecoder::_NegotiateAudioOutputFormat(media_format* inOutFormat) if (fRawDecodedAudio->opaque == NULL) return B_NO_MEMORY; - if (AVSampleFormatIsPlanar(fContext->sample_fmt)) { + if (av_sample_fmt_is_planar(fContext->sample_fmt)) { fResampleContext = swr_alloc_set_opts(NULL, fContext->channel_layout, fContext->request_sample_fmt, fContext->sample_rate, @@ -913,19 +913,10 @@ AVCodecDecoder::_MoveAudioFramesToRawDecodedAudioAndUpdateStartTimes() if (frames == 0) debugger("fDecodedDataBufferSize not multiple of frame size!"); - // The old version of libswresample available for gcc2 gets confused when - // the frame counts for inout and output don't match. So, we use it with - // equal frame counts (but it can still perform re-matrixing of the audio). -#if LIBSWRESAMPLE_VERSION_INT <= AV_VERSION_INT(0, 6, 100) - outFrames = frames; - inFrames = frames; -#endif - // Some decoders do not support format conversion on themselves, or use // "planar" audio (each channel separated instead of interleaved samples). - // In that case, we use swresample to convert the data (and it is - // smart enough to do just a copy, when possible) - if (AVSampleFormatIsPlanar(fContext->sample_fmt)) { + // In that case, we use swresample to convert the data + if (av_sample_fmt_is_planar(fContext->sample_fmt)) { const uint8_t* ptr[8]; for (int i = 0; i < 8; i++) { if (fDecodedDataBuffer->data[i] == NULL) @@ -942,6 +933,8 @@ AVCodecDecoder::_MoveAudioFramesToRawDecodedAudioAndUpdateStartTimes() } else { memcpy(fRawDecodedAudio->data[0], fDecodedDataBuffer->data[0] + fDecodedDataBufferOffset, frames * fOutputFrameSize); + outFrames = frames; + inFrames = frames; } size_t remainingSize = inFrames * fOutputFrameSize; diff --git a/src/add-ons/media/plugins/ffmpeg/Utilities.h b/src/add-ons/media/plugins/ffmpeg/Utilities.h index 3a9e0e405f..209bd1eb17 100644 --- a/src/add-ons/media/plugins/ffmpeg/Utilities.h +++ b/src/add-ons/media/plugins/ffmpeg/Utilities.h @@ -317,20 +317,4 @@ ConvertAVSampleFormatToRawAudioFormat(AVSampleFormat sampleFormatIn, } -inline bool -AVSampleFormatIsPlanar(AVSampleFormat sampleFormat) -{ - switch (sampleFormat) { - case AV_SAMPLE_FMT_FLTP: - case AV_SAMPLE_FMT_DBLP: - case AV_SAMPLE_FMT_S32P: - case AV_SAMPLE_FMT_S16P: - case AV_SAMPLE_FMT_U8P: - return true; - default: - return false; - } -} - - #endif // UTILITIES_H From aa89e2de03d7673d6068cc24a043639fdcacb93e Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Thu, 31 Dec 2015 16:36:38 -0500 Subject: [PATCH 019/242] ACPI: Use AcpiGbl_OverrideDefaultRegionHandlers and do the init ourselves. May help with the recent boot failures, according to a post on the ACPICA-dev mailing list. --- .../kernel/bus_managers/acpi/BusManager.cpp | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/add-ons/kernel/bus_managers/acpi/BusManager.cpp b/src/add-ons/kernel/bus_managers/acpi/BusManager.cpp index 48254f76d6..5c65f87d10 100644 --- a/src/add-ons/kernel/bus_managers/acpi/BusManager.cpp +++ b/src/add-ons/kernel/bus_managers/acpi/BusManager.cpp @@ -185,6 +185,7 @@ acpi_std_ops(int32 op,...) void *settings; bool acpiDisabled = false; AcpiGbl_CopyDsdtLocally = true; + AcpiGbl_OverrideDefaultRegionHandlers = true; settings = load_driver_settings("kernel"); if (settings != NULL) { @@ -223,6 +224,25 @@ acpi_std_ops(int32 op,...) "AcpiInitializeSubsystem failed")) goto err; + /* Install the default address space handlers. */ + if (checkAndLogFailure(AcpiInstallAddressSpaceHandler( + ACPI_ROOT_OBJECT, ACPI_ADR_SPACE_SYSTEM_MEMORY, + ACPI_DEFAULT_HANDLER, NULL, NULL), + "Could not initialise SystemMemory handler:")) + goto err; + + if (checkAndLogFailure(AcpiInstallAddressSpaceHandler( + ACPI_ROOT_OBJECT, ACPI_ADR_SPACE_SYSTEM_IO, + ACPI_DEFAULT_HANDLER, NULL, NULL), + "Could not initialise SystemIO handler:")) + goto err; + + if (checkAndLogFailure(AcpiInstallAddressSpaceHandler( + ACPI_ROOT_OBJECT, ACPI_ADR_SPACE_PCI_CONFIG, + ACPI_DEFAULT_HANDLER, NULL, NULL), + "Could not initialise PciConfig handler:")) + goto err; + if (checkAndLogFailure(AcpiInitializeTables(NULL, 0, TRUE), "AcpiInitializeTables failed")) goto err; From 3c85734188959e801f4f357f1cc44c7ee4c9d39f Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Thu, 31 Dec 2015 20:54:27 -0500 Subject: [PATCH 020/242] BTextView: Don't crash if the file supplied is zero-length. Fixes #12551. --- src/kits/interface/TextView.cpp | 5 +++-- src/kits/interface/textview_support/TextGapBuffer.cpp | 8 +++++--- src/kits/interface/textview_support/TextGapBuffer.h | 2 +- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/kits/interface/TextView.cpp b/src/kits/interface/TextView.cpp index d9091683e7..37a0d0ca93 100644 --- a/src/kits/interface/TextView.cpp +++ b/src/kits/interface/TextView.cpp @@ -1098,13 +1098,14 @@ BTextView::SetText(BFile* file, int32 offset, int32 length, _CancelInputMethod(); - if (!file) + if (file == NULL) return; if (fText->Length() > 0) DeleteText(0, fText->Length()); - fText->InsertText(file, offset, length, 0); + if (!fText->InsertText(file, offset, length, 0)) + return; // update the start offsets of each line below offset fLines->BumpOffset(length, _LineAt(offset) + 1); diff --git a/src/kits/interface/textview_support/TextGapBuffer.cpp b/src/kits/interface/textview_support/TextGapBuffer.cpp index 390980e9bc..dc7ed18977 100644 --- a/src/kits/interface/textview_support/TextGapBuffer.cpp +++ b/src/kits/interface/textview_support/TextGapBuffer.cpp @@ -72,7 +72,7 @@ TextGapBuffer::InsertText(const char* inText, int32 inNumItems, int32 inAtIndex) } -void +bool TextGapBuffer::InsertText(BFile* file, int32 fileOffset, int32 inNumItems, int32 inAtIndex) { @@ -80,7 +80,7 @@ TextGapBuffer::InsertText(BFile* file, int32 fileOffset, int32 inNumItems, if (file->GetSize(&fileSize) != B_OK || !file->IsReadable()) - return; + return false; // Clamp the text length to the file size fileSize -= fileOffset; @@ -89,7 +89,7 @@ TextGapBuffer::InsertText(BFile* file, int32 fileOffset, int32 inNumItems, inNumItems = fileSize; if (inNumItems < 1) - return; + return false; inAtIndex = (inAtIndex > fItemCount) ? fItemCount : inAtIndex; inAtIndex = (inAtIndex < 0) ? 0 : inAtIndex; @@ -106,6 +106,8 @@ TextGapBuffer::InsertText(BFile* file, int32 fileOffset, int32 inNumItems, fGapIndex += inNumItems; fItemCount += inNumItems; } + + return true; } diff --git a/src/kits/interface/textview_support/TextGapBuffer.h b/src/kits/interface/textview_support/TextGapBuffer.h index c236ceb762..ea96b0dab4 100644 --- a/src/kits/interface/textview_support/TextGapBuffer.h +++ b/src/kits/interface/textview_support/TextGapBuffer.h @@ -26,7 +26,7 @@ public: void InsertText(const char* inText, int32 inNumItems, int32 inAtIndex); - void InsertText(BFile* file, int32 fileOffset, + bool InsertText(BFile* file, int32 fileOffset, int32 amount, int32 atIndex); void RemoveRange(int32 start, int32 end); From 98f17b72c162fab1d8889705625c1fd9e5954ea8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Revol?= Date: Fri, 1 Jan 2016 03:12:59 +0100 Subject: [PATCH 021/242] Add a Misc_ORICAtmos icon A much needed addition! ASCII NEW YEAR --- data/artwork/icons/Misc_ORICAtmos | Bin 0 -> 26180 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 data/artwork/icons/Misc_ORICAtmos diff --git a/data/artwork/icons/Misc_ORICAtmos b/data/artwork/icons/Misc_ORICAtmos new file mode 100644 index 0000000000000000000000000000000000000000..22e599b159220533bab1d142e78bf9947183e449 GIT binary patch literal 26180 zcmeHP3y>7W8SdkF2wV`66Y;qSDM3Y^DiC33PvkJXg({W8a1ZwG7VdU0yDNxTc%_E$ z5b&+2g*;T$@^%0y&M!GALl!y=-|-2E>Cn6#l_Pnv5wKb zDYfd#6P+CSb!P~170$K8IaOY8xe)6IS^Bl5@v4{@2`!ygeSD^MciAd=SNRZmXfIpU z9VhldSDxox#64)M&P}%Cs*cF=Cajzl@lmZu=^(D1G5snYcjXBrLY0rJW=x)1#OwMa zvk|;DUvzfK$3RYyfQ`3Iyf6FY{(w9xkm30(Bu`Ri$$x z3q)-s6prI?R*?|>kjEpRY3C}GgOOSC{D>k`+ZPIFc|qhR{achr!r@?fJU9o<&dbXq z8NTxBNQ{CbcoH2_E`XjcDFt{ICY6-VI3ACD8nQ}?l+T7-B}K{!vPuf&%WV)MHsLQAkR{=Qi9`&$d}kZ^*r$2i1`ITN{9K4z)F|-F3@FCnJ0Tb%=0_*Qe-dY zAGGBr^K5WMG=hF8dn37?imZZ5o+-ax?S(pu7EhTqUHH2@-9k<1pG0$Yq4(-^63Wz0 zC*@b5elO@tAg2yJBt0I#GcQN>g8pG!?sPg6dS96f{OfJ-3A!-U&Zl%Hiw#R5onjLF z^i^g6{}xT~pF%5i!T%9-nY`@22jpIMKLTf8c^WD6Q6SHnes*)=w6WI;@DRxoWMTZBf(9Y-C;eh)a?$O^)PvL2RbUR?l25;ukJ7l zaWAE#3i7G*-c6do{}Ip79N>BF zVB}QbrTi+KQ-PQATOn70r<{2kveyv&hAnr1FAYU)H#C0#u%eIq6~NpLWP$uQxT1!@ ziUY3))_h%$??mls;lV!H2Rt z%Bd*NKsgxYd8&8PQM9~MX3Y%1FUr$fn{7gWrdOZ`p;utSSFH9Lhe|jTV)7amPKTV= z%1{YCj}Lhyvg)0rybN;HJMla7UC35F?qT5(TW)$ME)s*`crfZy;ipgH#FWz{uEj~k zOk`3~roykIXu+RZvn|6Ps|r=bUGNLT3QX0Z3S$T^+9mb>~fy%m&dS?OhkAMdg!l8=V%tif3e3kr1(UOnh|SAzO&@ zurVRGl3-v6#7yQ!F8%Uv>`S(b90NA`-1BjfWy(F=0yWogW^2&41s_ z*){z}?e>3mb=U8z0w2{6yWxkI_uRSHk4wdliYpBi#*$t|hK2ClxpNbpJ9kb*Dk@?@ zZk93C`Qr;~gXULk(gmZnk!tH6geDZO3PwY5U&`(CrT_;WdVYsWbPY;|>n)hveNKk! zQw{2Dw2}Iz>60%RX3v>aB1@CH#x|*YvNEZIlh04QJ-oxoY*LsOnG@5TNo8wN<7|^! zmBFNDZwVOaw{-=BuC%?>fsq{(zZ%%S1x#w9rk85S!b{1W6)!I(cUDrp6sPo#m*NOz z?uc0SblT)+a-*Iy&}AC+1`OS16zobz^EpUdXqKnX=fJpq%*NgwI@zw9D6b+eAYfs z&Z4sQP))O_>kHZ?mY$z4JybI+YJ#Rk)n{Q*a9s7(Nye$X%t^+nQqAccG@ttBw45HD`#HYqP~5huUAuPW z20hI|kES5Rd!|WP-__5snu(Xi;EKzCQL}$ln`4--qw_*-U;iXxK(03EKMyJ zIYjt)_xsHB5YqMO~7O3h_Z-4<>J^^Bqq!0)TG<{M? zu1X5Sl_Z4(=ZOL*&bpi;fBH?i(ESq zQS9=VZ~HrJ1*2j)G>G54Xgo$`-rFlJ!8wT^^>AA=5j$e2;vpBZ#3R+HqmwURsOO*skNjT>NsyJPP3lBT?&+NGu4=!S8ph)ZM7To?aC5Ta=E>xa-p!_i3`S3C%uUtZ*fsuBQydIWJbKA@@T6 zrZnMK7_BVTUIlYND?I;8NxB!yqh9iP^tgp*R83G)Ut^>|UjiB~#G z`s17zC6$nSQNkITmwcHmPg3G?Upz1=p&w(2JIBcXo)LCUr;~8@=P<&EUJ4_D=!Z40 zetpRQ{or=b_I>Z!db{*X`OROwc%ZNEllm(j89(ax-G1EAjLC4@?ISJ9$eVWz_#*yg zfpP1fzFhay@A~8znK%y4*IX{^d##pc>rjT z>T@G|YmXycP7PQ5;g%7`{7wC$=k|Xy$4FE92v;60Hv6q#d~|VQ*l1(SUF{ye8u1JP|+i+ml!Y&Q9kChi5tUI?kBT3uk#C!hRWKL#Wv|)Xh zaewz$P8+?~Kl6+nCrQtxzh%QyX~#V-)_#VD>t5)FSa-_$0m;_-~P3zYme{{ zqwJm07cP10NOR_0_iIMxpT>OTctz&<&QZEJ@TEBC6`8Mr+$#bvU#&=e?`XBHpN!1A z=3RVy#Eb)zoaA3&WEl!&;?Hd1>E3Sd138gOeZQ;3(RaTB5lSP!-IlxYcOXyx{Y93LKljM~ z!V#-Js4rW&W`DP9n+18>?Fz1`6}S15yg2`hktHvvL_B}wlX?`!+EvZs<>c=Q1S<)- z^G`5YLf&U)@u=I53^BIO+Vt*2pLEF0o|-aya*Ya&M(SbNuExhcG4i%0(V@nx+h5$V zCI2iV7a?(?i25tP7Utw|xOe{Nm-T2^eCN8`A3oYO*H2D>ezJYf+IJ7FxZDV~pSO76 z1HR_;leW8$&Np0~*e(yuF@?Q{e?6Hpnm~$l%-4JyOf`Ho!*e~LIhTC~w>e&G4E}3Q zx;4fioby^^gdz7@V=PD`zuT54=eV3pIgGFgCL>&ID1XM(G-6PPm6}1!)mS0uyp|Qf zYJ&EpE;6{lplMmaHC|+J5t8~IJ{K7zSY3P&A`-*JO6u Date: Fri, 1 Jan 2016 04:20:33 +0100 Subject: [PATCH 022/242] Add a Misc_UEFI icon mimicking the UEFI Forum logo --- data/artwork/icons/Misc_UEFI | Bin 0 -> 11122 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 data/artwork/icons/Misc_UEFI diff --git a/data/artwork/icons/Misc_UEFI b/data/artwork/icons/Misc_UEFI new file mode 100644 index 0000000000000000000000000000000000000000..136624499b996d12168b80da963326ba98d8e7c8 GIT binary patch literal 11122 zcmeHNe~eT|9iP1|M~f#tX-yA{x-q1s6cei0*4lWx3vwuT+_i_=658JOZtw1uz1?+p zk2@NY-XE3%LZN6Ykzi>7Q`;!1#)y@ZE2)Oms3nS*^77qV|D4|INqv-=}y=<8{(&`Pnjm}UfI5w&vh(7B2`hmwQ@yU zlJ72reE`OHqvEO%-UOU&N5zZ~J_PIvA8&4LmF=*tmtd-$IzgQM(q8rPY^pCUuEayG zzm)N^X_3!)*%F>bT!@VcmEWEe;w*mWkuQVA{Jag=LD)!Kz7_Mb@9{-+KH)bzbJ=XV zvy|=<5t%4ctTU4<5*diN$+Z{Vy2>?!Lqsy=BIPmI)i6^ojeiQbDVN6Y2X4y6-?WV| zn_N%%xRi?n?k?mY(}l#MXvY!`;+Pf37emzylOLkK-;w%f@D;Aq(?OYR)W09Njrval zw^6?uxQ+S^K|A4@@(mxC)bqtsE`J{JiWN0G+CX~MSutM4F!A=9;}E~rk@#ov4X(r^ z2+L$69)Z|O{375s;_m})BmS|VoiOoF`nV*X4Hmtwa(p5^ws@pyGhE)KqGEphn&U7( z=*av&e1t3WT!oly%+~|Ax%{obZOlIa+{XN-pq()D-}G_G{B%4NdsAJxfxzoY)F9RX zt_#eEU|bX0VD-rg?k`la%zgEm<8Xh%k^5TIbLHOV^$bCASf$r%d?m_E?lry}xXC?n z+G&_A(*N7X1Fz5IdU65t&w=@4u%ob1*hyGDSicfB;{Uz^zvseOZvk?a-wA6lmAMoR zDdjG%rLeMG$j!w>tdF>@kiPg<>x7x=@;7ZO%%<)x zAD8NKic{SOx(nQe>BXFccEIA$jOz&VW*G4~l^R~CVp*f=HNzU1{6{`h(90<^6j#%U&&!hA z=f0H~^cd*2<9QzPJaSH}IPz9+mP28W^8CUKS z$8V}ko*B7!np^bBhWH|dsBDNG)F)=Iotv2Z=ElT{{bv%fUmo-uQnNnX(z~~9O?>?8 z4_jJV2rLg{PX}RK$~zKedF6?*A~HulR^uk^ipa%DOG)p6RZ6RI4`rsb8s`Dml$JPc z0mfsKHsRxewB3QU>8NAP^@hr+-|#($TJY66d6v&=pQCBn3q)@9N~QHzbN3;WL_=21X0#KbQ*lfJK` zLi-pWkyu`2H*&Az(#veTRRd!$x^?`NJ@c9OZ~AIX-?b3u)mYPt)@F{7+UUC$sR4)d zU?$bMMs(&fxdNWVSPOb_8PLmUk(&@bAP$a+9le(UMQ~TAuQi`WBm7{t6AV;c+LQ;{ zQ%H4rY24%NLT#53A3%#dk7=Rw$jc+Hl@#(zJ_KXp2%;eEbInQaisbEL3_0s)YWbVG z@}Q`;Wz)sV*5;)e?*mTiqv+X`Vm&Y_5XG^`#2*Ew`n@i6>!=Twotadz2)2Z1(iDUq zN`+Lm*qtl%rAl5dD`qa~8{Tx_)y7|Stop=`Q*Si>`Qe>!oPPd~hhtlx{L%0$zi&i4 z@qzitIPyLBoVzWq82<0#^UQl@3KccolWooyI2UPB#zsr?>5W zv+>i5zC3Hk`j-#49vXUK_ajFe|9a=H9}NBYExJ?3&yU?2M?P|5xZZcCu|zH0X~!jS zr)EcY8kvAQar!W+Sr>LEePvPUP7Qv2=}rtK@`CNMKTXu1{G1>e{Uq4E}F|G%d=is2w$LkN55lz~bV4&A4rTx&zPrwCc9vhn_yef}okwOt2{?y&+-{U(V@;L|k?wp1`Xvz3j(Z=4#Fss1KJAwc5@It*U_K zsQ5QQbG79FxC)yaDC&1TjBQ3MR{xuU^UI=G^Uc2rJ`~jdpj`dQ0LM|Rf^YG0xebgJ z(%rJQ+=%LjN*AeESt@m{RiUbaVwJ}(lM8Ry^L2{7b|wAun}eI zOAXozhT==Ws*5ObC_q_B5R(>#L@3hSMWMK+D7=}XC=@t?dn&zId>l+K0A>^G7bsI( ztgu+qFiurJEY{2__>DeZ77HD!Qv=0fl49}Oar%&d3l7vu7sO`Ysn--rJk-g)*?(o) zfHKV=>!Dkj$Q?N}`Orazd{jEM4l?{hx9RL3MqTz9#aYk9>C}p++F+~8aoiEquM6SJ z0(@2o=bs0u8z+a}GP9kve*M6s+e?MqnzSHMvCdQ;#kkGo!$bHBx_t8R2kL@)BohN( z7ycuGO7-zR1gJtR;~@_)^@3S))9P(U{yFb#W3e|^D5X`itR5(%Hm|CM^XE%7{37Pj zcHa-!^mu--59N~;+;}>y7To5eOwH5qeDQ!QzX{J59vN-;*L=J@U--2_aN~n?1^S#i z*G-)!j2|ws?OBX Date: Fri, 1 Jan 2016 05:47:12 +0100 Subject: [PATCH 023/242] Add an App_FLTK icon for FLTK-based apps --- data/artwork/icons/App_FLTK | Bin 0 -> 25099 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 data/artwork/icons/App_FLTK diff --git a/data/artwork/icons/App_FLTK b/data/artwork/icons/App_FLTK new file mode 100644 index 0000000000000000000000000000000000000000..a4d0a726477f6097b9735921bd0cc356ab5005f3 GIT binary patch literal 25099 zcmeHPe{fXA9ePN|mWjD}UI*j#4^y=KA@(-F>(3*gH2QA&g{a zcJ|)q?c2BS`}zKQyDynAX~wwmlg18rPy(pQ4CRgr$H~R{&S`yc=w26a&T__$n=y%F zT>TxQVyuAE#lxQ(;5egkE(hmyeDx)c^N-P@e{Dtmf`l_1y=-RnZcyA^%}U)>JwyQW z<*fSQ!~yhW;W^&LIfS{|+$0bE&ccQ2CLDkR0hW)_*_mE8<9Z%<=Lr;wDi>FkO`cku zhu>k;-l)7b*XioRX9DNgxlT79{sgd25-*)H#T|!Z9YGc2^l*stzN}wKyr!Z$0;xMr zVnIb!e6dp-kJi-VaBY#}++OTBO|o_Hdp7DwRN_-*+kiHVT8=sl^(gw66uYAYqcyEG zP<&C#r&JlQsfkq9N2;8FEaWv<8H*=~?SN2h`27%%WXo?~^kvcc<+a05`=jdoDtt0< zonM9j6u8bWan{#RP5iziahKm-I9L*i#o~*D5M?Y{6Y+R12VY@Sw&aerA9yT4J&fOM zgJ=(+ZVGF>@`5lbTiXi-kIlO>oi`tAcLnTN+XewpS~gaBHu|yXtWoko)N@gF))Za{ zTxU(;5#Ty&{LQ)s)x_FHiMyD3yC2$i1_j%*^{o)3RyA04lO9txWwI|452*<)kvUT*! z-`q2c{O`1s|5iMTt^65#SWNOi2e?W8h{#6yR{=N4f3-J`U;d9v+?9V197y>mqE#uU zrKH66L}#TLfK5k1K=z(l2$*Y003Xpk7Ispo2Ql=Y#!lwh*2@qpC z4kN0`1>G%imw;|K5Q#ysc!sC{O%QvYj1MDZ+gp$M**XYun|t`g>~k}}vXt^6OxRY+ zCP&X}8J^P}y~0azPM5O6R{+o%kC3gEiU@Hgwv zQN=j^(D10lU7P8O16TffU{*pEq7inI)jqOy^h@8|GmG@^u$2BYco19Zo8p3!W_nyu z_;ncHB>lO-*@rKZd@Wt`=|3iMFD|&!_l0F8Beo~HDJ?A9bQI#x-ZP8%pSKkM z2Y4)7@tg7@Udw=yo);;6BF^dJSNL+^y7-B+zKUuR{~smpil2E=U8L%ScySbhXJBT_ zc)^!-60rc4FX?QL<6HsSH}!aNG8YPhns=q2u(Wuw#FDbjczTM8Vx_29@YCq8C@B_` zzheC7wdwxqTHrcmq$!A6j;d3}->fT9#W;R{^@zk>%D5Io%2Mts?_c@FgGT0q3et2j zs-kB+ejiTJW7m;%d|gk!_(Zxa4|;Ovv`uI>kB z5r<#E4qlMB7c$6!KVRwuRWB)?cf3pSRsWlX-^ybNlh`+*fANI! zd_8Y!&IN)FyDR*(_!HR;mb~o2^V;&lc)_AOCM9RAd`o$XwO@sg2hQJW?N{MTfSGvN z?v3MjOuHoR@B|ufa}Jga4NfQ z9K>1sVLm3ORUmQKIPh%FSa02SA_)_4y zG7x8d5!Iv&yCv=^LupDGaE}IAKSlcH#Ms`OO6F1*@nYKxC7HOw{+2pf zcnrs9wSNiN5tWO66c8JkgAB%3aOnbwq=|m}f8qVoftMJEw>qHS} z{REYB$aVZ7?U=+pqRKp?xB##Tl4JW4+TQY*EyEQp`mk(C*2Orcl-W+ziEE941d%Np zNh20S1WernohxpL&=NV23HdpS3h7MHLe!)p+gebnRdH@)x=U5t1ar))~;ScO*u z7p9FbX*52T0VfT)PEQ}c0+YU%c_Sr?xgkJ47_s_X=-Vb4%hEE?a2%~LU{ez;g zknq5Po0EaSxMY0ZyhMb%Vk`}z`X#jy_b0xGiPY7`W8xkZO|)h~q%K+?OuK!6YY{eD zbpiTOWQrDw0Eb4cQt$6VOnx<2@9(bm&>p<^IH~G=`z}hB;Z8P_dJ|7(tLl7bWHC)j z?VP2ndQkRvC(CUF-=__NisUCwhq7BL`-SJ{4Jf>6Z)o50!6k!Vf3vaEq!*SJ-1%N; zz^)Y|R`+q0J-lM#@GvCZw14WQQrQa&f1J$8nb``;e%iWF?Sl=eRbOuI&?-x@}850z2kjcKkP?>W1!LeEiG(jiYZm{{6z) zLeqCn8yAM48-6x^nAG(A{B6miqL*7i)7w1(O??v}lqV;rGp@cz%&eUW#tvCs0!gf;K7*%G(VJfUQ&=i` zATTD`x$}W`4NKUhiG;cH`(%8I{rbimS^Ljy% z@2X0IWm1BFU%Irz{4CAyP|v4so>ThQ#`PcPezQ1zttGnCZpool5IxC)h`xP`oh%4QywmC$&WaM zn&Z3EdafAR%xDn$+0KZIb}XhDai!9m5vO-O*A{~XgNC78bIs*asU2rt^0b*+rCZe0 z-g@h;V^s z&RmLHBl=DfL!oksx!BCow`2z6TxZl=Y{ck)&wC3n&LJ0HB6CZI65u=%8SqsScQ@#Q zb&+`vm&x3XWFD}%ivn7-P228p`#4AGQ4Hlod;vC6qBZj!r#e~_ye*oD&W*;R^-F?@ z%8FRT9ih77cGHQ5@B~QJhLjt?0K*3b#G*){AcWAm`Gn6t6qJb+KDbT_S9M4V2@c@v z1GSB}8UqXmCWP-N>kl|5_PzXMb;CSOWcAH}50Q9^EZi_f7H{EgtGKV=*jsl0%GaYT zQs=D1WGKXib@d58G$&vxKfyUAME1kI-9iCUkh)M*(ng`A3sEI){8~}hc=aZbi(P*m zr)CRbo#kmf=P?SE^W-NV$`Xi=_wYVGd=7AuM+?#W-zNKeYCWUAF1|40P*B0jidvj@ z#KA528+i99ia!~z3%ZAt#Nucb{u6*Gy~EW}>Wx&5D@vk!`#s}S)f{E&iSS&?chewxhAZVg(~}0eBVlU(q+xLee67S&rbD;rB@KKu*Sj(-XkW6l zsjtJW%)~hOPS^G?Dz;#dwjzcZUM6CO;+#lK{0Ra-q%jer3@$y(;}#eDr--5F_K4vI zrb`SL-coDy9lV@+UT7K~FQne%MJ|Zq@9bN|%h6Ew+yJ-CY%l999oaJ&q^<0Q?;)9Z z`7X|x>?H==WG{;{;HxE`vKNl(@j~NqdGYQ1w}=+}b>GRq|BSax*-F|lWn(%|S{SR+ z-+zVy6XN%$Z2K~#Z2X%M6J32W;DfWLZ1id_U0i$Qu3pFM&l&yt11-qx;?CTZ07jH@ zarClY=t+Gy+I~LnWWQ~uAK{a=Mh?x-WHN=Gt8va0die5h@@02sz#o=)D)i8Od7+2d zqRR`{n>=3B-(|KRJ?kwqgYB4hOELpe$?!`#@NHjTZKBQ&L>1!phZ-)yndsrNj)@-r z&8!K3K;kKSm;-q9@GXsRT3&YGeMHiJ)I4BG&C{57OQ^wZ+_zK{HH^HOEN2MLnW$L^ z+(bbpi@HztPfD?b1T^AuasmuKid!bK?wk!DEF7UYwDyIMd78k(Y^2=hPZ|30zvtluKVF@0Gssvp+*F-2;;{Sn%gtr_e(q#YWOrBF=WXl zhB<=%hX?J)%&GeNgYF{JTMlKE=`Ck4&Y76G1-OYB`>#K!4<0i-pi_0(q5X_4ZO4r5 X%q4{!c%<-8)tESXq?Ao;M^gR|Qe*N$ literal 0 HcmV?d00001 From 0fe022fd0d6d600863555f5a556ab5a5273d20e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Revol?= Date: Fri, 1 Jan 2016 05:53:38 +0100 Subject: [PATCH 024/242] Add a little script to generate a montage of all icons This needs the 'montage' command from ImageMagick. (it will install it with pkgman if missing) It first uses 'translate' to convert Icon-O-Matic files to PNG, then makes a montage with the icon titles. Run it from the top source folder under Haiku, it might take a while. --- 3rdparty/mmu_man/scripts/generate_icon_table.sh | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100755 3rdparty/mmu_man/scripts/generate_icon_table.sh diff --git a/3rdparty/mmu_man/scripts/generate_icon_table.sh b/3rdparty/mmu_man/scripts/generate_icon_table.sh new file mode 100755 index 0000000000..4aec7fa16c --- /dev/null +++ b/3rdparty/mmu_man/scripts/generate_icon_table.sh @@ -0,0 +1,16 @@ +#!/bin/sh + +which montage > /dev/null 2>&1 || pkgman install imagemagick + +tmpf=/tmp/$$_icon_ + +for f in data/artwork/icons/*; do + [ -d "$f" ] && continue + bn="$(basename "$f")" + translate "$f" "${tmpf}${bn}.png" 'PNG ' + echo "-label" + echo "${bn}" + echo "${tmpf}${bn}.png" +done | xargs -d '\n' sh -c 'montage -frame 5 -background "#336699" -geometry +4+4 -font /system/data/fonts/ttfonts/DejaVuSansCondensed.ttf -pointsize 8 "$@" haiku_icons.png' -- + +rm /tmp/$$_icon_* From 1e0e585e4475913071e20eff23a0352c6b653c8f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Revol?= Date: Fri, 1 Jan 2016 06:37:53 +0100 Subject: [PATCH 025/242] Add an App_wxWidgets icon just so it's there --- data/artwork/icons/App_wxWidgets | Bin 0 -> 23648 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 data/artwork/icons/App_wxWidgets diff --git a/data/artwork/icons/App_wxWidgets b/data/artwork/icons/App_wxWidgets new file mode 100644 index 0000000000000000000000000000000000000000..6de4eee50b0b50fbcfdc09cc2775be4b08b4939e GIT binary patch literal 23648 zcmeHO3y@UB6@AOX$}d0=1AduA3yCN!N+K#|W=CW}K8vsgh!|Ox!5x|1+1eRI2qfzV zEeV3(ppvMiL7^}}5w$9kxEm!3S{RH;DT)@6q*A6dg(*pqXk~Ivf8O*P`i;H9)*9Ka z>V5B>?$_P#o_o7*-=3W?d3xpe$>TEgXhcojWyZ2j5iRqTt>D1blJNemF`u4Lr zQT0c`v#6`f*^9RiV|D4IJL;9;P2C9_XG8o{`6=DJY1Pv&<8v<-AW>AMc&mEK)OdH? z$B_FW^W9RfM*yDzoNbqSJp=e7z`81YQdN~`hi!d;EZgbr5of>5pDMheral3wdtRol zW`26H*O*Q=Wbt@ch37TKJ#VMF_QU-gzkzJ>tMN&| zO@1}L0=UU9apo3e8^6C-xZw9|c$k-3l!!o(sboVUz;X>99SjaY9*w*o&%8!d z*`u)nR@?ewo<;XJ3t0~ zGu|`biEQI+ox%lYoE!va3!2ifNYgHD;v;i+RX8wYRxHkltQlk=ApfO~@_z!K;wpct zDw9qAoS03U(Q+OQ+$R4T;5PaH*l#B|CqAffA^#qD5c1Ea8;_8_6pe#@6ss7NzP)A< z>Hok{`cL9RT&3R!b(w6^KM}Z1`WFGWNq-)2oAg)t?F6O&kiv!Zd*VSzKa-rFpRTlw zcs+8OGL+w?q7;AennlDv&r$rV@g+wieo`?AxlsHXr!!`XU*pq&o8p(0dLCC&+vIbT z!hP{ehaeK4?rVQ*1?oWbTq(FR$Q8p7d$9^q-1Zs)F$boYEsj!t2P1QpGF>YsDG}** z@m(&qR^XTHbBfkORj8@dYHBJIZmk;?Dk_s{G1U49GM!w$t2ZhdzYw@-F&du>+_V_pGp|IJ z?F5&F2NW(WhC3RH-&~WmOr>O`l@zs(VikkJx7REp{I9%6MBxXPWGy0IkDQ~7wZWyL zlz#D=MWnyYQT5-07P+cEmt7`P_4zIr3ogs1>T7%oa8va)emihe^@%h87TKoyuPa=r zJ~t*y5~);r@e%7q*SP2PM&`8|nS1oC%KDzm!YJfD=6dl(UX&cQ?ad%(1?$CTN7mkk z04Ob&3Cp&N(<~J3;xvARYFkHEG=2+k8*9G-Zewk?!Ub#G#VOXzIcqkU_-{q`e~gHq zIeIYe$8RI?keaJS(9#gnrjGN3nW08WenAH0`aZ;)lqFgGPrWDp>kchxa zzt)k47x6`|G}uB`6!B2x!jP55$D+)nLF0>nn=}w-=7!Wp!?Ow(G%yaJXbAdR3`CBP zFF1T+{DRM}#yw4kW+P4Ll?mnX33CUVK37{_kc_y!5o9Ll13&CY%`5myS8BN0Fqsyj zMa^inX(1Xf+_q?Z8S2}p+3dFybi(vpC#c~BYEomj5p)1nstu;3SS<`mTXB2Aw3*L) zqZmWW9U0n)k9B3pwy~s?BglmtOO0QGGP0sq9gWWi#(Uz7+w-28;RKuU{8ZtBA^Piz zp@6d{Z6t3q+HQC~Y%Vh{6(tkJYX%tz%w9dZxb0KE1EO3BU_B<&M0(<&1mGxq(d_U@!vmDm}`KfL0np0x`+Hf)oT2a7&46kgM4GvOQHoO(j3>?UY$J9-$ zXxKCi&;5Y2!~I6Xq;=?=Yhy1QIvpjgDB)0e9Us5p&nH#W~YSLE}qMW-5cm{|?+#2I9)*<&po{M~zx|ZWwjT}KH@8_!L(Rn426=JFa z8)iqd;>!okj-PWvCGLYAmfc(%|Ic!E$N>yMW_@_8V7VJ@;9r9Dy1AAmS)l&ATKXL88E8=VS4F}G4 zN5>7NqE2~KD^L>9t4wxDDv|MaV99bh+^a)9wm}tOBDH4H=hl5tHjm3763az5;#kL} zmy_{U7i9LLTgR>Fna@0j)c=0AD?j58(O+-dS~YM)OUs&dPnX5c+YzlBG;?W> zrZ=N#$9t@@G=@v;wQt2^Qo=92c_>FIrxz^9B(f-DYK~@?G$zC?PW=;2jp>x^gQ7_` z)Fqmd*+@b6C3mCDg&z8(6q%-lBEX|nt7uS6QcOWL*9RX$&1nz$_^bT14;L)Rxh^0( z@nx>6uJ=N=LFv6v33$`LWTC1@)JKTHa)mG*Wo4SVzj&R>?x^f5PV0WknAy9c!&eL& zJM6`sEnO%7a_P|JZ$(deZpEn8{r6JYV=E?(jN#h4d+HFS?70so<_@keI|j=BrJX{R zUNNX7tsr-3eWzAAYSry;^!jAN&AXz{q__2*F>8Bt-8+XjopI}qmU}leFI#lx8)6FG z)EuK$&D}Vuht?`i1pmC_7--d0%!@8l=#DnbR-9~@Y_paA;Y8tVb(*R#W~;yt9;8ma zyf4?OQ;s@S6W{x@L2KTKj<|o@MK9O3MxVI(rtL$vw6<*aR*mZQfzYW(pE_rB3?grS z{+x@IP969tmwWhy+%eFpHE7sHrx;9iU6%E^pG~K@IuaMUW1h>Y>FBAaa?>5v{N*;N zxsI{ehNNRGg=#+79BN@~L=N}g>$-Jnx}&CF(Ea0$qdsblZZ6q2@9e|Biq<#x`sBbb zcDGzI`|zb>W=Tzd=E}+#q~3hT_;RJ`l<;TUEHdkW z9P8s<$8;*XqoUvQ_$Boh%-j<_ed3t|#_ZY^-M{1t3jyF_wVI<7RoYr{(8 zvL`KEY4kaazgN`~tX6}4f9cXr^K&%6cl-SO`*S9}-SWVJ()V_++#g-JcE;Izdw-W?Ts$hqmRvn5M!%SB?h9QT z-=kt+OPxJS+e3^q3!o9<%s=5Y)@5KzP!9_4M__O(I$$SEI-JS4T?TcTh>LE#yYZ?^ zFYED^8HQsE6bHjBI%aN$$pDK{@dsljPJ3hc%#1ctT=~=gVAyUL${1TJMX=8N&z9?f zaSWw6b7Rp#9=Ot6g?2<^PwkDMjuh!SxXe(%rjfYfSNEr(T=#*1HOqvu5LJF;C zK=`afLD@**hnu8OPe}?1F7bN%@vqfrfbmo*{2*DcpiIU_gJkg(&_-7O5PX=z^JJkz z8S^Ju>_U)5FQ1+d4kW}sy!ebIn!J@53uU;lDa&&j(Lcvfm~KOvmLcn*Ymq2F%F&dG zwrk3yP=?yBd6a7^yk0CyaU5mhRBS1$GCxkuaa@edF_uE+I(|)jypQ(};B$bJI~s^t z{{~gx*Xrrnru4#uM?pnuYZ_6EGZ{WykADUePf7gmRFiz9Bo-&<<6q)r>KCg|B6J){ zC2{pJ`GQ&U?Kx{+I5hNNG*g#u$|hv9tnM=-BhRvhBW)%OFK$aO9@_A|P+OYfXiHas zc*?mwY>9E?FkAXA$|T=GTiOE(Y_`-l#AXJC;3F0OdA7vpkzq@bOnpr%mFKO~qP$~k zQG>qB76o1KtQJL6yAPV_vN~-*Bb=EEEsC?}(Yg$DBf?yU;i}IIeva$i5B0<9tI;QL{qKQIXr#R+Ii4YgO>!eqW}D==J+)0{{OP6*zenMD zv!R#iPjYligxT;W@ME2ho9SHtdte)e++Ni1zYW5u8I3XXj z428u&`O`%kbN4Ge&k(=HXNY?>E;oWDdMt`1@lOXG$IktZ>}j{po_2rn4+RL@pz5rL}!cztM0@5&o)7+~eu65547y85y{9J|S4GA6Q`J$Z*zUU)} zAAfW@*2lGDUG!L?%F&o6wxcl(grbJ+Q!hlB&6r*fF{XYYMssoqe!inIaW8EeQ|Gxt zJD=43|DG!xzYZOj9^Y?(VdWh<~ zD6?&V>VexfKQf!U=702kv`1`H1jWQ`~y_eB9W9eEbh5)H(|Q literal 0 HcmV?d00001 From 7408c0a8a4ce019b4ed1c1fc75987092e6355258 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Revol?= Date: Fri, 1 Jan 2016 15:28:30 +0100 Subject: [PATCH 026/242] Fix some icon shadows - Misc_ORICAtmos: the back is larger - Misc_TARDIS: use a gradient since it also has a light atop --- data/artwork/icons/Misc_ORICAtmos | Bin 26180 -> 26155 bytes data/artwork/icons/Misc_TARDIS | Bin 21987 -> 22485 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/data/artwork/icons/Misc_ORICAtmos b/data/artwork/icons/Misc_ORICAtmos index 22e599b159220533bab1d142e78bf9947183e449..4dc93e37fd4f2ceb2ddd78e9ae50271795742381 100644 GIT binary patch delta 280 zcmX?dhH>>7#t9mXvnOh5%c@8+fWdztU}RutaCZ;(Wdw?Zi!m^0O)L}_=+I|i07(`k zmShw&C`e8gXR?TuuR^(3g6^6EPRXtlM6Y; z8Oj#EK?W?qRx mW**QgVie|=mJn2#oS&DMnp~2a!oUawlXJOvH&0;Nk_-TGVo6s3 delta 254 zcmZ2|hVjT5#t9mXTPA91%i2mZfWdztU}RutaCZ;(Wdw?Zi!m@bPb?G{Sg6my0Fo?7 zEXgQlu#}u!$g9S9cjA6+!5b0?tsq&3$%$N#Cf{Y`tB-MFU{C>K4ZGq}44`!WJWKJqazcup)77jQIVU;s%L zB$i|pGuW$7W)xLpd^~Z#w$ME_gjSF&!>Y-S#_EjMCM&AibFu;D41ic*G9RC~q#KaM z3dGC|Tnr(80ZuU4`pI^D;*2{dZ&Vd$JURIcqk3F~69Yp55H|pE0+dz&(jajGAa()M z1^JnIB?_5&KqEPT0w4`UX`F1xBx**KN~h%fyu8%plGGFiMj&8d*qp`WqRRA^59EKQ ziF}i9sB1BG^KE9)SjNue#{>?QLzB;GXixs9uQIt*TYyn&vb2HX=GEF7jFS~y*%ZGq}44`!WJW40#zC#3vSt3;3HbFn}Zr z5=%0Q8F Date: Fri, 1 Jan 2016 15:43:55 +0100 Subject: [PATCH 027/242] Device_Harddisk_Zeta icon: remove unused colors --- data/artwork/icons/Device_Harddisk_Zeta | Bin 15193 -> 14900 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/data/artwork/icons/Device_Harddisk_Zeta b/data/artwork/icons/Device_Harddisk_Zeta index 8892d2e7c0abb8d29f5cd6b0af35a04b0e69858e..89512f16f929d7921905f16181cdae67836f7bb9 100644 GIT binary patch delta 75 zcmV-R0JQ(vcC>VmC<3H8kt#w0hzyZ#8Up+qv5I;R0)z~ckufF$C=8P>5GDo*0000Y h46|Agn+pMxlhGO{vqBwT6#)pdqB0l=0SJ@3I-ZPx7H|Ln delta 124 zcmdl|a Date: Fri, 1 Jan 2016 15:44:48 +0100 Subject: [PATCH 028/242] Add Be, Be_2 and Zeta Overlay icons Separated from the Device_Harddisk versions. --- data/artwork/icons/Overlay_Be | Bin 0 -> 7968 bytes data/artwork/icons/Overlay_Be_2 | Bin 0 -> 4731 bytes data/artwork/icons/Overlay_Zeta | Bin 0 -> 4488 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 data/artwork/icons/Overlay_Be create mode 100644 data/artwork/icons/Overlay_Be_2 create mode 100644 data/artwork/icons/Overlay_Zeta diff --git a/data/artwork/icons/Overlay_Be b/data/artwork/icons/Overlay_Be new file mode 100644 index 0000000000000000000000000000000000000000..7112dad6b21201aa9e1ba2b8b40bdecaa47b3e60 GIT binary patch literal 7968 zcmeHLTWnNC7@lpptWt3;K`N*mgH4L?P!SCHAm=PXY0^@pglr5CY|CO-w!7=@7APQD zQ8A#>ibjZ+1QO$gAR#drABe6#cnc3+h^`?Zk3Jb*d^4%vH*@CfIVWeElP<f&^}$g>Z8UqG0tY)5WIE{cAX%%>^`?su^6HH*Aa(%cIXhCvUU3#e*LP&b^z( ztscAy8&0$Fp1wZ05BJ&+To%TE4yUk{5M7zk{E*QRUo7&ubhZR!rDdG^ z$`qp8GCIFCMY$K__i~J0EL+5*EzeiguuTsE5;ETy)Kh^H~&jKNH92F+;eud#02|V(4qWc3+>foMId?dc_nc4=avx!Nciy+)anY5-X7Tv@b>zj^ZdzAoEAz zusv4v;z7*wa`ZS%5yF#XxK^$)Cboice*mL)nB*uw;=!`3la>>IvnZqIvge>h_ zkco`!sg`ygDG79chH3n1dv9IZHU1-TcZLyXUk-hOGOXLi{TY^WO8d3nU^O`Ak1nNS!B-u2XQBdx_@TZ4N1zF} zeWwJ753t!rIhSWhpa2;F+p4vlt7&ireS!u2imm#4Q2jn@$=>tU(wSp86s{sbUX-f4 zKfxa;vMzhln+Io@dR&2r8i^K0SqHj5S~L#TJ@r`Q1>o*zAxkL<5}KHW$(GGt&DZH6nXmX-!|)3>?ef)EKJEd<-g`ZH~%kHA>zUC?c`k;qZCK z?U%^DkbZd|-`j{^Xj=o_?-z})!W!+ZvsmK;!1zCLUc~r6`^)G-etFZz9lwlZx2Fo3 zbT;K&(8{I|LvbNE<}v2sBRvkqUH%9|sQfTFrPux*^A}5_nN(4=@$a8#-ET7jcZbjcm=aCId~W7ppcZJcg9po=A1WveHrH+n2k6u<6Rs2dMKDa zy4}X5FBm)nndIP3F__Eb3fydB3|JV27Jx3SLM@``B|OU{E>)U|2~;ZJ0;`OKH_$|JD49oy`~u1_itPiP4iO5} zg84t24iU;4p>#CjQjFMw$O$856TY1WWXiH}2bzO!*JGYD>nD_tRp>j zH0t21Y+NP`9I*qms1AHt=n1#rr%I2t;veS;XrLI#N>eH%v&9{`!f>h}j)0yP-B~CV z$x3a4+99lIi)s;oq&2Cr+d?{^Xd!J;@{o=$<^C*~ZV%k!;IlmV65z^mGaQRjk4GH( z77xDO!CO7}R^ap`J)k|qeRkROPJs893b~yrK|>jX$vl>YnmmOEw49~!zAG4V%CFj; z-i}`qREwI!=@J$*X^b`&GZlk-W%1UrFaPYgzPdP+E0j`dTar7TNtV(%4PRev@8laa z-d0fyYs?`$@zdESg&0m}ja}(tdLW%imqv}^U^0`EM8nBFK?`Mb6Py($vo;{MXt$|m z7DJQ#^)hQA)`Bvt=5KFiU4jdOGHZ^VDb2#0S^NP?#h({nVdHf&iz+dE{aKY-d^4-0 z$NqC!6|3O8&>G6Bw-KFTvg#ZJu{!y)N{5}lT2e9A9$j5Yr_U>9gS#3t(-xttsP|^i z!@$*f=slN49C~k-9H@gIxA9u`P`mo)lJ}>{f3NDD2_eRKqcN&5kDR}Or@)tZl0hm-l z$rw;zAjn|Tg8aV~eNgf`W@mlUot=#F0IDWU8`UU*|>lxI!I-YS= QwW)cg!^GaQHQ<@Q0n8F;>i_@% literal 0 HcmV?d00001 diff --git a/data/artwork/icons/Overlay_Be_2 b/data/artwork/icons/Overlay_Be_2 new file mode 100644 index 0000000000000000000000000000000000000000..c5f07ad96326b165c18a0042bf8b99413762231b GIT binary patch literal 4731 zcmeHKZD<@t7@o`7BsJ02*jhi3o}l1ID<+_*Rqt;5k*G-%n^61_w42K&w`Onm++EuS z6{2Vmu_={6r2S#=M;rP>YY|&0m{==;qEx8}{!t1Ff>5d`_K(Ep+1o3LEJ7wzr6T|DD31<`m^ zN;FjP1K4~7Yjs#t@wXd=*tR^BFYA8M69*xc#HuGCM~%`dsa0Mgg%w&wjhhv#s71Vp zok^4&!sdEK2@j_tDh{u*Ol<4x-N^a1TtK6)G<2f7<(|jfpG`MGDb_=^;2v9ftPjFC1W`fJab|y ze{6pn1b0BN591idM=M(Du% zBO$H_YQ!F(NwnMqxjJ+nAWz57Kr`no3o>J6$Pj17wr}n3q=j_744H~c2Q0lXA_|V> zxIAp(NoYx8&@6;`C20_iW22&KgHQ~ER?DDkD)P%KRrOsQvL?ayaYVVIn-^%5ibE}N~KX?Rs3~eq24vIQaBai1xxollv^R%B?YmG@9MTU zHyvA?_@QlWIs0w)m7fpY(D407*von$p zsG>lx?>ZxfuuR*?6!bC>yihoK4iDSlN+#Z!Za5_qyUann@Wa-aE19Uk8Oy{NVJmat z26g4G{=Fyvxbs5RD>|-k*pVc@rSXqMh+kmd)@YaFMbv-O9u}fx+L@iEXAYQ_>5pc- zf^HeX2_=1Zt%b4NWE2OK`lmRU!8&QG&L;Xg{G2AwCi+#48%8R#DU6SJ*4zs`%+`3; z@G~CD$FoNIH7(-!-bj8iYZ%FwW=;H0&41??En$^=4A)>hSNr91R5^07RF%6s;7%g5FXcck~R^9wn3C1u|fi+kd%Ocs;EC}x5Q~l;)+C2Ac#87Cf;W4wY=M; z5tm2^4hSd`AR$iNC^t@=Qw~V25aQAcr(SwNLdpdRE`;xUyKlXluF)3pBOyk9dVb%` zo0&KBX5OBfnki3AjXxov9L81``ejfg4}M{r43=tNPI{zVo|&SKM<@iMs+{yj`1@dv zfVTs@I6k&pUj`Pac9)7O%e98Ccg|X{-7WIrvMjXz>bUHJ?`G7|xT$$a(CB zcZs7@5sw-ir64cN&Ya--PBK6YRUW%$r_Yq`#{Vxd_F>SmyzENg*MRc?dD)%7--JT? zOnkCZQF^HBD2xVr1{6-a9Iu6Vv)ZtvA3)hzYt@b6@4h-9E!S@PfLcY7v69H4qC9=5 zBpU-oxn9D05cn)+1M^wTl;i9brLa(v^_L)LV?NTE3yau)7W{C&{%WXa4)YB&(8qbA zBmMQ=;I!nN0ADK{8v*xdol2M^Az;<7R5M*^%>|z zsBbgmHMiNcYQD7~xm0517&XWBDDg%vTLpcN1ZJ(EJ0MGnR}ibfz}SlsuON*d1|F{< zjn4y*R}lYmyo-@mL7#@WsvtBa@zxsit}{Bn6cvzZ!WBgK6GT_fEv$*R;uls6jzRFA zaDx)W`eG;;To5gJ85~>?rJ9oK$C1QREFqGUMEE^_&9OXrCzmY?2O)=_iWDXl0Y*WS zZs9w?8>S$LJY`1S!zxR++z&Zw&@Gu7uvC`$KL?KPmJBh8IJ;$ex-v<_%n>^&ag_^R zo_VKQTb7#ZxNR!i`Vd$ahaQAnR)_G&DN1u_2%N~F0W4mz{Hn2LIgYy;y7k*t+4Abu z7Lqc8vt{w_`(2%+P&>_Y)})idkX(Z-i9BUSPG@|=#u0!%>||0%)WDcft1g^)@F~MY z@TrR9EY4oV>m+dx*7qq{?ionD_D=$*tvu5C++^t_b&g?ti$Bb19$xWjBhJwervmvQ znXOEY6Qhs&y5OTBuCA!jwicBZRU~?$?hpNrYI&4p=eMg(Z_#ZxtaemD%WdDIMS74% zZ-b|!NI6E3#0b*M_|@k7OA6XpGK#!q)X#@K9^D5bygz|I20VyXPZUM^@oXeNkiaJ* zd`|+O1J3L*>N*?Lvl7ayP*GsUZ@bHuICj%AYSk7H2^Qz^8KI73f5e{H_;2z=vKUr4;{O? zB+{^(#)|FP^R{FAYlc^=I+jw=s9sECteYR4ClU37*0&&+e2%(xxyQjv%hy%hr?f8D*QJ}?)dhbv#Jl7R)wr~C@VgI+d+ih_S z>3_1teVnnyeSrY{T`f+RQd-Hdl+s!p-+@3r*~(VC;2(r|r)2m{MIQ$E|HmcskH0;? E12O5U1ONa4 literal 0 HcmV?d00001 From a5f29c01b4f5cd363f54d4c071fb20e1b3dbb953 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Revol?= Date: Fri, 1 Jan 2016 15:49:07 +0100 Subject: [PATCH 029/242] Misc_Book: add missing object names --- data/artwork/icons/Misc_Book | Bin 13903 -> 13972 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/data/artwork/icons/Misc_Book b/data/artwork/icons/Misc_Book index f9a5f4c442c62d89fbe7eb354df0a71375ac596f..5a10f3057fcfc4de9fdd29ce9c2f00851b5ff333 100644 GIT binary patch delta 1012 zcmX?~GbML|1`~_fL@h1Z2tEcd_zwh(4D1Z=Z&vt^Dw4Np2(!mIAL-imo}rodhM0~dpjzdu+Oq@rx{LoRWdW*`fsH!m?am4OGy zDM(CDRY=M&N=Yr6oXgkDxNP!AK6OT~$&&oqj4qp9`OO%ae3`&*Iym{QkoM&B0tS;6 zq*x|13u-aW203kVxs(p0)MP<1X-0*~4szm*@ss}vi!Kx+YfeKf+)mwQ$#gLH%oT% zWw8caz7?F@$H_MNlQ_w4{4X(=DGcJqQ(!lKkThUiK3P#pk8v?LYPV0GC#($*!2?p_ zlJUS$14S7#FwKPc`?!JFptvdohN(DX%Va$famL=s3ew_I^MRtE=uFN@EG`Bn2h`Bs zoF=`MktrBr`Eiitz!a1yD$OW5nO92O5SZ|ArUi!N{G9wEhI$`{|LM^9V<02C|7oyI zek0e&^hykrgqZroCLU1WW&>vgZlLWQn-9rbb2Cl@hr_B#8qq-az0;ItG?*NyD$bZc mxe-WKfXRuIYjoB5(G%=CU5m*9I?j|BP)&(ui_JCqm)QVrv?YoF delta 1176 zcmcIjOKVe65T41SrfGU}o7c^wNnEr|=uK+XDiupWs|`xbRT?ScqJ%csV4AlDu~sVX zq-Z)q1qtG&E~R9l)kV-hP_^Jn#JUm$UAPfM>N!Wyh3;w&%wf)B=9@X+ckaw?%Xme*d@xVr;X4unXex@l(il=460#wUXWO!3FRp0KhL4)76;@Xc8SU^x@Z9Q^n6~ zpYB<3l4`mT-lQ{TmEI3Y^s!U&uy_%phjvIMPaoB@wVT-hStZ4zG0(tE4`xVcnmFY* zO0;EGx)+$o@$%`}466xXgd@kGSjgt-spO@aG_5Pkq6`-WtSZWllh%WX$7xXx;X0N4 zDs{G*=&c;a6*6{3kwl3PsqR&cHkJ{nsVeBEQb6%cuq6lAGpv-B7}GJ|#4JM(0t!|s z>QnG4y$UF{TWpsXHkC_PD!|`~hHP~_CSack*k1dfafO|@Nj5sEV7Ipp`i7&9qXPP| zfWG7$WZkYh)z(37y6XRWWYMvQ7TR58b+@qN9#0*UqT?5$<44vWI^?zBeH!x)(7vwJ zA8tKdY@A6wv_U+nB{;(tW)t+ot6-LKd)B}iY|QyyBgRG6XCmvo*+eJgZu%x$_HrtH z?AC8Na$$^As+V(_7)%v%g)&@A!1jf5dODlQSK+_t%>TE}*e?Qz3zX$PH}wV=b?;o_ z16-$#po;U2@4>?zxGZG8N|Wk&db!_3cXvB5LTh0KFVYs9t72ZFU?kM>tCN{@F%zRN W(P3JOjP4-*$_`?O8_)M_w*3UPB0Q}C From 3e004e8c200dd25bdb76e26bed04d84e99c4ac4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Revol?= Date: Fri, 1 Jan 2016 15:56:58 +0100 Subject: [PATCH 030/242] Add a Misc_BeBook icon --- data/artwork/icons/Misc_BeBook | Bin 0 -> 18091 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 data/artwork/icons/Misc_BeBook diff --git a/data/artwork/icons/Misc_BeBook b/data/artwork/icons/Misc_BeBook new file mode 100644 index 0000000000000000000000000000000000000000..a3d3413637e540f0fd1b47d91aa27a8dd5b86768 GIT binary patch literal 18091 zcmeHO4UiPY74G%;6NnN-A%bC55)~1VNP&Rt+(HgQ?gYb6s01U+-NG&0?Jm13KmH`^ zPf+m(F~q2eC2~omh)I;ff#GDwLK9*?iyh^lZ=G?AZ&4 z5Z$io>Ydkbx_jRD-s{(IX1`H4WAc=`n#%-A05xBt46G5N3jJM+cyMXo7ZBaVo!zBQ1&=<8Q_1%PFN>e#PY2yk@}ofa zll=EU_mlh`?l@k_Kj6@9$#cOAQVF;%-FX$v0Ns`}8$vNgHw%Rg8Ti|eu^{@=Lv|qg z>kLKz7-lyWJzWEfpXk2;x}WI32D+c<=YsAh`jzfDUeT|0=(gy2Vr}HL^y6Z1B zWCx=E?C;CTXgn5Q=n6k;$$fYT1U@1xvIEhMMn#*Qigpkxy+;h!XB6x}i0o0^D8VW3 zPA^#AFiL#x;8J0ebW3Hxbu>3hxXQb;L%13Yca;0!oK1HW9yeI@9fiLKpyD9r*-;d| zct=t6nc&xV6gj34OWkq2JIbvN-QH0cekUUfqrv%!R6{i7S{UUgPXD^iTSzR_Wn zQdgYhn5l7+UK`e=kMLd>e_&U@?6mMcp2SrAelaT#zhh8~V^&44L!T~wMZXtxUHqi8 zzKrT8{(}zPjaj2BqLG4v@34dz5BWR@Iaz4?pq+yDKD3nE9cbsFrG%;LBkXJU7;($` zLDoYTPYrL_zPftL!y~~k-MKM|mIHEtx%L2q6Aj_-JUYF4*EoeKp_;w;g6f_lhk}Ds z)}po0a!I`Aop)64K6hdGU&|-rx)JRe)!(g~<$(~7C_HCAk4TQ zTwM9@tq1SA^qEj&)r6PVj(#!p``namXmfR|#_b^;{_NtgB_+IT*`@g( z)QWs!!Gd%&LmrfDD6=9NwSOWF7)>P;IAm}RiY69sjHY6lVA1q}TFAi!o*fv(RH0N_ z$4{ZShmu~bP>fYbw{@S`+vylb@dJU1J{js$@4fFNKN$X-+y%pCb@}supUT~O&bQB< zwR~4--v{fnn?HUg2gwHSUpmP`n;kG`s-sWu{B3Fe-Q1E+(5G)2>Qk-^eNq_{>W4CG z>NL$(WlW0osXzK$eIg?>9a5c=$z(;H4AtpKkFBpinD~3>ybaT~JuvE}(3@>(jffKu%sY1;* z^iO-r@K5Shpr3zIQKs&n9>>@WVO;;jxMx``&R2NOj)zV+f@%S~$ril@qa2S2irYTJ z*5U|C(U+jlFM_%abiWAd9?+$zyb;u+4!ul``qPk`pKn;cH}uBg8GUZ}=+4mnukJl> z(Y32`Q%7IlH+Xn2U6l3oSj$4YZp+o99E}=3Zd^W{PUpvt9jj~A_iOINOWLD~r1)CH z1g7)A2PJevbBY3&c9h27`uT-f1s2kacRo+V#5i4QP!PvK`?X_1lTQ3O#>u$KC5;~v z$j>k|!`3p)kfz4sCoGi))6J0Qn86Oe9d=U5_4JioF5_(17AvP2@6o2{I6?6X@d|Cu zr@ZITYb@CrbZn6l?wsiJYD2Ypt_-!}iG{^atyI>pSgp=+_-(cFX6vL-BmQPl zX;nI^&ERDr-JV96e*5+d+@(j49D!j9qdXbi_4MSyK(<2`exIY~$G8eceR>$f0GUZr zj#-6Vy`HbT7)^5Nb)-ws?{?^RGC7!vF2FUnb9`~8E^Kei zXLK^XzMEGY;rA)+>5Vvb@IA6UsZW9iuZSW_&sBABj^G|4nvb7Z++N7kAIshY%! z77$?eg92hvpb!u#G;>h+;5sObb_faq4j{l+>D_xF>0zMxf%QE4WJvD?t1H$i`MqGB zR)T(kLoa|ucwMk~VS}Y7!CkcQVsRBXD8I$2Oq$G`+pnxdpOPQ>Fs)rEJIYX(hdRYk z9>q$nPI3HjQ&)Di&sX7dP@PVtmU8OmDm&LP7M1I)g1nUxkUqtw_w~^EeGhS?ap?T& zZLF)&Gcu{f;;3NYAFPigaSPu0@nR7^3AL|c_!2WEFDZ#-u?Bn?D@z}%IfnCduqlSt zrO6xgo{Q$L-gWrGwotk;k;+8nuw-|Uk?CeRLVJ5DMLz~Ry3f%A4&9L+{2cw1W3e4| zhI3=K~ZZXiM9(e5~Rf2w(Loe71HQBWnK8CFd)H(Sk=EPyL+7Oc#to3+d z!Z#45Fu4eQ(sz1&7_Gq%6Q(!(=&Kxh0TaUDVnTpyOgNYQGULQSLYHo`-K@t_j~66# zbEP1;5Pg1-ECk(8^z?6j^gA7T0TMcS7ZP6BknjiJ2b?%WKEIBOIJ=1O!gX9SrGDZt zdBD(0He%7o%Ssq%l(Lc$=<~CZ1n7R&u)G9)jYBV33EicO2@Tc8q&OW`gv>^}9BLOX zKl}RVCvMt(DAcs+kF#gZI^Sx!Yxwnj-#*nkhHburjD3dbY-HXXwEfpL|LI>rrnZK` zBX@<9#Ae1kaZ^iT&fsG~rgFrTUa{ciXg;o&qXW0S9H|NC{ex5qp3I@o18)U zVJ0<IMmY(A4i)%*LJg66^JV$~i_1~MHei4Jq zRGv3o(5r;K^eaKX#Gx1VBd*%rj~Ig6cEokN-}Ya^Z@VkIlKi@tT2W@=lR$Tn`0UZS ziO&OF_OD#@!v4^N*8Kh>bq8}!8&dTB{rbPM^NQe($?m+mgsIRl*h!HHb4N! z>#RymEp=8Mjy}J$D!;b&+hr84Rrtdazs{y@(Bk>&3i%6G!*pwVt0C33nu5j1gtU_X zr+`b?(92DLH#lBij Date: Fri, 1 Jan 2016 16:07:47 +0100 Subject: [PATCH 031/242] Add an Misc_HaikuBook icon --- data/artwork/icons/Misc_HaikuBook | Bin 0 -> 17475 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 data/artwork/icons/Misc_HaikuBook diff --git a/data/artwork/icons/Misc_HaikuBook b/data/artwork/icons/Misc_HaikuBook new file mode 100644 index 0000000000000000000000000000000000000000..40dfb3c1998ea645e7870d8b778638279c363805 GIT binary patch literal 17475 zcmeHNe~=W#74GHW_#sgOvA~G3APE>Lz$6sZLD=EI<3|n<50pPJvfS<6E$;0uyDL9T zOg5T`fPxZ35{)HtNrfVkM9_ku;Sdrvpur?XLQpFvrqH6Sc=>~ZB%00lbx+Us?9HBY zaCivYRb4al&71C?_r3SJ`_0UpT{C^g?5gVpN&q!ir0kq3L>cb)D3HOWd@dl$#q{Yl zv)RT|pCqc<3W%N#E(Qp(3-`L=o{9hSY9aOxSMtelrZFwHL(0#n=0T1<>QU)l^-BbB zhoia#H>!v`ibs^G?;kv{M zkxWG68C(vk6rvGzlzq(N*bj9vszBv^Q7NT^(Rc?RNZjGSi`qmy9;wYl>O_ErWCUwt zi8O(q;!XUJ@@I_CFDZQ?%VLtkXUC$_C`?i`J{`D8ipI0RO;U)n?m_h;<)DpAQhMP6 zii$Tc)>dhM{CS6o{5cN`2KC695<6i`B(xvfRftz&koOLy-YRBzE-?ec`7aL4R z>+)QYiwUTj6LLk46lVpV^I?K{k0~zc*1gM7R`}F>GhV{4=KDaF#Y^*-0r%4UIN)BI z{|ay~&EMy=HuA5@}Q!tV^6kASDnupm!q09ipC3P z6phb^yg8$&HicO3wBw#p?y+$>qj3413^zoAOA@KNNXqdr>QA8dLS2Z;mDEDhliCx= zQ_!{vm#WQ0lQ`y6&*hNwt7os}Dra*GwQ#wraq82Yxi$V6a8u93S>HzWTCV=v#+~JA zEE2AF6ucSJHnp?QK5`o8R)h5=)YGVxIf}X)m2#Bf`ROUfa+X5*h8}(7(3G8@?}mn3 zr>uPIFH%@F^bXFsPGIA&qM8jU!rU#Xp|DF1NlB}g*a9oD{5==3ZTF5B{PJK%a7j4t zKNfUz6tz2;pzpBKmy*C$GLs#qi~-tX^kJGdEg0oW9MfQ7bg z7M)FEI^_|_vhcp_My$t`pB%xbA=eF+z3A3)DtqQNvqOc68{$mdOrJBinj@q)GLjOP zUS=d#Y7?%a(QI4sfASz`v-8`o*Z<84Do?`yo>MD&l z0aw8pNkzjvz6P8xR)%nI;@<|Q`W@)X(|ymzYh&Sb8rl+Kx>kYfB9jWo)Afl|Q#cb% z#Ko8XyZdkJ#_SC>mQ8;3;qfnro@<%02gjD#YbPEgj&{VQf0|_Bkp1Cxm6p=*{uN_# z->4S3M16falA#PrHk4VFjL1`@1|z9t0viwZLDfX#jgeF|6D;UHPz^o!p=Tc&@oP|e z?({M!J$Duw6xT15cji2qqOlD>5GdJ`PkZWn_;~WY(LZY$F=|2gqyKxV<({i<8M5rRV7K zUe7*%h~X)_dt1oDaq%VJnPi(&Zbw6|`PP7^IjLaeH$0uU^PS4+lng4@!TD~~-KU<} zzwyP;k-NKx-fsSlKDKBahGY$|oI-@wn4S-wsOC0y2jI>Ac@({uR-1HGd>;c zKz!1l2fgBxUS*o`=_hELOBiRqG|ta@_Kb&{&I+m-;(n&+U1;T8te`mUbJ<$B zg3|ah-1AyNeG9nP3hDviN>%O^)Z;eZL5up`@Nd3QxAJi4wUagdzIu91XycK?! zU-~hgGG}|Xz-fiEvYL(ixbhZ&<*4|Ng_+ObhMcpsIqlG5nbcyNWx}0bxehqrtPEKd z^FO7fj{M~^zd{Xg9O)wX{WdO>f5B9w9@qS$fWLFAPZESgyrOxK2EDs9pfUg>osYfXbz{ZMa#0q$0*AQnvu6`_>opA^2h zNeX8tl0t$5Sdi&-+m%%r8m z7CsKGg#`6?dn%KrF#Gl@_u`(`ALY=kEYux!XzD|+x~Y#sqt>f#{(NT|`&E!-zh(HP z&%|leN>AlZGLhq`aOC^C@EH!?--YuZ4f00k&`C+Qqra#*7G0A`C2o%hW_N?N;Uq+a zx>$A9{Y&`ETv}DI$_!`m_Xmcua-gTU8@X1Lt#(J(eVaB)^C)eVhikVrM zFvvTU@Iq3;6XtKbj**KuaFJ(+5necfOQk@&j+0G3y<{5(eXhKO3yor4G8Xr|yd(kK z%Nte}!5^~myq7RsI-Jl^B`1aHivni0$#SC2a{1TC#y@%2ffJ$Fj^EzAV8Jz3^SaS@ z_Wwt3>nx`E5;JlS)7i|tKKR+~RqqchF;iW|#Up2h^TcN+Jb71hV&RapVWzajR8cV> z<>)?6lw$ywQI2TB&L=w&uC&GMavAEcQ4vkv;O0qqzZw!w5`UWuXnymbiLV z_UlejQ-&5;n9}BV8v2=;0_P9I^baPo3O@;44@}v+`}@ryG)})NOmX%pGM@}6f{(KC zB7Vays`MNFpvUi?&VLD|MVtCrnMTpM-vxSoY`+U!yg6vbGiS1KoQ8ox{w&})%SZmH F=KrztHS_=g literal 0 HcmV?d00001 From 4a44a4f15f125c54319dc3f47764debdb0f01c0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Revol?= Date: Fri, 1 Jan 2016 16:25:50 +0100 Subject: [PATCH 032/242] Add a Misc_Terminal_ncurses icon Really just to illustrate my next FOSDEM talk ;-) --- data/artwork/icons/Misc_Terminal_ncurses | Bin 0 -> 35250 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 data/artwork/icons/Misc_Terminal_ncurses diff --git a/data/artwork/icons/Misc_Terminal_ncurses b/data/artwork/icons/Misc_Terminal_ncurses new file mode 100644 index 0000000000000000000000000000000000000000..8097db8565bc07af98efa35a29c7d77c01a108cd GIT binary patch literal 35250 zcmeHP32;@_8NQEHS+o)X-P#2wll2`U8r`fw9sa(PPNl%`hDlzb2rX=o@^wNduC3~ zyZ=4++;ji$-_DlVa~IB>HFw4(7E%nkB~KcDn`IT@{%N5)xD?ODtkbQTGZ)Tf8zavp zRkjtgdb{*zKWteS;a)G?^V2^*-?ENPl=W-Nb5&XEeAF`O)xKf!?W$Mmt?DCU=r4Qq z0o>Swy6QgPV%?0sn!MyYcl>KCA|0FBR*UN(QeXouH#Bg=Nq6m-6qd8N4p7pl#3rFb;Gb0M~)81K?J-oge`BIdlO48w_xsjJq6};=Tl#+^Oyj|*x0whq`*?RDX>iVsg0d$OLuyHIq%t0KznfC^uLs?)ZT!tlE!1h-R~@?0Hgy$}F2}a?XLFNYx-6tZX6EhR~Z$f@dg}x8!GUzP%W~Deg<0@<=!Ud$)>`@r9c#!1x0(GseGzZ!l#%$9znF#`nhc1mq7P`x&q3 zi$V7@UeO-_-OqT^nGYlDtj#fpE*O6{F4SoJgs|AMr4wh#AqpM*dgMM%S%Q*77M5km zaUfLeAF^2OXh5RYwibeDhU4X3hJgMaUu+5}`N-r4l+SXMGZ@(qsG^sF?gv!SZvov8 zDCx`%$T~m|I&=Xj)z$?xm#%ePz61w%Z3&pm*-|+;B&fB>5=@`VZ_9%cyw*J#1})%s zUNyw5KkAWJFdVgahne=qKp{ zGfqIbm}OIyo&!=ErZi4zAp0mZ5+%cI(g|K(5IdqF32OUV3WFR9$WM7E2bf)rw5CeO zrqpBst_K6e5|rl#%&0*{$6OYy8DxGyzc$9qoZJq`nyG$KteN~akvbAb=B$v^i(p7S z5p=(Psrt)7_v;sbGv9$M+X+S&4?1+AUySXOHMwLa?q@$k=|y1o+bHS17-M`2xfpr5 zpZz8kCHo84?8)rUR;51*mxjw0Iu!&sC@a6QS-e#@YuBmD(y_GtFkmRBT$ z><7E)L1=vFK^{YS6-rLlToYiwK}FB_%|d8J}9q-1z7w{CnZ~V&w3IzoL)8 zJ-_i$bgoGHjSuO}*COkTPlZDl#)l2&lIy*>mu4`O+@`M%3?g+mBxi$ne4GqU-)D0h zs*_pkDXc4-tRgN(J#b!pG79l2{2Z0k8aCN=4eB!So_LM58CNE6;Z!A=MLwvO@l(8+ z*IbiU%f)IEhIB3$&zv{Ej6Edt)g+8yDqYa>>hg+JSWBr+XK-b;+=)LX9pd=Pv_ogG zWh7mPC`qJ?4spOG*VVipRnEg}OnS5j-$*B^Sj65j@zePRKZ{Iy6vK+T+I;XZ8c`!k zx2Miby5wC`Q&Y>zOnGGrF4B4k)lItmU387#%q}yju6tcRU7*TO;p>_BDMi3>dRZwo zUW|?6C|O6L&EJfhmkJu`y{$#_%VsG0YS5)BVkd)7I&K7=LQw?e_S0_xO}=+XU~|CN z9C}4{c{U4nS=LO&g1|*CQ(lu@k<<>&Y+QxR8jqr@#}1ytM^ z7V%+V8tV%Yrx~d%&#a2C%plyBoqhW0rz0shl=3MzEWKj=-)~J!p3#5C(WbqL$}!V+ zS|eU*_}@!^|J2$e+bQMNpewGjQPllo?xl{D-*eABE#z|hrF^cTQ0;DoP?@-vuu#!; zxk5$j5|;kRY?_(P>)!fJ{VgkhkvM)q%^RP5{N=>jS8r-QxbS$x;3;o3{`tX|g+Sf- zkE?}1HT`&uBT!`h(W6H@K%mMD1*)+X0;K{>_ELE-nr?b06<~%1O6_+LR*EiDtTuSo zG?FJXd0OJg)3H{`6P0ven#l(fO^3G^U-I;U#AjxdOxRlTe8Vj-%$>Zsem~{v$Sc`NHp<2aHcoToYVY2? zE!(zj>j1gB&QPviY=vB@MH8J|DRbnPs~u?jJba)lSM-gpT#3aFDOmOO^`2mT3s0F0 zE1p4PoiPmMP=#A%mm>4G8ip$RXF$^pL%#&NZWzjOo8(w<82Ye7Z{;xbi?>hTfA+r* zC$9a&fuCRA?~z3Hu}z0QRQL6UZ(KHe`miCtrC=><>~*n?GXB*OS2}|A)KgEjY~H-N zC7Dcyg{yh@%C-zgyR9GOJiqdTEuL6Kvm3#wj?nbN%B^pvTUr_@K7sU~nvEa9^0TDZ z4Y$S3Wm6ro+P{B4MLR4~Vs-;+jJXWc*^O>HncyuRMMBlmN?Wz2`ISR|J$rZJ?ebs! zWY+!9Bo>g-~VZ&F(ouRtLe*NKI_I*tYkx5J zxy1O7_F6wPvokT|uB-kv`Dfp5m_2gfkD7k_6AD%Q@Oc9%RPoqSRwP=c!IE#IP=>HW>CZG7hh0eFQYNSrl3r`Z(yEAuGbuJnhLgnQM?` z{Xt@3h&1+NT^{<~4qYr-#xuzkq7||Cg%?bsSsoJQcRGuBp~y(ovzjRansg$)3PDe* zW~F7VPSwQMrn0H!sp?d2Lp)niUM<&rR+q2W-Keu?VT@ri^tlq8C1c4XCNhQ0CNm`C z3In4UM_~Bjeqgw?$pv2ycVZX_sl~)Q@lXk95`f@J-t)L8hdx2T`l3@hzy{=@U+B>D z0LD)g^AjANNwDJLJe`XejtG4jeIXB5WpY`5C*QA2n{ZF@koDL&6ZuCz`gx)jUgdC5 z3OAo&J+&0fqsji&N3|+dWStS9Ux;TUuTFPYL)ni>$m}O~3#wI8(r3B!0RcMqToXGg ziNF3@r@mkmD=f@q(yNjd552`J%4NCk#Hy3t8pA5 z6R%F8bV$Xve87Ka^pd;wyfvyhk*!K+a!J`NtGmd^^-bBri8_;y-VR-wYN$(706h8J z8M?%Ef_%C(8uujLL0x(d5a@KNm!lg+R?zsJk%vCQp?kVSCcDOuqAWy&-yJDYq(mA| zRcFsJRHB)ks6<@$&!oLBg8u()wPU2IY zbZRpebiOkjcyr2I)(`rg&*q_Tap<1!fgX9jhp!N7!~O*ic)MD2(&L2(4YApYK6e&2 zJocRrn{l|O!zK&54jb-@)6vy`r0}qzRJm~h#YJGlxHf$9J3{B=qeDG*(V^h!(ZK=l zu0v;wq3-NJ_uHd8v?7evb#{%hcD@OPi*Qe;JJq1;bYx8)`kfBl(;cddiw?WSZU}_< zKC#88>tMOt5SH!eYI|TQlOK#)q zI!ri?ViE#8g1&YZCX~~Bn2f?b9VRP5*YTe72|D_14&B3qU*lpzu@IQhym9AJ*C8_3 zaEvn>)`y%UcbNFqG)Vjc$+6%B5bIDgbU_(;;Sb7qCY*@S6^AF?#)Bp~9GoaPh{h?= z;b847bV`TFkUaDfhwdSTMm?lB_a%_xt|E8yhBMglV2egMtsUi1b_&eAy>~}BUo$ju z-vI+U%fwMw^O?9ya8GCA@|m&?sIOC~dmXx`I5ZEgiQ^=-P@EHX({-J#>$w9^#$_%v zL_|QtK+?5oVnbTjVbgOX0|o;wHiX2D47iu8U5Fe?v||Y&LPRW@b_^oLHh^WaBSdB} zE))ZMlseaPV)WbzIuf_>cBJA6k+SZA$S7L?VhxQD=^lv0OB_Vv5hC3Lk#Q1{#`7aY zx(6c5COC+Uj1cJ_h*(n`L@sO(B0YEZSRZR~t_|an_}I3MNcuG5d8B?3CZ3j<&**mw zCTb(vpa_$0gNfL<4?P(cVbX0d8Eyj*%c>h5VbWbNvBx-=To7T>Z7{h+VghX1F~{{4 z!{w95ppl)me8MTee9I>nGd zvrV(XN1VeOjSUel?o5|CE?miSapAr&7Z>jwW1DbkRJgQfmcHle3zxB6T)5)t;o=?z zY!fbM%1M#FbSHfoYfD(7I1K+5QmvtM)EM&8wvFo@Ozg4k@%hnQOK_!8&9$@CEpsR5D07!6(NG)T#}s)Y@BcV-@KNSSiB54P zk{X2F_mL7sO60if_wqm0=n_w)_LiN~9wnM#cvhwqhZ|^=I5uEnh{f{`9dTAh%}wjh z%5ZL47tZm&=jzVN^hT#-{oujo;ym=x4&56QvDFjDM4Yqc;lFq^FoGO(-oK~m)3N^w zp!s)iy>aWGTN2IJPu}?7UVlkEIj8@o{d-<$*td8>+3T;rmiY0T%U(*=UDh~p$G+@0 n77uM~$Lwe{yC5~s(jMw6o11+b-a|Ho68x}#C;aYz3L??pCX literal 0 HcmV?d00001 From 340c698e8081b0216ccffbdc960e9f08c1d180a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Revol?= Date: Fri, 1 Jan 2016 16:50:01 +0100 Subject: [PATCH 033/242] Add an App_Lazarus icon --- data/artwork/icons/App_Lazarus | Bin 0 -> 6501 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 data/artwork/icons/App_Lazarus diff --git a/data/artwork/icons/App_Lazarus b/data/artwork/icons/App_Lazarus new file mode 100644 index 0000000000000000000000000000000000000000..69e992e802aa4fd572916668ac569a7e93632fba GIT binary patch literal 6501 zcmeHLe{2**6rS^-Xho<{0xIeyXrPLw0tQ44Hw#iAg;wAXAw_yz7rJu2JMYdGVvL|h z5q|(78Ze?2G$K)`m z=FQvp&3iL@(`U}9nKpCkbpj;-=_ye@8zw{${eAPsplQzwh%!-AGiN4sd{jitX!s=D}irI7LOlJE$cA(HzLCl&vtKR5?=MV&MXuCIvQEq%3aOw_< zau2=$80QkNt*f*3u>BB(HUvd~8|S)|CmcK;X)$eu(S#KjN&IBcb6nyltc1^$+YBYg zr9CQy;Z+S)0M)=dZ=NqHdLaAMz{Fh{p?cIv_NbXkCHta@c-)L;%q9^)p~pkfSR&2# z_JBXnAAu!)JwFg*S=^rI+-gWAM0rekUgI->yFIV*`+>VXPn^;TDdzbP9o+W(`DnD5 znMgE}N=9NH|DS;?yCB2h;ttd|q2}`h$T&!UNF_u#ZU!H0kgN%>ydkF#8;Iu(m{@IN zLev`L#@=W=wQ-2?^!TC1_(YkDAGMS)_RroYcYPDWjQyB7&A4&WSYuJ+RcMcboCQ{a z`b-{Qd5rB1_+#t`*h^3OiIofZawu-b`k_4mG6>>kOyl*y-Hd5`9dI{e#3`RbiZOQ5 z!EMGEw8==*)zMg_Ez4IU9CHd1a%zG4u+#1Xht=cx3e;PPp(ZUJ-qr#j;aWj8o^uK& zE*LAvO}yNgJ!O;JzUM0A<^`|G)oc2=_}lPvSgyb9q)S6rm>Rx)V}$(rScNgF{XRM1 z_-HKMfic`hD^QzIq_O`1gwese1F|8P5QS(5peO4( z35>EqZrZ+5HfQ$XnF>xpc0;y03YaKcI#$Z}N3H>?W*=#sEL%EmMY|f(E=RR*lf%1C z;F%h_+} z6Y1`-ykyI6dHvLf#`Pw(o(r>JdO>Q{_-*KOr&f(W2i%=n ziBrCV6icmtIC$yQ%Cy-C&#+#Fnn&JRrzU~SWv5W{Sfoc;ccA7G>59y$ua7hyi7i1# zPEi0+Id6WYaoJ-p%2|ghjONT2vTE}fqoM5=ThX$wy5-&lHyEq;Y<5NH_`}1EgdLGN zO(gK+rGt%oe)~jL)?aB1@A?%Qcw&=anzR))58}0j1beSL>CEz&nHHbpp!0LzT#0c3 zIFV$q(8=ziui88}@8%B*`|V}K<7oL=Zl7R4gbrH(=D zn~PQa7_=YnNdIaV(Kr^qIu~%eNMHPk=etN>`~$f7>u;nNp#+~)IYYUKePLIQqn;(H zNRwsa_Pzy!{TRFpI!J-uIoj}?!DTk5d=c``q6{7=ZmBhlLajU0^9A#)gX1EWPTSv7HQELAZ?=(1 zMdInjiBwA@V81F$*$u(cEKM2~BhxVCMP^P}UO{VzNF zi(U3IVjZUXS>*-HcJB#lP~2+H%01lB3R=alR5xeb#N^Vw>6sTUfly~qc=yoNz-f69 zhXuc0sgrUCM2#O}?;&E`JLwYmqYiFow@}Jlj5e?9_?*;@{M3`ji#;$JN8&3-Aya^0Xf--B~gD?gQG6DIALm>u8WgHOxigFJWxaPr3B z(219NTAlIP9X%(LN-Q-69Tkd3lIRwyaR>j~VX^QpODbeH>4`S034d+v={ySS2ZmcL zU=74%;ZuZK4}Z$NNFy_dl5%#oP9vm zf3**`p#PsrZp^r)l3Nw}RGfO_r5U)|H{RsN1F{&t+QD=2!kt_gFI>yM9Aty#U#H|r zpOkEass9uu4A)YWRHLsLB?;igT)(UY&VQ0P{_iMZnk6MTg`y^ID|yVcUikZ=cW0e` z8>2kMg*Ub?nh{2)UH2kbp7F`dPOQ}%X6Rl1lUnR1z~sf`s66dGT=;)pF=pDb Date: Fri, 1 Jan 2016 17:18:08 +0100 Subject: [PATCH 034/242] Add an App_LibreOffice icon Not sure the design looks obvious enough though. --- data/artwork/icons/App_LibreOffice | Bin 0 -> 6914 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 data/artwork/icons/App_LibreOffice diff --git a/data/artwork/icons/App_LibreOffice b/data/artwork/icons/App_LibreOffice new file mode 100644 index 0000000000000000000000000000000000000000..68b5243418b9a50549af831ed982d65bd77dfbc5 GIT binary patch literal 6914 zcmeHLYlu`;96z(8>pNG?M~XENkv&kiGSq74(dMqP?y74aEWyUvyY6jg=T0-@V|%fM zk4k)CiAEn3qEsr3M2!-JGz>EEQKVE5^uabH6temv)9-iAJ$LS%y`xt}{NjN>ckb`J z{^$2Q|Nl96X3uGDXq+>vR-lAn#R?@iUWhR2`d98c0-)6%qp+ zd`7hp^HEoYIyZi1h!C4^Q|+_KLPuUSqE!&D&J9qrYp?XIdJ!S`ORrde7HxGsXAz&m z*C3OeK`(gjSvm*eQq@xWi}?#$pX57MAq%Mrqt}Awxe4~23L6EZV_`AKgU<#|2g72p z2Y&-tKO1jqX_4b_tb;H$&QL*|^U{vlcqZ9pU??H-9fnbe6s)YsT4tsIWKv9sf8#=I zi;JFn6G9A!wI)PQ2cD;ZPsei?o^xTJ#bvLEnQ=N+)lG?SuNl#&V{G3uiRT7Xg3%^IC_+%ENGfgRiI@O_2(|?d2Ni5I z+OoI>kuh^p`3-<7FlkQ1 z-=NZv5f-;J?90S866TghZg#^Vc7E#$xE5aOAnRj+E(YdzQ)N)$65zdVK`v z$rCvxPb~Q9d(imlMb0Cza=kQOp0_lfL?5?a{7qX2qYq)>&0Fu;c)4B=IblRS2Exkq zSp>|bj}q=m4OQ4&en>C>o@mJzy3uEdF_+Sls(Xv1qlo=MCP5gqSt<33TX*7P_;B z1aLDma#<^_<|0LAro+gYxVd@V2yt0KWV!?GNUz>pqyn#UTk|(>#rnd^y}?3U%RwJV z_i!7Rn}|FwNhedC_6EYCRNMe8h(p{9K^?-kfGmCv)u4vBbch>K9TX*xHn(7!ARZmY z8iU3kcP5LUN4(JxcgNp$j6K1|rKk9q5s%CKQ0H>hiN5#IK8VkIFwBjJJ}N^O7sJSj zjy{cd0rQK#SAhFP-)i8BD{u5|wehQrzDpbXjXQDTMD*8xc8_`I&Lh!z7pLw0^1~yC zR<57EbM@?#jJ}?84?Y&dGj?LrrKpO&qeqVxtE#Hpk#~(zhdq|X`SBw*W)PLS(T)M6 zgAYF?8)Sq=WVx9)mzZg@&>hLAl4(PZ(3M>2SJ4w|hD$-@ ze;Uj(m`D-}Ng>%JLlJj*VKi|Rh61~V;U^Lk3)uN0J%6#o34L^r6AOSKOBbeMJh3As+kz^ihmeJ6oTA%!JWT-iCEZ z5N~wwksf>za4N`9akpP?w|Dk-YawTK8iGVcQpqf;@sY!q7x1r*d^7QCvv>E z^qZ&4ynvZ*4g!+<|3+jw-e4nkJxxgFYX{G)A2=y zF8?`HnNIy#cPrU}kXy;l|N0R0-_(!6;f+dm{8p)y>}pZxm+W{N`6avV3ixIlF9i=T QD}94!7*Kcc+{AO}e?Nh5LjV8( literal 0 HcmV?d00001 From 599289f2f3bacad6ed9b4783daf52e17dbe55e47 Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Fri, 1 Jan 2016 07:51:56 -0500 Subject: [PATCH 035/242] ACPI: Revert the upgrade. I don't have any hardware that reproduces the KDLs, and the developers that do don't seem to have time to test / debug it, so I'm just reverting. --- .../kernel/bus_managers/acpi/BusManager.cpp | 17 +- src/add-ons/kernel/bus_managers/acpi/Jamfile | 2 +- .../acpi/acpica/common/acgetline.c | 1 - .../bus_managers/acpi/acpica/common/adfile.c | 2 +- .../bus_managers/acpi/acpica/common/adisasm.c | 1004 +++++++++++------ .../bus_managers/acpi/acpica/common/adwalk.c | 34 +- .../bus_managers/acpi/acpica/common/ahuuids.c | 1 - .../acpi/acpica/common/dmextern.c | 15 +- .../acpi/acpica/common/dmrestag.c | 19 +- .../bus_managers/acpi/acpica/common/dmtable.c | 6 - .../acpi/acpica/common/dmtbdump.c | 339 +++--- .../bus_managers/acpi/acpica/common/getopt.c | 9 +- .../acpica/components/dispatcher/dsargs.c | 34 +- .../acpica/components/dispatcher/dscontrol.c | 49 +- .../acpica/components/dispatcher/dsdebug.c | 9 +- .../acpica/components/dispatcher/dsfield.c | 83 +- .../acpica/components/dispatcher/dsinit.c | 14 +- .../acpica/components/dispatcher/dsmethod.c | 73 +- .../acpica/components/dispatcher/dsmthdat.c | 39 +- .../acpica/components/dispatcher/dsobject.c | 66 +- .../acpica/components/dispatcher/dsopcode.c | 46 +- .../acpica/components/dispatcher/dsutils.c | 45 +- .../acpica/components/dispatcher/dswexec.c | 51 +- .../acpica/components/dispatcher/dswload.c | 32 +- .../acpica/components/dispatcher/dswload2.c | 40 +- .../acpica/components/dispatcher/dswscope.c | 1 - .../acpica/components/dispatcher/dswstate.c | 9 +- .../acpi/acpica/components/events/evevent.c | 14 +- .../acpi/acpica/components/events/evglock.c | 11 +- .../acpi/acpica/components/events/evgpe.c | 16 +- .../acpi/acpica/components/events/evgpeblk.c | 15 +- .../acpi/acpica/components/events/evgpeinit.c | 28 +- .../acpi/acpica/components/events/evgpeutil.c | 7 +- .../acpi/acpica/components/events/evhandler.c | 172 ++- .../acpi/acpica/components/events/evmisc.c | 5 +- .../acpi/acpica/components/events/evregion.c | 134 +-- .../acpi/acpica/components/events/evrgnini.c | 121 +- .../acpi/acpica/components/events/evsci.c | 4 +- .../acpi/acpica/components/events/evxface.c | 10 +- .../acpi/acpica/components/events/evxfevnt.c | 28 +- .../acpi/acpica/components/events/evxfgpe.c | 8 +- .../acpi/acpica/components/events/evxfregn.c | 42 +- .../acpica/components/executer/exconfig.c | 43 +- .../acpica/components/executer/exconvrt.c | 27 +- .../acpica/components/executer/excreate.c | 31 +- .../acpi/acpica/components/executer/exdebug.c | 460 ++++++-- .../acpi/acpica/components/executer/exdump.c | 49 +- .../acpi/acpica/components/executer/exfield.c | 82 +- .../acpi/acpica/components/executer/exfldio.c | 63 +- .../acpi/acpica/components/executer/exmisc.c | 76 +- .../acpi/acpica/components/executer/exmutex.c | 77 +- .../acpi/acpica/components/executer/exnames.c | 8 +- .../acpica/components/executer/exoparg1.c | 71 +- .../acpica/components/executer/exoparg2.c | 41 +- .../acpica/components/executer/exoparg3.c | 25 +- .../acpica/components/executer/exoparg6.c | 25 +- .../acpi/acpica/components/executer/exprep.c | 60 +- .../acpica/components/executer/exregion.c | 11 +- .../acpica/components/executer/exresnte.c | 10 +- .../acpica/components/executer/exresolv.c | 26 +- .../acpi/acpica/components/executer/exresop.c | 38 +- .../acpi/acpica/components/executer/exstore.c | 146 +-- .../acpica/components/executer/exstoren.c | 9 +- .../acpica/components/executer/exstorob.c | 7 +- .../acpica/components/executer/exsystem.c | 8 +- .../acpi/acpica/components/executer/exutils.c | 10 +- .../acpi/acpica/components/hardware/hwacpi.c | 10 +- .../acpica/components/hardware/hwesleep.c | 5 +- .../acpi/acpica/components/hardware/hwgpe.c | 12 +- .../acpi/acpica/components/hardware/hwregs.c | 39 +- .../acpi/acpica/components/hardware/hwsleep.c | 16 +- .../acpi/acpica/components/hardware/hwxface.c | 48 +- .../acpica/components/hardware/hwxfsleep.c | 7 +- .../acpica/components/namespace/nsaccess.c | 12 +- .../acpica/components/namespace/nsalloc.c | 5 +- .../acpica/components/namespace/nsarguments.c | 6 +- .../acpica/components/namespace/nsconvert.c | 98 +- .../acpi/acpica/components/namespace/nsdump.c | 41 +- .../acpica/components/namespace/nsdumpdv.c | 4 +- .../acpi/acpica/components/namespace/nseval.c | 70 +- .../acpi/acpica/components/namespace/nsinit.c | 10 +- .../acpi/acpica/components/namespace/nsload.c | 27 +- .../acpica/components/namespace/nsnames.c | 15 +- .../acpica/components/namespace/nsobject.c | 6 +- .../acpica/components/namespace/nsparse.c | 13 +- .../acpica/components/namespace/nspredef.c | 2 +- .../acpica/components/namespace/nsprepkg.c | 21 +- .../acpica/components/namespace/nsrepair.c | 25 +- .../acpica/components/namespace/nsrepair2.c | 33 +- .../acpica/components/namespace/nssearch.c | 4 +- .../acpica/components/namespace/nsutils.c | 21 +- .../acpi/acpica/components/namespace/nswalk.c | 12 +- .../acpica/components/namespace/nsxfeval.c | 24 +- .../acpica/components/namespace/nsxfname.c | 56 +- .../acpica/components/namespace/nsxfobj.c | 7 +- .../acpi/acpica/components/parser/psargs.c | 30 +- .../acpi/acpica/components/parser/psloop.c | 10 +- .../acpi/acpica/components/parser/psobject.c | 7 +- .../acpi/acpica/components/parser/psopcode.c | 2 +- .../acpi/acpica/components/parser/psparse.c | 47 +- .../acpi/acpica/components/parser/psscope.c | 10 +- .../acpi/acpica/components/parser/psutils.c | 7 +- .../acpi/acpica/components/parser/pswalk.c | 1 - .../acpi/acpica/components/parser/psxface.c | 9 +- .../acpi/acpica/components/resources/rsaddr.c | 27 +- .../acpi/acpica/components/resources/rscalc.c | 63 +- .../acpica/components/resources/rscreate.c | 49 +- .../acpi/acpica/components/resources/rslist.c | 25 +- .../acpi/acpica/components/resources/rsmisc.c | 51 +- .../acpica/components/resources/rsutils.c | 65 +- .../acpica/components/resources/rsxface.c | 15 +- .../acpi/acpica/components/tables/tbdata.c | 9 +- .../acpi/acpica/components/tables/tbfadt.c | 8 +- .../acpi/acpica/components/tables/tbfind.c | 8 +- .../acpi/acpica/components/tables/tbinstal.c | 13 +- .../acpi/acpica/components/tables/tbprint.c | 5 +- .../acpi/acpica/components/tables/tbutils.c | 57 +- .../acpi/acpica/components/tables/tbxface.c | 18 +- .../acpi/acpica/components/tables/tbxfload.c | 20 +- .../acpi/acpica/components/tables/tbxfroot.c | 24 +- .../acpica/components/utilities/utaddress.c | 2 +- .../acpica/components/utilities/utalloc.c | 15 +- .../acpica/components/utilities/utcache.c | 4 +- .../acpi/acpica/components/utilities/utclib.c | 990 ++++++++++++++++ .../acpi/acpica/components/utilities/utcopy.c | 120 +- .../acpica/components/utilities/utdecode.c | 53 +- .../acpica/components/utilities/utdelete.c | 11 +- .../acpica/components/utilities/uterror.c | 8 +- .../acpi/acpica/components/utilities/uteval.c | 8 +- .../acpi/acpica/components/utilities/uthex.c | 2 +- .../acpi/acpica/components/utilities/utids.c | 93 +- .../acpi/acpica/components/utilities/utinit.c | 17 +- .../acpi/acpica/components/utilities/utmath.c | 33 +- .../acpi/acpica/components/utilities/utmisc.c | 30 +- .../acpica/components/utilities/utmutex.c | 31 +- .../acpica/components/utilities/utnonansi.c | 4 +- .../acpica/components/utilities/utobject.c | 30 +- .../acpi/acpica/components/utilities/utosi.c | 14 +- .../acpica/components/utilities/utownerid.c | 11 +- .../acpica/components/utilities/utpredef.c | 6 +- .../acpica/components/utilities/utprint.c | 16 +- .../acpica/components/utilities/utresrc.c | 17 +- .../acpica/components/utilities/utstate.c | 3 - .../acpica/components/utilities/utstring.c | 10 - .../acpica/components/utilities/uttrack.c | 81 +- .../acpi/acpica/components/utilities/utuuid.c | 8 +- .../acpica/components/utilities/utxface.c | 21 + .../acpica/components/utilities/utxferror.c | 4 +- .../acpica/components/utilities/utxfinit.c | 75 +- .../acpica/components/utilities/utxfmutex.c | 4 +- .../bus_managers/acpi/acpica/include/acapps.h | 89 +- .../acpi/acpica/include/acdebug.h | 20 +- .../acpi/acpica/include/acdisasm.h | 33 +- .../acpi/acpica/include/acevents.h | 18 +- .../acpi/acpica/include/acexcep.h | 12 +- .../acpi/acpica/include/acglobal.h | 13 +- .../acpi/acpica/include/aclocal.h | 35 +- .../acpi/acpica/include/acmacros.h | 12 + .../acpi/acpica/include/acnamesp.h | 9 - .../acpi/acpica/include/acobject.h | 7 +- .../acpi/acpica/include/acopcode.h | 14 +- .../acpi/acpica/include/acparser.h | 7 +- .../acpi/acpica/include/acpiosxf.h | 3 +- .../bus_managers/acpi/acpica/include/acpixf.h | 39 +- .../acpi/acpica/include/actables.h | 6 +- .../bus_managers/acpi/acpica/include/actbl1.h | 2 +- .../acpi/acpica/include/actypes.h | 6 +- .../acpi/acpica/include/acutils.h | 30 +- .../acpi/acpica/include/amlcode.h | 16 +- .../acpi/acpica/include/platform/acenv.h | 7 +- 170 files changed, 4187 insertions(+), 3199 deletions(-) create mode 100644 src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utclib.c diff --git a/src/add-ons/kernel/bus_managers/acpi/BusManager.cpp b/src/add-ons/kernel/bus_managers/acpi/BusManager.cpp index 5c65f87d10..fda246661a 100644 --- a/src/add-ons/kernel/bus_managers/acpi/BusManager.cpp +++ b/src/add-ons/kernel/bus_managers/acpi/BusManager.cpp @@ -185,7 +185,6 @@ acpi_std_ops(int32 op,...) void *settings; bool acpiDisabled = false; AcpiGbl_CopyDsdtLocally = true; - AcpiGbl_OverrideDefaultRegionHandlers = true; settings = load_driver_settings("kernel"); if (settings != NULL) { @@ -224,6 +223,14 @@ acpi_std_ops(int32 op,...) "AcpiInitializeSubsystem failed")) goto err; + if (checkAndLogFailure(AcpiInitializeTables(NULL, 0, TRUE), + "AcpiInitializeTables failed")) + goto err; + + if (checkAndLogFailure(AcpiLoadTables(), + "AcpiLoadTables failed")) + goto err; + /* Install the default address space handlers. */ if (checkAndLogFailure(AcpiInstallAddressSpaceHandler( ACPI_ROOT_OBJECT, ACPI_ADR_SPACE_SYSTEM_MEMORY, @@ -243,14 +250,6 @@ acpi_std_ops(int32 op,...) "Could not initialise PciConfig handler:")) goto err; - if (checkAndLogFailure(AcpiInitializeTables(NULL, 0, TRUE), - "AcpiInitializeTables failed")) - goto err; - - if (checkAndLogFailure(AcpiLoadTables(), - "AcpiLoadTables failed")) - goto err; - arg.Integer.Type = ACPI_TYPE_INTEGER; arg.Integer.Value = apic_available() ? APIC_MODE : PIC_MODE; diff --git a/src/add-ons/kernel/bus_managers/acpi/Jamfile b/src/add-ons/kernel/bus_managers/acpi/Jamfile index 95f06c2ded..d61003924c 100644 --- a/src/add-ons/kernel/bus_managers/acpi/Jamfile +++ b/src/add-ons/kernel/bus_managers/acpi/Jamfile @@ -77,7 +77,6 @@ local executer_src = exstoren.c exstorob.c exsystem.c - extrace.c exutils.c ; @@ -165,6 +164,7 @@ local utilities_src = utalloc.c utbuffer.c utcache.c + utclib.c utcopy.c utdecode.c utdebug.c diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/common/acgetline.c b/src/add-ons/kernel/bus_managers/acpi/acpica/common/acgetline.c index 804ff30b0c..2a2232a310 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/common/acgetline.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/common/acgetline.c @@ -334,7 +334,6 @@ AcpiOsGetLine ( ACPI_BACKUP_CURSOR (i, EndOfLine - CursorPosition + 1); EndOfLine--; - if (CursorPosition > 0) { CursorPosition--; diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/common/adfile.c b/src/add-ons/kernel/bus_managers/acpi/acpica/common/adfile.c index 3ba4a57311..96a2f2558c 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/common/adfile.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/common/adfile.c @@ -171,7 +171,7 @@ AdGenerateFilename ( } FilenameBuf[i] = 0; - strcat (FilenameBuf, FILE_SUFFIX_BINARY_TABLE); + strcat (FilenameBuf, ACPI_TABLE_FILE_SUFFIX); return (FilenameBuf); } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/common/adisasm.c b/src/add-ons/kernel/bus_managers/acpi/acpica/common/adisasm.c index 3b0b2c0abd..44a052e8a9 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/common/adisasm.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/common/adisasm.c @@ -114,14 +114,16 @@ *****************************************************************************/ #include "aslcompiler.h" +#include "acparser.h" #include "amlcode.h" #include "acdisasm.h" #include "acdispat.h" #include "acnamesp.h" -#include "acparser.h" +#include "actables.h" #include "acapps.h" #include +#include #define _COMPONENT ACPI_TOOLS @@ -129,29 +131,17 @@ /* Local prototypes */ -static ACPI_STATUS -AdDoExternalFileList ( - char *Filename); - -static ACPI_STATUS -AdDisassembleOneTable ( - ACPI_TABLE_HEADER *Table, - FILE *File, +static void +AdCreateTableHeader ( char *Filename, - char *DisasmFilename); + ACPI_TABLE_HEADER *Table); static ACPI_STATUS -AdReparseOneTable ( +AdStoreTable ( ACPI_TABLE_HEADER *Table, - FILE *File, - ACPI_OWNER_ID OwnerId); + UINT32 *TableIndex); - -ACPI_TABLE_DESC LocalTables[1]; -ACPI_PARSE_OBJECT *AcpiGbl_ParseOpRoot; - - -/* Stubs for everything except ASL compiler */ +/* Stubs for ASL compiler */ #ifndef ACPI_ASL_COMPILER BOOLEAN @@ -159,7 +149,7 @@ AcpiDsIsResultUsed ( ACPI_PARSE_OBJECT *Op, ACPI_WALK_STATE *WalkState) { - return (TRUE); + return TRUE; } ACPI_STATUS @@ -171,6 +161,52 @@ AcpiDsMethodError ( } #endif +ACPI_STATUS +AcpiNsLoadTable ( + UINT32 TableIndex, + ACPI_NAMESPACE_NODE *Node) +{ + return (AE_NOT_IMPLEMENTED); +} + +ACPI_STATUS +AcpiDsRestartControlMethod ( + ACPI_WALK_STATE *WalkState, + ACPI_OPERAND_OBJECT *ReturnDesc) +{ + return (AE_OK); +} + +void +AcpiDsTerminateControlMethod ( + ACPI_OPERAND_OBJECT *MethodDesc, + ACPI_WALK_STATE *WalkState) +{ + return; +} + +ACPI_STATUS +AcpiDsCallControlMethod ( + ACPI_THREAD_STATE *Thread, + ACPI_WALK_STATE *WalkState, + ACPI_PARSE_OBJECT *Op) +{ + return (AE_OK); +} + +ACPI_STATUS +AcpiDsMethodDataInitArgs ( + ACPI_OPERAND_OBJECT **Params, + UINT32 MaxParamCount, + ACPI_WALK_STATE *WalkState) +{ + return (AE_OK); +} + + +static ACPI_TABLE_DESC LocalTables[1]; +static ACPI_PARSE_OBJECT *AcpiGbl_ParseOpRoot; + /******************************************************************************* * @@ -238,7 +274,7 @@ AdInitialize ( * * RETURN: Status * - * DESCRIPTION: Disassembler entry point. Disassemble an entire ACPI table. + * DESCRIPTION: Disassemble an entire ACPI table * *****************************************************************************/ @@ -250,10 +286,14 @@ AdAmlDisassemble ( char **OutFilename) { ACPI_STATUS Status; + ACPI_STATUS GlobalStatus = AE_OK; char *DisasmFilename = NULL; + char *ExternalFilename; + ACPI_EXTERNAL_FILE *ExternalFileList = AcpiGbl_ExternalFileList; FILE *File = NULL; ACPI_TABLE_HEADER *Table = NULL; - ACPI_NEW_TABLE_DESC *ListHead = NULL; + ACPI_TABLE_HEADER *ExternalTable; + ACPI_OWNER_ID OwnerId; /* @@ -262,24 +302,81 @@ AdAmlDisassemble ( */ if (Filename) { - /* Get the list of all AML tables in the file */ - - Status = AcGetAllTablesFromFile (Filename, - ACPI_GET_ALL_TABLES, &ListHead); - if (ACPI_FAILURE (Status)) - { - AcpiOsPrintf ("Could not get ACPI tables from %s, %s\n", - Filename, AcpiFormatException (Status)); - return (Status); - } - - /* Process any user-specified files for external objects */ - - Status = AdDoExternalFileList (Filename); + Status = AcpiDbGetTableFromFile (Filename, &Table, FALSE); if (ACPI_FAILURE (Status)) { return (Status); } + + /* + * External filenames separated by commas + * Example: iasl -e file1,file2,file3 -d xxx.aml + */ + while (ExternalFileList) + { + ExternalFilename = ExternalFileList->Path; + if (!strcmp (ExternalFilename, Filename)) + { + /* Next external file */ + + ExternalFileList = ExternalFileList->Next; + continue; + } + + Status = AcpiDbGetTableFromFile (ExternalFilename, &ExternalTable, TRUE); + if (ACPI_FAILURE (Status)) + { + if (Status == AE_TYPE) + { + ExternalFileList = ExternalFileList->Next; + GlobalStatus = AE_TYPE; + Status = AE_OK; + continue; + } + return (Status); + } + + /* Load external table for symbol resolution */ + + if (ExternalTable) + { + Status = AdParseTable (ExternalTable, &OwnerId, TRUE, TRUE); + if (ACPI_FAILURE (Status)) + { + AcpiOsPrintf ("Could not parse external ACPI tables, %s\n", + AcpiFormatException (Status)); + return (Status); + } + + /* + * Load namespace from names created within control methods + * Set owner id of nodes in external table + */ + AcpiDmFinishNamespaceLoad (AcpiGbl_ParseOpRoot, + AcpiGbl_RootNode, OwnerId); + AcpiPsDeleteParseTree (AcpiGbl_ParseOpRoot); + } + + /* Next external file */ + + ExternalFileList = ExternalFileList->Next; + } + + if (ACPI_FAILURE (GlobalStatus)) + { + return (GlobalStatus); + } + + /* Clear external list generated by Scope in external tables */ + + if (AcpiGbl_ExternalFileList) + { + AcpiDmClearExternalList (); + } + + /* Load any externals defined in the optional external ref file */ + + AcpiDmGetExternalsFromFile (); } else { @@ -328,8 +425,7 @@ AdAmlDisassemble ( File = fopen (DisasmFilename, "w+"); if (!File) { - fprintf (stderr, "Could not open output file %s\n", - DisasmFilename); + fprintf (stderr, "Could not open output file %s\n", DisasmFilename); Status = AE_ERROR; goto Cleanup; } @@ -339,75 +435,11 @@ AdAmlDisassemble ( *OutFilename = DisasmFilename; - /* Disassemble all AML tables within the file */ - - while (ListHead) - { - Status = AdDisassembleOneTable (ListHead->Table, - File, Filename, DisasmFilename); - if (ACPI_FAILURE (Status)) - { - break; - } - - ListHead = ListHead->Next; - } - -Cleanup: - - if (Table && - !AcpiGbl_ForceAmlDisassembly && - !AcpiUtIsAmlTable (Table)) - { - ACPI_FREE (Table); - } - - if (File) - { - fclose (File); - AcpiOsRedirectOutput (stdout); - } - - AcpiPsDeleteParseTree (AcpiGbl_ParseOpRoot); - AcpiGbl_ParseOpRoot = NULL; - return (Status); -} - - -/****************************************************************************** - * - * FUNCTION: AdDisassembleOneTable - * - * PARAMETERS: Table - Raw AML table - * File - Pointer for the input file - * Filename - AML input filename - * DisasmFilename - Output filename - * - * RETURN: Status - * - * DESCRIPTION: Disassemble a single ACPI table. AML or data table. - * - *****************************************************************************/ - -static ACPI_STATUS -AdDisassembleOneTable ( - ACPI_TABLE_HEADER *Table, - FILE *File, - char *Filename, - char *DisasmFilename) -{ - ACPI_STATUS Status; - ACPI_OWNER_ID OwnerId; - - /* ForceAmlDisassembly means to assume the table contains valid AML */ if (!AcpiGbl_ForceAmlDisassembly && !AcpiUtIsAmlTable (Table)) { AdDisassemblerHeader (Filename, ACPI_IS_DATA_TABLE); - - /* This is a "Data Table" (non-AML table) */ - AcpiOsPrintf (" * ACPI Data Table [%4.4s]\n *\n", Table->Signature); AcpiOsPrintf (" * Format: [HexOffset DecimalOffset ByteLength] " @@ -422,197 +454,467 @@ AdDisassembleOneTable ( fprintf (stderr, "Formatted output: %s - %u bytes\n", DisasmFilename, CmGetFileSize (File)); } - - return (AE_OK); } - - /* - * This is an AML table (DSDT or SSDT). - * Always parse the tables, only option is what to display - */ - Status = AdParseTable (Table, &OwnerId, TRUE, FALSE); - if (ACPI_FAILURE (Status)) + else { - AcpiOsPrintf ("Could not parse ACPI tables, %s\n", - AcpiFormatException (Status)); - return (Status); - } + /* Always parse the tables, only option is what to display */ - /* Debug output, namespace and parse tree */ - - if (AslCompilerdebug && File) - { - AcpiOsPrintf ("/**** Before second load\n"); - - NsSetupNamespaceListing (File); - NsDisplayNamespace (); - - AcpiOsPrintf ("*****/\n"); - } - - /* Load namespace from names created within control methods */ - - AcpiDmFinishNamespaceLoad (AcpiGbl_ParseOpRoot, - AcpiGbl_RootNode, OwnerId); - - /* - * Cross reference the namespace here, in order to - * generate External() statements - */ - AcpiDmCrossReferenceNamespace (AcpiGbl_ParseOpRoot, - AcpiGbl_RootNode, OwnerId); - - if (AslCompilerdebug) - { - AcpiDmDumpTree (AcpiGbl_ParseOpRoot); - } - - /* Find possible calls to external control methods */ - - AcpiDmFindOrphanMethods (AcpiGbl_ParseOpRoot); - - /* - * If we found any external control methods, we must reparse - * the entire tree with the new information (namely, the - * number of arguments per method) - */ - if (AcpiDmGetExternalMethodCount ()) - { - Status = AdReparseOneTable (Table, File, OwnerId); + Status = AdParseTable (Table, &OwnerId, TRUE, FALSE); if (ACPI_FAILURE (Status)) { - return (Status); + AcpiOsPrintf ("Could not parse ACPI tables, %s\n", + AcpiFormatException (Status)); + goto Cleanup; } - } - /* - * Now that the namespace is finalized, we can perform namespace - * transforms. - * - * 1) Convert fixed-offset references to resource descriptors - * to symbolic references (Note: modifies namespace) - */ - AcpiDmConvertResourceIndexes (AcpiGbl_ParseOpRoot, AcpiGbl_RootNode); - - /* Optional displays */ - - if (AcpiGbl_DmOpt_Disasm) - { - /* This is the real disassembly */ - - AdDisplayTables (Filename, Table); - - /* Dump hex table if requested (-vt) */ - - AcpiDmDumpDataTable (Table); - - fprintf (stderr, "Disassembly completed\n"); - if (File) + if (AslCompilerdebug) { - fprintf (stderr, "ASL Output: %s - %u bytes\n", - DisasmFilename, CmGetFileSize (File)); + AcpiOsPrintf ("/**** Before second load\n"); + + if (File) + { + NsSetupNamespaceListing (File); + NsDisplayNamespace (); + } + AcpiOsPrintf ("*****/\n"); } - if (Gbl_MapfileFlag) + /* Load namespace from names created within control methods */ + + AcpiDmFinishNamespaceLoad (AcpiGbl_ParseOpRoot, + AcpiGbl_RootNode, OwnerId); + + /* + * Cross reference the namespace here, in order to + * generate External() statements + */ + AcpiDmCrossReferenceNamespace (AcpiGbl_ParseOpRoot, + AcpiGbl_RootNode, OwnerId); + + if (AslCompilerdebug) { - fprintf (stderr, "%14s %s - %u bytes\n", - Gbl_Files[ASL_FILE_MAP_OUTPUT].ShortDescription, - Gbl_Files[ASL_FILE_MAP_OUTPUT].Filename, - FlGetFileSize (ASL_FILE_MAP_OUTPUT)); + AcpiDmDumpTree (AcpiGbl_ParseOpRoot); + } + + /* Find possible calls to external control methods */ + + AcpiDmFindOrphanMethods (AcpiGbl_ParseOpRoot); + + /* + * If we found any external control methods, we must reparse + * the entire tree with the new information (namely, the + * number of arguments per method) + */ + if (AcpiDmGetExternalMethodCount ()) + { + fprintf (stderr, + "\nFound %u external control methods, " + "reparsing with new information\n", + AcpiDmGetExternalMethodCount ()); + + /* Reparse, rebuild namespace */ + + AcpiPsDeleteParseTree (AcpiGbl_ParseOpRoot); + AcpiGbl_ParseOpRoot = NULL; + AcpiNsDeleteNamespaceSubtree (AcpiGbl_RootNode); + + AcpiGbl_RootNode = NULL; + AcpiGbl_RootNodeStruct.Name.Integer = ACPI_ROOT_NAME; + AcpiGbl_RootNodeStruct.DescriptorType = ACPI_DESC_TYPE_NAMED; + AcpiGbl_RootNodeStruct.Type = ACPI_TYPE_DEVICE; + AcpiGbl_RootNodeStruct.Parent = NULL; + AcpiGbl_RootNodeStruct.Child = NULL; + AcpiGbl_RootNodeStruct.Peer = NULL; + AcpiGbl_RootNodeStruct.Object = NULL; + AcpiGbl_RootNodeStruct.Flags = 0; + + Status = AcpiNsRootInitialize (); + + /* New namespace, add the external definitions first */ + + AcpiDmAddExternalsToNamespace (); + + /* Parse the table again. No need to reload it, however */ + + Status = AdParseTable (Table, NULL, FALSE, FALSE); + if (ACPI_FAILURE (Status)) + { + AcpiOsPrintf ("Could not parse ACPI tables, %s\n", + AcpiFormatException (Status)); + goto Cleanup; + } + + /* Cross reference the namespace again */ + + AcpiDmFinishNamespaceLoad (AcpiGbl_ParseOpRoot, + AcpiGbl_RootNode, OwnerId); + + AcpiDmCrossReferenceNamespace (AcpiGbl_ParseOpRoot, + AcpiGbl_RootNode, OwnerId); + + if (AslCompilerdebug) + { + AcpiOsPrintf ("/**** After second load and resource conversion\n"); + if (File) + { + NsSetupNamespaceListing (File); + NsDisplayNamespace (); + } + AcpiOsPrintf ("*****/\n"); + + AcpiDmDumpTree (AcpiGbl_ParseOpRoot); + } + } + + /* + * Now that the namespace is finalized, we can perform namespace + * transforms. + * + * 1) Convert fixed-offset references to resource descriptors + * to symbolic references (Note: modifies namespace) + */ + AcpiDmConvertResourceIndexes (AcpiGbl_ParseOpRoot, AcpiGbl_RootNode); + + /* Optional displays */ + + if (AcpiGbl_DmOpt_Disasm) + { + /* This is the real disassembly */ + + AdDisplayTables (Filename, Table); + + /* Dump hex table if requested (-vt) */ + + AcpiDmDumpDataTable (Table); + + fprintf (stderr, "Disassembly completed\n"); + if (File) + { + fprintf (stderr, "ASL Output: %s - %u bytes\n", + DisasmFilename, CmGetFileSize (File)); + } + + if (Gbl_MapfileFlag) + { + fprintf (stderr, "%14s %s - %u bytes\n", + Gbl_Files[ASL_FILE_MAP_OUTPUT].ShortDescription, + Gbl_Files[ASL_FILE_MAP_OUTPUT].Filename, + FlGetFileSize (ASL_FILE_MAP_OUTPUT)); + } } } - return (AE_OK); -} +Cleanup: - -/****************************************************************************** - * - * FUNCTION: AdReparseOneTable - * - * PARAMETERS: Table - Raw AML table - * File - Pointer for the input file - * OwnerId - ID for this table - * - * RETURN: Status - * - * DESCRIPTION: Reparse a table that has already been loaded. Used to - * integrate information about external control methods. - * These methods may have been previously parsed incorrectly. - * - *****************************************************************************/ - -static ACPI_STATUS -AdReparseOneTable ( - ACPI_TABLE_HEADER *Table, - FILE *File, - ACPI_OWNER_ID OwnerId) -{ - ACPI_STATUS Status; - - - fprintf (stderr, - "\nFound %u external control methods, " - "reparsing with new information\n", - AcpiDmGetExternalMethodCount ()); - - /* Reparse, rebuild namespace */ - - AcpiPsDeleteParseTree (AcpiGbl_ParseOpRoot); - AcpiGbl_ParseOpRoot = NULL; - AcpiNsDeleteNamespaceSubtree (AcpiGbl_RootNode); - - AcpiGbl_RootNode = NULL; - AcpiGbl_RootNodeStruct.Name.Integer = ACPI_ROOT_NAME; - AcpiGbl_RootNodeStruct.DescriptorType = ACPI_DESC_TYPE_NAMED; - AcpiGbl_RootNodeStruct.Type = ACPI_TYPE_DEVICE; - AcpiGbl_RootNodeStruct.Parent = NULL; - AcpiGbl_RootNodeStruct.Child = NULL; - AcpiGbl_RootNodeStruct.Peer = NULL; - AcpiGbl_RootNodeStruct.Object = NULL; - AcpiGbl_RootNodeStruct.Flags = 0; - - Status = AcpiNsRootInitialize (); - if (ACPI_FAILURE (Status)) + if (Table && !AcpiGbl_ForceAmlDisassembly &&!AcpiUtIsAmlTable (Table)) { - return (Status); + ACPI_FREE (Table); } - /* New namespace, add the external definitions first */ - - AcpiDmAddExternalsToNamespace (); - - /* Parse the table again. No need to reload it, however */ - - Status = AdParseTable (Table, NULL, FALSE, FALSE); - if (ACPI_FAILURE (Status)) + if (File) { - AcpiOsPrintf ("Could not parse ACPI tables, %s\n", - AcpiFormatException (Status)); - return (Status); - } - - /* Cross reference the namespace again */ - - AcpiDmFinishNamespaceLoad (AcpiGbl_ParseOpRoot, - AcpiGbl_RootNode, OwnerId); - - AcpiDmCrossReferenceNamespace (AcpiGbl_ParseOpRoot, - AcpiGbl_RootNode, OwnerId); - - /* Debug output - namespace and parse tree */ - - if (AslCompilerdebug) - { - AcpiOsPrintf ("/**** After second load and resource conversion\n"); - if (File) + if (AslCompilerdebug) /* Display final namespace, with transforms */ { NsSetupNamespaceListing (File); NsDisplayNamespace (); } - AcpiOsPrintf ("*****/\n"); - AcpiDmDumpTree (AcpiGbl_ParseOpRoot); + fclose (File); + AcpiOsRedirectOutput (stdout); + } + + AcpiPsDeleteParseTree (AcpiGbl_ParseOpRoot); + AcpiGbl_ParseOpRoot = NULL; + return (Status); +} + + +/****************************************************************************** + * + * FUNCTION: AdDisassemblerHeader + * + * PARAMETERS: Filename - Input file for the table + * TableType - Either AML or DataTable + * + * RETURN: None + * + * DESCRIPTION: Create the disassembler header, including ACPICA signon with + * current time and date. + * + *****************************************************************************/ + +void +AdDisassemblerHeader ( + char *Filename, + UINT8 TableType) +{ + time_t Timer; + + + time (&Timer); + + /* Header and input table info */ + + AcpiOsPrintf ("/*\n"); + AcpiOsPrintf (ACPI_COMMON_HEADER (AML_DISASSEMBLER_NAME, " * ")); + + if (TableType == ACPI_IS_AML_TABLE) + { + if (AcpiGbl_CstyleDisassembly) + { + AcpiOsPrintf ( + " * Disassembling to symbolic ASL+ operators\n" + " *\n"); + } + else + { + AcpiOsPrintf ( + " * Disassembling to non-symbolic legacy ASL operators\n" + " *\n"); + } + } + + AcpiOsPrintf (" * Disassembly of %s, %s", Filename, ctime (&Timer)); + AcpiOsPrintf (" *\n"); +} + + +/****************************************************************************** + * + * FUNCTION: AdCreateTableHeader + * + * PARAMETERS: Filename - Input file for the table + * Table - Pointer to the raw table + * + * RETURN: None + * + * DESCRIPTION: Create the ASL table header, including ACPICA signon with + * current time and date. + * + *****************************************************************************/ + +static void +AdCreateTableHeader ( + char *Filename, + ACPI_TABLE_HEADER *Table) +{ + char *NewFilename; + UINT8 Checksum; + + + /* + * Print file header and dump original table header + */ + AdDisassemblerHeader (Filename, ACPI_IS_AML_TABLE); + + AcpiOsPrintf (" * Original Table Header:\n"); + AcpiOsPrintf (" * Signature \"%4.4s\"\n", Table->Signature); + AcpiOsPrintf (" * Length 0x%8.8X (%u)\n", Table->Length, Table->Length); + + /* Print and validate the revision */ + + AcpiOsPrintf (" * Revision 0x%2.2X", Table->Revision); + + switch (Table->Revision) + { + case 0: + + AcpiOsPrintf (" **** Invalid Revision"); + break; + + case 1: + + /* Revision of DSDT controls the ACPI integer width */ + + if (ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_DSDT)) + { + AcpiOsPrintf (" **** 32-bit table (V1), no 64-bit math support"); + } + break; + + default: + + break; + } + AcpiOsPrintf ("\n"); + + /* Print and validate the table checksum */ + + AcpiOsPrintf (" * Checksum 0x%2.2X", Table->Checksum); + + Checksum = AcpiTbChecksum (ACPI_CAST_PTR (UINT8, Table), Table->Length); + if (Checksum) + { + AcpiOsPrintf (" **** Incorrect checksum, should be 0x%2.2X", + (UINT8) (Table->Checksum - Checksum)); + } + AcpiOsPrintf ("\n"); + + AcpiOsPrintf (" * OEM ID \"%.6s\"\n", Table->OemId); + AcpiOsPrintf (" * OEM Table ID \"%.8s\"\n", Table->OemTableId); + AcpiOsPrintf (" * OEM Revision 0x%8.8X (%u)\n", Table->OemRevision, Table->OemRevision); + AcpiOsPrintf (" * Compiler ID \"%.4s\"\n", Table->AslCompilerId); + AcpiOsPrintf (" * Compiler Version 0x%8.8X (%u)\n", Table->AslCompilerRevision, Table->AslCompilerRevision); + AcpiOsPrintf (" */\n"); + + /* Create AML output filename based on input filename */ + + if (Filename) + { + NewFilename = FlGenerateFilename (Filename, "aml"); + } + else + { + NewFilename = UtStringCacheCalloc (9); + if (NewFilename) + { + strncat (NewFilename, Table->Signature, 4); + strcat (NewFilename, ".aml"); + } + } + + if (!NewFilename) + { + AcpiOsPrintf (" **** Could not generate AML output filename\n"); + return; + } + + /* Open the ASL definition block */ + + AcpiOsPrintf ( + "DefinitionBlock (\"%s\", \"%4.4s\", %hu, \"%.6s\", \"%.8s\", 0x%8.8X)\n", + NewFilename, Table->Signature, Table->Revision, + Table->OemId, Table->OemTableId, Table->OemRevision); +} + + +/****************************************************************************** + * + * FUNCTION: AdDisplayTables + * + * PARAMETERS: Filename - Input file for the table + * Table - Pointer to the raw table + * + * RETURN: Status + * + * DESCRIPTION: Display (disassemble) loaded tables and dump raw tables + * + *****************************************************************************/ + +ACPI_STATUS +AdDisplayTables ( + char *Filename, + ACPI_TABLE_HEADER *Table) +{ + + + if (!AcpiGbl_ParseOpRoot) + { + return (AE_NOT_EXIST); + } + + if (!AcpiGbl_DmOpt_Listing) + { + AdCreateTableHeader (Filename, Table); + } + + AcpiDmDisassemble (NULL, AcpiGbl_ParseOpRoot, ACPI_UINT32_MAX); + MpEmitMappingInfo (); + + if (AcpiGbl_DmOpt_Listing) + { + AcpiOsPrintf ("\n\nTable Header:\n"); + AcpiUtDebugDumpBuffer ((UINT8 *) Table, sizeof (ACPI_TABLE_HEADER), + DB_BYTE_DISPLAY, ACPI_UINT32_MAX); + + AcpiOsPrintf ("Table Body (Length 0x%X)\n", Table->Length); + AcpiUtDebugDumpBuffer (((UINT8 *) Table + sizeof (ACPI_TABLE_HEADER)), + Table->Length, DB_BYTE_DISPLAY, ACPI_UINT32_MAX); + } + + return (AE_OK); +} + + +/******************************************************************************* + * + * FUNCTION: AdStoreTable + * + * PARAMETERS: Table - Table header + * TableIndex - Where the table index is returned + * + * RETURN: Status and table index. + * + * DESCRIPTION: Add an ACPI table to the global table list + * + ******************************************************************************/ + +static ACPI_STATUS +AdStoreTable ( + ACPI_TABLE_HEADER *Table, + UINT32 *TableIndex) +{ + ACPI_STATUS Status; + ACPI_TABLE_DESC *TableDesc; + + + Status = AcpiTbGetNextTableDescriptor (TableIndex, &TableDesc); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + + /* Initialize added table */ + + AcpiTbInitTableDescriptor (TableDesc, ACPI_PTR_TO_PHYSADDR (Table), + ACPI_TABLE_ORIGIN_INTERNAL_VIRTUAL, Table); + Status = AcpiTbValidateTable (TableDesc); + return (Status); +} + + +/****************************************************************************** + * + * FUNCTION: AdGetLocalTables + * + * PARAMETERS: None + * + * RETURN: Status + * + * DESCRIPTION: Get the ACPI tables from either memory or a file + * + *****************************************************************************/ + +ACPI_STATUS +AdGetLocalTables ( + void) +{ + ACPI_STATUS Status; + ACPI_TABLE_HEADER TableHeader; + ACPI_TABLE_HEADER *NewTable; + UINT32 TableIndex; + + + /* Get the DSDT via table override */ + + ACPI_MOVE_32_TO_32 (TableHeader.Signature, ACPI_SIG_DSDT); + AcpiOsTableOverride (&TableHeader, &NewTable); + if (!NewTable) + { + fprintf (stderr, "Could not obtain DSDT\n"); + return (AE_NO_ACPI_TABLES); + } + + AdWriteTable (NewTable, NewTable->Length, + ACPI_SIG_DSDT, NewTable->OemTableId); + + /* Store DSDT in the Table Manager */ + + Status = AdStoreTable (NewTable, &TableIndex); + if (ACPI_FAILURE (Status)) + { + fprintf (stderr, "Could not store DSDT\n"); + return (AE_NO_ACPI_TABLES); } return (AE_OK); @@ -621,108 +923,134 @@ AdReparseOneTable ( /****************************************************************************** * - * FUNCTION: AdDoExternalFileList + * FUNCTION: AdParseTable * - * PARAMETERS: Filename - Input file for the table + * PARAMETERS: Table - Pointer to the raw table + * OwnerId - Returned OwnerId of the table + * LoadTable - If add table to the global table list + * External - If this is an external table * * RETURN: Status * - * DESCRIPTION: Process all tables found in the -e external files list + * DESCRIPTION: Parse the DSDT. * *****************************************************************************/ -static ACPI_STATUS -AdDoExternalFileList ( - char *Filename) +ACPI_STATUS +AdParseTable ( + ACPI_TABLE_HEADER *Table, + ACPI_OWNER_ID *OwnerId, + BOOLEAN LoadTable, + BOOLEAN External) { - ACPI_EXTERNAL_FILE *ExternalFileList; - char *ExternalFilename; - ACPI_NEW_TABLE_DESC *ExternalListHead = NULL; - ACPI_STATUS Status; - ACPI_STATUS GlobalStatus = AE_OK; - ACPI_OWNER_ID OwnerId; + ACPI_STATUS Status = AE_OK; + ACPI_WALK_STATE *WalkState; + UINT8 *AmlStart; + UINT32 AmlLength; + UINT32 TableIndex; - /* - * External filenames are specified on the command line like this: - * Example: iasl -e file1,file2,file3 -d xxx.aml - */ - ExternalFileList = AcpiGbl_ExternalFileList; - - /* Process each external file */ - - while (ExternalFileList) + if (!Table) { - ExternalFilename = ExternalFileList->Path; - if (!strcmp (ExternalFilename, Filename)) - { - /* Next external file */ + return (AE_NOT_EXIST); + } - ExternalFileList = ExternalFileList->Next; - continue; - } + /* Pass 1: Parse everything except control method bodies */ - AcpiOsPrintf ("External object resolution file %16s\n", - ExternalFilename); + fprintf (stderr, "Pass 1 parse of [%4.4s]\n", (char *) Table->Signature); - Status = AcGetAllTablesFromFile ( - ExternalFilename, ACPI_GET_ONLY_AML_TABLES, &ExternalListHead); + AmlLength = Table->Length - sizeof (ACPI_TABLE_HEADER); + AmlStart = ((UINT8 *) Table + sizeof (ACPI_TABLE_HEADER)); + + /* Create the root object */ + + AcpiGbl_ParseOpRoot = AcpiPsCreateScopeOp (AmlStart); + if (!AcpiGbl_ParseOpRoot) + { + return (AE_NO_MEMORY); + } + + /* Create and initialize a new walk state */ + + WalkState = AcpiDsCreateWalkState (0, + AcpiGbl_ParseOpRoot, NULL, NULL); + if (!WalkState) + { + return (AE_NO_MEMORY); + } + + Status = AcpiDsInitAmlWalk (WalkState, AcpiGbl_ParseOpRoot, + NULL, AmlStart, AmlLength, NULL, ACPI_IMODE_LOAD_PASS1); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + + WalkState->ParseFlags &= ~ACPI_PARSE_DELETE_TREE; + WalkState->ParseFlags |= ACPI_PARSE_DISASSEMBLE; + + Status = AcpiPsParseAml (WalkState); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + + /* If LoadTable is FALSE, we are parsing the last loaded table */ + + TableIndex = AcpiGbl_RootTableList.CurrentTableCount - 1; + + /* Pass 2 */ + + if (LoadTable) + { + Status = AdStoreTable (Table, &TableIndex); if (ACPI_FAILURE (Status)) { - if (Status == AE_TYPE) - { - ExternalFileList = ExternalFileList->Next; - GlobalStatus = AE_TYPE; - Status = AE_OK; - continue; - } - return (Status); } - - /* Load external tables for symbol resolution */ - - while (ExternalListHead) + Status = AcpiTbAllocateOwnerId (TableIndex); + if (ACPI_FAILURE (Status)) { - Status = AdParseTable ( - ExternalListHead->Table, &OwnerId, TRUE, TRUE); + return (Status); + } + if (OwnerId) + { + Status = AcpiTbGetOwnerId (TableIndex, OwnerId); if (ACPI_FAILURE (Status)) { - AcpiOsPrintf ("Could not parse external ACPI tables, %s\n", - AcpiFormatException (Status)); return (Status); } - - /* - * Load namespace from names created within control methods - * Set owner id of nodes in external table - */ - AcpiDmFinishNamespaceLoad (AcpiGbl_ParseOpRoot, - AcpiGbl_RootNode, OwnerId); - AcpiPsDeleteParseTree (AcpiGbl_ParseOpRoot); - - ExternalListHead = ExternalListHead->Next; } - - /* Next external file */ - - ExternalFileList = ExternalFileList->Next; } - if (ACPI_FAILURE (GlobalStatus)) + fprintf (stderr, "Pass 2 parse of [%4.4s]\n", (char *) Table->Signature); + + Status = AcpiNsOneCompleteParse (ACPI_IMODE_LOAD_PASS2, TableIndex, NULL); + if (ACPI_FAILURE (Status)) { - return (GlobalStatus); + return (Status); } - /* Clear external list generated by Scope in external tables */ + /* No need to parse control methods of external table */ - if (AcpiGbl_ExternalFileList) + if (External) { - AcpiDmClearExternalList (); + return (AE_OK); } - /* Load any externals defined in the optional external ref file */ + /* + * Pass 3: Parse control methods and link their parse trees + * into the main parse tree + */ + fprintf (stderr, + "Parsing Deferred Opcodes (Methods/Buffers/Packages/Regions)\n"); + Status = AcpiDmParseDeferredOps (AcpiGbl_ParseOpRoot); + fprintf (stderr, "\n"); - AcpiDmGetExternalsFromFile (); + /* Process Resource Templates */ + + AcpiDmFindResources (AcpiGbl_ParseOpRoot); + + fprintf (stderr, "Parsing completed\n"); return (AE_OK); } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/common/adwalk.c b/src/add-ons/kernel/bus_managers/acpi/acpica/common/adwalk.c index 92cec7413a..fe07c07af8 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/common/adwalk.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/common/adwalk.c @@ -207,7 +207,6 @@ AcpiDmDumpTree ( Info.Count = 0; Info.Level = 0; Info.WalkState = NULL; - AcpiDmWalkParseTree (Origin, AcpiDmDumpDescending, NULL, &Info); AcpiOsPrintf ("*/\n\n"); } @@ -241,7 +240,6 @@ AcpiDmFindOrphanMethods ( Info.Flags = 0; Info.Level = 0; Info.WalkState = NULL; - AcpiDmWalkParseTree (Origin, AcpiDmFindOrphanDescending, NULL, &Info); } @@ -285,8 +283,7 @@ AcpiDmFinishNamespaceLoad ( return; } - Status = AcpiDsScopeStackPush (NamespaceRoot, NamespaceRoot->Type, - WalkState); + Status = AcpiDsScopeStackPush (NamespaceRoot, NamespaceRoot->Type, WalkState); if (ACPI_FAILURE (Status)) { return; @@ -295,7 +292,6 @@ AcpiDmFinishNamespaceLoad ( Info.Flags = 0; Info.Level = 0; Info.WalkState = WalkState; - AcpiDmWalkParseTree (ParseTreeRoot, AcpiDmLoadDescendingOp, AcpiDmCommonAscendingOp, &Info); ACPI_FREE (WalkState); @@ -340,8 +336,7 @@ AcpiDmCrossReferenceNamespace ( return; } - Status = AcpiDsScopeStackPush (NamespaceRoot, NamespaceRoot->Type, - WalkState); + Status = AcpiDsScopeStackPush (NamespaceRoot, NamespaceRoot->Type, WalkState); if (ACPI_FAILURE (Status)) { return; @@ -350,7 +345,6 @@ AcpiDmCrossReferenceNamespace ( Info.Flags = 0; Info.Level = 0; Info.WalkState = WalkState; - AcpiDmWalkParseTree (ParseTreeRoot, AcpiDmXrefDescendingOp, AcpiDmCommonAscendingOp, &Info); ACPI_FREE (WalkState); @@ -395,8 +389,7 @@ AcpiDmConvertResourceIndexes ( return; } - Status = AcpiDsScopeStackPush (NamespaceRoot, NamespaceRoot->Type, - WalkState); + Status = AcpiDsScopeStackPush (NamespaceRoot, NamespaceRoot->Type, WalkState); if (ACPI_FAILURE (Status)) { return; @@ -405,7 +398,6 @@ AcpiDmConvertResourceIndexes ( Info.Flags = 0; Info.Level = 0; Info.WalkState = WalkState; - AcpiDmWalkParseTree (ParseTreeRoot, AcpiDmResourceDescendingOp, AcpiDmCommonAscendingOp, &Info); ACPI_FREE (WalkState); @@ -476,7 +468,7 @@ AcpiDmDumpDescending ( if (Op->Common.Value.String) { AcpiNsExternalizeName (ACPI_UINT32_MAX, Op->Common.Value.String, - NULL, &Path); + NULL, &Path); AcpiOsPrintf ("%s %p", Path, Op->Common.Node); ACPI_FREE (Path); } @@ -735,7 +727,6 @@ AcpiDmLoadDescendingOp ( { NextOp = NextOp->Common.Next; } - Path = NextOp->Common.Value.String; } @@ -747,8 +738,8 @@ AcpiDmLoadDescendingOp ( /* Insert the name into the namespace */ Status = AcpiNsLookup (WalkState->ScopeInfo, Path, ObjectType, - ACPI_IMODE_LOAD_PASS2, ACPI_NS_DONT_OPEN_SCOPE, - WalkState, &Node); + ACPI_IMODE_LOAD_PASS2, ACPI_NS_DONT_OPEN_SCOPE, + WalkState, &Node); Op->Common.Node = Node; @@ -789,8 +780,7 @@ Exit: { if (Op->Common.Node) { - Status = AcpiDsScopeStackPush (Op->Common.Node, ObjectType, - WalkState); + Status = AcpiDsScopeStackPush (Op->Common.Node, ObjectType, WalkState); if (ACPI_FAILURE (Status)) { return (Status); @@ -907,8 +897,8 @@ AcpiDmXrefDescendingOp ( */ Node = NULL; Status = AcpiNsLookup (WalkState->ScopeInfo, Path, ACPI_TYPE_ANY, - ACPI_IMODE_EXECUTE, ACPI_NS_SEARCH_PARENT | ACPI_NS_DONT_OPEN_SCOPE, - WalkState, &Node); + ACPI_IMODE_EXECUTE, ACPI_NS_SEARCH_PARENT | ACPI_NS_DONT_OPEN_SCOPE, + WalkState, &Node); if (ACPI_SUCCESS (Status) && (Node->Flags & ANOBJ_IS_EXTERNAL)) { /* Node was created by an External() statement */ @@ -990,8 +980,7 @@ Exit: { if (Op->Common.Node) { - Status = AcpiDsScopeStackPush (Op->Common.Node, ObjectType, - WalkState); + Status = AcpiDsScopeStackPush (Op->Common.Node, ObjectType, WalkState); if (ACPI_FAILURE (Status)) { return (Status); @@ -1039,8 +1028,7 @@ AcpiDmResourceDescendingOp ( if (Op->Common.Node) { - Status = AcpiDsScopeStackPush (Op->Common.Node, ObjectType, - WalkState); + Status = AcpiDsScopeStackPush (Op->Common.Node, ObjectType, WalkState); if (ACPI_FAILURE (Status)) { return (Status); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/common/ahuuids.c b/src/add-ons/kernel/bus_managers/acpi/acpica/common/ahuuids.c index 499dbb4f84..118473dda8 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/common/ahuuids.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/common/ahuuids.c @@ -120,7 +120,6 @@ #define _COMPONENT ACPI_UTILITIES ACPI_MODULE_NAME ("ahuuids") - /* * Table of "known" (ACPI-related) UUIDs */ diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/common/dmextern.c b/src/add-ons/kernel/bus_managers/acpi/acpica/common/dmextern.c index 7335168e05..832379e516 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/common/dmextern.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/common/dmextern.c @@ -212,6 +212,7 @@ AcpiDmGetObjectTypeName ( { Type = ACPI_TYPE_DEVICE; } + else if (Type > ACPI_TYPE_LOCAL_INDEX_FIELD) { return (""); @@ -481,7 +482,6 @@ AcpiDmGetExternalsFromFile ( { continue; } - if (strcmp (Token, "External")) { continue; @@ -519,7 +519,6 @@ AcpiDmGetExternalsFromFile ( fprintf (stderr, "Invalid argument count (%s)\n", Token); continue; } - if (ArgCount > 7) { fprintf (stderr, "Invalid argument count (%u)\n", ArgCount); @@ -538,8 +537,7 @@ AcpiDmGetExternalsFromFile ( if (!ImportCount) { - fprintf (stderr, - "Did not find any external methods in reference file \"%s\"\n", + fprintf (stderr, "Did not find any external methods in reference file \"%s\"\n", Gbl_ExternalRefFilename); } else @@ -889,8 +887,7 @@ AcpiDmCreateNewExternal ( (Value > 0)) { ACPI_ERROR ((AE_INFO, - "External method arg count mismatch %s: " - "Current %u, attempted %u", + "External method arg count mismatch %s: Current %u, attempted %u", NextExternal->Path, NextExternal->Value, Value)); } @@ -992,9 +989,9 @@ AcpiDmAddExternalsToNamespace ( /* Add the external name (object) into the namespace */ Status = AcpiNsLookup (NULL, External->InternalPath, External->Type, - ACPI_IMODE_LOAD_PASS1, - ACPI_NS_ERROR_IF_FOUND | ACPI_NS_EXTERNAL | ACPI_NS_DONT_OPEN_SCOPE, - NULL, &Node); + ACPI_IMODE_LOAD_PASS1, + ACPI_NS_ERROR_IF_FOUND | ACPI_NS_EXTERNAL | ACPI_NS_DONT_OPEN_SCOPE, + NULL, &Node); if (ACPI_FAILURE (Status)) { diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/common/dmrestag.c b/src/add-ons/kernel/bus_managers/acpi/acpica/common/dmrestag.c index c87a02539d..5041f884fc 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/common/dmrestag.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/common/dmrestag.c @@ -570,9 +570,9 @@ AcpiDmCheckResourceReference ( /* Lookup the buffer in the namespace */ Status = AcpiNsLookup (WalkState->ScopeInfo, - BufferNameOp->Common.Value.String, ACPI_TYPE_BUFFER, - ACPI_IMODE_EXECUTE, ACPI_NS_SEARCH_PARENT, WalkState, - &BufferNode); + BufferNameOp->Common.Value.String, ACPI_TYPE_BUFFER, + ACPI_IMODE_EXECUTE, ACPI_NS_SEARCH_PARENT, WalkState, + &BufferNode); if (ACPI_FAILURE (Status)) { return; @@ -693,8 +693,8 @@ AcpiGetTagPathname ( /* Get the individual resource descriptor and validate it */ - Aml = ACPI_CAST_PTR ( - AML_RESOURCE, &Op->Named.Data[ResourceNode->Value]); + Aml = ACPI_CAST_PTR (AML_RESOURCE, + &Op->Named.Data[ResourceNode->Value]); Status = AcpiUtValidateResource (NULL, Aml, &ResourceTableIndex); if (ACPI_FAILURE (Status)) @@ -735,7 +735,7 @@ AcpiGetTagPathname ( } (void) AcpiNsBuildNormalizedPath (BufferNode, Pathname, - RequiredSize, FALSE); + RequiredSize, FALSE); /* * Create the full path to the resource and tag by: remove the buffer name, @@ -814,7 +814,6 @@ AcpiDmUpdateResourceName ( { AcpiGbl_NextResourceId = 0; AcpiGbl_NextPrefix++; - if (AcpiGbl_NextPrefix > ACPI_NUM_RES_PREFIX) { AcpiGbl_NextPrefix = 0; @@ -1101,9 +1100,9 @@ AcpiDmAddResourceToNamespace ( ScopeInfo.Scope.Node = ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, Context); Status = AcpiNsLookup (&ScopeInfo, "_TMP", ACPI_TYPE_LOCAL_RESOURCE, - ACPI_IMODE_LOAD_PASS2, - ACPI_NS_NO_UPSEARCH | ACPI_NS_DONT_OPEN_SCOPE | ACPI_NS_PREFIX_IS_SCOPE, - NULL, &Node); + ACPI_IMODE_LOAD_PASS2, + ACPI_NS_NO_UPSEARCH | ACPI_NS_DONT_OPEN_SCOPE | ACPI_NS_PREFIX_IS_SCOPE, + NULL, &Node); if (ACPI_FAILURE (Status)) { return (AE_OK); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/common/dmtable.c b/src/add-ons/kernel/bus_managers/acpi/acpica/common/dmtable.c index 35e01f3e89..c301da100a 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/common/dmtable.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/common/dmtable.c @@ -947,7 +947,6 @@ AcpiDmDumpTable ( AcpiOsPrintf ("\n"); LastOutputBlankLine = TRUE; } - ByteLength = sizeof (ACPI_GENERIC_ADDRESS); break; @@ -958,7 +957,6 @@ AcpiDmDumpTable ( AcpiOsPrintf ("\n"); LastOutputBlankLine = TRUE; } - ByteLength = sizeof (ACPI_HEST_NOTIFY); break; @@ -968,7 +966,6 @@ AcpiDmDumpTable ( { LastOutputBlankLine = FALSE; } - ByteLength = sizeof (ACPI_IORT_MEMORY_ACCESS); break; @@ -1102,7 +1099,6 @@ AcpiDmDumpTable ( } } } - AcpiOsPrintf ("\n"); break; @@ -1126,7 +1122,6 @@ AcpiDmDumpTable ( AcpiDmCheckAscii (Target, RepairedName, 4); AcpiOsPrintf ("\"%.4s\" ", RepairedName); - TableData = AcpiAhGetTableInfo (ACPI_CAST_PTR (char, Target)); if (TableData) { @@ -1172,7 +1167,6 @@ AcpiDmDumpTable ( AcpiOsPrintf ( " /* Incorrect checksum, should be %2.2X */", Temp8); } - AcpiOsPrintf ("\n"); break; diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/common/dmtbdump.c b/src/add-ons/kernel/bus_managers/acpi/acpica/common/dmtbdump.c index b22d9bdbf1..f1b55126bd 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/common/dmtbdump.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/common/dmtbdump.c @@ -250,7 +250,6 @@ AcpiDmDumpUnicode ( { AcpiOsPrintf ("%c", Buffer[i]); } - AcpiOsPrintf ("\"\n"); return; @@ -295,7 +294,7 @@ AcpiDmDumpRsdp ( /* Validate the first checksum */ Checksum = AcpiDmGenerateChecksum (Rsdp, sizeof (ACPI_RSDP_COMMON), - Rsdp->Checksum); + Rsdp->Checksum); if (Checksum != Rsdp->Checksum) { AcpiOsPrintf ("/* Incorrect Checksum above, should be 0x%2.2X */\n", @@ -316,7 +315,7 @@ AcpiDmDumpRsdp ( /* Validate the extended checksum over entire RSDP */ Checksum = AcpiDmGenerateChecksum (Rsdp, sizeof (ACPI_TABLE_RSDP), - Rsdp->ExtendedChecksum); + Rsdp->ExtendedChecksum); if (Checksum != Rsdp->ExtendedChecksum) { AcpiOsPrintf ( @@ -434,8 +433,7 @@ AcpiDmDumpFadt ( /* Always dump the minimum FADT revision 1 fields (ACPI 1.0) */ - Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, - AcpiDmTableInfoFadt1); + Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoFadt1); if (ACPI_FAILURE (Status)) { return; @@ -446,8 +444,7 @@ AcpiDmDumpFadt ( if ((Table->Length > ACPI_FADT_V1_SIZE) && (Table->Length <= ACPI_FADT_V2_SIZE)) { - Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, - AcpiDmTableInfoFadt2); + Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoFadt2); if (ACPI_FAILURE (Status)) { return; @@ -458,8 +455,7 @@ AcpiDmDumpFadt ( else if (Table->Length > ACPI_FADT_V2_SIZE) { - Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, - AcpiDmTableInfoFadt3); + Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoFadt3); if (ACPI_FAILURE (Status)) { return; @@ -469,8 +465,7 @@ AcpiDmDumpFadt ( if (Table->Length > ACPI_FADT_V3_SIZE) { - Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, - AcpiDmTableInfoFadt5); + Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoFadt5); if (ACPI_FAILURE (Status)) { return; @@ -481,8 +476,7 @@ AcpiDmDumpFadt ( if (Table->Length > ACPI_FADT_V3_SIZE) { - Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, - AcpiDmTableInfoFadt6); + Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoFadt6); if (ACPI_FAILURE (Status)) { return; @@ -563,8 +557,7 @@ AcpiDmValidateFadtLength ( } AcpiOsPrintf ( - "\n// ACPI Warning: FADT revision %X does not match length: " - "found %X expected %X\n", + "\n// ACPI Warning: FADT revision %X does not match length: found %X expected %X\n", Revision, Length, ExpectedLength); } @@ -606,7 +599,7 @@ AcpiDmDumpAsf ( /* Common subtable header */ Status = AcpiDmDumpTable (Table->Length, Offset, SubTable, - SubTable->Header.Length, AcpiDmTableInfoAsfHdr); + SubTable->Header.Length, AcpiDmTableInfoAsfHdr); if (ACPI_FAILURE (Status)) { return; @@ -658,13 +651,12 @@ AcpiDmDumpAsf ( default: - AcpiOsPrintf ("\n**** Unknown ASF subtable type 0x%X\n", - SubTable->Header.Type); + AcpiOsPrintf ("\n**** Unknown ASF subtable type 0x%X\n", SubTable->Header.Type); return; } Status = AcpiDmDumpTable (Table->Length, Offset, SubTable, - SubTable->Header.Length, InfoTable); + SubTable->Header.Length, InfoTable); if (ACPI_FAILURE (Status)) { return; @@ -681,7 +673,7 @@ AcpiDmDumpAsf ( { AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Table->Length, DataOffset, - DataTable, DataLength, DataInfoTable); + DataTable, DataLength, DataInfoTable); if (ACPI_FAILURE (Status)) { return; @@ -704,12 +696,9 @@ AcpiDmDumpAsf ( AcpiOsPrintf ("%2.2X ", *DataTable); DataTable++; DataOffset++; - if (DataOffset > Table->Length) { - AcpiOsPrintf ( - "**** ACPI table terminates in the middle of a " - "data structure! (ASF! table)\n"); + AcpiOsPrintf ("**** ACPI table terminates in the middle of a data structure! (ASF! table)\n"); return; } } @@ -733,8 +722,7 @@ AcpiDmDumpAsf ( } Offset += SubTable->Header.Length; - SubTable = ACPI_ADD_PTR (ACPI_ASF_INFO, SubTable, - SubTable->Header.Length); + SubTable = ACPI_ADD_PTR (ACPI_ASF_INFO, SubTable, SubTable->Header.Length); } } @@ -777,7 +765,7 @@ AcpiDmDumpCpep ( { AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Length, Offset, SubTable, - SubTable->Header.Length, AcpiDmTableInfoCpep0); + SubTable->Header.Length, AcpiDmTableInfoCpep0); if (ACPI_FAILURE (Status)) { return; @@ -787,7 +775,7 @@ AcpiDmDumpCpep ( Offset += SubTable->Header.Length; SubTable = ACPI_ADD_PTR (ACPI_CPEP_POLLING, SubTable, - SubTable->Header.Length); + SubTable->Header.Length); } } @@ -831,7 +819,7 @@ AcpiDmDumpCsrt ( AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Length, Offset, SubTable, - SubTable->Length, AcpiDmTableInfoCsrt0); + SubTable->Length, AcpiDmTableInfoCsrt0); if (ACPI_FAILURE (Status)) { return; @@ -845,7 +833,7 @@ AcpiDmDumpCsrt ( AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Length, Offset + SubOffset, SharedInfoTable, - sizeof (ACPI_CSRT_SHARED_INFO), AcpiDmTableInfoCsrt1); + sizeof (ACPI_CSRT_SHARED_INFO), AcpiDmTableInfoCsrt1); if (ACPI_FAILURE (Status)) { return; @@ -863,7 +851,7 @@ AcpiDmDumpCsrt ( { AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Length, Offset + SubOffset, SubSubTable, - SubSubTable->Length, AcpiDmTableInfoCsrt2); + SubSubTable->Length, AcpiDmTableInfoCsrt2); if (ACPI_FAILURE (Status)) { return; @@ -877,8 +865,8 @@ AcpiDmDumpCsrt ( if (InfoLength) { Status = AcpiDmDumpTable (Length, - Offset + SubOffset + SubSubOffset, Table, - InfoLength, AcpiDmTableInfoCsrt2a); + Offset + SubOffset + SubSubOffset, Table, + InfoLength, AcpiDmTableInfoCsrt2a); if (ACPI_FAILURE (Status)) { return; @@ -890,14 +878,14 @@ AcpiDmDumpCsrt ( SubOffset += SubSubTable->Length; SubSubTable = ACPI_ADD_PTR (ACPI_CSRT_DESCRIPTOR, SubSubTable, - SubSubTable->Length); + SubSubTable->Length); } /* Point to next subtable */ Offset += SubTable->Length; SubTable = ACPI_ADD_PTR (ACPI_CSRT_GROUP, SubTable, - SubTable->Length); + SubTable->Length); } } @@ -944,7 +932,7 @@ AcpiDmDumpDbg2 ( { AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Length, Offset, SubTable, - SubTable->Length, AcpiDmTableInfoDbg2Device); + SubTable->Length, AcpiDmTableInfoDbg2Device); if (ACPI_FAILURE (Status)) { return; @@ -960,7 +948,7 @@ AcpiDmDumpDbg2 ( Array = (UINT8 *) SubTable + ArrayOffset; Status = AcpiDmDumpTable (Length, AbsoluteOffset, Array, - SubTable->Length, AcpiDmTableInfoDbg2Addr); + SubTable->Length, AcpiDmTableInfoDbg2Addr); if (ACPI_FAILURE (Status)) { return; @@ -977,7 +965,7 @@ AcpiDmDumpDbg2 ( Array = (UINT8 *) SubTable + ArrayOffset; Status = AcpiDmDumpTable (Length, AbsoluteOffset, Array, - SubTable->Length, AcpiDmTableInfoDbg2Size); + SubTable->Length, AcpiDmTableInfoDbg2Size); if (ACPI_FAILURE (Status)) { return; @@ -992,7 +980,7 @@ AcpiDmDumpDbg2 ( Array = (UINT8 *) SubTable + ArrayOffset; Status = AcpiDmDumpTable (Length, AbsoluteOffset, Array, - SubTable->Length, AcpiDmTableInfoDbg2Name); + SubTable->Length, AcpiDmTableInfoDbg2Name); if (ACPI_FAILURE (Status)) { return; @@ -1003,8 +991,8 @@ AcpiDmDumpDbg2 ( if (SubTable->OemDataOffset) { Status = AcpiDmDumpTable (Length, Offset + SubTable->OemDataOffset, - Table, SubTable->OemDataLength, - AcpiDmTableInfoDbg2OemData); + Table, SubTable->OemDataLength, + AcpiDmTableInfoDbg2OemData); if (ACPI_FAILURE (Status)) { return; @@ -1015,7 +1003,7 @@ AcpiDmDumpDbg2 ( Offset += SubTable->Length; SubTable = ACPI_ADD_PTR (ACPI_DBG2_DEVICE, SubTable, - SubTable->Length); + SubTable->Length); } } @@ -1065,12 +1053,11 @@ AcpiDmDumpDmar ( AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Length, Offset, SubTable, - SubTable->Length, AcpiDmTableInfoDmarHdr); + SubTable->Length, AcpiDmTableInfoDmarHdr); if (ACPI_FAILURE (Status)) { return; } - AcpiOsPrintf ("\n"); switch (SubTable->Type) @@ -1107,13 +1094,12 @@ AcpiDmDumpDmar ( default: - AcpiOsPrintf ("\n**** Unknown DMAR subtable type 0x%X\n\n", - SubTable->Type); + AcpiOsPrintf ("\n**** Unknown DMAR subtable type 0x%X\n\n", SubTable->Type); return; } Status = AcpiDmDumpTable (Length, Offset, SubTable, - SubTable->Length, InfoTable); + SubTable->Length, InfoTable); if (ACPI_FAILURE (Status)) { return; @@ -1135,7 +1121,7 @@ AcpiDmDumpDmar ( { AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Length, Offset + ScopeOffset, ScopeTable, - ScopeTable->Length, AcpiDmTableInfoDmarScope); + ScopeTable->Length, AcpiDmTableInfoDmarScope); if (ACPI_FAILURE (Status)) { return; @@ -1151,8 +1137,7 @@ AcpiDmDumpDmar ( while (PathOffset < ScopeTable->Length) { - AcpiDmLineHeader ((PathOffset + ScopeOffset + Offset), 2, - "PCI Path"); + AcpiDmLineHeader ((PathOffset + ScopeOffset + Offset), 2, "PCI Path"); AcpiOsPrintf ("%2.2X,%2.2X\n", PciPath[0], PciPath[1]); /* Point to next PCI Path entry */ @@ -1173,8 +1158,7 @@ NextSubtable: /* Point to next subtable */ Offset += SubTable->Length; - SubTable = ACPI_ADD_PTR (ACPI_DMAR_HEADER, SubTable, - SubTable->Length); + SubTable = ACPI_ADD_PTR (ACPI_DMAR_HEADER, SubTable, SubTable->Length); } } @@ -1206,7 +1190,7 @@ AcpiDmDumpDrtm ( /* Main table */ Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, - AcpiDmTableInfoDrtm); + AcpiDmTableInfoDrtm); if (ACPI_FAILURE (Status)) { return; @@ -1221,13 +1205,12 @@ AcpiDmDumpDrtm ( DrtmVtl = ACPI_ADD_PTR (ACPI_DRTM_VTABLE_LIST, Table, Offset); AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Table->Length, Offset, - DrtmVtl, ACPI_OFFSET (ACPI_DRTM_VTABLE_LIST, ValidatedTables), - AcpiDmTableInfoDrtm0); + DrtmVtl, ACPI_OFFSET (ACPI_DRTM_VTABLE_LIST, ValidatedTables), + AcpiDmTableInfoDrtm0); if (ACPI_FAILURE (Status)) { return; } - Offset += ACPI_OFFSET (ACPI_DRTM_VTABLE_LIST, ValidatedTables); /* Dump Validated table addresses */ @@ -1237,13 +1220,12 @@ AcpiDmDumpDrtm ( (DrtmVtl->ValidatedTableCount > Count)) { Status = AcpiDmDumpTable (Table->Length, Offset, - ACPI_ADD_PTR (void, Table, Offset), sizeof (UINT64), - AcpiDmTableInfoDrtm0a); + ACPI_ADD_PTR (void, Table, Offset), sizeof (UINT64), + AcpiDmTableInfoDrtm0a); if (ACPI_FAILURE (Status)) { return; } - Offset += sizeof (UINT64); Count++; } @@ -1253,8 +1235,8 @@ AcpiDmDumpDrtm ( DrtmRl = ACPI_ADD_PTR (ACPI_DRTM_RESOURCE_LIST, Table, Offset); AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Table->Length, Offset, - DrtmRl, ACPI_OFFSET (ACPI_DRTM_RESOURCE_LIST, Resources), - AcpiDmTableInfoDrtm1); + DrtmRl, ACPI_OFFSET (ACPI_DRTM_RESOURCE_LIST, Resources), + AcpiDmTableInfoDrtm1); if (ACPI_FAILURE (Status)) { return; @@ -1269,8 +1251,9 @@ AcpiDmDumpDrtm ( (DrtmRl->ResourceCount > Count)) { Status = AcpiDmDumpTable (Table->Length, Offset, - ACPI_ADD_PTR (void, Table, Offset), - sizeof (ACPI_DRTM_RESOURCE), AcpiDmTableInfoDrtm1a); + ACPI_ADD_PTR (void, Table, Offset), + sizeof (ACPI_DRTM_RESOURCE), + AcpiDmTableInfoDrtm1a); if (ACPI_FAILURE (Status)) { return; @@ -1285,7 +1268,8 @@ AcpiDmDumpDrtm ( DrtmDps = ACPI_ADD_PTR (ACPI_DRTM_DPS_ID, Table, Offset); AcpiOsPrintf ("\n"); (void) AcpiDmDumpTable (Table->Length, Offset, - DrtmDps, sizeof (ACPI_DRTM_DPS_ID), AcpiDmTableInfoDrtm2); + DrtmDps, sizeof (ACPI_DRTM_DPS_ID), + AcpiDmTableInfoDrtm2); } @@ -1327,7 +1311,7 @@ AcpiDmDumpEinj ( { AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Length, Offset, SubTable, - sizeof (ACPI_WHEA_HEADER), AcpiDmTableInfoEinj0); + sizeof (ACPI_WHEA_HEADER), AcpiDmTableInfoEinj0); if (ACPI_FAILURE (Status)) { return; @@ -1337,7 +1321,7 @@ AcpiDmDumpEinj ( Offset += sizeof (ACPI_WHEA_HEADER); SubTable = ACPI_ADD_PTR (ACPI_WHEA_HEADER, SubTable, - sizeof (ACPI_WHEA_HEADER)); + sizeof (ACPI_WHEA_HEADER)); } } @@ -1380,7 +1364,7 @@ AcpiDmDumpErst ( { AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Length, Offset, SubTable, - sizeof (ACPI_WHEA_HEADER), AcpiDmTableInfoErst0); + sizeof (ACPI_WHEA_HEADER), AcpiDmTableInfoErst0); if (ACPI_FAILURE (Status)) { return; @@ -1390,7 +1374,7 @@ AcpiDmDumpErst ( Offset += sizeof (ACPI_WHEA_HEADER); SubTable = ACPI_ADD_PTR (ACPI_WHEA_HEADER, SubTable, - sizeof (ACPI_WHEA_HEADER)); + sizeof (ACPI_WHEA_HEADER)); } } @@ -1430,7 +1414,7 @@ AcpiDmDumpFpdt ( AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Length, Offset, SubTable, - SubTable->Length, AcpiDmTableInfoFpdtHdr); + SubTable->Length, AcpiDmTableInfoFpdtHdr); if (ACPI_FAILURE (Status)) { return; @@ -1450,8 +1434,7 @@ AcpiDmDumpFpdt ( default: - AcpiOsPrintf ("\n**** Unknown FPDT subtable type 0x%X\n\n", - SubTable->Type); + AcpiOsPrintf ("\n**** Unknown FPDT subtable type 0x%X\n\n", SubTable->Type); /* Attempt to continue */ @@ -1464,7 +1447,7 @@ AcpiDmDumpFpdt ( } Status = AcpiDmDumpTable (Length, Offset, SubTable, - SubTable->Length, InfoTable); + SubTable->Length, InfoTable); if (ACPI_FAILURE (Status)) { return; @@ -1474,8 +1457,7 @@ NextSubTable: /* Point to next subtable */ Offset += SubTable->Length; - SubTable = ACPI_ADD_PTR (ACPI_FPDT_HEADER, SubTable, - SubTable->Length); + SubTable = ACPI_ADD_PTR (ACPI_FPDT_HEADER, SubTable, SubTable->Length); } } @@ -1524,7 +1506,7 @@ AcpiDmDumpGtdt ( AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Length, Offset, SubTable, - SubTable->Length, AcpiDmTableInfoGtdtHdr); + SubTable->Length, AcpiDmTableInfoGtdtHdr); if (ACPI_FAILURE (Status)) { return; @@ -1537,7 +1519,7 @@ AcpiDmDumpGtdt ( SubTableLength = sizeof (ACPI_GTDT_TIMER_BLOCK); GtCount = (ACPI_CAST_PTR (ACPI_GTDT_TIMER_BLOCK, - SubTable))->TimerCount; + SubTable))->TimerCount; InfoTable = AcpiDmTableInfoGtdt0; break; @@ -1553,13 +1535,12 @@ AcpiDmDumpGtdt ( /* Cannot continue on unknown type - no length */ - AcpiOsPrintf ("\n**** Unknown GTDT subtable type 0x%X\n", - SubTable->Type); + AcpiOsPrintf ("\n**** Unknown GTDT subtable type 0x%X\n", SubTable->Type); return; } Status = AcpiDmDumpTable (Length, Offset, SubTable, - SubTable->Length, InfoTable); + SubTable->Length, InfoTable); if (ACPI_FAILURE (Status)) { return; @@ -1573,15 +1554,14 @@ AcpiDmDumpGtdt ( if (GtCount) { - GtxTable = ACPI_ADD_PTR ( - ACPI_GTDT_TIMER_ENTRY, SubTable, SubTableLength); + GtxTable = ACPI_ADD_PTR (ACPI_GTDT_TIMER_ENTRY, SubTable, SubTableLength); SubTableLength += GtCount * sizeof (ACPI_GTDT_TIMER_ENTRY); while (GtCount) { AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Length, Offset, GtxTable, - sizeof (ACPI_GTDT_TIMER_ENTRY), AcpiDmTableInfoGtdt0a); + sizeof (ACPI_GTDT_TIMER_ENTRY), AcpiDmTableInfoGtdt0a); if (ACPI_FAILURE (Status)) { return; @@ -1647,7 +1627,7 @@ AcpiDmDumpHest ( InfoTable = AcpiDmTableInfoHest0; SubTableLength = sizeof (ACPI_HEST_IA_MACHINE_CHECK); BankCount = (ACPI_CAST_PTR (ACPI_HEST_IA_MACHINE_CHECK, - SubTable))->NumHardwareBanks; + SubTable))->NumHardwareBanks; break; case ACPI_HEST_TYPE_IA32_CORRECTED_CHECK: @@ -1655,7 +1635,7 @@ AcpiDmDumpHest ( InfoTable = AcpiDmTableInfoHest1; SubTableLength = sizeof (ACPI_HEST_IA_CORRECTED); BankCount = (ACPI_CAST_PTR (ACPI_HEST_IA_CORRECTED, - SubTable))->NumHardwareBanks; + SubTable))->NumHardwareBanks; break; case ACPI_HEST_TYPE_IA32_NMI: @@ -1692,14 +1672,13 @@ AcpiDmDumpHest ( /* Cannot continue on unknown type - no length */ - AcpiOsPrintf ("\n**** Unknown HEST subtable type 0x%X\n", - SubTable->Type); + AcpiOsPrintf ("\n**** Unknown HEST subtable type 0x%X\n", SubTable->Type); return; } AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Length, Offset, SubTable, - SubTableLength, InfoTable); + SubTableLength, InfoTable); if (ACPI_FAILURE (Status)) { return; @@ -1713,20 +1692,18 @@ AcpiDmDumpHest ( if (BankCount) { - BankTable = ACPI_ADD_PTR (ACPI_HEST_IA_ERROR_BANK, SubTable, - SubTableLength); + BankTable = ACPI_ADD_PTR (ACPI_HEST_IA_ERROR_BANK, SubTable, SubTableLength); SubTableLength += BankCount * sizeof (ACPI_HEST_IA_ERROR_BANK); while (BankCount) { AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Length, Offset, BankTable, - sizeof (ACPI_HEST_IA_ERROR_BANK), AcpiDmTableInfoHestBank); + sizeof (ACPI_HEST_IA_ERROR_BANK), AcpiDmTableInfoHestBank); if (ACPI_FAILURE (Status)) { return; } - Offset += sizeof (ACPI_HEST_IA_ERROR_BANK); BankTable++; BankCount--; @@ -1785,7 +1762,7 @@ AcpiDmDumpIort ( if (Iort->NodeOffset > Offset) { Status = AcpiDmDumpTable (Table->Length, Offset, Table, - Iort->NodeOffset - Offset, AcpiDmTableInfoIortPad); + Iort->NodeOffset - Offset, AcpiDmTableInfoIortPad); if (ACPI_FAILURE (Status)) { return; @@ -1801,7 +1778,7 @@ AcpiDmDumpIort ( AcpiOsPrintf ("\n"); Length = ACPI_OFFSET (ACPI_IORT_NODE, NodeData); Status = AcpiDmDumpTable (Table->Length, Offset, - IortNode, Length, AcpiDmTableInfoIortHdr); + IortNode, Length, AcpiDmTableInfoIortHdr); if (ACPI_FAILURE (Status)) { return; @@ -1858,8 +1835,8 @@ AcpiDmDumpIort ( AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset, - ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset), - Length, InfoTable); + ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset), + Length, InfoTable); if (ACPI_FAILURE (Status)) { return; @@ -1880,8 +1857,8 @@ AcpiDmDumpIort ( for (i = 0; i < IortItsGroup->ItsCount; i++) { Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset, - ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset), - 4, AcpiDmTableInfoIort0a); + ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset), + 4, AcpiDmTableInfoIort0a); NodeOffset += 4; } } @@ -1894,8 +1871,8 @@ AcpiDmDumpIort ( if (IortNode->Length > NodeOffset) { Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset, - Table, IortNode->Length - NodeOffset, - AcpiDmTableInfoIort1a); + Table, IortNode->Length - NodeOffset, + AcpiDmTableInfoIort1a); if (ACPI_FAILURE (Status)) { return; @@ -1914,8 +1891,8 @@ AcpiDmDumpIort ( Length = 2 * sizeof (UINT64); NodeOffset = IortSmmu->GlobalInterruptOffset; Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset, - ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset), - Length, AcpiDmTableInfoIort3a); + ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset), + Length, AcpiDmTableInfoIort3a); if (ACPI_FAILURE (Status)) { return; @@ -1925,13 +1902,12 @@ AcpiDmDumpIort ( for (i = 0; i < IortSmmu->ContextInterruptCount; i++) { Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset, - ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset), - 8, AcpiDmTableInfoIort3b); + ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset), + 8, AcpiDmTableInfoIort3b); if (ACPI_FAILURE (Status)) { return; } - NodeOffset += 8; } @@ -1939,13 +1915,12 @@ AcpiDmDumpIort ( for (i = 0; i < IortSmmu->PmuInterruptCount; i++) { Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset, - ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset), - 8, AcpiDmTableInfoIort3c); + ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset), + 8, AcpiDmTableInfoIort3c); if (ACPI_FAILURE (Status)) { return; } - NodeOffset += 8; } } @@ -1964,13 +1939,12 @@ AcpiDmDumpIort ( AcpiOsPrintf ("\n"); Length = sizeof (ACPI_IORT_ID_MAPPING); Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset, - ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset), - Length, AcpiDmTableInfoIortMap); + ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset), + Length, AcpiDmTableInfoIortMap); if (ACPI_FAILURE (Status)) { return; } - NodeOffset += Length; } @@ -2028,7 +2002,7 @@ AcpiDmDumpIvrs ( AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Table->Length, Offset, SubTable, - SubTable->Length, AcpiDmTableInfoIvrsHdr); + SubTable->Length, AcpiDmTableInfoIvrsHdr); if (ACPI_FAILURE (Status)) { return; @@ -2067,7 +2041,7 @@ AcpiDmDumpIvrs ( AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Table->Length, Offset, SubTable, - SubTable->Length, InfoTable); + SubTable->Length, InfoTable); if (ACPI_FAILURE (Status)) { return; @@ -2079,7 +2053,7 @@ AcpiDmDumpIvrs ( { EntryOffset = Offset + sizeof (ACPI_IVRS_HARDWARE); DeviceEntry = ACPI_ADD_PTR (ACPI_IVRS_DE_HEADER, SubTable, - sizeof (ACPI_IVRS_HARDWARE)); + sizeof (ACPI_IVRS_HARDWARE)); while (EntryOffset < (Offset + SubTable->Length)) { @@ -2144,7 +2118,7 @@ AcpiDmDumpIvrs ( /* Dump the Device Entry */ Status = AcpiDmDumpTable (Table->Length, EntryOffset, - DeviceEntry, EntryLength, InfoTable); + DeviceEntry, EntryLength, InfoTable); if (ACPI_FAILURE (Status)) { return; @@ -2152,7 +2126,7 @@ AcpiDmDumpIvrs ( EntryOffset += EntryLength; DeviceEntry = ACPI_ADD_PTR (ACPI_IVRS_DE_HEADER, DeviceEntry, - EntryLength); + EntryLength); } } @@ -2200,7 +2174,7 @@ AcpiDmDumpLpit ( /* Common subtable header */ Status = AcpiDmDumpTable (Length, Offset, SubTable, - sizeof (ACPI_LPIT_HEADER), AcpiDmTableInfoLpitHdr); + sizeof (ACPI_LPIT_HEADER), AcpiDmTableInfoLpitHdr); if (ACPI_FAILURE (Status)) { return; @@ -2218,18 +2192,16 @@ AcpiDmDumpLpit ( /* Cannot continue on unknown type - no length */ - AcpiOsPrintf ("\n**** Unknown LPIT subtable type 0x%X\n", - SubTable->Type); + AcpiOsPrintf ("\n**** Unknown LPIT subtable type 0x%X\n", SubTable->Type); return; } Status = AcpiDmDumpTable (Length, Offset, SubTable, - SubTableLength, InfoTable); + SubTableLength, InfoTable); if (ACPI_FAILURE (Status)) { return; } - AcpiOsPrintf ("\n"); /* Point to next subtable */ @@ -2281,7 +2253,7 @@ AcpiDmDumpMadt ( AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Length, Offset, SubTable, - SubTable->Length, AcpiDmTableInfoMadtHdr); + SubTable->Length, AcpiDmTableInfoMadtHdr); if (ACPI_FAILURE (Status)) { return; @@ -2371,8 +2343,7 @@ AcpiDmDumpMadt ( default: - AcpiOsPrintf ("\n**** Unknown MADT subtable type 0x%X\n\n", - SubTable->Type); + AcpiOsPrintf ("\n**** Unknown MADT subtable type 0x%X\n\n", SubTable->Type); /* Attempt to continue */ @@ -2381,12 +2352,11 @@ AcpiDmDumpMadt ( AcpiOsPrintf ("Invalid zero length subtable\n"); return; } - goto NextSubTable; } Status = AcpiDmDumpTable (Length, Offset, SubTable, - SubTable->Length, InfoTable); + SubTable->Length, InfoTable); if (ACPI_FAILURE (Status)) { return; @@ -2396,8 +2366,7 @@ NextSubTable: /* Point to next subtable */ Offset += SubTable->Length; - SubTable = ACPI_ADD_PTR (ACPI_SUBTABLE_HEADER, SubTable, - SubTable->Length); + SubTable = ACPI_ADD_PTR (ACPI_SUBTABLE_HEADER, SubTable, SubTable->Length); } } @@ -2445,7 +2414,7 @@ AcpiDmDumpMcfg ( AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Table->Length, Offset, SubTable, - sizeof (ACPI_MCFG_ALLOCATION), AcpiDmTableInfoMcfg0); + sizeof (ACPI_MCFG_ALLOCATION), AcpiDmTableInfoMcfg0); if (ACPI_FAILURE (Status)) { return; @@ -2455,7 +2424,7 @@ AcpiDmDumpMcfg ( Offset += sizeof (ACPI_MCFG_ALLOCATION); SubTable = ACPI_ADD_PTR (ACPI_MCFG_ALLOCATION, SubTable, - sizeof (ACPI_MCFG_ALLOCATION)); + sizeof (ACPI_MCFG_ALLOCATION)); } } @@ -2505,7 +2474,7 @@ AcpiDmDumpMpst ( { AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Table->Length, Offset, SubTable0, - sizeof (ACPI_MPST_POWER_NODE), AcpiDmTableInfoMpst0); + sizeof (ACPI_MPST_POWER_NODE), AcpiDmTableInfoMpst0); if (ACPI_FAILURE (Status)) { return; @@ -2526,7 +2495,7 @@ AcpiDmDumpMpst ( { AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Table->Length, Offset, SubTable0A, - sizeof (ACPI_MPST_POWER_STATE), AcpiDmTableInfoMpst0A); + sizeof (ACPI_MPST_POWER_STATE), AcpiDmTableInfoMpst0A); if (ACPI_FAILURE (Status)) { return; @@ -2549,7 +2518,7 @@ AcpiDmDumpMpst ( while (ComponentCount) { Status = AcpiDmDumpTable (Table->Length, Offset, SubTable0B, - sizeof (ACPI_MPST_COMPONENT), AcpiDmTableInfoMpst0B); + sizeof (ACPI_MPST_COMPONENT), AcpiDmTableInfoMpst0B); if (ACPI_FAILURE (Status)) { return; @@ -2574,7 +2543,7 @@ AcpiDmDumpMpst ( AcpiOsPrintf ("\n"); SubTable1 = ACPI_CAST_PTR (ACPI_MPST_DATA_HDR, SubTable0); Status = AcpiDmDumpTable (Table->Length, Offset, SubTable1, - sizeof (ACPI_MPST_DATA_HDR), AcpiDmTableInfoMpst1); + sizeof (ACPI_MPST_DATA_HDR), AcpiDmTableInfoMpst1); if (ACPI_FAILURE (Status)) { return; @@ -2585,14 +2554,13 @@ AcpiDmDumpMpst ( /* Subtable: Memory Power State Characteristics structure(s) */ - SubTable2 = ACPI_ADD_PTR (ACPI_MPST_POWER_DATA, SubTable1, - sizeof (ACPI_MPST_DATA_HDR)); + SubTable2 = ACPI_ADD_PTR (ACPI_MPST_POWER_DATA, SubTable1, sizeof (ACPI_MPST_DATA_HDR)); while ((Offset < Table->Length) && SubtableCount) { AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Table->Length, Offset, SubTable2, - sizeof (ACPI_MPST_POWER_DATA), AcpiDmTableInfoMpst2); + sizeof (ACPI_MPST_POWER_DATA), AcpiDmTableInfoMpst2); if (ACPI_FAILURE (Status)) { return; @@ -2643,7 +2611,7 @@ AcpiDmDumpMsct ( AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Table->Length, Offset, SubTable, - sizeof (ACPI_MSCT_PROXIMITY), AcpiDmTableInfoMsct0); + sizeof (ACPI_MSCT_PROXIMITY), AcpiDmTableInfoMsct0); if (ACPI_FAILURE (Status)) { return; @@ -2652,8 +2620,7 @@ AcpiDmDumpMsct ( /* Point to next subtable */ Offset += sizeof (ACPI_MSCT_PROXIMITY); - SubTable = ACPI_ADD_PTR (ACPI_MSCT_PROXIMITY, SubTable, - sizeof (ACPI_MSCT_PROXIMITY)); + SubTable = ACPI_ADD_PTR (ACPI_MSCT_PROXIMITY, SubTable, sizeof (ACPI_MSCT_PROXIMITY)); } } @@ -2696,7 +2663,7 @@ AcpiDmDumpMtmr ( AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Table->Length, Offset, SubTable, - sizeof (ACPI_MTMR_ENTRY), AcpiDmTableInfoMtmr0); + sizeof (ACPI_MTMR_ENTRY), AcpiDmTableInfoMtmr0); if (ACPI_FAILURE (Status)) { return; @@ -2705,8 +2672,7 @@ AcpiDmDumpMtmr ( /* Point to next subtable */ Offset += sizeof (ACPI_MTMR_ENTRY); - SubTable = ACPI_ADD_PTR (ACPI_MTMR_ENTRY, SubTable, - sizeof (ACPI_MTMR_ENTRY)); + SubTable = ACPI_ADD_PTR (ACPI_MTMR_ENTRY, SubTable, sizeof (ACPI_MTMR_ENTRY)); } } @@ -2756,7 +2722,7 @@ AcpiDmDumpNfit ( AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Table->Length, Offset, SubTable, - SubTable->Length, AcpiDmTableInfoNfitHdr); + SubTable->Length, AcpiDmTableInfoNfitHdr); if (ACPI_FAILURE (Status)) { return; @@ -2809,8 +2775,7 @@ AcpiDmDumpNfit ( break; default: - AcpiOsPrintf ("\n**** Unknown NFIT subtable type 0x%X\n", - SubTable->Type); + AcpiOsPrintf ("\n**** Unknown NFIT subtable type 0x%X\n", SubTable->Type); /* Attempt to continue */ @@ -2824,7 +2789,7 @@ AcpiDmDumpNfit ( AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Table->Length, Offset, SubTable, - SubTable->Length, InfoTable); + SubTable->Length, InfoTable); if (ACPI_FAILURE (Status)) { return; @@ -2839,8 +2804,8 @@ AcpiDmDumpNfit ( for (i = 0; i < Interleave->LineCount; i++) { Status = AcpiDmDumpTable (Table->Length, Offset + FieldOffset, - &Interleave->LineOffset[i], - sizeof (UINT32), AcpiDmTableInfoNfit2a); + &Interleave->LineOffset[i], + sizeof (UINT32), AcpiDmTableInfoNfit2a); if (ACPI_FAILURE (Status)) { return; @@ -2852,15 +2817,13 @@ AcpiDmDumpNfit ( case ACPI_NFIT_TYPE_SMBIOS: - Length = SubTable->Length - - sizeof (ACPI_NFIT_SMBIOS) + sizeof (UINT8); - + Length = SubTable->Length - sizeof (ACPI_NFIT_SMBIOS) + sizeof (UINT8); if (Length) { Status = AcpiDmDumpTable (Table->Length, - sizeof (ACPI_NFIT_SMBIOS) - sizeof (UINT8), - SmbiosInfo, - Length, AcpiDmTableInfoNfit3a); + sizeof (ACPI_NFIT_SMBIOS) - sizeof (UINT8), + SmbiosInfo, + Length, AcpiDmTableInfoNfit3a); if (ACPI_FAILURE (Status)) { return; @@ -2874,8 +2837,8 @@ AcpiDmDumpNfit ( for (i = 0; i < Hint->HintCount; i++) { Status = AcpiDmDumpTable (Table->Length, Offset + FieldOffset, - &Hint->HintAddress[i], - sizeof (UINT64), AcpiDmTableInfoNfit6a); + &Hint->HintAddress[i], + sizeof (UINT64), AcpiDmTableInfoNfit6a); if (ACPI_FAILURE (Status)) { return; @@ -2939,7 +2902,7 @@ AcpiDmDumpPcct ( AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Length, Offset, SubTable, - SubTable->Header.Length, AcpiDmTableInfoPcctHdr); + SubTable->Header.Length, AcpiDmTableInfoPcctHdr); if (ACPI_FAILURE (Status)) { return; @@ -2967,7 +2930,7 @@ AcpiDmDumpPcct ( AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Length, Offset, SubTable, - SubTable->Header.Length, InfoTable); + SubTable->Header.Length, InfoTable); if (ACPI_FAILURE (Status)) { return; @@ -2977,7 +2940,7 @@ AcpiDmDumpPcct ( Offset += SubTable->Header.Length; SubTable = ACPI_ADD_PTR (ACPI_PCCT_SUBSPACE, SubTable, - SubTable->Header.Length); + SubTable->Header.Length); } } @@ -3029,7 +2992,7 @@ AcpiDmDumpPmtt ( AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Length, Offset, SubTable, - SubTable->Length, AcpiDmTableInfoPmttHdr); + SubTable->Length, AcpiDmTableInfoPmttHdr); if (ACPI_FAILURE (Status)) { return; @@ -3048,7 +3011,7 @@ AcpiDmDumpPmtt ( /* Dump the fixed-length portion of the subtable */ Status = AcpiDmDumpTable (Length, Offset, SubTable, - SubTable->Length, AcpiDmTableInfoPmtt0); + SubTable->Length, AcpiDmTableInfoPmtt0); if (ACPI_FAILURE (Status)) { return; @@ -3067,8 +3030,8 @@ AcpiDmDumpPmtt ( AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Length, - Offset + MemOffset, MemSubTable, - MemSubTable->Length, AcpiDmTableInfoPmttHdr); + Offset + MemOffset, MemSubTable, + MemSubTable->Length, AcpiDmTableInfoPmttHdr); if (ACPI_FAILURE (Status)) { return; @@ -3087,8 +3050,8 @@ AcpiDmDumpPmtt ( /* Dump the fixed-length portion of the controller subtable */ Status = AcpiDmDumpTable (Length, - Offset + MemOffset, MemSubTable, - MemSubTable->Length, AcpiDmTableInfoPmtt1); + Offset + MemOffset, MemSubTable, + MemSubTable->Length, AcpiDmTableInfoPmtt1); if (ACPI_FAILURE (Status)) { return; @@ -3106,8 +3069,8 @@ AcpiDmDumpPmtt ( DomainCount) { Status = AcpiDmDumpTable (Length, - Offset + MemOffset + DomainOffset, DomainArray, - sizeof (ACPI_PMTT_DOMAIN), AcpiDmTableInfoPmtt1a); + Offset + MemOffset + DomainOffset, DomainArray, + sizeof (ACPI_PMTT_DOMAIN), AcpiDmTableInfoPmtt1a); if (ACPI_FAILURE (Status)) { return; @@ -3137,8 +3100,8 @@ AcpiDmDumpPmtt ( AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Length, - Offset + MemOffset + DimmOffset, DimmSubTable, - DimmSubTable->Length, AcpiDmTableInfoPmttHdr); + Offset + MemOffset + DimmOffset, DimmSubTable, + DimmSubTable->Length, AcpiDmTableInfoPmttHdr); if (ACPI_FAILURE (Status)) { return; @@ -3157,8 +3120,8 @@ AcpiDmDumpPmtt ( /* Dump the fixed-length DIMM subtable */ Status = AcpiDmDumpTable (Length, - Offset + MemOffset + DimmOffset, DimmSubTable, - DimmSubTable->Length, AcpiDmTableInfoPmtt2); + Offset + MemOffset + DimmOffset, DimmSubTable, + DimmSubTable->Length, AcpiDmTableInfoPmtt2); if (ACPI_FAILURE (Status)) { return; @@ -3225,7 +3188,7 @@ AcpiDmDumpS3pt ( AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (S3ptTable->Length, Offset, SubTable, - SubTable->Length, AcpiDmTableInfoS3ptHdr); + SubTable->Length, AcpiDmTableInfoS3ptHdr); if (ACPI_FAILURE (Status)) { return 0; @@ -3245,8 +3208,7 @@ AcpiDmDumpS3pt ( default: - AcpiOsPrintf ("\n**** Unknown S3PT subtable type 0x%X\n", - SubTable->Type); + AcpiOsPrintf ("\n**** Unknown S3PT subtable type 0x%X\n", SubTable->Type); /* Attempt to continue */ @@ -3260,7 +3222,7 @@ AcpiDmDumpS3pt ( AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (S3ptTable->Length, Offset, SubTable, - SubTable->Length, InfoTable); + SubTable->Length, InfoTable); if (ACPI_FAILURE (Status)) { return 0; @@ -3293,9 +3255,8 @@ void AcpiDmDumpSlic ( ACPI_TABLE_HEADER *Table) { - (void) AcpiDmDumpTable (Table->Length, sizeof (ACPI_TABLE_HEADER), Table, - Table->Length - sizeof (*Table), AcpiDmTableInfoSlic); + Table->Length - sizeof (*Table), AcpiDmTableInfoSlic); } @@ -3348,8 +3309,7 @@ AcpiDmDumpSlit ( if (Offset >= Table->Length) { - AcpiOsPrintf ( - "\n**** Not enough room in table for all localities\n"); + AcpiOsPrintf ("\n**** Not enough room in table for all localities\n"); return; } @@ -3417,7 +3377,7 @@ AcpiDmDumpSrat ( AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Table->Length, Offset, SubTable, - SubTable->Length, AcpiDmTableInfoSratHdr); + SubTable->Length, AcpiDmTableInfoSratHdr); if (ACPI_FAILURE (Status)) { return; @@ -3446,8 +3406,7 @@ AcpiDmDumpSrat ( break; default: - AcpiOsPrintf ("\n**** Unknown SRAT subtable type 0x%X\n", - SubTable->Type); + AcpiOsPrintf ("\n**** Unknown SRAT subtable type 0x%X\n", SubTable->Type); /* Attempt to continue */ @@ -3461,7 +3420,7 @@ AcpiDmDumpSrat ( AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Table->Length, Offset, SubTable, - SubTable->Length, InfoTable); + SubTable->Length, InfoTable); if (ACPI_FAILURE (Status)) { return; @@ -3471,8 +3430,7 @@ NextSubTable: /* Point to next subtable */ Offset += SubTable->Length; - SubTable = ACPI_ADD_PTR (ACPI_SUBTABLE_HEADER, SubTable, - SubTable->Length); + SubTable = ACPI_ADD_PTR (ACPI_SUBTABLE_HEADER, SubTable, SubTable->Length); } } @@ -3636,7 +3594,7 @@ AcpiDmDumpVrtc ( AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Table->Length, Offset, SubTable, - sizeof (ACPI_VRTC_ENTRY), AcpiDmTableInfoVrtc0); + sizeof (ACPI_VRTC_ENTRY), AcpiDmTableInfoVrtc0); if (ACPI_FAILURE (Status)) { return; @@ -3645,8 +3603,7 @@ AcpiDmDumpVrtc ( /* Point to next subtable */ Offset += sizeof (ACPI_VRTC_ENTRY); - SubTable = ACPI_ADD_PTR (ACPI_VRTC_ENTRY, SubTable, - sizeof (ACPI_VRTC_ENTRY)); + SubTable = ACPI_ADD_PTR (ACPI_VRTC_ENTRY, SubTable, sizeof (ACPI_VRTC_ENTRY)); } } @@ -3689,7 +3646,7 @@ AcpiDmDumpWdat ( AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Table->Length, Offset, SubTable, - sizeof (ACPI_WDAT_ENTRY), AcpiDmTableInfoWdat0); + sizeof (ACPI_WDAT_ENTRY), AcpiDmTableInfoWdat0); if (ACPI_FAILURE (Status)) { return; @@ -3698,12 +3655,10 @@ AcpiDmDumpWdat ( /* Point to next subtable */ Offset += sizeof (ACPI_WDAT_ENTRY); - SubTable = ACPI_ADD_PTR (ACPI_WDAT_ENTRY, SubTable, - sizeof (ACPI_WDAT_ENTRY)); + SubTable = ACPI_ADD_PTR (ACPI_WDAT_ENTRY, SubTable, sizeof (ACPI_WDAT_ENTRY)); } } - /******************************************************************************* * * FUNCTION: AcpiDmDumpWpbt diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/common/getopt.c b/src/add-ons/kernel/bus_managers/acpi/acpica/common/getopt.c index 23c4495302..7d0e8e21ec 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/common/getopt.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/common/getopt.c @@ -119,7 +119,6 @@ * Option strings: * "f" - Option has no arguments * "f:" - Option requires an argument - * "f+" - Option has an optional argument * "f^" - Option has optional single-char sub-options * "f|" - Option has required single-char sub-options */ @@ -163,7 +162,6 @@ AcpiGetoptArgument ( int argc, char **argv) { - AcpiGbl_Optind--; CurrentCharPtr++; @@ -256,8 +254,7 @@ AcpiGetopt( } else if (++AcpiGbl_Optind >= argc) { - ACPI_OPTION_ERROR ( - "Option requires an argument: -", CurrentChar); + ACPI_OPTION_ERROR ("Option requires an argument: -", CurrentChar); CurrentCharPtr = 1; return ('?'); @@ -318,9 +315,7 @@ AcpiGetopt( } else { - ACPI_OPTION_ERROR ( - "Option requires a single-character suboption: -", - CurrentChar); + ACPI_OPTION_ERROR ("Option requires a single-character suboption: -", CurrentChar); CurrentCharPtr = 1; return ('?'); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsargs.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsargs.c index 6343d32f5b..344e55ec35 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsargs.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsargs.c @@ -186,7 +186,7 @@ AcpiDsExecuteArguments ( } Status = AcpiDsInitAmlWalk (WalkState, Op, NULL, AmlStart, - AmlLength, NULL, ACPI_IMODE_LOAD_PASS1); + AmlLength, NULL, ACPI_IMODE_LOAD_PASS1); if (ACPI_FAILURE (Status)) { AcpiDsDeleteWalkState (WalkState); @@ -233,7 +233,7 @@ AcpiDsExecuteArguments ( /* Execute the opcode and arguments */ Status = AcpiDsInitAmlWalk (WalkState, Op, NULL, AmlStart, - AmlLength, NULL, ACPI_IMODE_EXECUTE); + AmlLength, NULL, ACPI_IMODE_EXECUTE); if (ACPI_FAILURE (Status)) { AcpiDsDeleteWalkState (WalkState); @@ -286,8 +286,8 @@ AcpiDsGetBufferFieldArguments ( ExtraDesc = AcpiNsGetSecondaryObject (ObjDesc); Node = ObjDesc->BufferField.Node; - ACPI_DEBUG_EXEC (AcpiUtDisplayInitPathname ( - ACPI_TYPE_BUFFER_FIELD, Node, NULL)); + ACPI_DEBUG_EXEC (AcpiUtDisplayInitPathname (ACPI_TYPE_BUFFER_FIELD, + Node, NULL)); ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "[%4.4s] BufferField Arg Init\n", AcpiUtGetNodeName (Node))); @@ -295,7 +295,7 @@ AcpiDsGetBufferFieldArguments ( /* Execute the AML code for the TermArg arguments */ Status = AcpiDsExecuteArguments (Node, Node->Parent, - ExtraDesc->Extra.AmlLength, ExtraDesc->Extra.AmlStart); + ExtraDesc->Extra.AmlLength, ExtraDesc->Extra.AmlStart); return_ACPI_STATUS (Status); } @@ -335,8 +335,8 @@ AcpiDsGetBankFieldArguments ( ExtraDesc = AcpiNsGetSecondaryObject (ObjDesc); Node = ObjDesc->BankField.Node; - ACPI_DEBUG_EXEC (AcpiUtDisplayInitPathname ( - ACPI_TYPE_LOCAL_BANK_FIELD, Node, NULL)); + ACPI_DEBUG_EXEC (AcpiUtDisplayInitPathname (ACPI_TYPE_LOCAL_BANK_FIELD, + Node, NULL)); ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "[%4.4s] BankField Arg Init\n", AcpiUtGetNodeName (Node))); @@ -344,7 +344,7 @@ AcpiDsGetBankFieldArguments ( /* Execute the AML code for the TermArg arguments */ Status = AcpiDsExecuteArguments (Node, Node->Parent, - ExtraDesc->Extra.AmlLength, ExtraDesc->Extra.AmlStart); + ExtraDesc->Extra.AmlLength, ExtraDesc->Extra.AmlStart); return_ACPI_STATUS (Status); } @@ -384,8 +384,7 @@ AcpiDsGetBufferArguments ( if (!Node) { ACPI_ERROR ((AE_INFO, - "No pointer back to namespace node in buffer object %p", - ObjDesc)); + "No pointer back to namespace node in buffer object %p", ObjDesc)); return_ACPI_STATUS (AE_AML_INTERNAL); } @@ -394,7 +393,7 @@ AcpiDsGetBufferArguments ( /* Execute the AML code for the TermArg arguments */ Status = AcpiDsExecuteArguments (Node, Node, - ObjDesc->Buffer.AmlLength, ObjDesc->Buffer.AmlStart); + ObjDesc->Buffer.AmlLength, ObjDesc->Buffer.AmlStart); return_ACPI_STATUS (Status); } @@ -443,7 +442,7 @@ AcpiDsGetPackageArguments ( /* Execute the AML code for the TermArg arguments */ Status = AcpiDsExecuteArguments (Node, Node, - ObjDesc->Package.AmlLength, ObjDesc->Package.AmlStart); + ObjDesc->Package.AmlLength, ObjDesc->Package.AmlStart); return_ACPI_STATUS (Status); } @@ -488,23 +487,22 @@ AcpiDsGetRegionArguments ( Node = ObjDesc->Region.Node; - ACPI_DEBUG_EXEC (AcpiUtDisplayInitPathname ( - ACPI_TYPE_REGION, Node, NULL)); + ACPI_DEBUG_EXEC (AcpiUtDisplayInitPathname (ACPI_TYPE_REGION, Node, NULL)); - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, - "[%4.4s] OpRegion Arg Init at AML %p\n", + ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "[%4.4s] OpRegion Arg Init at AML %p\n", AcpiUtGetNodeName (Node), ExtraDesc->Extra.AmlStart)); /* Execute the argument AML */ Status = AcpiDsExecuteArguments (Node, ExtraDesc->Extra.ScopeNode, - ExtraDesc->Extra.AmlLength, ExtraDesc->Extra.AmlStart); + ExtraDesc->Extra.AmlLength, ExtraDesc->Extra.AmlStart); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } Status = AcpiUtAddAddressRange (ObjDesc->Region.SpaceId, - ObjDesc->Region.Address, ObjDesc->Region.Length, Node); + ObjDesc->Region.Address, ObjDesc->Region.Length, + Node); return_ACPI_STATUS (Status); } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dscontrol.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dscontrol.c index 270cf0e091..a069ed51a1 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dscontrol.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dscontrol.c @@ -119,7 +119,6 @@ #include "amlcode.h" #include "acdispat.h" #include "acinterp.h" -#include "acdebug.h" #define _COMPONENT ACPI_DISPATCHER ACPI_MODULE_NAME ("dscontrol") @@ -192,12 +191,9 @@ AcpiDsExecBeginControlOp ( * Save a pointer to the predicate for multiple executions * of a loop */ - ControlState->Control.AmlPredicateStart = - WalkState->ParserState.Aml - 1; - ControlState->Control.PackageEnd = - WalkState->ParserState.PkgEnd; - ControlState->Control.Opcode = - Op->Common.AmlOpcode; + ControlState->Control.AmlPredicateStart = WalkState->ParserState.Aml - 1; + ControlState->Control.PackageEnd = WalkState->ParserState.PkgEnd; + ControlState->Control.Opcode = Op->Common.AmlOpcode; /* Push the control state on this walk's control stack */ @@ -308,8 +304,7 @@ AcpiDsExecEndControlOp ( * another time */ Status = AE_CTRL_PENDING; - WalkState->AmlLastWhile = - ControlState->Control.AmlPredicateStart; + WalkState->AmlLastWhile = ControlState->Control.AmlPredicateStart; break; } @@ -353,8 +348,7 @@ AcpiDsExecEndControlOp ( * an arg or local), resolve it now because it may * cease to exist at the end of the method. */ - Status = AcpiExResolveToValue ( - &WalkState->Operands [0], WalkState); + Status = AcpiExResolveToValue (&WalkState->Operands [0], WalkState); if (ACPI_FAILURE (Status)) { return (Status); @@ -383,15 +377,11 @@ AcpiDsExecEndControlOp ( * Allow references created by the Index operator to return * unchanged. */ - if ((ACPI_GET_DESCRIPTOR_TYPE (WalkState->Results->Results.ObjDesc[0]) == - ACPI_DESC_TYPE_OPERAND) && - ((WalkState->Results->Results.ObjDesc [0])->Common.Type == - ACPI_TYPE_LOCAL_REFERENCE) && - ((WalkState->Results->Results.ObjDesc [0])->Reference.Class != - ACPI_REFCLASS_INDEX)) + if ((ACPI_GET_DESCRIPTOR_TYPE (WalkState->Results->Results.ObjDesc[0]) == ACPI_DESC_TYPE_OPERAND) && + ((WalkState->Results->Results.ObjDesc [0])->Common.Type == ACPI_TYPE_LOCAL_REFERENCE) && + ((WalkState->Results->Results.ObjDesc [0])->Reference.Class != ACPI_REFCLASS_INDEX)) { - Status = AcpiExResolveToValue ( - &WalkState->Results->Results.ObjDesc [0], WalkState); + Status = AcpiExResolveToValue (&WalkState->Results->Results.ObjDesc [0], WalkState); if (ACPI_FAILURE (Status)) { return (Status); @@ -409,9 +399,9 @@ AcpiDsExecEndControlOp ( AcpiUtRemoveReference (WalkState->Operands [0]); } - WalkState->Operands[0] = NULL; - WalkState->NumOperands = 0; - WalkState->ReturnDesc = NULL; + WalkState->Operands [0] = NULL; + WalkState->NumOperands = 0; + WalkState->ReturnDesc = NULL; } @@ -432,12 +422,20 @@ AcpiDsExecEndControlOp ( case AML_BREAK_POINT_OP: - AcpiDbSignalBreakPoint (WalkState); + /* + * Set the single-step flag. This will cause the debugger (if present) + * to break to the console within the AML debugger at the start of the + * next AML instruction. + */ + ACPI_DEBUGGER_EXEC ( + AcpiGbl_CmSingleStep = TRUE); + ACPI_DEBUGGER_EXEC ( + AcpiOsPrintf ("**break** Executed AML BreakPoint opcode\n")); /* Call to the OSL in case OS wants a piece of the action */ Status = AcpiOsSignal (ACPI_SIGNAL_BREAKPOINT, - "Executed AML Breakpoint opcode"); + "Executed AML Breakpoint opcode"); break; case AML_BREAK_OP: @@ -461,8 +459,7 @@ AcpiDsExecEndControlOp ( /* Was: WalkState->AmlLastWhile = WalkState->ControlState->Control.AmlPredicateStart; */ - WalkState->AmlLastWhile = - WalkState->ControlState->Control.PackageEnd; + WalkState->AmlLastWhile = WalkState->ControlState->Control.PackageEnd; /* Return status depending on opcode */ diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsdebug.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsdebug.c index 02fdebc416..80b3e0cbbf 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsdebug.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsdebug.c @@ -247,7 +247,6 @@ AcpiDsDumpMethodStack ( ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "\n**** Exception %s during execution of method ", AcpiFormatException (Status))); - AcpiDsPrintNodePathname (WalkState->MethodNode, NULL); /* Display stack of executing methods */ @@ -264,8 +263,8 @@ AcpiDsDumpMethodStack ( if (MethodDesc) { AcpiExStopTraceMethod ( - (ACPI_NAMESPACE_NODE *) MethodDesc->Method.Node, - MethodDesc, WalkState); + (ACPI_NAMESPACE_NODE *) MethodDesc->Method.Node, + MethodDesc, WalkState); } ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, @@ -293,8 +292,8 @@ AcpiDsDumpMethodStack ( { /* * This method has called another method - * NOTE: the method call parse subtree is already deleted at - * this point, so we cannot disassemble the method invocation. + * NOTE: the method call parse subtree is already deleted at this + * point, so we cannot disassemble the method invocation. */ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_DISPATCH, "Call to method ")); AcpiDsPrintNodePathname (PreviousMethod, NULL); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsfield.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsfield.c index b2d5cfd81d..cf8c189460 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsfield.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsfield.c @@ -187,7 +187,6 @@ AcpiDsCreateExternalRegion ( * insert the name into the namespace. */ AcpiDmAddOpToExternalList (Op, Path, ACPI_TYPE_REGION, 0, 0); - Status = AcpiNsLookup (WalkState->ScopeInfo, Path, ACPI_TYPE_REGION, ACPI_IMODE_LOAD_PASS1, ACPI_NS_SEARCH_PARENT, WalkState, Node); if (ACPI_FAILURE (Status)) @@ -283,7 +282,7 @@ AcpiDsCreateBufferField ( /* Creating new namespace node, should not already exist */ Flags = ACPI_NS_NO_UPSEARCH | ACPI_NS_DONT_OPEN_SCOPE | - ACPI_NS_ERROR_IF_FOUND; + ACPI_NS_ERROR_IF_FOUND; /* * Mark node temporary if we are executing a normal control @@ -297,9 +296,9 @@ AcpiDsCreateBufferField ( /* Enter the NameString into the namespace */ - Status = AcpiNsLookup (WalkState->ScopeInfo, - Arg->Common.Value.String, ACPI_TYPE_ANY, - ACPI_IMODE_LOAD_PASS1, Flags, WalkState, &Node); + Status = AcpiNsLookup (WalkState->ScopeInfo, Arg->Common.Value.String, + ACPI_TYPE_ANY, ACPI_IMODE_LOAD_PASS1, + Flags, WalkState, &Node); if (ACPI_FAILURE (Status)) { ACPI_ERROR_NAMESPACE (Arg->Common.Value.String, Status); @@ -340,13 +339,13 @@ AcpiDsCreateBufferField ( } /* - * Remember location in AML stream of the field unit opcode and operands - * -- since the buffer and index operands must be evaluated. + * Remember location in AML stream of the field unit opcode and operands -- + * since the buffer and index operands must be evaluated. */ - SecondDesc = ObjDesc->Common.NextObject; - SecondDesc->Extra.AmlStart = Op->Named.Data; + SecondDesc = ObjDesc->Common.NextObject; + SecondDesc->Extra.AmlStart = Op->Named.Data; SecondDesc->Extra.AmlLength = Op->Named.Length; - ObjDesc->BufferField.Node = Node; + ObjDesc->BufferField.Node = Node; /* Attach constructed field descriptors to parent node */ @@ -414,8 +413,8 @@ AcpiDsGetFieldNames ( { case AML_INT_RESERVEDFIELD_OP: - Position = (UINT64) Info->FieldBitPosition + - (UINT64) Arg->Common.Value.Size; + Position = (UINT64) Info->FieldBitPosition + + (UINT64) Arg->Common.Value.Size; if (Position > ACPI_UINT32_MAX) { @@ -448,13 +447,11 @@ AcpiDsGetFieldNames ( /* AccessAttribute (AttribQuick, AttribByte, etc.) */ - Info->Attribute = (UINT8) - ((Arg->Common.Value.Integer >> 8) & 0xFF); + Info->Attribute = (UINT8) ((Arg->Common.Value.Integer >> 8) & 0xFF); /* AccessLength (for serial/buffer protocols) */ - Info->AccessLength = (UINT8) - ((Arg->Common.Value.Integer >> 16) & 0xFF); + Info->AccessLength = (UINT8) ((Arg->Common.Value.Integer >> 16) & 0xFF); break; case AML_INT_CONNECTION_OP: @@ -481,9 +478,9 @@ AcpiDsGetFieldNames ( /* Lookup the Connection() namepath, it should already exist */ Status = AcpiNsLookup (WalkState->ScopeInfo, - Child->Common.Value.Name, ACPI_TYPE_ANY, - ACPI_IMODE_EXECUTE, ACPI_NS_DONT_OPEN_SCOPE, - WalkState, &Info->ConnectionNode); + Child->Common.Value.Name, ACPI_TYPE_ANY, + ACPI_IMODE_EXECUTE, ACPI_NS_DONT_OPEN_SCOPE, + WalkState, &Info->ConnectionNode); if (ACPI_FAILURE (Status)) { ACPI_ERROR_NAMESPACE (Child->Common.Value.Name, Status); @@ -497,9 +494,9 @@ AcpiDsGetFieldNames ( /* Lookup the name, it should already exist */ Status = AcpiNsLookup (WalkState->ScopeInfo, - (char *) &Arg->Named.Name, Info->FieldType, - ACPI_IMODE_EXECUTE, ACPI_NS_DONT_OPEN_SCOPE, - WalkState, &Info->FieldNode); + (char *) &Arg->Named.Name, Info->FieldType, + ACPI_IMODE_EXECUTE, ACPI_NS_DONT_OPEN_SCOPE, + WalkState, &Info->FieldNode); if (ACPI_FAILURE (Status)) { ACPI_ERROR_NAMESPACE ((char *) &Arg->Named.Name, Status); @@ -528,8 +525,8 @@ AcpiDsGetFieldNames ( /* Keep track of bit position for the next field */ - Position = (UINT64) Info->FieldBitPosition + - (UINT64) Arg->Common.Value.Size; + Position = (UINT64) Info->FieldBitPosition + + (UINT64) Arg->Common.Value.Size; if (Position > ACPI_UINT32_MAX) { @@ -546,8 +543,7 @@ AcpiDsGetFieldNames ( default: ACPI_ERROR ((AE_INFO, - "Invalid opcode in field list: 0x%X", - Arg->Common.AmlOpcode)); + "Invalid opcode in field list: 0x%X", Arg->Common.AmlOpcode)); return_ACPI_STATUS (AE_AML_BAD_OPCODE); } @@ -593,8 +589,8 @@ AcpiDsCreateField ( if (!RegionNode) { Status = AcpiNsLookup (WalkState->ScopeInfo, Arg->Common.Value.Name, - ACPI_TYPE_REGION, ACPI_IMODE_EXECUTE, - ACPI_NS_SEARCH_PARENT, WalkState, &RegionNode); + ACPI_TYPE_REGION, ACPI_IMODE_EXECUTE, + ACPI_NS_SEARCH_PARENT, WalkState, &RegionNode); #ifdef ACPI_ASL_COMPILER Status = AcpiDsCreateExternalRegion (Status, Arg, Arg->Common.Value.Name, WalkState, &RegionNode); @@ -700,7 +696,7 @@ AcpiDsInitFieldObjects ( /* Creating new namespace node(s), should not already exist */ Flags = ACPI_NS_NO_UPSEARCH | ACPI_NS_DONT_OPEN_SCOPE | - ACPI_NS_ERROR_IF_FOUND; + ACPI_NS_ERROR_IF_FOUND; /* * Mark node(s) temporary if we are executing a normal control @@ -725,8 +721,8 @@ AcpiDsInitFieldObjects ( if (Arg->Common.AmlOpcode == AML_INT_NAMEDFIELD_OP) { Status = AcpiNsLookup (WalkState->ScopeInfo, - (char *) &Arg->Named.Name, Type, ACPI_IMODE_LOAD_PASS1, - Flags, WalkState, &Node); + (char *) &Arg->Named.Name, Type, ACPI_IMODE_LOAD_PASS1, + Flags, WalkState, &Node); if (ACPI_FAILURE (Status)) { ACPI_ERROR_NAMESPACE ((char *) &Arg->Named.Name, Status); @@ -786,8 +782,8 @@ AcpiDsCreateBankField ( if (!RegionNode) { Status = AcpiNsLookup (WalkState->ScopeInfo, Arg->Common.Value.Name, - ACPI_TYPE_REGION, ACPI_IMODE_EXECUTE, - ACPI_NS_SEARCH_PARENT, WalkState, &RegionNode); + ACPI_TYPE_REGION, ACPI_IMODE_EXECUTE, + ACPI_NS_SEARCH_PARENT, WalkState, &RegionNode); #ifdef ACPI_ASL_COMPILER Status = AcpiDsCreateExternalRegion (Status, Arg, Arg->Common.Value.Name, WalkState, &RegionNode); @@ -803,8 +799,8 @@ AcpiDsCreateBankField ( Arg = Arg->Common.Next; Status = AcpiNsLookup (WalkState->ScopeInfo, Arg->Common.Value.String, - ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE, - ACPI_NS_SEARCH_PARENT, WalkState, &Info.RegisterNode); + ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE, + ACPI_NS_SEARCH_PARENT, WalkState, &Info.RegisterNode); if (ACPI_FAILURE (Status)) { ACPI_ERROR_NAMESPACE (Arg->Common.Value.String, Status); @@ -830,12 +826,11 @@ AcpiDsCreateBankField ( /* * Use Info.DataRegisterNode to store BankField Op - * It's safe because DataRegisterNode will never be used when create - * bank field \we store AmlStart and AmlLength in the BankField Op for - * late evaluation. Used in AcpiExPrepFieldValue(Info) + * It's safe because DataRegisterNode will never be used when create bank field + * We store AmlStart and AmlLength in the BankField Op for late evaluation + * Used in AcpiExPrepFieldValue(Info) * - * TBD: Or, should we add a field in ACPI_CREATE_FIELD_INFO, like - * "void *ParentOp"? + * TBD: Or, should we add a field in ACPI_CREATE_FIELD_INFO, like "void *ParentOp"? */ Info.DataRegisterNode = (ACPI_NAMESPACE_NODE*) Op; @@ -876,8 +871,8 @@ AcpiDsCreateIndexField ( Arg = Op->Common.Value.Arg; Status = AcpiNsLookup (WalkState->ScopeInfo, Arg->Common.Value.String, - ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE, - ACPI_NS_SEARCH_PARENT, WalkState, &Info.RegisterNode); + ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE, + ACPI_NS_SEARCH_PARENT, WalkState, &Info.RegisterNode); if (ACPI_FAILURE (Status)) { ACPI_ERROR_NAMESPACE (Arg->Common.Value.String, Status); @@ -888,8 +883,8 @@ AcpiDsCreateIndexField ( Arg = Arg->Common.Next; Status = AcpiNsLookup (WalkState->ScopeInfo, Arg->Common.Value.String, - ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE, - ACPI_NS_SEARCH_PARENT, WalkState, &Info.DataRegisterNode); + ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE, + ACPI_NS_SEARCH_PARENT, WalkState, &Info.DataRegisterNode); if (ACPI_FAILURE (Status)) { ACPI_ERROR_NAMESPACE (Arg->Common.Value.String, Status); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsinit.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsinit.c index e153717a03..d24cc016f3 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsinit.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsinit.c @@ -314,7 +314,7 @@ AcpiDsInitializeObjects ( * the namespace reader lock. */ Status = AcpiNsWalkNamespace (ACPI_TYPE_ANY, StartNode, ACPI_UINT32_MAX, - ACPI_NS_WALK_UNLOCK, AcpiDsInitOneObject, NULL, &Info, NULL); + ACPI_NS_WALK_UNLOCK, AcpiDsInitOneObject, NULL, &Info, NULL); if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, "During WalkNamespace")); @@ -331,19 +331,17 @@ AcpiDsInitializeObjects ( if (ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_DSDT)) { - ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INIT, - "\nInitializing Namespace objects:\n")); + ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INIT, "\nInitializing Namespace objects:\n")); } /* Summary of objects initialized */ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INIT, - "Table [%4.4s: %-8.8s] (id %.2X) - %4u Objects with %3u Devices, " + "Table [%4.4s:%8.8s] (id %.2X) - %4u Objects with %3u Devices, " "%3u Regions, %4u Methods (%u/%u/%u Serial/Non/Cvt)\n", - Table->Signature, Table->OemTableId, OwnerId, Info.ObjectCount, - Info.DeviceCount,Info.OpRegionCount, Info.MethodCount, - Info.SerialMethodCount, Info.NonSerialMethodCount, - Info.SerializedMethodCount)); + Table->Signature, Table->OemTableId, OwnerId, Info.ObjectCount, Info.DeviceCount, + Info.OpRegionCount, Info.MethodCount, Info.SerialMethodCount, + Info.NonSerialMethodCount, Info.SerializedMethodCount)); ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "%u Methods, %u Regions\n", Info.MethodCount, Info.OpRegionCount)); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsmethod.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsmethod.c index 0436ee1244..10c354821e 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsmethod.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsmethod.c @@ -199,8 +199,8 @@ AcpiDsAutoSerializeMethod ( return_ACPI_STATUS (AE_NO_MEMORY); } - Status = AcpiDsInitAmlWalk (WalkState, Op, Node, - ObjDesc->Method.AmlStart, ObjDesc->Method.AmlLength, NULL, 0); + Status = AcpiDsInitAmlWalk (WalkState, Op, Node, ObjDesc->Method.AmlStart, + ObjDesc->Method.AmlLength, NULL, 0); if (ACPI_FAILURE (Status)) { AcpiDsDeleteWalkState (WalkState); @@ -323,12 +323,12 @@ AcpiDsMethodError ( * AE_OK, in which case the executing method will not be aborted. */ AmlOffset = (UINT32) ACPI_PTR_DIFF (WalkState->Aml, - WalkState->ParserState.AmlStart); + WalkState->ParserState.AmlStart); Status = AcpiGbl_ExceptionHandler (Status, - WalkState->MethodNode ? - WalkState->MethodNode->Name.Integer : 0, - WalkState->Opcode, AmlOffset, NULL); + WalkState->MethodNode ? + WalkState->MethodNode->Name.Integer : 0, + WalkState->Opcode, AmlOffset, NULL); AcpiExEnterInterpreter (); } @@ -472,12 +472,10 @@ AcpiDsBeginMethodExecution ( */ if (WalkState && (!(ObjDesc->Method.InfoFlags & ACPI_METHOD_IGNORE_SYNC_LEVEL)) && - (WalkState->Thread->CurrentSyncLevel > - ObjDesc->Method.Mutex->Mutex.SyncLevel)) + (WalkState->Thread->CurrentSyncLevel > ObjDesc->Method.Mutex->Mutex.SyncLevel)) { ACPI_ERROR ((AE_INFO, - "Cannot acquire Mutex for method [%4.4s]" - ", current SyncLevel is too large (%u)", + "Cannot acquire Mutex for method [%4.4s], current SyncLevel is too large (%u)", AcpiUtGetNodeName (MethodNode), WalkState->Thread->CurrentSyncLevel)); @@ -490,15 +488,14 @@ AcpiDsBeginMethodExecution ( */ if (!WalkState || !ObjDesc->Method.Mutex->Mutex.ThreadId || - (WalkState->Thread->ThreadId != - ObjDesc->Method.Mutex->Mutex.ThreadId)) + (WalkState->Thread->ThreadId != ObjDesc->Method.Mutex->Mutex.ThreadId)) { /* * Acquire the method mutex. This releases the interpreter if we * block (and reacquires it before it returns) */ - Status = AcpiExSystemWaitMutex ( - ObjDesc->Method.Mutex->Mutex.OsMutex, ACPI_WAIT_FOREVER); + Status = AcpiExSystemWaitMutex (ObjDesc->Method.Mutex->Mutex.OsMutex, + ACPI_WAIT_FOREVER); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -511,22 +508,8 @@ AcpiDsBeginMethodExecution ( ObjDesc->Method.Mutex->Mutex.OriginalSyncLevel = WalkState->Thread->CurrentSyncLevel; - ObjDesc->Method.Mutex->Mutex.ThreadId = - WalkState->Thread->ThreadId; - - /* - * Update the current SyncLevel only if this is not an auto- - * serialized method. In the auto case, we have to ignore - * the sync level for the method mutex (created for the - * auto-serialization) because we have no idea of what the - * sync level should be. Therefore, just ignore it. - */ - if (!(ObjDesc->Method.InfoFlags & - ACPI_METHOD_IGNORE_SYNC_LEVEL)) - { - WalkState->Thread->CurrentSyncLevel = - ObjDesc->Method.SyncLevel; - } + ObjDesc->Method.Mutex->Mutex.ThreadId = WalkState->Thread->ThreadId; + WalkState->Thread->CurrentSyncLevel = ObjDesc->Method.SyncLevel; } else { @@ -604,8 +587,7 @@ AcpiDsCallControlMethod ( ACPI_FUNCTION_TRACE_PTR (DsCallControlMethod, ThisWalkState); - ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, - "Calling method %p, currentstate=%p\n", + ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Calling method %p, currentstate=%p\n", ThisWalkState->PrevOp, ThisWalkState)); /* @@ -625,8 +607,8 @@ AcpiDsCallControlMethod ( /* Init for new method, possibly wait on method mutex */ - Status = AcpiDsBeginMethodExecution ( - MethodNode, ObjDesc, ThisWalkState); + Status = AcpiDsBeginMethodExecution (MethodNode, ObjDesc, + ThisWalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -634,8 +616,8 @@ AcpiDsCallControlMethod ( /* Begin method parse/execution. Create a new walk state */ - NextWalkState = AcpiDsCreateWalkState ( - ObjDesc->Method.OwnerId, NULL, ObjDesc, Thread); + NextWalkState = AcpiDsCreateWalkState (ObjDesc->Method.OwnerId, + NULL, ObjDesc, Thread); if (!NextWalkState) { Status = AE_NO_MEMORY; @@ -664,8 +646,8 @@ AcpiDsCallControlMethod ( Info->Parameters = &ThisWalkState->Operands[0]; Status = AcpiDsInitAmlWalk (NextWalkState, NULL, MethodNode, - ObjDesc->Method.AmlStart, ObjDesc->Method.AmlLength, - Info, ACPI_IMODE_EXECUTE); + ObjDesc->Method.AmlStart, ObjDesc->Method.AmlLength, + Info, ACPI_IMODE_EXECUTE); ACPI_FREE (Info); if (ACPI_FAILURE (Status)) @@ -860,8 +842,7 @@ AcpiDsTerminateControlMethod ( WalkState->Thread->CurrentSyncLevel = MethodDesc->Method.Mutex->Mutex.OriginalSyncLevel; - AcpiOsReleaseMutex ( - MethodDesc->Method.Mutex->Mutex.OsMutex); + AcpiOsReleaseMutex (MethodDesc->Method.Mutex->Mutex.OsMutex); MethodDesc->Method.Mutex->Mutex.ThreadId = 0; } } @@ -891,8 +872,7 @@ AcpiDsTerminateControlMethod ( if (MethodDesc->Method.InfoFlags & ACPI_METHOD_MODIFIED_NAMESPACE) { AcpiNsDeleteNamespaceByOwner (MethodDesc->Method.OwnerId); - MethodDesc->Method.InfoFlags &= - ~ACPI_METHOD_MODIFIED_NAMESPACE; + MethodDesc->Method.InfoFlags &= ~ACPI_METHOD_MODIFIED_NAMESPACE; } } } @@ -940,8 +920,7 @@ AcpiDsTerminateControlMethod ( if (WalkState) { ACPI_INFO ((AE_INFO, - "Marking method %4.4s as Serialized " - "because of AE_ALREADY_EXISTS error", + "Marking method %4.4s as Serialized because of AE_ALREADY_EXISTS error", WalkState->MethodNode->Name.Ascii)); } @@ -956,9 +935,7 @@ AcpiDsTerminateControlMethod ( * marking the method permanently as Serialized when the last * thread exits here. */ - MethodDesc->Method.InfoFlags &= - ~ACPI_METHOD_SERIALIZED_PENDING; - + MethodDesc->Method.InfoFlags &= ~ACPI_METHOD_SERIALIZED_PENDING; MethodDesc->Method.InfoFlags |= (ACPI_METHOD_SERIALIZED | ACPI_METHOD_IGNORE_SYNC_LEVEL); MethodDesc->Method.SyncLevel = 0; @@ -973,7 +950,7 @@ AcpiDsTerminateControlMethod ( } AcpiExStopTraceMethod ((ACPI_NAMESPACE_NODE *) MethodDesc->Method.Node, - MethodDesc, WalkState); + MethodDesc, WalkState); return_VOID; } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsmthdat.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsmthdat.c index 04892a6478..2b7fce243c 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsmthdat.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsmthdat.c @@ -182,9 +182,7 @@ AcpiDsMethodDataInit ( for (i = 0; i < ACPI_METHOD_NUM_ARGS; i++) { - ACPI_MOVE_32_TO_32 (&WalkState->Arguments[i].Name, - NAMEOF_ARG_NTE); - + ACPI_MOVE_32_TO_32 (&WalkState->Arguments[i].Name, NAMEOF_ARG_NTE); WalkState->Arguments[i].Name.Integer |= (i << 24); WalkState->Arguments[i].DescriptorType = ACPI_DESC_TYPE_NAMED; WalkState->Arguments[i].Type = ACPI_TYPE_ANY; @@ -195,8 +193,7 @@ AcpiDsMethodDataInit ( for (i = 0; i < ACPI_METHOD_NUM_LOCALS; i++) { - ACPI_MOVE_32_TO_32 (&WalkState->LocalVariables[i].Name, - NAMEOF_LOCAL_NTE); + ACPI_MOVE_32_TO_32 (&WalkState->LocalVariables[i].Name, NAMEOF_LOCAL_NTE); WalkState->LocalVariables[i].Name.Integer |= (i << 24); WalkState->LocalVariables[i].DescriptorType = ACPI_DESC_TYPE_NAMED; @@ -238,7 +235,7 @@ AcpiDsMethodDataDeleteAll ( if (WalkState->LocalVariables[Index].Object) { ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Deleting Local%u=%p\n", - Index, WalkState->LocalVariables[Index].Object)); + Index, WalkState->LocalVariables[Index].Object)); /* Detach object (if present) and remove a reference */ @@ -253,7 +250,7 @@ AcpiDsMethodDataDeleteAll ( if (WalkState->Arguments[Index].Object) { ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Deleting Arg%u=%p\n", - Index, WalkState->Arguments[Index].Object)); + Index, WalkState->Arguments[Index].Object)); /* Detach object (if present) and remove a reference */ @@ -296,8 +293,7 @@ AcpiDsMethodDataInitArgs ( if (!Params) { - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, - "No parameter list passed to method\n")); + ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "No param list passed to method\n")); return_ACPI_STATUS (AE_OK); } @@ -312,8 +308,8 @@ AcpiDsMethodDataInitArgs ( * Store the argument in the method/walk descriptor. * Do not copy the arg in order to implement call by reference */ - Status = AcpiDsMethodDataSetValue ( - ACPI_REFCLASS_ARG, Index, Params[Index], WalkState); + Status = AcpiDsMethodDataSetValue (ACPI_REFCLASS_ARG, Index, + Params[Index], WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -703,8 +699,7 @@ AcpiDsStoreObjectToLocal ( NewObjDesc = ObjDesc; if (ObjDesc->Common.ReferenceCount > 1) { - Status = AcpiUtCopyIobjectToIobject ( - ObjDesc, &NewObjDesc, WalkState); + Status = AcpiUtCopyIobjectToIobject (ObjDesc, &NewObjDesc, WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -741,16 +736,13 @@ AcpiDsStoreObjectToLocal ( * If we have a valid reference object that came from RefOf(), * do the indirect store */ - if ((ACPI_GET_DESCRIPTOR_TYPE (CurrentObjDesc) == - ACPI_DESC_TYPE_OPERAND) && - (CurrentObjDesc->Common.Type == - ACPI_TYPE_LOCAL_REFERENCE) && - (CurrentObjDesc->Reference.Class == - ACPI_REFCLASS_REFOF)) + if ((ACPI_GET_DESCRIPTOR_TYPE (CurrentObjDesc) == ACPI_DESC_TYPE_OPERAND) && + (CurrentObjDesc->Common.Type == ACPI_TYPE_LOCAL_REFERENCE) && + (CurrentObjDesc->Reference.Class == ACPI_REFCLASS_REFOF)) { ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, - "Arg (%p) is an ObjRef(Node), storing in node %p\n", - NewObjDesc, CurrentObjDesc)); + "Arg (%p) is an ObjRef(Node), storing in node %p\n", + NewObjDesc, CurrentObjDesc)); /* * Store this object to the Node (perform the indirect store) @@ -758,8 +750,8 @@ AcpiDsStoreObjectToLocal ( * specification rules on storing to Locals/Args. */ Status = AcpiExStoreObjectToNode (NewObjDesc, - CurrentObjDesc->Reference.Object, WalkState, - ACPI_NO_IMPLICIT_CONVERSION); + CurrentObjDesc->Reference.Object, WalkState, + ACPI_NO_IMPLICIT_CONVERSION); /* Remove local reference if we copied the object above */ @@ -767,7 +759,6 @@ AcpiDsStoreObjectToLocal ( { AcpiUtRemoveReference (NewObjDesc); } - return_ACPI_STATUS (Status); } } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsobject.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsobject.c index d448aaf632..0eb2f44272 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsobject.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsobject.c @@ -174,10 +174,10 @@ AcpiDsBuildInternalObject ( if (!Op->Common.Node) { Status = AcpiNsLookup (WalkState->ScopeInfo, - Op->Common.Value.String, - ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE, - ACPI_NS_SEARCH_PARENT | ACPI_NS_DONT_OPEN_SCOPE, NULL, - ACPI_CAST_INDIRECT_PTR (ACPI_NAMESPACE_NODE, &(Op->Common.Node))); + Op->Common.Value.String, + ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE, + ACPI_NS_SEARCH_PARENT | ACPI_NS_DONT_OPEN_SCOPE, NULL, + ACPI_CAST_INDIRECT_PTR (ACPI_NAMESPACE_NODE, &(Op->Common.Node))); if (ACPI_FAILURE (Status)) { /* Check if we are resolving a named reference within a package */ @@ -233,8 +233,8 @@ AcpiDsBuildInternalObject ( ObjDesc = ACPI_CAST_PTR (ACPI_OPERAND_OBJECT, Op->Common.Node); Status = AcpiExResolveNodeToValue ( - ACPI_CAST_INDIRECT_PTR (ACPI_NAMESPACE_NODE, &ObjDesc), - WalkState); + ACPI_CAST_INDIRECT_PTR (ACPI_NAMESPACE_NODE, &ObjDesc), + WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -294,14 +294,14 @@ AcpiDsBuildInternalObject ( /* Create and init a new internal ACPI object */ ObjDesc = AcpiUtCreateInternalObject ( - (AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode))->ObjectType); + (AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode))->ObjectType); if (!ObjDesc) { return_ACPI_STATUS (AE_NO_MEMORY); } - Status = AcpiDsInitObjectFromOp ( - WalkState, Op, Op->Common.AmlOpcode, &ObjDesc); + Status = AcpiDsInitObjectFromOp (WalkState, Op, Op->Common.AmlOpcode, + &ObjDesc); if (ACPI_FAILURE (Status)) { AcpiUtRemoveReference (ObjDesc); @@ -408,8 +408,8 @@ AcpiDsBuildInternalBufferObj ( } else { - ObjDesc->Buffer.Pointer = - ACPI_ALLOCATE_ZEROED (ObjDesc->Buffer.Length); + ObjDesc->Buffer.Pointer = ACPI_ALLOCATE_ZEROED ( + ObjDesc->Buffer.Length); if (!ObjDesc->Buffer.Pointer) { AcpiUtDeleteObjectDesc (ObjDesc); @@ -421,7 +421,7 @@ AcpiDsBuildInternalBufferObj ( if (ByteList) { memcpy (ObjDesc->Buffer.Pointer, ByteList->Named.Data, - ByteListLength); + ByteListLength); } } @@ -540,8 +540,8 @@ AcpiDsBuildInternalPackageObj ( * invocation, so we special case it here */ Arg->Common.AmlOpcode = AML_INT_NAMEPATH_OP; - Status = AcpiDsBuildInternalObject ( - WalkState, Arg, &ObjDesc->Package.Elements[i]); + Status = AcpiDsBuildInternalObject (WalkState, Arg, + &ObjDesc->Package.Elements[i]); } else { @@ -553,8 +553,8 @@ AcpiDsBuildInternalPackageObj ( } else { - Status = AcpiDsBuildInternalObject ( - WalkState, Arg, &ObjDesc->Package.Elements[i]); + Status = AcpiDsBuildInternalObject (WalkState, Arg, + &ObjDesc->Package.Elements[i]); } if (*ObjDescPtr) @@ -611,8 +611,7 @@ AcpiDsBuildInternalPackageObj ( } ACPI_INFO ((AE_INFO, - "Actual Package length (%u) is larger than " - "NumElements field (%u), truncated", + "Actual Package length (%u) is larger than NumElements field (%u), truncated", i, ElementCount)); } else if (i < ElementCount) @@ -622,8 +621,7 @@ AcpiDsBuildInternalPackageObj ( * Note: this is not an error, the package is padded out with NULLs. */ ACPI_DEBUG_PRINT ((ACPI_DB_INFO, - "Package List length (%u) smaller than NumElements " - "count (%u), padded with null elements\n", + "Package List length (%u) smaller than NumElements count (%u), padded with null elements\n", i, ElementCount)); } @@ -679,8 +677,8 @@ AcpiDsCreateNode ( /* Build an internal object for the argument(s) */ - Status = AcpiDsBuildInternalObject ( - WalkState, Op->Common.Value.Arg, &ObjDesc); + Status = AcpiDsBuildInternalObject (WalkState, Op->Common.Value.Arg, + &ObjDesc); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -752,9 +750,9 @@ AcpiDsInitObjectFromOp ( /* * Defer evaluation of Buffer TermArg operand */ - ObjDesc->Buffer.Node = ACPI_CAST_PTR ( - ACPI_NAMESPACE_NODE, WalkState->Operands[0]); - ObjDesc->Buffer.AmlStart = Op->Named.Data; + ObjDesc->Buffer.Node = ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, + WalkState->Operands[0]); + ObjDesc->Buffer.AmlStart = Op->Named.Data; ObjDesc->Buffer.AmlLength = Op->Named.Length; break; @@ -762,9 +760,9 @@ AcpiDsInitObjectFromOp ( /* * Defer evaluation of Package TermArg operand */ - ObjDesc->Package.Node = ACPI_CAST_PTR ( - ACPI_NAMESPACE_NODE, WalkState->Operands[0]); - ObjDesc->Package.AmlStart = Op->Named.Data; + ObjDesc->Package.Node = ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, + WalkState->Operands[0]); + ObjDesc->Package.AmlStart = Op->Named.Data; ObjDesc->Package.AmlLength = Op->Named.Length; break; @@ -874,9 +872,9 @@ AcpiDsInitObjectFromOp ( #ifndef ACPI_NO_METHOD_EXECUTION Status = AcpiDsMethodDataGetNode (ACPI_REFCLASS_LOCAL, - ObjDesc->Reference.Value, WalkState, - ACPI_CAST_INDIRECT_PTR (ACPI_NAMESPACE_NODE, - &ObjDesc->Reference.Object)); + ObjDesc->Reference.Value, WalkState, + ACPI_CAST_INDIRECT_PTR (ACPI_NAMESPACE_NODE, + &ObjDesc->Reference.Object)); #endif break; @@ -889,9 +887,9 @@ AcpiDsInitObjectFromOp ( #ifndef ACPI_NO_METHOD_EXECUTION Status = AcpiDsMethodDataGetNode (ACPI_REFCLASS_ARG, - ObjDesc->Reference.Value, WalkState, - ACPI_CAST_INDIRECT_PTR (ACPI_NAMESPACE_NODE, - &ObjDesc->Reference.Object)); + ObjDesc->Reference.Value, WalkState, + ACPI_CAST_INDIRECT_PTR (ACPI_NAMESPACE_NODE, + &ObjDesc->Reference.Object)); #endif break; diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsopcode.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsopcode.c index 45a7e7a9f4..6e2c784816 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsopcode.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsopcode.c @@ -331,8 +331,8 @@ AcpiDsInitBufferField ( * For FieldFlags, use LOCK_RULE = 0 (NO_LOCK), * UPDATE_RULE = 0 (UPDATE_PRESERVE) */ - Status = AcpiExPrepCommonFieldObject ( - ObjDesc, FieldFlags, 0, BitOffset, BitCount); + Status = AcpiExPrepCommonFieldObject (ObjDesc, FieldFlags, 0, + BitOffset, BitCount); if (ACPI_FAILURE (Status)) { goto Cleanup; @@ -429,8 +429,8 @@ AcpiDsEvalBufferFieldOperands ( /* Resolve the operands */ - Status = AcpiExResolveOperands ( - Op->Common.AmlOpcode, ACPI_WALK_OPERANDS, WalkState); + Status = AcpiExResolveOperands (Op->Common.AmlOpcode, + ACPI_WALK_OPERANDS, WalkState); if (ACPI_FAILURE (Status)) { ACPI_ERROR ((AE_INFO, "(%s) bad operand(s), status 0x%X", @@ -446,16 +446,16 @@ AcpiDsEvalBufferFieldOperands ( /* NOTE: Slightly different operands for this opcode */ Status = AcpiDsInitBufferField (Op->Common.AmlOpcode, ObjDesc, - WalkState->Operands[0], WalkState->Operands[1], - WalkState->Operands[2], WalkState->Operands[3]); + WalkState->Operands[0], WalkState->Operands[1], + WalkState->Operands[2], WalkState->Operands[3]); } else { /* All other, CreateXxxField opcodes */ Status = AcpiDsInitBufferField (Op->Common.AmlOpcode, ObjDesc, - WalkState->Operands[0], WalkState->Operands[1], - NULL, WalkState->Operands[2]); + WalkState->Operands[0], WalkState->Operands[1], + NULL, WalkState->Operands[2]); } return_ACPI_STATUS (Status); @@ -515,8 +515,8 @@ AcpiDsEvalRegionOperands ( /* Resolve the length and address operands to numbers */ - Status = AcpiExResolveOperands ( - Op->Common.AmlOpcode, ACPI_WALK_OPERANDS, WalkState); + Status = AcpiExResolveOperands (Op->Common.AmlOpcode, + ACPI_WALK_OPERANDS, WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -544,16 +544,18 @@ AcpiDsEvalRegionOperands ( OperandDesc = WalkState->Operands[WalkState->NumOperands - 2]; ObjDesc->Region.Address = (ACPI_PHYSICAL_ADDRESS) - OperandDesc->Integer.Value; + OperandDesc->Integer.Value; AcpiUtRemoveReference (OperandDesc); ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "RgnObj %p Addr %8.8X%8.8X Len %X\n", - ObjDesc, ACPI_FORMAT_UINT64 (ObjDesc->Region.Address), + ObjDesc, + ACPI_FORMAT_UINT64 (ObjDesc->Region.Address), ObjDesc->Region.Length)); /* Now the address and length are valid for this opregion */ ObjDesc->Region.Flags |= AOPOBJ_DATA_VALID; + return_ACPI_STATUS (Status); } @@ -616,8 +618,8 @@ AcpiDsEvalTableRegionOperands ( * Resolve the Signature string, OemId string, * and OemTableId string operands */ - Status = AcpiExResolveOperands ( - Op->Common.AmlOpcode, ACPI_WALK_OPERANDS, WalkState); + Status = AcpiExResolveOperands (Op->Common.AmlOpcode, + ACPI_WALK_OPERANDS, WalkState); if (ACPI_FAILURE (Status)) { goto Cleanup; @@ -626,9 +628,9 @@ AcpiDsEvalTableRegionOperands ( /* Find the ACPI table */ Status = AcpiTbFindTable ( - Operand[0]->String.Pointer, - Operand[1]->String.Pointer, - Operand[2]->String.Pointer, &TableIndex); + Operand[0]->String.Pointer, + Operand[1]->String.Pointer, + Operand[2]->String.Pointer, &TableIndex); if (ACPI_FAILURE (Status)) { if (Status == AE_NOT_FOUND) @@ -719,8 +721,8 @@ AcpiDsEvalDataObjectOperands ( } Status = AcpiExResolveOperands (WalkState->Opcode, - &(WalkState->Operands [WalkState->NumOperands -1]), - WalkState); + &(WalkState->Operands [WalkState->NumOperands -1]), + WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -748,15 +750,13 @@ AcpiDsEvalDataObjectOperands ( { case AML_BUFFER_OP: - Status = AcpiDsBuildInternalBufferObj ( - WalkState, Op, Length, &ObjDesc); + Status = AcpiDsBuildInternalBufferObj (WalkState, Op, Length, &ObjDesc); break; case AML_PACKAGE_OP: case AML_VAR_PACKAGE_OP: - Status = AcpiDsBuildInternalPackageObj ( - WalkState, Op, Length, &ObjDesc); + Status = AcpiDsBuildInternalPackageObj (WalkState, Op, Length, &ObjDesc); break; default: diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsutils.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsutils.c index 35611d777c..0ba26fab86 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsutils.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsutils.c @@ -212,9 +212,9 @@ AcpiDsDoImplicitReturn ( } ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, - "Result %p will be implicitly returned; Prev=%p\n", - ReturnDesc, - WalkState->ImplicitReturnObj)); + "Result %p will be implicitly returned; Prev=%p\n", + ReturnDesc, + WalkState->ImplicitReturnObj)); /* * Delete any "stale" implicit return value first. However, in @@ -338,8 +338,7 @@ AcpiDsIsResultUsed ( * If we are executing the predicate AND this is the predicate op, * we will use the return value */ - if ((WalkState->ControlState->Common.State == - ACPI_CONTROL_PREDICATE_EXECUTING) && + if ((WalkState->ControlState->Common.State == ACPI_CONTROL_PREDICATE_EXECUTING) && (WalkState->ControlState->Control.PredicateOp == Op)) { goto ResultUsed; @@ -596,8 +595,8 @@ AcpiDsCreateOperand ( /* Get the entire name string from the AML stream */ - Status = AcpiExGetNameString (ACPI_TYPE_ANY, - Arg->Common.Value.Buffer, &NameString, &NameLength); + Status = AcpiExGetNameString (ACPI_TYPE_ANY, Arg->Common.Value.Buffer, + &NameString, &NameLength); if (ACPI_FAILURE (Status)) { @@ -617,11 +616,10 @@ AcpiDsCreateOperand ( */ if ((WalkState->DeferredNode) && (WalkState->DeferredNode->Type == ACPI_TYPE_BUFFER_FIELD) && - (ArgIndex == (UINT32) - ((WalkState->Opcode == AML_CREATE_FIELD_OP) ? 3 : 2))) + (ArgIndex == (UINT32) ((WalkState->Opcode == AML_CREATE_FIELD_OP) ? 3 : 2))) { ObjDesc = ACPI_CAST_PTR ( - ACPI_OPERAND_OBJECT, WalkState->DeferredNode); + ACPI_OPERAND_OBJECT, WalkState->DeferredNode); Status = AE_OK; } else /* All other opcodes */ @@ -634,7 +632,6 @@ AcpiDsCreateOperand ( */ ParentOp = Arg->Common.Parent; OpInfo = AcpiPsGetOpcodeInfo (ParentOp->Common.AmlOpcode); - if ((OpInfo->Flags & AML_NSNODE) && (ParentOp->Common.AmlOpcode != AML_INT_METHODCALL_OP) && (ParentOp->Common.AmlOpcode != AML_REGION_OP) && @@ -652,9 +649,10 @@ AcpiDsCreateOperand ( } Status = AcpiNsLookup (WalkState->ScopeInfo, NameString, - ACPI_TYPE_ANY, InterpreterMode, - ACPI_NS_SEARCH_PARENT | ACPI_NS_DONT_OPEN_SCOPE, WalkState, - ACPI_CAST_INDIRECT_PTR (ACPI_NAMESPACE_NODE, &ObjDesc)); + ACPI_TYPE_ANY, InterpreterMode, + ACPI_NS_SEARCH_PARENT | ACPI_NS_DONT_OPEN_SCOPE, + WalkState, + ACPI_CAST_INDIRECT_PTR (ACPI_NAMESPACE_NODE, &ObjDesc)); /* * The only case where we pass through (ignore) a NOT_FOUND * error is for the CondRefOf opcode. @@ -670,7 +668,7 @@ AcpiDsCreateOperand ( * object to the root */ ObjDesc = ACPI_CAST_PTR ( - ACPI_OPERAND_OBJECT, AcpiGbl_RootNode); + ACPI_OPERAND_OBJECT, AcpiGbl_RootNode); Status = AE_OK; } else if (ParentOp->Common.AmlOpcode == AML_EXTERNAL_OP) @@ -716,8 +714,7 @@ AcpiDsCreateOperand ( { return_ACPI_STATUS (Status); } - - AcpiDbDisplayArgumentObject (ObjDesc, WalkState); + ACPI_DEBUGGER_EXEC (AcpiDbDisplayArgumentObject (ObjDesc, WalkState)); } else { @@ -750,14 +747,13 @@ AcpiDsCreateOperand ( return_ACPI_STATUS (AE_NOT_IMPLEMENTED); } - if ((OpInfo->Flags & AML_HAS_RETVAL) || - (Arg->Common.Flags & ACPI_PARSEOP_IN_STACK)) + if ((OpInfo->Flags & AML_HAS_RETVAL) || (Arg->Common.Flags & ACPI_PARSEOP_IN_STACK)) { ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Argument previously created, already stacked\n")); - AcpiDbDisplayArgumentObject ( - WalkState->Operands [WalkState->NumOperands - 1], WalkState); + ACPI_DEBUGGER_EXEC (AcpiDbDisplayArgumentObject ( + WalkState->Operands [WalkState->NumOperands - 1], WalkState)); /* * Use value that was already previously returned @@ -788,7 +784,7 @@ AcpiDsCreateOperand ( /* Initialize the new object */ Status = AcpiDsInitObjectFromOp ( - WalkState, Arg, Opcode, &ObjDesc); + WalkState, Arg, Opcode, &ObjDesc); if (ACPI_FAILURE (Status)) { AcpiUtDeleteObjectDesc (ObjDesc); @@ -804,7 +800,7 @@ AcpiDsCreateOperand ( return_ACPI_STATUS (Status); } - AcpiDbDisplayArgumentObject (ObjDesc, WalkState); + ACPI_DEBUGGER_EXEC (AcpiDbDisplayArgumentObject (ObjDesc, WalkState)); } return_ACPI_STATUS (AE_OK); @@ -974,8 +970,7 @@ AcpiDsEvaluateNamePath ( AcpiUtRemoveReference (*Operand); - Status = AcpiUtCopyIobjectToIobject ( - *Operand, &NewObjDesc, WalkState); + Status = AcpiUtCopyIobjectToIobject (*Operand, &NewObjDesc, WalkState); if (ACPI_FAILURE (Status)) { goto Exit; diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dswexec.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dswexec.c index 4cdc53dab8..f650cedf64 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dswexec.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dswexec.c @@ -261,13 +261,12 @@ AcpiDsGetPredicateValue ( Cleanup: - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, - "Completed a predicate eval=%X Op=%p\n", + ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Completed a predicate eval=%X Op=%p\n", WalkState->ControlState->Common.Value, WalkState->Op)); - /* Break to debugger to display result */ + /* Break to debugger to display result */ - AcpiDbDisplayResultObject (LocalObjDesc, WalkState); + ACPI_DEBUGGER_EXEC (AcpiDbDisplayResultObject (LocalObjDesc, WalkState)); /* * Delete the predicate result object (we know that @@ -359,12 +358,10 @@ AcpiDsExecBeginOp ( (WalkState->ControlState->Common.State == ACPI_CONTROL_CONDITIONAL_EXECUTING)) { - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, - "Exec predicate Op=%p State=%p\n", - Op, WalkState)); + ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Exec predicate Op=%p State=%p\n", + Op, WalkState)); - WalkState->ControlState->Common.State = - ACPI_CONTROL_PREDICATE_EXECUTING; + WalkState->ControlState->Common.State = ACPI_CONTROL_PREDICATE_EXECUTING; /* Save start of predicate */ @@ -412,8 +409,8 @@ AcpiDsExecBeginOp ( } else { - Status = AcpiDsScopeStackPush ( - Op->Named.Node, Op->Named.Node->Type, WalkState); + Status = AcpiDsScopeStackPush (Op->Named.Node, + Op->Named.Node->Type, WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -472,8 +469,8 @@ AcpiDsExecEndOp ( ACPI_FUNCTION_TRACE_PTR (DsExecEndOp, WalkState); - Op = WalkState->Op; - OpType = WalkState->OpInfo->Type; + Op = WalkState->Op; + OpType = WalkState->OpInfo->Type; OpClass = WalkState->OpInfo->Class; if (OpClass == AML_CLASS_UNKNOWN) @@ -493,11 +490,8 @@ AcpiDsExecEndOp ( /* Call debugger for single step support (DEBUG build only) */ - Status = AcpiDbSingleStep (WalkState, Op, OpClass); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } + ACPI_DEBUGGER_EXEC (Status = AcpiDbSingleStep (WalkState, Op, OpClass)); + ACPI_DEBUGGER_EXEC (if (ACPI_FAILURE (Status)) {return_ACPI_STATUS (Status);}); /* Decode the Opcode Class */ @@ -534,8 +528,8 @@ AcpiDsExecEndOp ( /* Resolve all operands */ Status = AcpiExResolveOperands (WalkState->Opcode, - &(WalkState->Operands [WalkState->NumOperands -1]), - WalkState); + &(WalkState->Operands [WalkState->NumOperands -1]), + WalkState); } if (ACPI_SUCCESS (Status)) @@ -612,8 +606,7 @@ AcpiDsExecEndOp ( ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Method Reference in a Package, Op=%p\n", Op)); - Op->Common.Node = (ACPI_NAMESPACE_NODE *) - Op->Asl.Value.Arg->Asl.Node; + Op->Common.Node = (ACPI_NAMESPACE_NODE *) Op->Asl.Value.Arg->Asl.Node; AcpiUtAddReference (Op->Asl.Value.Arg->Asl.Node->Object); return_ACPI_STATUS (AE_OK); } @@ -695,12 +688,12 @@ AcpiDsExecEndOp ( * Put the Node on the object stack (Contains the ACPI Name * of this object) */ - WalkState->Operands[0] = (void *) - Op->Common.Parent->Common.Node; + WalkState->Operands[0] = (void *) Op->Common.Parent->Common.Node; WalkState->NumOperands = 1; Status = AcpiDsCreateNode (WalkState, - Op->Common.Parent->Common.Node, Op->Common.Parent); + Op->Common.Parent->Common.Node, + Op->Common.Parent); if (ACPI_FAILURE (Status)) { break; @@ -712,7 +705,7 @@ AcpiDsExecEndOp ( case AML_INT_EVAL_SUBTREE_OP: Status = AcpiDsEvalDataObjectOperands (WalkState, Op, - AcpiNsGetAttachedObject (Op->Common.Parent->Common.Node)); + AcpiNsGetAttachedObject (Op->Common.Parent->Common.Node)); break; default: @@ -793,8 +786,7 @@ AcpiDsExecEndOp ( default: ACPI_ERROR ((AE_INFO, - "Unimplemented opcode, class=0x%X " - "type=0x%X Opcode=0x%X Op=%p", + "Unimplemented opcode, class=0x%X type=0x%X Opcode=0x%X Op=%p", OpClass, OpType, Op->Common.AmlOpcode, Op)); Status = AE_NOT_IMPLEMENTED; @@ -829,7 +821,8 @@ Cleanup: { /* Break to debugger to display result */ - AcpiDbDisplayResultObject (WalkState->ResultObj,WalkState); + ACPI_DEBUGGER_EXEC (AcpiDbDisplayResultObject (WalkState->ResultObj, + WalkState)); /* * Delete the result op if and only if: diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dswload.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dswload.c index 765102d781..a9840755de 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dswload.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dswload.c @@ -260,8 +260,7 @@ AcpiDsLoad1BeginOp ( ObjectType = WalkState->OpInfo->ObjectType; ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, - "State=%p Op=%p [%s]\n", WalkState, Op, - AcpiUtGetTypeName (ObjectType))); + "State=%p Op=%p [%s]\n", WalkState, Op, AcpiUtGetTypeName (ObjectType))); switch (WalkState->Opcode) { @@ -272,7 +271,7 @@ AcpiDsLoad1BeginOp ( * Allow search-to-root for single namesegs. */ Status = AcpiNsLookup (WalkState->ScopeInfo, Path, ObjectType, - ACPI_IMODE_EXECUTE, ACPI_NS_SEARCH_PARENT, WalkState, &(Node)); + ACPI_IMODE_EXECUTE, ACPI_NS_SEARCH_PARENT, WalkState, &(Node)); #ifdef ACPI_ASL_COMPILER if (Status == AE_NOT_FOUND) { @@ -283,8 +282,8 @@ AcpiDsLoad1BeginOp ( */ AcpiDmAddOpToExternalList (Op, Path, ACPI_TYPE_DEVICE, 0, 0); Status = AcpiNsLookup (WalkState->ScopeInfo, Path, ObjectType, - ACPI_IMODE_LOAD_PASS1, ACPI_NS_SEARCH_PARENT, - WalkState, &Node); + ACPI_IMODE_LOAD_PASS1, ACPI_NS_SEARCH_PARENT, + WalkState, &Node); } #endif if (ACPI_FAILURE (Status)) @@ -402,20 +401,20 @@ AcpiDsLoad1BeginOp ( { Flags |= ACPI_NS_OVERRIDE_IF_FOUND; ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "[%s] Override allowed\n", - AcpiUtGetTypeName (ObjectType))); + AcpiUtGetTypeName (ObjectType))); } else { Flags |= ACPI_NS_ERROR_IF_FOUND; ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "[%s] Cannot already exist\n", - AcpiUtGetTypeName (ObjectType))); + AcpiUtGetTypeName (ObjectType))); } } else { ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "[%s] Both Find or Create allowed\n", - AcpiUtGetTypeName (ObjectType))); + AcpiUtGetTypeName (ObjectType))); } /* @@ -425,7 +424,7 @@ AcpiDsLoad1BeginOp ( * parse tree later. */ Status = AcpiNsLookup (WalkState->ScopeInfo, Path, ObjectType, - ACPI_IMODE_LOAD_PASS1, Flags, WalkState, &Node); + ACPI_IMODE_LOAD_PASS1, Flags, WalkState, &Node); if (ACPI_FAILURE (Status)) { if (Status == AE_ALREADY_EXISTS) @@ -445,8 +444,7 @@ AcpiDsLoad1BeginOp ( if (AcpiNsOpensScope (ObjectType)) { - Status = AcpiDsScopeStackPush ( - Node, ObjectType, WalkState); + Status = AcpiDsScopeStackPush (Node, ObjectType, WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -568,9 +566,8 @@ AcpiDsLoad1EndOp ( if (Op->Common.AmlOpcode == AML_REGION_OP) { Status = AcpiExCreateRegion (Op->Named.Data, Op->Named.Length, - (ACPI_ADR_SPACE_TYPE) - ((Op->Common.Value.Arg)->Common.Value.Integer), - WalkState); + (ACPI_ADR_SPACE_TYPE) ((Op->Common.Value.Arg)->Common.Value.Integer), + WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -579,7 +576,7 @@ AcpiDsLoad1EndOp ( else if (Op->Common.AmlOpcode == AML_DATA_REGION_OP) { Status = AcpiExCreateRegion (Op->Named.Data, Op->Named.Length, - ACPI_ADR_SPACE_DATA_TABLE, WalkState); + ACPI_ADR_SPACE_DATA_TABLE, WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -631,12 +628,11 @@ AcpiDsLoad1EndOp ( WalkState->Operands[0] = ACPI_CAST_PTR (void, Op->Named.Node); WalkState->NumOperands = 1; - Status = AcpiDsCreateOperands ( - WalkState, Op->Common.Value.Arg); + Status = AcpiDsCreateOperands (WalkState, Op->Common.Value.Arg); if (ACPI_SUCCESS (Status)) { Status = AcpiExCreateMethod (Op->Named.Data, - Op->Named.Length, WalkState); + Op->Named.Length, WalkState); } WalkState->Operands[0] = NULL; diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dswload2.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dswload2.c index 1a01a43a65..d5f9b1c17d 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dswload2.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dswload2.c @@ -231,8 +231,8 @@ AcpiDsLoad2BeginOp ( * for use later. */ Status = AcpiNsLookup (WalkState->ScopeInfo, BufferPtr, ObjectType, - ACPI_IMODE_EXECUTE, ACPI_NS_SEARCH_PARENT, - WalkState, &(Node)); + ACPI_IMODE_EXECUTE, ACPI_NS_SEARCH_PARENT, + WalkState, &(Node)); break; case AML_SCOPE_OP: @@ -257,8 +257,8 @@ AcpiDsLoad2BeginOp ( * for use later. */ Status = AcpiNsLookup (WalkState->ScopeInfo, BufferPtr, ObjectType, - ACPI_IMODE_EXECUTE, ACPI_NS_SEARCH_PARENT, - WalkState, &(Node)); + ACPI_IMODE_EXECUTE, ACPI_NS_SEARCH_PARENT, + WalkState, &(Node)); if (ACPI_FAILURE (Status)) { #ifdef ACPI_ASL_COMPILER @@ -395,7 +395,7 @@ AcpiDsLoad2BeginOp ( /* Add new entry or lookup existing entry */ Status = AcpiNsLookup (WalkState->ScopeInfo, BufferPtr, ObjectType, - ACPI_IMODE_LOAD_PASS2, Flags, WalkState, &Node); + ACPI_IMODE_LOAD_PASS2, Flags, WalkState, &Node); if (ACPI_SUCCESS (Status) && (Flags & ACPI_NS_TEMPORARY)) { @@ -473,7 +473,7 @@ AcpiDsLoad2EndOp ( Op = WalkState->Op; ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Opcode [%s] Op %p State %p\n", - WalkState->OpInfo->Name, Op, WalkState)); + WalkState->OpInfo->Name, Op, WalkState)); /* Check if opcode had an associated namespace object */ @@ -579,8 +579,8 @@ AcpiDsLoad2EndOp ( { case AML_INDEX_FIELD_OP: - Status = AcpiDsCreateIndexField ( - Op, (ACPI_HANDLE) Arg->Common.Node, WalkState); + Status = AcpiDsCreateIndexField (Op, (ACPI_HANDLE) Arg->Common.Node, + WalkState); break; case AML_BANK_FIELD_OP: @@ -665,7 +665,7 @@ AcpiDsLoad2EndOp ( if (Op->Common.AmlOpcode == AML_REGION_OP) { RegionSpace = (ACPI_ADR_SPACE_TYPE) - ((Op->Common.Value.Arg)->Common.Value.Integer); + ((Op->Common.Value.Arg)->Common.Value.Integer); } else { @@ -690,8 +690,8 @@ AcpiDsLoad2EndOp ( * Executing a method: initialize the region and unlock * the interpreter */ - Status = AcpiExCreateRegion (Op->Named.Data, - Op->Named.Length, RegionSpace, WalkState); + Status = AcpiExCreateRegion (Op->Named.Data, Op->Named.Length, + RegionSpace, WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -700,8 +700,8 @@ AcpiDsLoad2EndOp ( AcpiExExitInterpreter (); } - Status = AcpiEvInitializeRegion ( - AcpiNsGetAttachedObject (Node), FALSE); + Status = AcpiEvInitializeRegion (AcpiNsGetAttachedObject (Node), + FALSE); if (WalkState->MethodNode) { AcpiExEnterInterpreter (); @@ -744,14 +744,12 @@ AcpiDsLoad2EndOp ( WalkState->Operands[0] = ACPI_CAST_PTR (void, Op->Named.Node); WalkState->NumOperands = 1; - Status = AcpiDsCreateOperands ( - WalkState, Op->Common.Value.Arg); + Status = AcpiDsCreateOperands (WalkState, Op->Common.Value.Arg); if (ACPI_SUCCESS (Status)) { - Status = AcpiExCreateMethod ( - Op->Named.Data, Op->Named.Length, WalkState); + Status = AcpiExCreateMethod (Op->Named.Data, + Op->Named.Length, WalkState); } - WalkState->Operands[0] = NULL; WalkState->NumOperands = 0; @@ -786,9 +784,9 @@ AcpiDsLoad2EndOp ( * Lookup the method name and save the Node */ Status = AcpiNsLookup (WalkState->ScopeInfo, Arg->Common.Value.String, - ACPI_TYPE_ANY, ACPI_IMODE_LOAD_PASS2, - ACPI_NS_SEARCH_PARENT | ACPI_NS_DONT_OPEN_SCOPE, - WalkState, &(NewNode)); + ACPI_TYPE_ANY, ACPI_IMODE_LOAD_PASS2, + ACPI_NS_SEARCH_PARENT | ACPI_NS_DONT_OPEN_SCOPE, + WalkState, &(NewNode)); if (ACPI_SUCCESS (Status)) { /* diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dswscope.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dswscope.c index 1ce2ed9876..9865dcd9db 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dswscope.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dswscope.c @@ -154,7 +154,6 @@ AcpiDsScopeStackClear ( ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Popped object type (%s)\n", AcpiUtGetTypeName (ScopeInfo->Common.Value))); - AcpiUtDeleteGenericState (ScopeInfo); } } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dswstate.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dswstate.c index faf6a2bc6d..e5ea5085f7 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dswstate.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dswstate.c @@ -371,8 +371,8 @@ AcpiDsResultStackPop ( if (WalkState->Results == NULL) { - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, - "Result stack underflow - State=%p\n", WalkState)); + ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Result stack underflow - State=%p\n", + WalkState)); return (AE_AML_NO_OPERAND); } @@ -779,8 +779,7 @@ AcpiDsInitAmlWalk ( /* Push start scope on scope stack and make it current */ - Status = AcpiDsScopeStackPush ( - MethodNode, ACPI_TYPE_METHOD, WalkState); + Status = AcpiDsScopeStackPush (MethodNode, ACPI_TYPE_METHOD, WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -823,7 +822,7 @@ AcpiDsInitAmlWalk ( /* Push start scope on scope stack and make it current */ Status = AcpiDsScopeStackPush (ParserState->StartNode, - ParserState->StartNode->Type, WalkState); + ParserState->StartNode->Type, WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evevent.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evevent.c index eda09ebb3b..e4473561a5 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evevent.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evevent.c @@ -275,8 +275,8 @@ AcpiEvFixedEventInitialize ( if (AcpiGbl_FixedEventInfo[i].EnableRegisterId != 0xFF) { Status = AcpiWriteBitRegister ( - AcpiGbl_FixedEventInfo[i].EnableRegisterId, - ACPI_DISABLE_EVENT); + AcpiGbl_FixedEventInfo[i].EnableRegisterId, + ACPI_DISABLE_EVENT); if (ACPI_FAILURE (Status)) { return (Status); @@ -379,8 +379,8 @@ AcpiEvFixedEventDispatch ( /* Clear the status bit */ (void) AcpiWriteBitRegister ( - AcpiGbl_FixedEventInfo[Event].StatusRegisterId, - ACPI_CLEAR_STATUS); + AcpiGbl_FixedEventInfo[Event].StatusRegisterId, + ACPI_CLEAR_STATUS); /* * Make sure that a handler exists. If not, report an error @@ -389,8 +389,8 @@ AcpiEvFixedEventDispatch ( if (!AcpiGbl_FixedEventHandlers[Event].Handler) { (void) AcpiWriteBitRegister ( - AcpiGbl_FixedEventInfo[Event].EnableRegisterId, - ACPI_DISABLE_EVENT); + AcpiGbl_FixedEventInfo[Event].EnableRegisterId, + ACPI_DISABLE_EVENT); ACPI_ERROR ((AE_INFO, "No installed handler for fixed event - %s (%u), disabling", @@ -402,7 +402,7 @@ AcpiEvFixedEventDispatch ( /* Invoke the Fixed Event handler */ return ((AcpiGbl_FixedEventHandlers[Event].Handler)( - AcpiGbl_FixedEventHandlers[Event].Context)); + AcpiGbl_FixedEventHandlers[Event].Context)); } #endif /* !ACPI_REDUCED_HARDWARE */ diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evglock.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evglock.c index 8353ffbf11..e1ebf190f0 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evglock.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evglock.c @@ -162,7 +162,7 @@ AcpiEvInitGlobalLockHandler ( /* Attempt installation of the global lock handler */ Status = AcpiInstallFixedEventHandler (ACPI_EVENT_GLOBAL, - AcpiEvGlobalLockHandler, NULL); + AcpiEvGlobalLockHandler, NULL); /* * If the global lock does not exist on this platform, the attempt to @@ -212,10 +212,9 @@ AcpiEvRemoveGlobalLockHandler ( ACPI_FUNCTION_TRACE (EvRemoveGlobalLockHandler); - AcpiGbl_GlobalLockPresent = FALSE; Status = AcpiRemoveFixedEventHandler (ACPI_EVENT_GLOBAL, - AcpiEvGlobalLockHandler); + AcpiEvGlobalLockHandler); AcpiOsDeleteLock (AcpiGbl_GlobalLockPendingLock); return_ACPI_STATUS (Status); @@ -375,8 +374,8 @@ AcpiEvAcquireGlobalLock ( * Wait for handshake with the global lock interrupt handler. * This interface releases the interpreter if we must wait. */ - Status = AcpiExSystemWaitSemaphore ( - AcpiGbl_GlobalLockSemaphore, ACPI_WAIT_FOREVER); + Status = AcpiExSystemWaitSemaphore (AcpiGbl_GlobalLockSemaphore, + ACPI_WAIT_FOREVER); Flags = AcpiOsAcquireLock (AcpiGbl_GlobalLockPendingLock); @@ -434,7 +433,7 @@ AcpiEvReleaseGlobalLock ( if (Pending) { Status = AcpiWriteBitRegister ( - ACPI_BITREG_GLOBAL_LOCK_RELEASE, ACPI_ENABLE_EVENT); + ACPI_BITREG_GLOBAL_LOCK_RELEASE, ACPI_ENABLE_EVENT); } ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Released hardware Global Lock\n")); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evgpe.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evgpe.c index 54316fede1..4dceaa4721 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evgpe.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evgpe.c @@ -176,8 +176,8 @@ AcpiEvUpdateGpeEnableMask ( { ACPI_SET_BIT (GpeRegisterInfo->EnableForRun, (UINT8) RegisterBit); } - GpeRegisterInfo->EnableMask = GpeRegisterInfo->EnableForRun; + return_ACPI_STATUS (AE_OK); } @@ -399,7 +399,7 @@ AcpiEvGetGpeEventInfo ( for (i = 0; i < ACPI_MAX_GPE_BLOCKS; i++) { GpeInfo = AcpiEvLowGetGpeInfo (GpeNumber, - AcpiGbl_GpeFadtBlocks[i]); + AcpiGbl_GpeFadtBlocks[i]); if (GpeInfo) { return (GpeInfo); @@ -660,8 +660,8 @@ AcpiEvAsynchExecuteGpeMethod ( Notify = GpeEventInfo->Dispatch.NotifyList; while (ACPI_SUCCESS (Status) && Notify) { - Status = AcpiEvQueueNotifyRequest ( - Notify->DeviceNode, ACPI_NOTIFY_DEVICE_WAKE); + Status = AcpiEvQueueNotifyRequest (Notify->DeviceNode, + ACPI_NOTIFY_DEVICE_WAKE); Notify = Notify->Next; } @@ -705,7 +705,7 @@ AcpiEvAsynchExecuteGpeMethod ( /* Defer enabling of GPE until all notify handlers are done */ Status = AcpiOsExecute (OSL_NOTIFY_HANDLER, - AcpiEvAsynchEnableGpe, GpeEventInfo); + AcpiEvAsynchEnableGpe, GpeEventInfo); if (ACPI_SUCCESS (Status)) { return_VOID; @@ -850,8 +850,8 @@ AcpiEvGpeDispatch ( { ACPI_EXCEPTION ((AE_INFO, Status, "Unable to clear GPE %02X", GpeNumber)); - (void) AcpiHwLowSetGpe ( - GpeEventInfo, ACPI_GPE_CONDITIONAL_ENABLE); + (void) AcpiHwLowSetGpe (GpeEventInfo, + ACPI_GPE_CONDITIONAL_ENABLE); return_UINT32 (ACPI_INTERRUPT_NOT_HANDLED); } } @@ -888,7 +888,7 @@ AcpiEvGpeDispatch ( * NOTE: Level-triggered GPEs are cleared after the method completes. */ Status = AcpiOsExecute (OSL_GPE_HANDLER, - AcpiEvAsynchExecuteGpeMethod, GpeEventInfo); + AcpiEvAsynchExecuteGpeMethod, GpeEventInfo); if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evgpeblk.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evgpeblk.c index 7a3c15d188..e067457c64 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evgpeblk.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evgpeblk.c @@ -265,7 +265,6 @@ AcpiEvDeleteGpeBlock ( { GpeBlock->Next->Previous = GpeBlock->Previous; } - AcpiOsReleaseLock (AcpiGbl_GpeLock, Flags); } @@ -314,8 +313,8 @@ AcpiEvCreateGpeInfoBlocks ( /* Allocate the GPE register information block */ GpeRegisterInfo = ACPI_ALLOCATE_ZEROED ( - (ACPI_SIZE) GpeBlock->RegisterCount * - sizeof (ACPI_GPE_REGISTER_INFO)); + (ACPI_SIZE) GpeBlock->RegisterCount * + sizeof (ACPI_GPE_REGISTER_INFO)); if (!GpeRegisterInfo) { ACPI_ERROR ((AE_INFO, @@ -328,7 +327,7 @@ AcpiEvCreateGpeInfoBlocks ( * per register. Initialization to zeros is sufficient. */ GpeEventInfo = ACPI_ALLOCATE_ZEROED ((ACPI_SIZE) GpeBlock->GpeCount * - sizeof (ACPI_GPE_EVENT_INFO)); + sizeof (ACPI_GPE_EVENT_INFO)); if (!GpeEventInfo) { ACPI_ERROR ((AE_INFO, @@ -340,7 +339,7 @@ AcpiEvCreateGpeInfoBlocks ( /* Save the new Info arrays in the GPE block */ GpeBlock->RegisterInfo = GpeRegisterInfo; - GpeBlock->EventInfo = GpeEventInfo; + GpeBlock->EventInfo = GpeEventInfo; /* * Initialize the GPE Register and Event structures. A goal of these @@ -349,7 +348,7 @@ AcpiEvCreateGpeInfoBlocks ( * first half, and the enable registers occupy the second half. */ ThisRegister = GpeRegisterInfo; - ThisEvent = GpeEventInfo; + ThisEvent = GpeEventInfo; for (i = 0; i < GpeBlock->RegisterCount; i++) { @@ -507,8 +506,8 @@ AcpiEvCreateGpeBlock ( WalkInfo.ExecuteByOwnerId = FALSE; Status = AcpiNsWalkNamespace (ACPI_TYPE_METHOD, GpeDevice, - ACPI_UINT32_MAX, ACPI_NS_WALK_NO_UNLOCK, - AcpiEvMatchGpeMethod, NULL, &WalkInfo, NULL); + ACPI_UINT32_MAX, ACPI_NS_WALK_NO_UNLOCK, + AcpiEvMatchGpeMethod, NULL, &WalkInfo, NULL); /* Return the new block */ diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evgpeinit.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evgpeinit.c index d8e4ee9b75..bf3c6e5cce 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evgpeinit.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evgpeinit.c @@ -210,10 +210,10 @@ AcpiEvGpeInitialize ( /* Install GPE Block 0 */ Status = AcpiEvCreateGpeBlock (AcpiGbl_FadtGpeDevice, - AcpiGbl_FADT.XGpe0Block.Address, - AcpiGbl_FADT.XGpe0Block.SpaceId, - RegisterCount0, 0, - AcpiGbl_FADT.SciInterrupt, &AcpiGbl_GpeFadtBlocks[0]); + AcpiGbl_FADT.XGpe0Block.Address, + AcpiGbl_FADT.XGpe0Block.SpaceId, + RegisterCount0, 0, + AcpiGbl_FADT.SciInterrupt, &AcpiGbl_GpeFadtBlocks[0]); if (ACPI_FAILURE (Status)) { @@ -250,11 +250,11 @@ AcpiEvGpeInitialize ( /* Install GPE Block 1 */ Status = AcpiEvCreateGpeBlock (AcpiGbl_FadtGpeDevice, - AcpiGbl_FADT.XGpe1Block.Address, - AcpiGbl_FADT.XGpe1Block.SpaceId, - RegisterCount1, - AcpiGbl_FADT.Gpe1Base, - AcpiGbl_FADT.SciInterrupt, &AcpiGbl_GpeFadtBlocks[1]); + AcpiGbl_FADT.XGpe1Block.Address, + AcpiGbl_FADT.XGpe1Block.SpaceId, + RegisterCount1, + AcpiGbl_FADT.Gpe1Base, + AcpiGbl_FADT.SciInterrupt, &AcpiGbl_GpeFadtBlocks[1]); if (ACPI_FAILURE (Status)) { @@ -267,7 +267,7 @@ AcpiEvGpeInitialize ( * space. However, GPE0 always starts at GPE number zero. */ GpeNumberMax = AcpiGbl_FADT.Gpe1Base + - ((RegisterCount1 * ACPI_GPE_REGISTER_WIDTH) - 1); + ((RegisterCount1 * ACPI_GPE_REGISTER_WIDTH) - 1); } } @@ -347,9 +347,9 @@ AcpiEvUpdateGpes ( WalkInfo.GpeDevice = GpeBlock->Node; Status = AcpiNsWalkNamespace (ACPI_TYPE_METHOD, - WalkInfo.GpeDevice, ACPI_UINT32_MAX, - ACPI_NS_WALK_NO_UNLOCK, AcpiEvMatchGpeMethod, - NULL, &WalkInfo, NULL); + WalkInfo.GpeDevice, ACPI_UINT32_MAX, + ACPI_NS_WALK_NO_UNLOCK, AcpiEvMatchGpeMethod, + NULL, &WalkInfo, NULL); if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, @@ -502,7 +502,7 @@ AcpiEvMatchGpeMethod ( } if (ACPI_GPE_DISPATCH_TYPE (GpeEventInfo->Flags) == - ACPI_GPE_DISPATCH_METHOD) + ACPI_GPE_DISPATCH_METHOD) { /* * If there is already a method, ignore this method. But check diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evgpeutil.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evgpeutil.c index aafbac949f..f204bbadc5 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evgpeutil.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evgpeutil.c @@ -310,7 +310,7 @@ AcpiEvGetGpeXruptBlock ( if (InterruptNumber != AcpiGbl_FADT.SciInterrupt) { Status = AcpiOsInstallInterruptHandler (InterruptNumber, - AcpiEvGpeXruptHandler, GpeXrupt); + AcpiEvGpeXruptHandler, GpeXrupt); if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, @@ -360,7 +360,7 @@ AcpiEvDeleteGpeXrupt ( /* Disable this interrupt */ Status = AcpiOsRemoveInterruptHandler ( - GpeXrupt->InterruptNumber, AcpiEvGpeXruptHandler); + GpeXrupt->InterruptNumber, AcpiEvGpeXruptHandler); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -446,7 +446,7 @@ AcpiEvDeleteGpeHandlers ( GpeEventInfo->Flags &= ~ACPI_GPE_DISPATCH_MASK; } else if (ACPI_GPE_DISPATCH_TYPE (GpeEventInfo->Flags) == - ACPI_GPE_DISPATCH_NOTIFY) + ACPI_GPE_DISPATCH_NOTIFY) { /* Delete the implicit notification device list */ @@ -457,7 +457,6 @@ AcpiEvDeleteGpeHandlers ( ACPI_FREE (Notify); Notify = Next; } - GpeEventInfo->Dispatch.NotifyList = NULL; GpeEventInfo->Flags &= ~ACPI_GPE_DISPATCH_MASK; } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evhandler.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evhandler.c index c7f2350e51..d02ea5325f 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evhandler.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evhandler.c @@ -132,7 +132,6 @@ AcpiEvInstallHandler ( void *Context, void **ReturnValue); - /* These are the address spaces that will get default handlers */ UINT8 AcpiGbl_DefaultAddressSpaces[ACPI_NUM_DEFAULT_SPACES] = @@ -195,8 +194,8 @@ AcpiEvInstallRegionHandlers ( for (i = 0; i < ACPI_NUM_DEFAULT_SPACES; i++) { Status = AcpiEvInstallSpaceHandler (AcpiGbl_RootNode, - AcpiGbl_DefaultAddressSpaces[i], - ACPI_DEFAULT_HANDLER, NULL, NULL); + AcpiGbl_DefaultAddressSpaces[i], + ACPI_DEFAULT_HANDLER, NULL, NULL); switch (Status) { case AE_OK: @@ -248,7 +247,7 @@ AcpiEvHasDefaultHandler ( ObjDesc = AcpiNsGetAttachedObject (Node); if (ObjDesc) { - HandlerObj = ObjDesc->CommonNotify.Handler; + HandlerObj = ObjDesc->Device.Handler; /* Walk the linked list of handlers for this object */ @@ -257,7 +256,7 @@ AcpiEvHasDefaultHandler ( if (HandlerObj->AddressSpace.SpaceId == SpaceId) { if (HandlerObj->AddressSpace.HandlerFlags & - ACPI_ADDR_HANDLER_DEFAULT_INSTALLED) + ACPI_ADDR_HANDLER_DEFAULT_INSTALLED) { return (TRUE); } @@ -349,25 +348,33 @@ AcpiEvInstallHandler ( { /* Check if this Device already has a handler for this address space */ - NextHandlerObj = AcpiEvFindRegionHandler ( - HandlerObj->AddressSpace.SpaceId, ObjDesc->CommonNotify.Handler); - if (NextHandlerObj) + NextHandlerObj = ObjDesc->Device.Handler; + while (NextHandlerObj) { /* Found a handler, is it for the same address space? */ - ACPI_DEBUG_PRINT ((ACPI_DB_OPREGION, - "Found handler for region [%s] in device %p(%p) handler %p\n", - AcpiUtGetRegionName (HandlerObj->AddressSpace.SpaceId), - ObjDesc, NextHandlerObj, HandlerObj)); + if (NextHandlerObj->AddressSpace.SpaceId == + HandlerObj->AddressSpace.SpaceId) + { + ACPI_DEBUG_PRINT ((ACPI_DB_OPREGION, + "Found handler for region [%s] in device %p(%p) " + "handler %p\n", + AcpiUtGetRegionName (HandlerObj->AddressSpace.SpaceId), + ObjDesc, NextHandlerObj, HandlerObj)); - /* - * Since the object we found it on was a device, then it means - * that someone has already installed a handler for the branch - * of the namespace from this device on. Just bail out telling - * the walk routine to not traverse this branch. This preserves - * the scoping rule for handlers. - */ - return (AE_CTRL_DEPTH); + /* + * Since the object we found it on was a device, then it + * means that someone has already installed a handler for + * the branch of the namespace from this device on. Just + * bail out telling the walk routine to not traverse this + * branch. This preserves the scoping rule for handlers. + */ + return (AE_CTRL_DEPTH); + } + + /* Walk the linked list of handlers attached to this device */ + + NextHandlerObj = NextHandlerObj->AddressSpace.Next; } /* @@ -400,46 +407,6 @@ AcpiEvInstallHandler ( } -/******************************************************************************* - * - * FUNCTION: AcpiEvFindRegionHandler - * - * PARAMETERS: SpaceId - The address space ID - * HandlerObj - Head of the handler object list - * - * RETURN: Matching handler object. NULL if space ID not matched - * - * DESCRIPTION: Search a handler object list for a match on the address - * space ID. - * - ******************************************************************************/ - -ACPI_OPERAND_OBJECT * -AcpiEvFindRegionHandler ( - ACPI_ADR_SPACE_TYPE SpaceId, - ACPI_OPERAND_OBJECT *HandlerObj) -{ - - /* Walk the handler list for this device */ - - while (HandlerObj) - { - /* Same SpaceId indicates a handler is installed */ - - if (HandlerObj->AddressSpace.SpaceId == SpaceId) - { - return (HandlerObj); - } - - /* Next handler object */ - - HandlerObj = HandlerObj->AddressSpace.Next; - } - - return (NULL); -} - - /******************************************************************************* * * FUNCTION: AcpiEvInstallSpaceHandler @@ -467,17 +434,17 @@ AcpiEvInstallSpaceHandler ( { ACPI_OPERAND_OBJECT *ObjDesc; ACPI_OPERAND_OBJECT *HandlerObj; - ACPI_STATUS Status = AE_OK; + ACPI_STATUS Status; ACPI_OBJECT_TYPE Type; - UINT8 Flags = 0; + UINT8 Flags = 0; ACPI_FUNCTION_TRACE (EvInstallSpaceHandler); /* - * This registration is valid for only the types below and the root. - * The root node is where the default handlers get installed. + * This registration is valid for only the types below and the root. This + * is where the default handlers get placed. */ if ((Node->Type != ACPI_TYPE_DEVICE) && (Node->Type != ACPI_TYPE_PROCESSOR) && @@ -550,39 +517,47 @@ AcpiEvInstallSpaceHandler ( if (ObjDesc) { /* - * The attached device object already exists. Now make sure - * the handler is not already installed. + * The attached device object already exists. Make sure the handler + * is not already installed. */ - HandlerObj = AcpiEvFindRegionHandler (SpaceId, - ObjDesc->CommonNotify.Handler); + HandlerObj = ObjDesc->Device.Handler; - if (HandlerObj) + /* Walk the handler list for this device */ + + while (HandlerObj) { - if (HandlerObj->AddressSpace.Handler == Handler) + /* Same SpaceId indicates a handler already installed */ + + if (HandlerObj->AddressSpace.SpaceId == SpaceId) { - /* - * It is (relatively) OK to attempt to install the SAME - * handler twice. This can easily happen with the - * PCI_Config space. - */ - Status = AE_SAME_HANDLER; + if (HandlerObj->AddressSpace.Handler == Handler) + { + /* + * It is (relatively) OK to attempt to install the SAME + * handler twice. This can easily happen with the + * PCI_Config space. + */ + Status = AE_SAME_HANDLER; + goto UnlockAndExit; + } + else + { + /* A handler is already installed */ + + Status = AE_ALREADY_EXISTS; + } goto UnlockAndExit; } - else - { - /* A handler is already installed */ - Status = AE_ALREADY_EXISTS; - } + /* Walk the linked list of handlers */ - goto UnlockAndExit; + HandlerObj = HandlerObj->AddressSpace.Next; } } else { ACPI_DEBUG_PRINT ((ACPI_DB_OPREGION, - "Creating object on Device %p while installing handler\n", - Node)); + "Creating object on Device %p while installing handler\n", Node)); /* ObjDesc does not exist, create one */ @@ -621,8 +596,7 @@ AcpiEvInstallSpaceHandler ( } ACPI_DEBUG_PRINT ((ACPI_DB_OPREGION, - "Installing address handler for region %s(%X) " - "on Device %4.4s %p(%p)\n", + "Installing address handler for region %s(%X) on Device %4.4s %p(%p)\n", AcpiUtGetRegionName (SpaceId), SpaceId, AcpiUtGetNodeName (Node), Node, ObjDesc)); @@ -647,31 +621,33 @@ AcpiEvInstallSpaceHandler ( HandlerObj->AddressSpace.Node = Node; HandlerObj->AddressSpace.Handler = Handler; HandlerObj->AddressSpace.Context = Context; - HandlerObj->AddressSpace.Setup = Setup; + HandlerObj->AddressSpace.Setup = Setup; /* Install at head of Device.AddressSpace list */ - HandlerObj->AddressSpace.Next = ObjDesc->CommonNotify.Handler; + HandlerObj->AddressSpace.Next = ObjDesc->Device.Handler; /* * The Device object is the first reference on the HandlerObj. * Each region that uses the handler adds a reference. */ - ObjDesc->CommonNotify.Handler = HandlerObj; + ObjDesc->Device.Handler = HandlerObj; /* - * Walk the namespace finding all of the regions this handler will - * manage. + * Walk the namespace finding all of the regions this + * handler will manage. * - * Start at the device and search the branch toward the leaf nodes - * until either the leaf is encountered or a device is detected that - * has an address handler of the same type. + * Start at the device and search the branch toward + * the leaf nodes until either the leaf is encountered or + * a device is detected that has an address handler of the + * same type. * - * In either case, back up and search down the remainder of the branch + * In either case, back up and search down the remainder + * of the branch */ - Status = AcpiNsWalkNamespace (ACPI_TYPE_ANY, Node, - ACPI_UINT32_MAX, ACPI_NS_WALK_UNLOCK, - AcpiEvInstallHandler, NULL, HandlerObj, NULL); + Status = AcpiNsWalkNamespace (ACPI_TYPE_ANY, Node, ACPI_UINT32_MAX, + ACPI_NS_WALK_UNLOCK, AcpiEvInstallHandler, NULL, + HandlerObj, NULL); UnlockAndExit: return_ACPI_STATUS (Status); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evmisc.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evmisc.c index 0d6492fcd6..1735038d4c 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evmisc.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evmisc.c @@ -147,7 +147,6 @@ BOOLEAN AcpiEvIsNotifyObject ( ACPI_NAMESPACE_NODE *Node) { - switch (Node->Type) { case ACPI_TYPE_DEVICE: @@ -256,8 +255,8 @@ AcpiEvQueueNotifyRequest ( AcpiUtGetNodeName (Node), AcpiUtGetTypeName (Node->Type), NotifyValue, AcpiUtGetNotifyName (NotifyValue, ACPI_TYPE_ANY), Node)); - Status = AcpiOsExecute (OSL_NOTIFY_HANDLER, - AcpiEvNotifyDispatch, Info); + Status = AcpiOsExecute (OSL_NOTIFY_HANDLER, AcpiEvNotifyDispatch, + Info); if (ACPI_FAILURE (Status)) { AcpiUtDeleteGenericState (Info); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evregion.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evregion.c index c251b9ba83..24848dbe23 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evregion.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evregion.c @@ -171,7 +171,6 @@ AcpiEvInitializeOpRegions ( /* Run the _REG methods for OpRegions in each default address space */ - AcpiGbl_RegMethodsEnabled = TRUE; for (i = 0; i < ACPI_NUM_DEFAULT_SPACES; i++) { /* @@ -182,11 +181,13 @@ AcpiEvInitializeOpRegions ( if (AcpiEvHasDefaultHandler (AcpiGbl_RootNode, AcpiGbl_DefaultAddressSpaces[i])) { - AcpiEvExecuteRegMethods (AcpiGbl_RootNode, - AcpiGbl_DefaultAddressSpaces[i], ACPI_REG_CONNECT); + Status = AcpiEvExecuteRegMethods (AcpiGbl_RootNode, + AcpiGbl_DefaultAddressSpaces[i]); } } + AcpiGbl_RegMethodsExecuted = TRUE; + (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); return_ACPI_STATUS (Status); } @@ -209,12 +210,6 @@ AcpiEvInitializeOpRegions ( * DESCRIPTION: Dispatch an address space or operation region access to * a previously installed handler. * - * NOTE: During early initialization, we always install the default region - * handlers for Memory, I/O and PCI_Config. This ensures that these operation - * region address spaces are always available as per the ACPI specification. - * This is especially needed in order to support the execution of - * module-level AML code during loading of the ACPI tables. - * ******************************************************************************/ ACPI_STATUS @@ -287,7 +282,7 @@ AcpiEvAddressSpaceDispatch ( AcpiExExitInterpreter (); Status = RegionSetup (RegionObj, ACPI_REGION_ACTIVATE, - Context, &RegionContext); + Context, &RegionContext); /* Re-enter the interpreter */ @@ -369,7 +364,7 @@ AcpiEvAddressSpaceDispatch ( AcpiUtGetRegionName (RegionObj->Region.SpaceId))); if (!(HandlerDesc->AddressSpace.HandlerFlags & - ACPI_ADDR_HANDLER_DEFAULT_INSTALLED)) + ACPI_ADDR_HANDLER_DEFAULT_INSTALLED)) { /* * For handlers other than the default (supplied) handlers, we must @@ -391,13 +386,13 @@ AcpiEvAddressSpaceDispatch ( } if (!(HandlerDesc->AddressSpace.HandlerFlags & - ACPI_ADDR_HANDLER_DEFAULT_INSTALLED)) + ACPI_ADDR_HANDLER_DEFAULT_INSTALLED)) { /* * We just returned from a non-default handler, we must re-enter the * interpreter */ - AcpiExEnterInterpreter (); + AcpiExEnterInterpreter (); } return_ACPI_STATUS (Status); @@ -419,7 +414,7 @@ AcpiEvAddressSpaceDispatch ( ******************************************************************************/ void -AcpiEvDetachRegion ( +AcpiEvDetachRegion( ACPI_OPERAND_OBJECT *RegionObj, BOOLEAN AcpiNsIsLocked) { @@ -598,13 +593,6 @@ AcpiEvAttachRegion ( ACPI_FUNCTION_TRACE (EvAttachRegion); - /* Install the region's handler */ - - if (RegionObj->Region.Handler) - { - return_ACPI_STATUS (AE_ALREADY_EXISTS); - } - ACPI_DEBUG_PRINT ((ACPI_DB_OPREGION, "Adding Region [%4.4s] %p to address handler %p [%s]\n", AcpiUtGetNodeName (RegionObj->Region.Node), @@ -615,6 +603,14 @@ AcpiEvAttachRegion ( RegionObj->Region.Next = HandlerObj->AddressSpace.RegionList; HandlerObj->AddressSpace.RegionList = RegionObj; + + /* Install the region's handler */ + + if (RegionObj->Region.Handler) + { + return_ACPI_STATUS (AE_ALREADY_EXISTS); + } + RegionObj->Region.Handler = HandlerObj; AcpiUtAddReference (HandlerObj); @@ -622,58 +618,6 @@ AcpiEvAttachRegion ( } -/******************************************************************************* - * - * FUNCTION: AcpiEvAssociateRegMethod - * - * PARAMETERS: RegionObj - Region object - * - * RETURN: Status - * - * DESCRIPTION: Find and associate _REG method to a region - * - ******************************************************************************/ - -void -AcpiEvAssociateRegMethod ( - ACPI_OPERAND_OBJECT *RegionObj) -{ - ACPI_NAME *RegNamePtr = (ACPI_NAME *) METHOD_NAME__REG; - ACPI_NAMESPACE_NODE *MethodNode; - ACPI_NAMESPACE_NODE *Node; - ACPI_OPERAND_OBJECT *RegionObj2; - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (EvAssociateRegMethod); - - - RegionObj2 = AcpiNsGetSecondaryObject (RegionObj); - if (!RegionObj2) - { - return_VOID; - } - - Node = RegionObj->Region.Node->Parent; - - /* Find any "_REG" method associated with this region definition */ - - Status = AcpiNsSearchOneScope ( - *RegNamePtr, Node, ACPI_TYPE_METHOD, &MethodNode); - if (ACPI_SUCCESS (Status)) - { - /* - * The _REG method is optional and there can be only one per region - * definition. This will be executed when the handler is attached - * or removed - */ - RegionObj2->Extra.Method_REG = MethodNode; - } - - return_VOID; -} - - /******************************************************************************* * * FUNCTION: AcpiEvExecuteRegMethod @@ -707,19 +651,7 @@ AcpiEvExecuteRegMethod ( return_ACPI_STATUS (AE_NOT_EXIST); } - if (RegionObj2->Extra.Method_REG == NULL || - RegionObj->Region.Handler == NULL || - !AcpiGbl_RegMethodsEnabled) - { - return_ACPI_STATUS (AE_OK); - } - - /* _REG(DISCONNECT) should be paired with _REG(CONNECT) */ - - if ((Function == ACPI_REG_CONNECT && - RegionObj->Common.Flags & AOPOBJ_REG_CONNECTED) || - (Function == ACPI_REG_DISCONNECT && - !(RegionObj->Common.Flags & AOPOBJ_REG_CONNECTED))) + if (RegionObj2->Extra.Method_REG == NULL) { return_ACPI_STATUS (AE_OK); } @@ -771,20 +703,6 @@ AcpiEvExecuteRegMethod ( Status = AcpiNsEvaluate (Info); AcpiUtRemoveReference (Args[1]); - if (ACPI_FAILURE (Status)) - { - goto Cleanup2; - } - - if (Function == ACPI_REG_CONNECT) - { - RegionObj->Common.Flags |= AOPOBJ_REG_CONNECTED; - } - else - { - RegionObj->Common.Flags &= ~AOPOBJ_REG_CONNECTED; - } - Cleanup2: AcpiUtRemoveReference (Args[0]); @@ -800,28 +718,26 @@ Cleanup1: * * PARAMETERS: Node - Namespace node for the device * SpaceId - The address space ID - * Function - Passed to _REG: On (1) or Off (0) * - * RETURN: None + * RETURN: Status * * DESCRIPTION: Run all _REG methods for the input Space ID; * Note: assumes namespace is locked, or system init time. * ******************************************************************************/ -void +ACPI_STATUS AcpiEvExecuteRegMethods ( ACPI_NAMESPACE_NODE *Node, - ACPI_ADR_SPACE_TYPE SpaceId, - UINT32 Function) + ACPI_ADR_SPACE_TYPE SpaceId) { + ACPI_STATUS Status; ACPI_REG_WALK_INFO Info; ACPI_FUNCTION_TRACE (EvExecuteRegMethods); Info.SpaceId = SpaceId; - Info.Function = Function; Info.RegRunCount = 0; ACPI_DEBUG_PRINT_RAW ((ACPI_DB_NAMES, @@ -834,7 +750,7 @@ AcpiEvExecuteRegMethods ( * regions and _REG methods. (i.e. handlers must be installed for all * regions of this Space ID before we can run any _REG methods) */ - (void) AcpiNsWalkNamespace (ACPI_TYPE_ANY, Node, ACPI_UINT32_MAX, + Status = AcpiNsWalkNamespace (ACPI_TYPE_ANY, Node, ACPI_UINT32_MAX, ACPI_NS_WALK_UNLOCK, AcpiEvRegRun, NULL, &Info, NULL); /* Special case for EC: handle "orphan" _REG methods with no region */ @@ -848,7 +764,7 @@ AcpiEvExecuteRegMethods ( " Executed %u _REG methods for SpaceId %s\n", Info.RegRunCount, AcpiUtGetRegionName (Info.SpaceId))); - return_VOID; + return_ACPI_STATUS (Status); } @@ -915,7 +831,7 @@ AcpiEvRegRun ( } Info->RegRunCount++; - Status = AcpiEvExecuteRegMethod (ObjDesc, Info->Function); + Status = AcpiEvExecuteRegMethod (ObjDesc, ACPI_REG_CONNECT); return (Status); } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evrgnini.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evrgnini.c index 448e57e4db..405af2264e 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evrgnini.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evrgnini.c @@ -320,9 +320,9 @@ AcpiEvPciConfigRegionSetup ( /* Install a handler for this PCI root bridge */ Status = AcpiInstallAddressSpaceHandler ( - (ACPI_HANDLE) PciRootNode, - ACPI_ADR_SPACE_PCI_CONFIG, - ACPI_DEFAULT_HANDLER, NULL, NULL); + (ACPI_HANDLE) PciRootNode, + ACPI_ADR_SPACE_PCI_CONFIG, + ACPI_DEFAULT_HANDLER, NULL, NULL); if (ACPI_FAILURE (Status)) { if (Status == AE_SAME_HANDLER) @@ -396,7 +396,7 @@ AcpiEvPciConfigRegionSetup ( * contained in the parent's scope. */ Status = AcpiUtEvaluateNumericObject (METHOD_NAME__ADR, - PciDeviceNode, &PciValue); + PciDeviceNode, &PciValue); /* * The default is zero, and since the allocation above zeroed the data, @@ -411,7 +411,7 @@ AcpiEvPciConfigRegionSetup ( /* The PCI segment number comes from the _SEG method */ Status = AcpiUtEvaluateNumericObject (METHOD_NAME__SEG, - PciRootNode, &PciValue); + PciRootNode, &PciValue); if (ACPI_SUCCESS (Status)) { PciId->Segment = ACPI_LOWORD (PciValue); @@ -420,7 +420,7 @@ AcpiEvPciConfigRegionSetup ( /* The PCI bus number comes from the _BBN method */ Status = AcpiUtEvaluateNumericObject (METHOD_NAME__BBN, - PciRootNode, &PciValue); + PciRootNode, &PciValue); if (ACPI_SUCCESS (Status)) { PciId->Bus = ACPI_LOWORD (PciValue); @@ -639,6 +639,9 @@ AcpiEvInitializeRegion ( ACPI_ADR_SPACE_TYPE SpaceId; ACPI_NAMESPACE_NODE *Node; ACPI_STATUS Status; + ACPI_NAMESPACE_NODE *MethodNode; + ACPI_NAME *RegNamePtr = (ACPI_NAME *) METHOD_NAME__REG; + ACPI_OPERAND_OBJECT *RegionObj2; ACPI_FUNCTION_TRACE_U32 (EvInitializeRegion, AcpiNsLocked); @@ -654,15 +657,39 @@ AcpiEvInitializeRegion ( return_ACPI_STATUS (AE_OK); } - AcpiEvAssociateRegMethod (RegionObj); - RegionObj->Common.Flags |= AOPOBJ_OBJECT_INITIALIZED; + RegionObj2 = AcpiNsGetSecondaryObject (RegionObj); + if (!RegionObj2) + { + return_ACPI_STATUS (AE_NOT_EXIST); + } Node = RegionObj->Region.Node->Parent; SpaceId = RegionObj->Region.SpaceId; + /* Setup defaults */ + + RegionObj->Region.Handler = NULL; + RegionObj2->Extra.Method_REG = NULL; + RegionObj->Common.Flags &= ~(AOPOBJ_SETUP_COMPLETE); + RegionObj->Common.Flags |= AOPOBJ_OBJECT_INITIALIZED; + + /* Find any "_REG" method associated with this region definition */ + + Status = AcpiNsSearchOneScope ( + *RegNamePtr, Node, ACPI_TYPE_METHOD, &MethodNode); + if (ACPI_SUCCESS (Status)) + { + /* + * The _REG method is optional and there can be only one per region + * definition. This will be executed when the handler is attached + * or removed + */ + RegionObj2->Extra.Method_REG = MethodNode; + } + /* * The following loop depends upon the root Node having no parent - * ie: AcpiGbl_RootNode->Parent being set to NULL + * ie: AcpiGbl_RootNode->ParentEntry being set to NULL */ while (Node) { @@ -677,10 +704,18 @@ AcpiEvInitializeRegion ( switch (Node->Type) { case ACPI_TYPE_DEVICE: + + HandlerObj = ObjDesc->Device.Handler; + break; + case ACPI_TYPE_PROCESSOR: + + HandlerObj = ObjDesc->Processor.Handler; + break; + case ACPI_TYPE_THERMAL: - HandlerObj = ObjDesc->CommonNotify.Handler; + HandlerObj = ObjDesc->ThermalZone.Handler; break; case ACPI_TYPE_METHOD: @@ -704,43 +739,51 @@ AcpiEvInitializeRegion ( break; } - HandlerObj = AcpiEvFindRegionHandler (SpaceId, HandlerObj); - if (HandlerObj) + while (HandlerObj) { - /* Found correct handler */ + /* Is this handler of the correct type? */ - ACPI_DEBUG_PRINT ((ACPI_DB_OPREGION, - "Found handler %p for region %p in obj %p\n", - HandlerObj, RegionObj, ObjDesc)); - - Status = AcpiEvAttachRegion (HandlerObj, RegionObj, - AcpiNsLocked); - - /* - * Tell all users that this region is usable by - * running the _REG method - */ - if (AcpiNsLocked) + if (HandlerObj->AddressSpace.SpaceId == SpaceId) { - Status = AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); - if (ACPI_FAILURE (Status)) + /* Found correct handler */ + + ACPI_DEBUG_PRINT ((ACPI_DB_OPREGION, + "Found handler %p for region %p in obj %p\n", + HandlerObj, RegionObj, ObjDesc)); + + Status = AcpiEvAttachRegion (HandlerObj, RegionObj, + AcpiNsLocked); + + /* + * Tell all users that this region is usable by + * running the _REG method + */ + if (AcpiNsLocked) { - return_ACPI_STATUS (Status); + Status = AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } } + + Status = AcpiEvExecuteRegMethod (RegionObj, ACPI_REG_CONNECT); + + if (AcpiNsLocked) + { + Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } + } + + return_ACPI_STATUS (AE_OK); } - Status = AcpiEvExecuteRegMethod (RegionObj, ACPI_REG_CONNECT); + /* Try next handler in the list */ - if (AcpiNsLocked) - { - Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - } - - return_ACPI_STATUS (AE_OK); + HandlerObj = HandlerObj->AddressSpace.Next; } } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evsci.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evsci.c index f021ab899a..987b03c19d 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evsci.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evsci.c @@ -291,7 +291,7 @@ AcpiEvInstallSciHandler ( Status = AcpiOsInstallInterruptHandler ((UINT32) AcpiGbl_FADT.SciInterrupt, - AcpiEvSciXruptHandler, AcpiGbl_GpeXruptListHead); + AcpiEvSciXruptHandler, AcpiGbl_GpeXruptListHead); return_ACPI_STATUS (Status); } @@ -330,7 +330,7 @@ AcpiEvRemoveAllSciHandlers ( /* Just let the OS remove the handler and disable the level */ Status = AcpiOsRemoveInterruptHandler ((UINT32) AcpiGbl_FADT.SciInterrupt, - AcpiEvSciXruptHandler); + AcpiEvSciXruptHandler); if (!AcpiGbl_SciHandlerList) { diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evxface.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evxface.c index 5469a22d07..5e3391de8f 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evxface.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evxface.c @@ -1074,8 +1074,8 @@ AcpiInstallGpeHandler ( ACPI_FUNCTION_TRACE (AcpiInstallGpeHandler); - Status = AcpiEvInstallGpeHandler (GpeDevice, GpeNumber, Type, - FALSE, Address, Context); + Status = AcpiEvInstallGpeHandler (GpeDevice, GpeNumber, Type, FALSE, + Address, Context); return_ACPI_STATUS (Status); } @@ -1115,8 +1115,8 @@ AcpiInstallGpeRawHandler ( ACPI_FUNCTION_TRACE (AcpiInstallGpeRawHandler); - Status = AcpiEvInstallGpeHandler (GpeDevice, GpeNumber, Type, - TRUE, Address, Context); + Status = AcpiEvInstallGpeHandler (GpeDevice, GpeNumber, Type, TRUE, + Address, Context); return_ACPI_STATUS (Status); } @@ -1282,7 +1282,7 @@ AcpiAcquireGlobalLock ( AcpiExEnterInterpreter (); Status = AcpiExAcquireMutexObject (Timeout, - AcpiGbl_GlobalLockMutex, AcpiOsGetThreadId ()); + AcpiGbl_GlobalLockMutex, AcpiOsGetThreadId ()); if (ACPI_SUCCESS (Status)) { diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evxfevnt.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evxfevnt.c index b4fd27ee94..271aaccc88 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evxfevnt.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evxfevnt.c @@ -148,7 +148,7 @@ AcpiEnable ( /* ACPI tables must be present */ - if (AcpiGbl_FadtIndex == ACPI_INVALID_TABLE_INDEX) + if (!AcpiTbTablesLoaded ()) { return_ACPI_STATUS (AE_NO_ACPI_TABLES); } @@ -164,8 +164,7 @@ AcpiEnable ( if (AcpiHwGetMode() == ACPI_SYS_MODE_ACPI) { - ACPI_DEBUG_PRINT ((ACPI_DB_INIT, - "System is already in ACPI mode\n")); + ACPI_DEBUG_PRINT ((ACPI_DB_INIT, "System is already in ACPI mode\n")); } else { @@ -235,8 +234,7 @@ AcpiDisable ( return_ACPI_STATUS (Status); } - ACPI_DEBUG_PRINT ((ACPI_DB_INIT, - "ACPI mode disabled\n")); + ACPI_DEBUG_PRINT ((ACPI_DB_INIT, "ACPI mode disabled\n")); } return_ACPI_STATUS (Status); @@ -282,8 +280,8 @@ AcpiEnableEvent ( * register bit) */ Status = AcpiWriteBitRegister ( - AcpiGbl_FixedEventInfo[Event].EnableRegisterId, - ACPI_ENABLE_EVENT); + AcpiGbl_FixedEventInfo[Event].EnableRegisterId, + ACPI_ENABLE_EVENT); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -292,7 +290,7 @@ AcpiEnableEvent ( /* Make sure that the hardware responded */ Status = AcpiReadBitRegister ( - AcpiGbl_FixedEventInfo[Event].EnableRegisterId, &Value); + AcpiGbl_FixedEventInfo[Event].EnableRegisterId, &Value); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -348,15 +346,15 @@ AcpiDisableEvent ( * register bit) */ Status = AcpiWriteBitRegister ( - AcpiGbl_FixedEventInfo[Event].EnableRegisterId, - ACPI_DISABLE_EVENT); + AcpiGbl_FixedEventInfo[Event].EnableRegisterId, + ACPI_DISABLE_EVENT); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } Status = AcpiReadBitRegister ( - AcpiGbl_FixedEventInfo[Event].EnableRegisterId, &Value); + AcpiGbl_FixedEventInfo[Event].EnableRegisterId, &Value); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -409,8 +407,8 @@ AcpiClearEvent ( * register bit) */ Status = AcpiWriteBitRegister ( - AcpiGbl_FixedEventInfo[Event].StatusRegisterId, - ACPI_CLEAR_STATUS); + AcpiGbl_FixedEventInfo[Event].StatusRegisterId, + ACPI_CLEAR_STATUS); return_ACPI_STATUS (Status); } @@ -467,7 +465,7 @@ AcpiGetEventStatus ( /* Fixed event currently enabled? */ Status = AcpiReadBitRegister ( - AcpiGbl_FixedEventInfo[Event].EnableRegisterId, &InByte); + AcpiGbl_FixedEventInfo[Event].EnableRegisterId, &InByte); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -482,7 +480,7 @@ AcpiGetEventStatus ( /* Fixed event currently active? */ Status = AcpiReadBitRegister ( - AcpiGbl_FixedEventInfo[Event].StatusRegisterId, &InByte); + AcpiGbl_FixedEventInfo[Event].StatusRegisterId, &InByte); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evxfgpe.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evxfgpe.c index f55261fd22..f4f0da1379 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evxfgpe.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evxfgpe.c @@ -512,7 +512,7 @@ AcpiSetupGpeForWake ( * level-triggered (for windows compatibility). */ if (ACPI_GPE_DISPATCH_TYPE (GpeEventInfo->Flags) == - ACPI_GPE_DISPATCH_NONE) + ACPI_GPE_DISPATCH_NONE) { /* * This is the first device for implicit notify on this GPE. @@ -527,7 +527,7 @@ AcpiSetupGpeForWake ( * this device to the notify list. */ if (ACPI_GPE_DISPATCH_TYPE (GpeEventInfo->Flags) == - ACPI_GPE_DISPATCH_NOTIFY) + ACPI_GPE_DISPATCH_NOTIFY) { /* Ensure that the device is not already in the list */ @@ -992,8 +992,8 @@ AcpiInstallGpeBlock ( * is always zero */ Status = AcpiEvCreateGpeBlock (Node, GpeBlockAddress->Address, - GpeBlockAddress->SpaceId, RegisterCount, - 0, InterruptNumber, &GpeBlock); + GpeBlockAddress->SpaceId, RegisterCount, + 0, InterruptNumber, &GpeBlock); if (ACPI_FAILURE (Status)) { goto UnlockAndExit; diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evxfregn.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evxfregn.c index 6617321453..e220676480 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evxfregn.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evxfregn.c @@ -186,16 +186,48 @@ AcpiInstallAddressSpaceHandler ( /* Install the handler for all Regions for this Space ID */ - Status = AcpiEvInstallSpaceHandler ( - Node, SpaceId, Handler, Setup, Context); + Status = AcpiEvInstallSpaceHandler (Node, SpaceId, Handler, Setup, Context); if (ACPI_FAILURE (Status)) { goto UnlockAndExit; } + /* + * For the default SpaceIDs, (the IDs for which there are default region handlers + * installed) Only execute the _REG methods if the global initialization _REG + * methods have already been run (via AcpiInitializeObjects). In other words, + * we will defer the execution of the _REG methods for these SpaceIDs until + * execution of AcpiInitializeObjects. This is done because we need the handlers + * for the default spaces (mem/io/pci/table) to be installed before we can run + * any control methods (or _REG methods). There is known BIOS code that depends + * on this. + * + * For all other SpaceIDs, we can safely execute the _REG methods immediately. + * This means that for IDs like EmbeddedController, this function should be called + * only after AcpiEnableSubsystem has been called. + */ + switch (SpaceId) + { + case ACPI_ADR_SPACE_SYSTEM_MEMORY: + case ACPI_ADR_SPACE_SYSTEM_IO: + case ACPI_ADR_SPACE_PCI_CONFIG: + case ACPI_ADR_SPACE_DATA_TABLE: + + if (!AcpiGbl_RegMethodsExecuted) + { + /* We will defer execution of the _REG methods for this space */ + goto UnlockAndExit; + } + break; + + default: + + break; + } + /* Run all _REG methods for this address space */ - AcpiEvExecuteRegMethods (Node, SpaceId, ACPI_REG_CONNECT); + Status = AcpiEvExecuteRegMethods (Node, SpaceId); UnlockAndExit: @@ -274,8 +306,8 @@ AcpiRemoveAddressSpaceHandler ( /* Find the address handler the user requested */ - HandlerObj = ObjDesc->CommonNotify.Handler; - LastObjPtr = &ObjDesc->CommonNotify.Handler; + HandlerObj = ObjDesc->Device.Handler; + LastObjPtr = &ObjDesc->Device.Handler; while (HandlerObj) { /* We have a handler, see if user requested this one */ diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exconfig.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exconfig.c index 06aca942ad..d4f70875ab 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exconfig.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exconfig.c @@ -254,9 +254,9 @@ AcpiExLoadTableOp ( /* Find the ACPI table in the RSDT/XSDT */ Status = AcpiTbFindTable ( - Operand[0]->String.Pointer, - Operand[1]->String.Pointer, - Operand[2]->String.Pointer, &TableIndex); + Operand[0]->String.Pointer, + Operand[1]->String.Pointer, + Operand[2]->String.Pointer, &TableIndex); if (ACPI_FAILURE (Status)) { if (Status != AE_NOT_FOUND) @@ -290,7 +290,7 @@ AcpiExLoadTableOp ( * location within the namespace where the table will be loaded. */ Status = AcpiNsGetNode (StartNode, Operand[3]->String.Pointer, - ACPI_NS_SEARCH_PARENT, &ParentNode); + ACPI_NS_SEARCH_PARENT, &ParentNode); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -314,7 +314,7 @@ AcpiExLoadTableOp ( /* Find the node referenced by the ParameterPathString */ Status = AcpiNsGetNode (StartNode, Operand[4]->String.Pointer, - ACPI_NS_SEARCH_PARENT, &ParameterNode); + ACPI_NS_SEARCH_PARENT, &ParameterNode); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -336,7 +336,8 @@ AcpiExLoadTableOp ( /* Store the parameter data into the optional parameter object */ Status = AcpiExStore (Operand[5], - ACPI_CAST_PTR (ACPI_OPERAND_OBJECT, ParameterNode), WalkState); + ACPI_CAST_PTR (ACPI_OPERAND_OBJECT, ParameterNode), + WalkState); if (ACPI_FAILURE (Status)) { (void) AcpiExUnloadTable (DdbHandle); @@ -358,7 +359,7 @@ AcpiExLoadTableOp ( if (AcpiGbl_TableHandler) { (void) AcpiGbl_TableHandler (ACPI_TABLE_EVENT_LOAD, Table, - AcpiGbl_TableHandlerContext); + AcpiGbl_TableHandlerContext); } *ReturnDesc = DdbHandle; @@ -398,7 +399,7 @@ AcpiExRegionRead ( for (i = 0; i < Length; i++) { Status = AcpiEvAddressSpaceDispatch (ObjDesc, NULL, ACPI_READ, - RegionOffset, 8, &Value); + RegionOffset, 8, &Value); if (ACPI_FAILURE (Status)) { return (Status); @@ -468,8 +469,8 @@ AcpiExLoadOp ( } /* - * If the Region Address and Length have not been previously - * evaluated, evaluate them now and save the results. + * If the Region Address and Length have not been previously evaluated, + * evaluate them now and save the results. */ if (!(ObjDesc->Common.Flags & AOPOBJ_DATA_VALID)) { @@ -489,7 +490,7 @@ AcpiExLoadOp ( } Status = AcpiExRegionRead (ObjDesc, sizeof (ACPI_TABLE_HEADER), - ACPI_CAST_PTR (UINT8, TableHeader)); + ACPI_CAST_PTR (UINT8, TableHeader)); Length = TableHeader->Length; ACPI_FREE (TableHeader); @@ -532,7 +533,7 @@ AcpiExLoadOp ( /* Read the entire table */ Status = AcpiExRegionRead (ObjDesc, Length, - ACPI_CAST_PTR (UINT8, Table)); + ACPI_CAST_PTR (UINT8, Table)); if (ACPI_FAILURE (Status)) { ACPI_FREE (Table); @@ -554,8 +555,7 @@ AcpiExLoadOp ( /* Get the actual table length from the table header */ - TableHeader = ACPI_CAST_PTR ( - ACPI_TABLE_HEADER, ObjDesc->Buffer.Pointer); + TableHeader = ACPI_CAST_PTR (ACPI_TABLE_HEADER, ObjDesc->Buffer.Pointer); Length = TableHeader->Length; /* Table cannot extend beyond the buffer */ @@ -570,8 +570,8 @@ AcpiExLoadOp ( } /* - * Copy the table from the buffer because the buffer could be - * modified or even deleted in the future + * Copy the table from the buffer because the buffer could be modified + * or even deleted in the future */ Table = ACPI_ALLOCATE (Length); if (!Table) @@ -593,8 +593,8 @@ AcpiExLoadOp ( (void) AcpiUtAcquireMutex (ACPI_MTX_TABLES); Status = AcpiTbInstallStandardTable (ACPI_PTR_TO_PHYSADDR (Table), - ACPI_TABLE_ORIGIN_INTERNAL_VIRTUAL, TRUE, TRUE, - &TableIndex); + ACPI_TABLE_ORIGIN_INTERNAL_VIRTUAL, TRUE, TRUE, + &TableIndex); (void) AcpiUtReleaseMutex (ACPI_MTX_TABLES); if (ACPI_FAILURE (Status)) @@ -609,8 +609,7 @@ AcpiExLoadOp ( * Note: Now table is "INSTALLED", it must be validated before * loading. */ - Status = AcpiTbValidateTable ( - &AcpiGbl_RootTableList.Tables[TableIndex]); + Status = AcpiTbValidateTable (&AcpiGbl_RootTableList.Tables[TableIndex]); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -653,7 +652,7 @@ AcpiExLoadOp ( if (AcpiGbl_TableHandler) { (void) AcpiGbl_TableHandler (ACPI_TABLE_EVENT_LOAD, Table, - AcpiGbl_TableHandlerContext); + AcpiGbl_TableHandlerContext); } return_ACPI_STATUS (Status); @@ -730,7 +729,7 @@ AcpiExUnloadTable ( if (ACPI_SUCCESS (Status)) { (void) AcpiGbl_TableHandler (ACPI_TABLE_EVENT_UNLOAD, Table, - AcpiGbl_TableHandlerContext); + AcpiGbl_TableHandlerContext); } } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exconvrt.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exconvrt.c index dc5fd9f634..00236682dc 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exconvrt.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exconvrt.c @@ -323,7 +323,9 @@ AcpiExConvertToBuffer ( /* Copy the integer to the buffer, LSB first */ NewBuf = ReturnDesc->Buffer.Pointer; - memcpy (NewBuf, &ObjDesc->Integer.Value, AcpiGbl_IntegerByteWidth); + memcpy (NewBuf, + &ObjDesc->Integer.Value, + AcpiGbl_IntegerByteWidth); break; case ACPI_TYPE_STRING: @@ -336,8 +338,8 @@ AcpiExConvertToBuffer ( * ASL/AML code that depends on the null being transferred to the new * buffer. */ - ReturnDesc = AcpiUtCreateBufferObject ((ACPI_SIZE) - ObjDesc->String.Length + 1); + ReturnDesc = AcpiUtCreateBufferObject ( + (ACPI_SIZE) ObjDesc->String.Length + 1); if (!ReturnDesc) { return_ACPI_STATUS (AE_NO_MEMORY); @@ -460,8 +462,7 @@ AcpiExConvertToAscii ( { /* Get one hex digit, most significant digits first */ - String[k] = (UINT8) - AcpiUtHexToAsciiChar (Integer, ACPI_MUL_4 (j)); + String[k] = (UINT8) AcpiUtHexToAsciiChar (Integer, ACPI_MUL_4 (j)); k++; } break; @@ -562,8 +563,8 @@ AcpiExConvertToString ( /* Convert integer to string */ - StringLength = AcpiExConvertToAscii ( - ObjDesc->Integer.Value, Base, NewBuf, AcpiGbl_IntegerByteWidth); + StringLength = AcpiExConvertToAscii (ObjDesc->Integer.Value, Base, + NewBuf, AcpiGbl_IntegerByteWidth); /* Null terminate at the correct place */ @@ -652,7 +653,8 @@ AcpiExConvertToString ( for (i = 0; i < ObjDesc->Buffer.Length; i++) { NewBuf += AcpiExConvertToAscii ( - (UINT64) ObjDesc->Buffer.Pointer[i], Base, NewBuf, 1); + (UINT64) ObjDesc->Buffer.Pointer[i], Base, + NewBuf, 1); *NewBuf++ = Separator; /* each separated by a comma or space */ } @@ -743,7 +745,6 @@ AcpiExConvertToTargetType ( break; case ARGI_TARGETREF: - case ARGI_STORE_TARGET: switch (DestinationType) { @@ -755,7 +756,8 @@ AcpiExConvertToTargetType ( * These types require an Integer operand. We can convert * a Buffer or a String to an Integer if necessary. */ - Status = AcpiExConvertToInteger (SourceDesc, ResultDesc, 16); + Status = AcpiExConvertToInteger (SourceDesc, ResultDesc, + 16); break; case ACPI_TYPE_STRING: @@ -764,7 +766,7 @@ AcpiExConvertToTargetType ( * Integer or Buffer if necessary */ Status = AcpiExConvertToString (SourceDesc, ResultDesc, - ACPI_IMPLICIT_CONVERT_HEX); + ACPI_IMPLICIT_CONVERT_HEX); break; case ACPI_TYPE_BUFFER: @@ -777,8 +779,7 @@ AcpiExConvertToTargetType ( default: - ACPI_ERROR ((AE_INFO, - "Bad destination type during conversion: 0x%X", + ACPI_ERROR ((AE_INFO, "Bad destination type during conversion: 0x%X", DestinationType)); Status = AE_AML_INTERNAL; break; diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/excreate.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/excreate.c index f3c2004de2..9c7ffc13b5 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/excreate.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/excreate.c @@ -220,7 +220,7 @@ AcpiExCreateAlias ( * target node or the alias Node */ Status = AcpiNsAttachObject (AliasNode, - AcpiNsGetAttachedObject (TargetNode), TargetNode->Type); + AcpiNsGetAttachedObject (TargetNode), TargetNode->Type); break; } @@ -265,7 +265,7 @@ AcpiExCreateEvent ( * that the event is created in an unsignalled state */ Status = AcpiOsCreateSemaphore (ACPI_NO_UNIT_LIMIT, 0, - &ObjDesc->Event.OsSemaphore); + &ObjDesc->Event.OsSemaphore); if (ACPI_FAILURE (Status)) { goto Cleanup; @@ -273,9 +273,8 @@ AcpiExCreateEvent ( /* Attach object to the Node */ - Status = AcpiNsAttachObject ( - (ACPI_NAMESPACE_NODE *) WalkState->Operands[0], - ObjDesc, ACPI_TYPE_EVENT); + Status = AcpiNsAttachObject ((ACPI_NAMESPACE_NODE *) WalkState->Operands[0], + ObjDesc, ACPI_TYPE_EVENT); Cleanup: /* @@ -334,8 +333,7 @@ AcpiExCreateMutex ( ObjDesc->Mutex.SyncLevel = (UINT8) WalkState->Operands[1]->Integer.Value; ObjDesc->Mutex.Node = (ACPI_NAMESPACE_NODE *) WalkState->Operands[0]; - Status = AcpiNsAttachObject ( - ObjDesc->Mutex.Node, ObjDesc, ACPI_TYPE_MUTEX); + Status = AcpiNsAttachObject (ObjDesc->Mutex.Node, ObjDesc, ACPI_TYPE_MUTEX); Cleanup: @@ -403,8 +401,7 @@ AcpiExCreateRegion ( * a table load for this exception. Instead, if the region is * actually used at runtime, abort the executing method. */ - ACPI_ERROR ((AE_INFO, - "Invalid/unknown Address Space ID: 0x%2.2X", SpaceId)); + ACPI_ERROR ((AE_INFO, "Invalid/unknown Address Space ID: 0x%2.2X", SpaceId)); } ACPI_DEBUG_PRINT ((ACPI_DB_LOAD, "Region Type - %s (0x%X)\n", @@ -423,10 +420,9 @@ AcpiExCreateRegion ( * Remember location in AML stream of address & length * operands since they need to be evaluated at run time. */ - RegionObj2 = AcpiNsGetSecondaryObject (ObjDesc); + RegionObj2 = ObjDesc->Common.NextObject; RegionObj2->Extra.AmlStart = AmlStart; RegionObj2->Extra.AmlLength = AmlLength; - RegionObj2->Extra.Method_REG = NULL; if (WalkState->ScopeInfo) { RegionObj2->Extra.ScopeNode = WalkState->ScopeInfo->Scope.Node; @@ -442,10 +438,6 @@ AcpiExCreateRegion ( ObjDesc->Region.Address = 0; ObjDesc->Region.Length = 0; ObjDesc->Region.Node = Node; - ObjDesc->Region.Handler = NULL; - ObjDesc->Common.Flags &= - ~(AOPOBJ_SETUP_COMPLETE | AOPOBJ_REG_CONNECTED | - AOPOBJ_OBJECT_INITIALIZED); /* Install the new region object in the parent Node */ @@ -504,7 +496,7 @@ AcpiExCreateProcessor ( /* Install the processor object in the parent Node */ Status = AcpiNsAttachObject ((ACPI_NAMESPACE_NODE *) Operand[0], - ObjDesc, ACPI_TYPE_PROCESSOR); + ObjDesc, ACPI_TYPE_PROCESSOR); /* Remove local reference to the object */ @@ -555,7 +547,7 @@ AcpiExCreatePowerResource ( /* Install the power resource object in the parent Node */ Status = AcpiNsAttachObject ((ACPI_NAMESPACE_NODE *) Operand[0], - ObjDesc, ACPI_TYPE_POWER); + ObjDesc, ACPI_TYPE_POWER); /* Remove local reference to the object */ @@ -614,8 +606,7 @@ AcpiExCreateMethod ( * flag, and SyncLevel for efficiency. */ MethodFlags = (UINT8) Operand[1]->Integer.Value; - ObjDesc->Method.ParamCount = (UINT8) - (MethodFlags & AML_METHOD_ARG_COUNT); + ObjDesc->Method.ParamCount = (UINT8) (MethodFlags & AML_METHOD_ARG_COUNT); /* * Get the SyncLevel. If method is serialized, a mutex will be @@ -636,7 +627,7 @@ AcpiExCreateMethod ( /* Attach the new object to the method Node */ Status = AcpiNsAttachObject ((ACPI_NAMESPACE_NODE *) Operand[0], - ObjDesc, ACPI_TYPE_METHOD); + ObjDesc, ACPI_TYPE_METHOD); /* Remove local reference to the object */ diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exdebug.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exdebug.c index 9c2c107eee..00ec43f463 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exdebug.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exdebug.c @@ -115,13 +115,26 @@ #include "acpi.h" #include "accommon.h" +#include "acnamesp.h" #include "acinterp.h" +#include "acparser.h" #define _COMPONENT ACPI_EXECUTER ACPI_MODULE_NAME ("exdebug") +static ACPI_OPERAND_OBJECT *AcpiGbl_TraceMethodObject = NULL; + +/* Local prototypes */ + +#ifdef ACPI_DEBUG_OUTPUT +static const char * +AcpiExGetTraceEventName ( + ACPI_TRACE_EVENT_TYPE Type); +#endif + + #ifndef ACPI_NO_ERROR_MESSAGES /******************************************************************************* * @@ -168,20 +181,13 @@ AcpiExDoDebugObject ( return_VOID; } - /* Null string or newline -- don't emit the line header */ - - if (SourceDesc && - (ACPI_GET_DESCRIPTOR_TYPE (SourceDesc) == ACPI_DESC_TYPE_OPERAND) && - (SourceDesc->Common.Type == ACPI_TYPE_STRING)) - { - if ((SourceDesc->String.Length == 0) || - ((SourceDesc->String.Length == 1) && - (*SourceDesc->String.Pointer == '\n'))) - { - AcpiOsPrintf ("\n"); - return_VOID; - } - } + /* + * We will emit the current timer value (in microseconds) with each + * debug output. Only need the lower 26 bits. This allows for 67 + * million microseconds or 67 seconds before rollover. + */ + Timer = ((UINT32) AcpiOsGetTimer () / 10); /* (100 nanoseconds to microseconds) */ + Timer &= 0x03FFFFFF; /* * Print line header as long as we are not in the middle of an @@ -189,31 +195,14 @@ AcpiExDoDebugObject ( */ if (!((Level > 0) && Index == 0)) { - if (AcpiGbl_DisplayDebugTimer) - { - /* - * We will emit the current timer value (in microseconds) with each - * debug output. Only need the lower 26 bits. This allows for 67 - * million microseconds or 67 seconds before rollover. - * - * Convert 100 nanosecond units to microseconds - */ - Timer = ((UINT32) AcpiOsGetTimer () / 10); - Timer &= 0x03FFFFFF; - - AcpiOsPrintf ("[ACPI Debug T=0x%8.8X] %*s", Timer, Level, " "); - } - else - { - AcpiOsPrintf ("[ACPI Debug] %*s", Level, " "); - } + AcpiOsPrintf ("[ACPI Debug %.8u] %*s", Timer, Level, " "); } /* Display the index for package output only */ if (Index > 0) { - AcpiOsPrintf ("(%.2u) ", Index - 1); + AcpiOsPrintf ("(%.2u) ", Index-1); } if (!SourceDesc) @@ -224,13 +213,7 @@ AcpiExDoDebugObject ( if (ACPI_GET_DESCRIPTOR_TYPE (SourceDesc) == ACPI_DESC_TYPE_OPERAND) { - /* No object type prefix needed for integers and strings */ - - if ((SourceDesc->Common.Type != ACPI_TYPE_INTEGER) && - (SourceDesc->Common.Type != ACPI_TYPE_STRING)) - { - AcpiOsPrintf ("%s ", AcpiUtGetObjectTypeName (SourceDesc)); - } + AcpiOsPrintf ("%s ", AcpiUtGetObjectTypeName (SourceDesc)); if (!AcpiUtValidInternalObject (SourceDesc)) { @@ -240,9 +223,9 @@ AcpiExDoDebugObject ( } else if (ACPI_GET_DESCRIPTOR_TYPE (SourceDesc) == ACPI_DESC_TYPE_NAMED) { - AcpiOsPrintf ("%s (Node %p)\n", + AcpiOsPrintf ("%s: %p\n", AcpiUtGetTypeName (((ACPI_NAMESPACE_NODE *) SourceDesc)->Type), - SourceDesc); + SourceDesc); return_VOID; } else @@ -280,12 +263,13 @@ AcpiExDoDebugObject ( case ACPI_TYPE_STRING: - AcpiOsPrintf ("\"%s\"\n", SourceDesc->String.Pointer); + AcpiOsPrintf ("[0x%.2X] \"%s\"\n", + SourceDesc->String.Length, SourceDesc->String.Pointer); break; case ACPI_TYPE_PACKAGE: - AcpiOsPrintf ("(Contains 0x%.2X Elements):\n", + AcpiOsPrintf ("[Contains 0x%.2X Elements]\n", SourceDesc->Package.Count); /* Output the entire contents of the package */ @@ -293,7 +277,7 @@ AcpiExDoDebugObject ( for (i = 0; i < SourceDesc->Package.Count; i++) { AcpiExDoDebugObject (SourceDesc->Package.Elements[i], - Level + 4, i + 1); + Level+4, i+1); } break; @@ -329,7 +313,7 @@ AcpiExDoDebugObject ( if (SourceDesc->Reference.Node) { if (ACPI_GET_DESCRIPTOR_TYPE (SourceDesc->Reference.Node) != - ACPI_DESC_TYPE_NAMED) + ACPI_DESC_TYPE_NAMED) { AcpiOsPrintf (" %p - Not a valid namespace node\n", SourceDesc->Reference.Node); @@ -354,7 +338,7 @@ AcpiExDoDebugObject ( default: AcpiExDoDebugObject ((SourceDesc->Reference.Node)->Object, - Level + 4, 0); + Level+4, 0); break; } } @@ -362,13 +346,11 @@ AcpiExDoDebugObject ( else if (SourceDesc->Reference.Object) { if (ACPI_GET_DESCRIPTOR_TYPE (SourceDesc->Reference.Object) == - ACPI_DESC_TYPE_NAMED) + ACPI_DESC_TYPE_NAMED) { - /* Reference object is a namespace node */ - - AcpiExDoDebugObject (ACPI_CAST_PTR (ACPI_OPERAND_OBJECT, - SourceDesc->Reference.Object), - Level + 4, 0); + AcpiExDoDebugObject (((ACPI_NAMESPACE_NODE *) + SourceDesc->Reference.Object)->Object, + Level+4, 0); } else { @@ -393,15 +375,8 @@ AcpiExDoDebugObject ( case ACPI_TYPE_PACKAGE: AcpiOsPrintf ("Package[%u] = ", Value); - if (!(*SourceDesc->Reference.Where)) - { - AcpiOsPrintf ("[Uninitialized Package Element]\n"); - } - else - { - AcpiExDoDebugObject (*SourceDesc->Reference.Where, - Level+4, 0); - } + AcpiExDoDebugObject (*SourceDesc->Reference.Where, + Level+4, 0); break; default: @@ -416,7 +391,7 @@ AcpiExDoDebugObject ( default: - AcpiOsPrintf ("(Descriptor %p)\n", SourceDesc); + AcpiOsPrintf ("%p\n", SourceDesc); break; } @@ -424,3 +399,362 @@ AcpiExDoDebugObject ( return_VOID; } #endif + + +/******************************************************************************* + * + * FUNCTION: AcpiExInterpreterTraceEnabled + * + * PARAMETERS: Name - Whether method name should be matched, + * this should be checked before starting + * the tracer + * + * RETURN: TRUE if interpreter trace is enabled. + * + * DESCRIPTION: Check whether interpreter trace is enabled + * + ******************************************************************************/ + +static BOOLEAN +AcpiExInterpreterTraceEnabled ( + char *Name) +{ + + /* Check if tracing is enabled */ + + if (!(AcpiGbl_TraceFlags & ACPI_TRACE_ENABLED)) + { + return (FALSE); + } + + /* + * Check if tracing is filtered: + * + * 1. If the tracer is started, AcpiGbl_TraceMethodObject should have + * been filled by the trace starter + * 2. If the tracer is not started, AcpiGbl_TraceMethodName should be + * matched if it is specified + * 3. If the tracer is oneshot style, AcpiGbl_TraceMethodName should + * not be cleared by the trace stopper during the first match + */ + if (AcpiGbl_TraceMethodObject) + { + return (TRUE); + } + if (Name && + (AcpiGbl_TraceMethodName && + strcmp (AcpiGbl_TraceMethodName, Name))) + { + return (FALSE); + } + if ((AcpiGbl_TraceFlags & ACPI_TRACE_ONESHOT) && + !AcpiGbl_TraceMethodName) + { + return (FALSE); + } + + return (TRUE); +} + + +/******************************************************************************* + * + * FUNCTION: AcpiExGetTraceEventName + * + * PARAMETERS: Type - Trace event type + * + * RETURN: Trace event name. + * + * DESCRIPTION: Used to obtain the full trace event name. + * + ******************************************************************************/ + +#ifdef ACPI_DEBUG_OUTPUT + +static const char * +AcpiExGetTraceEventName ( + ACPI_TRACE_EVENT_TYPE Type) +{ + switch (Type) + { + case ACPI_TRACE_AML_METHOD: + + return "Method"; + + case ACPI_TRACE_AML_OPCODE: + + return "Opcode"; + + case ACPI_TRACE_AML_REGION: + + return "Region"; + + default: + + return ""; + } +} + +#endif + + +/******************************************************************************* + * + * FUNCTION: AcpiExTracePoint + * + * PARAMETERS: Type - Trace event type + * Begin - TRUE if before execution + * Aml - Executed AML address + * Pathname - Object path + * + * RETURN: None + * + * DESCRIPTION: Internal interpreter execution trace. + * + ******************************************************************************/ + +void +AcpiExTracePoint ( + ACPI_TRACE_EVENT_TYPE Type, + BOOLEAN Begin, + UINT8 *Aml, + char *Pathname) +{ + + ACPI_FUNCTION_NAME (ExTracePoint); + + + if (Pathname) + { + ACPI_DEBUG_PRINT ((ACPI_DB_TRACE_POINT, + "%s %s [0x%p:%s] execution.\n", + AcpiExGetTraceEventName (Type), Begin ? "Begin" : "End", + Aml, Pathname)); + } + else + { + ACPI_DEBUG_PRINT ((ACPI_DB_TRACE_POINT, + "%s %s [0x%p] execution.\n", + AcpiExGetTraceEventName (Type), Begin ? "Begin" : "End", + Aml)); + } +} + + +/******************************************************************************* + * + * FUNCTION: AcpiExStartTraceMethod + * + * PARAMETERS: MethodNode - Node of the method + * ObjDesc - The method object + * WalkState - current state, NULL if not yet executing + * a method. + * + * RETURN: None + * + * DESCRIPTION: Start control method execution trace + * + ******************************************************************************/ + +void +AcpiExStartTraceMethod ( + ACPI_NAMESPACE_NODE *MethodNode, + ACPI_OPERAND_OBJECT *ObjDesc, + ACPI_WALK_STATE *WalkState) +{ + ACPI_STATUS Status; + char *Pathname = NULL; + BOOLEAN Enabled = FALSE; + + + ACPI_FUNCTION_NAME (ExStartTraceMethod); + + + if (MethodNode) + { + Pathname = AcpiNsGetNormalizedPathname (MethodNode, TRUE); + } + + Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); + if (ACPI_FAILURE (Status)) + { + goto Exit; + } + + Enabled = AcpiExInterpreterTraceEnabled (Pathname); + if (Enabled && !AcpiGbl_TraceMethodObject) + { + AcpiGbl_TraceMethodObject = ObjDesc; + AcpiGbl_OriginalDbgLevel = AcpiDbgLevel; + AcpiGbl_OriginalDbgLayer = AcpiDbgLayer; + AcpiDbgLevel = ACPI_TRACE_LEVEL_ALL; + AcpiDbgLayer = ACPI_TRACE_LAYER_ALL; + + if (AcpiGbl_TraceDbgLevel) + { + AcpiDbgLevel = AcpiGbl_TraceDbgLevel; + } + if (AcpiGbl_TraceDbgLayer) + { + AcpiDbgLayer = AcpiGbl_TraceDbgLayer; + } + } + (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); + +Exit: + if (Enabled) + { + ACPI_TRACE_POINT (ACPI_TRACE_AML_METHOD, TRUE, + ObjDesc ? ObjDesc->Method.AmlStart : NULL, Pathname); + } + if (Pathname) + { + ACPI_FREE (Pathname); + } +} + + +/******************************************************************************* + * + * FUNCTION: AcpiExStopTraceMethod + * + * PARAMETERS: MethodNode - Node of the method + * ObjDesc - The method object + * WalkState - current state, NULL if not yet executing + * a method. + * + * RETURN: None + * + * DESCRIPTION: Stop control method execution trace + * + ******************************************************************************/ + +void +AcpiExStopTraceMethod ( + ACPI_NAMESPACE_NODE *MethodNode, + ACPI_OPERAND_OBJECT *ObjDesc, + ACPI_WALK_STATE *WalkState) +{ + ACPI_STATUS Status; + char *Pathname = NULL; + BOOLEAN Enabled; + + + ACPI_FUNCTION_NAME (ExStopTraceMethod); + + + if (MethodNode) + { + Pathname = AcpiNsGetNormalizedPathname (MethodNode, TRUE); + } + + Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); + if (ACPI_FAILURE (Status)) + { + goto ExitPath; + } + + Enabled = AcpiExInterpreterTraceEnabled (NULL); + + (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); + + if (Enabled) + { + ACPI_TRACE_POINT (ACPI_TRACE_AML_METHOD, FALSE, + ObjDesc ? ObjDesc->Method.AmlStart : NULL, Pathname); + } + + Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); + if (ACPI_FAILURE (Status)) + { + goto ExitPath; + } + + /* Check whether the tracer should be stopped */ + + if (AcpiGbl_TraceMethodObject == ObjDesc) + { + /* Disable further tracing if type is one-shot */ + + if (AcpiGbl_TraceFlags & ACPI_TRACE_ONESHOT) + { + AcpiGbl_TraceMethodName = NULL; + } + + AcpiDbgLevel = AcpiGbl_OriginalDbgLevel; + AcpiDbgLayer = AcpiGbl_OriginalDbgLayer; + AcpiGbl_TraceMethodObject = NULL; + } + + (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); + +ExitPath: + if (Pathname) + { + ACPI_FREE (Pathname); + } +} + + +/******************************************************************************* + * + * FUNCTION: AcpiExStartTraceOpcode + * + * PARAMETERS: Op - The parser opcode object + * WalkState - current state, NULL if not yet executing + * a method. + * + * RETURN: None + * + * DESCRIPTION: Start opcode execution trace + * + ******************************************************************************/ + +void +AcpiExStartTraceOpcode ( + ACPI_PARSE_OBJECT *Op, + ACPI_WALK_STATE *WalkState) +{ + + ACPI_FUNCTION_NAME (ExStartTraceOpcode); + + + if (AcpiExInterpreterTraceEnabled (NULL) && + (AcpiGbl_TraceFlags & ACPI_TRACE_OPCODE)) + { + ACPI_TRACE_POINT (ACPI_TRACE_AML_OPCODE, TRUE, + Op->Common.Aml, Op->Common.AmlOpName); + } +} + + +/******************************************************************************* + * + * FUNCTION: AcpiExStopTraceOpcode + * + * PARAMETERS: Op - The parser opcode object + * WalkState - current state, NULL if not yet executing + * a method. + * + * RETURN: None + * + * DESCRIPTION: Stop opcode execution trace + * + ******************************************************************************/ + +void +AcpiExStopTraceOpcode ( + ACPI_PARSE_OBJECT *Op, + ACPI_WALK_STATE *WalkState) +{ + + ACPI_FUNCTION_NAME (ExStopTraceOpcode); + + + if (AcpiExInterpreterTraceEnabled (NULL) && + (AcpiGbl_TraceFlags & ACPI_TRACE_OPCODE)) + { + ACPI_TRACE_POINT (ACPI_TRACE_AML_OPCODE, FALSE, + Op->Common.Aml, Op->Common.AmlOpName); + } +} diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exdump.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exdump.c index 2f2836ee5b..c682777e93 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exdump.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exdump.c @@ -525,8 +525,7 @@ AcpiExDumpObject ( case ACPI_EXD_BUFFER: - ACPI_DUMP_BUFFER ( - ObjDesc->Buffer.Pointer, ObjDesc->Buffer.Length); + ACPI_DUMP_BUFFER (ObjDesc->Buffer.Pointer, ObjDesc->Buffer.Length); break; case ACPI_EXD_PACKAGE: @@ -545,8 +544,7 @@ AcpiExDumpObject ( case ACPI_EXD_REFERENCE: ReferenceName = AcpiUtGetReferenceName (ObjDesc); - AcpiExOutString ( - "Class Name", ACPI_CAST_PTR (char, ReferenceName)); + AcpiExOutString ("Class Name", ACPI_CAST_PTR (char, ReferenceName)); AcpiExDumpReferenceObj (ObjDesc); break; @@ -575,8 +573,7 @@ AcpiExDumpObject ( if ((Next == Start) || (Next == Data)) { - AcpiOsPrintf ( - "\n**** Error: Object list appears to be circular linked"); + AcpiOsPrintf ("\n**** Error: Object list appears to be circular linked"); break; } } @@ -594,8 +591,7 @@ AcpiExDumpObject ( if (Next) { AcpiOsPrintf ("(%s %2.2X)", - AcpiUtGetObjectTypeName (Next), - Next->AddressSpace.SpaceId); + AcpiUtGetObjectTypeName (Next), Next->Common.Type); while (Next->AddressSpace.Next) { @@ -607,13 +603,11 @@ AcpiExDumpObject ( Next = Next->AddressSpace.Next; AcpiOsPrintf ("->%p(%s %2.2X)", Next, - AcpiUtGetObjectTypeName (Next), - Next->AddressSpace.SpaceId); + AcpiUtGetObjectTypeName (Next), Next->Common.Type); if ((Next == Start) || (Next == Data)) { - AcpiOsPrintf ( - "\n**** Error: Handler list appears to be circular linked"); + AcpiOsPrintf ("\n**** Error: Handler list appears to be circular linked"); break; } } @@ -647,8 +641,7 @@ AcpiExDumpObject ( if ((Next == Start) || (Next == Data)) { - AcpiOsPrintf ( - "\n**** Error: Region list appears to be circular linked"); + AcpiOsPrintf ("\n**** Error: Region list appears to be circular linked"); break; } } @@ -756,8 +749,7 @@ AcpiExDumpOperand ( { case ACPI_TYPE_LOCAL_REFERENCE: - AcpiOsPrintf ("Reference: [%s] ", - AcpiUtGetReferenceName (ObjDesc)); + AcpiOsPrintf ("Reference: [%s] ", AcpiUtGetReferenceName (ObjDesc)); switch (ObjDesc->Reference.Class) { @@ -785,8 +777,7 @@ AcpiExDumpOperand ( case ACPI_REFCLASS_NAME: - AcpiOsPrintf ("- [%4.4s]\n", - ObjDesc->Reference.Node->Name.Ascii); + AcpiOsPrintf ("- [%4.4s]\n", ObjDesc->Reference.Node->Name.Ascii); break; case ACPI_REFCLASS_ARG: @@ -817,8 +808,8 @@ AcpiExDumpOperand ( Length = 128; } - AcpiOsPrintf ( - "Buffer Contents: (displaying length 0x%.2X)\n", Length); + AcpiOsPrintf ("Buffer Contents: (displaying length 0x%.2X)\n", + Length); ACPI_DUMP_BUFFER (ObjDesc->Buffer.Pointer, Length); } break; @@ -844,8 +835,7 @@ AcpiExDumpOperand ( { for (Index = 0; Index < ObjDesc->Package.Count; Index++) { - AcpiExDumpOperand ( - ObjDesc->Package.Elements[Index], Depth + 1); + AcpiExDumpOperand (ObjDesc->Package.Elements[Index], Depth+1); } } break; @@ -898,7 +888,7 @@ AcpiExDumpOperand ( ObjDesc->Field.BaseByteOffset, ObjDesc->Field.StartFieldBitOffset); - AcpiExDumpOperand (ObjDesc->Field.RegionObj, Depth + 1); + AcpiExDumpOperand (ObjDesc->Field.RegionObj, Depth+1); break; case ACPI_TYPE_LOCAL_INDEX_FIELD: @@ -918,13 +908,13 @@ AcpiExDumpOperand ( ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "*NULL*\n")); } else if ((ObjDesc->BufferField.BufferObj)->Common.Type != - ACPI_TYPE_BUFFER) + ACPI_TYPE_BUFFER) { AcpiOsPrintf ("*not a Buffer*\n"); } else { - AcpiExDumpOperand (ObjDesc->BufferField.BufferObj, Depth + 1); + AcpiExDumpOperand (ObjDesc->BufferField.BufferObj, Depth+1); } break; @@ -1224,8 +1214,7 @@ AcpiExDumpPackageObj ( AcpiOsPrintf ("[Buffer] Length %.2X = ", ObjDesc->Buffer.Length); if (ObjDesc->Buffer.Length) { - AcpiUtDebugDumpBuffer ( - ACPI_CAST_PTR (UINT8, ObjDesc->Buffer.Pointer), + AcpiUtDebugDumpBuffer (ACPI_CAST_PTR (UINT8, ObjDesc->Buffer.Pointer), ObjDesc->Buffer.Length, DB_DWORD_DISPLAY, _COMPONENT); } else @@ -1241,8 +1230,7 @@ AcpiExDumpPackageObj ( for (i = 0; i < ObjDesc->Package.Count; i++) { - AcpiExDumpPackageObj ( - ObjDesc->Package.Elements[i], Level + 1, i); + AcpiExDumpPackageObj (ObjDesc->Package.Elements[i], Level+1, i); } break; @@ -1340,8 +1328,7 @@ DumpObject: ObjDesc = ObjDesc->Common.NextObject; if (ObjDesc->Common.Type > ACPI_TYPE_LOCAL_MAX) { - AcpiOsPrintf ( - "Secondary object is not a known object type: %2.2X\n", + AcpiOsPrintf ("Secondary object is not a known object type: %2.2X\n", ObjDesc->Common.Type); return_VOID; diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exfield.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exfield.c index b70e08069d..dbd294b926 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exfield.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exfield.c @@ -256,31 +256,28 @@ AcpiExReadDataFromField ( ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_IPMI)) { /* - * This is an SMBus, GSBus or IPMI read. We must create a buffer to - * hold the data and then directly access the region handler. + * This is an SMBus, GSBus or IPMI read. We must create a buffer to hold + * the data and then directly access the region handler. * - * Note: SMBus and GSBus protocol value is passed in upper 16-bits - * of Function + * Note: SMBus and GSBus protocol value is passed in upper 16-bits of Function */ - if (ObjDesc->Field.RegionObj->Region.SpaceId == - ACPI_ADR_SPACE_SMBUS) + if (ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_SMBUS) { Length = ACPI_SMBUS_BUFFER_SIZE; Function = ACPI_READ | (ObjDesc->Field.Attribute << 16); } - else if (ObjDesc->Field.RegionObj->Region.SpaceId == - ACPI_ADR_SPACE_GSBUS) + else if (ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_GSBUS) { AccessorType = ObjDesc->Field.Attribute; - Length = AcpiExGetSerialAccessLength ( - AccessorType, ObjDesc->Field.AccessLength); + Length = AcpiExGetSerialAccessLength (AccessorType, + ObjDesc->Field.AccessLength); /* * Add additional 2 bytes for the GenericSerialBus data buffer: * - * Status; (Byte 0 of the data buffer) - * Length; (Byte 1 of the data buffer) - * Data[x-1]: (Bytes 2-x of the arbitrary length data buffer) + * Status; (Byte 0 of the data buffer) + * Length; (Byte 1 of the data buffer) + * Data[x-1]; (Bytes 2-x of the arbitrary length data buffer) */ Length += 2; Function = ACPI_READ | (AccessorType << 16); @@ -304,8 +301,8 @@ AcpiExReadDataFromField ( /* Call the region handler for the read */ Status = AcpiExAccessRegion (ObjDesc, 0, - ACPI_CAST_PTR (UINT64, BufferDesc->Buffer.Pointer), Function); - + ACPI_CAST_PTR (UINT64, BufferDesc->Buffer.Pointer), + Function); AcpiExReleaseGlobalLock (ObjDesc->CommonField.FieldFlags); goto Exit; } @@ -320,9 +317,7 @@ AcpiExReadDataFromField ( * * Note: Field.length is in bits. */ - Length = (ACPI_SIZE) ACPI_ROUND_BITS_UP_TO_BYTES ( - ObjDesc->Field.BitLength); - + Length = (ACPI_SIZE) ACPI_ROUND_BITS_UP_TO_BYTES (ObjDesc->Field.BitLength); if (Length > AcpiGbl_IntegerByteWidth) { /* Field is too large for an Integer, create a Buffer instead */ @@ -367,9 +362,8 @@ AcpiExReadDataFromField ( /* Perform the write */ - Status = AcpiExAccessRegion ( - ObjDesc, 0, (UINT64 *) Buffer, ACPI_READ); - + Status = AcpiExAccessRegion (ObjDesc, 0, + (UINT64 *) Buffer, ACPI_READ); AcpiExReleaseGlobalLock (ObjDesc->CommonField.FieldFlags); if (ACPI_FAILURE (Status)) { @@ -474,47 +468,42 @@ AcpiExWriteDataToField ( ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_IPMI)) { /* - * This is an SMBus, GSBus or IPMI write. We will bypass the entire - * field mechanism and handoff the buffer directly to the handler. - * For these address spaces, the buffer is bi-directional; on a - * write, return data is returned in the same buffer. + * This is an SMBus, GSBus or IPMI write. We will bypass the entire field + * mechanism and handoff the buffer directly to the handler. For + * these address spaces, the buffer is bi-directional; on a write, + * return data is returned in the same buffer. * * Source must be a buffer of sufficient size: - * ACPI_SMBUS_BUFFER_SIZE, ACPI_GSBUS_BUFFER_SIZE, or - * ACPI_IPMI_BUFFER_SIZE. + * ACPI_SMBUS_BUFFER_SIZE, ACPI_GSBUS_BUFFER_SIZE, or ACPI_IPMI_BUFFER_SIZE. * - * Note: SMBus and GSBus protocol type is passed in upper 16-bits - * of Function + * Note: SMBus and GSBus protocol type is passed in upper 16-bits of Function */ if (SourceDesc->Common.Type != ACPI_TYPE_BUFFER) { ACPI_ERROR ((AE_INFO, - "SMBus/IPMI/GenericSerialBus write requires " - "Buffer, found type %s", + "SMBus/IPMI/GenericSerialBus write requires Buffer, found type %s", AcpiUtGetObjectTypeName (SourceDesc))); return_ACPI_STATUS (AE_AML_OPERAND_TYPE); } - if (ObjDesc->Field.RegionObj->Region.SpaceId == - ACPI_ADR_SPACE_SMBUS) + if (ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_SMBUS) { Length = ACPI_SMBUS_BUFFER_SIZE; Function = ACPI_WRITE | (ObjDesc->Field.Attribute << 16); } - else if (ObjDesc->Field.RegionObj->Region.SpaceId == - ACPI_ADR_SPACE_GSBUS) + else if (ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_GSBUS) { AccessorType = ObjDesc->Field.Attribute; - Length = AcpiExGetSerialAccessLength ( - AccessorType, ObjDesc->Field.AccessLength); + Length = AcpiExGetSerialAccessLength (AccessorType, + ObjDesc->Field.AccessLength); /* * Add additional 2 bytes for the GenericSerialBus data buffer: * - * Status; (Byte 0 of the data buffer) - * Length; (Byte 1 of the data buffer) - * Data[x-1]: (Bytes 2-x of the arbitrary length data buffer) + * Status; (Byte 0 of the data buffer) + * Length; (Byte 1 of the data buffer) + * Data[x-1]; (Bytes 2-x of the arbitrary length data buffer) */ Length += 2; Function = ACPI_WRITE | (AccessorType << 16); @@ -528,8 +517,7 @@ AcpiExWriteDataToField ( if (SourceDesc->Buffer.Length < Length) { ACPI_ERROR ((AE_INFO, - "SMBus/IPMI/GenericSerialBus write requires " - "Buffer of length %u, found length %u", + "SMBus/IPMI/GenericSerialBus write requires Buffer of length %u, found length %u", Length, SourceDesc->Buffer.Length)); return_ACPI_STATUS (AE_AML_BUFFER_LIMIT); @@ -554,8 +542,8 @@ AcpiExWriteDataToField ( * Perform the write (returns status and perhaps data in the * same buffer) */ - Status = AcpiExAccessRegion ( - ObjDesc, 0, (UINT64 *) Buffer, Function); + Status = AcpiExAccessRegion (ObjDesc, 0, + (UINT64 *) Buffer, Function); AcpiExReleaseGlobalLock (ObjDesc->CommonField.FieldFlags); *ResultDesc = BufferDesc; @@ -578,7 +566,7 @@ AcpiExWriteDataToField ( } ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, - "GPIO FieldWrite [FROM]: (%s:%X), Val %.8X [TO]: Pin %u Bits %u\n", + "GPIO FieldWrite [FROM]: (%s:%X), Val %.8X [TO]: Pin %u Bits %u\n", AcpiUtGetTypeName (SourceDesc->Common.Type), SourceDesc->Common.Type, (UINT32) SourceDesc->Integer.Value, ObjDesc->Field.PinNumberIndex, ObjDesc->Field.BitLength)); @@ -591,8 +579,8 @@ AcpiExWriteDataToField ( /* Perform the write */ - Status = AcpiExAccessRegion ( - ObjDesc, 0, (UINT64 *) Buffer, ACPI_WRITE); + Status = AcpiExAccessRegion (ObjDesc, 0, + (UINT64 *) Buffer, ACPI_WRITE); AcpiExReleaseGlobalLock (ObjDesc->CommonField.FieldFlags); return_ACPI_STATUS (Status); } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exfldio.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exfldio.c index 106405a5f0..39a0f37d55 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exfldio.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exfldio.c @@ -192,8 +192,7 @@ AcpiExSetupRegion ( if (!AcpiIsValidSpaceId (SpaceId)) { - ACPI_ERROR ((AE_INFO, - "Invalid/unknown Address Space ID: 0x%2.2X", SpaceId)); + ACPI_ERROR ((AE_INFO, "Invalid/unknown Address Space ID: 0x%2.2X", SpaceId)); return_ACPI_STATUS (AE_AML_INVALID_SPACE_ID); } @@ -243,8 +242,8 @@ AcpiExSetupRegion ( * (Region length is specified in bytes) */ if (RgnDesc->Region.Length < - (ObjDesc->CommonField.BaseByteOffset + FieldDatumByteOffset + - ObjDesc->CommonField.AccessByteWidth)) + (ObjDesc->CommonField.BaseByteOffset + FieldDatumByteOffset + + ObjDesc->CommonField.AccessByteWidth)) { if (AcpiGbl_EnableInterpreterSlack) { @@ -271,8 +270,7 @@ AcpiExSetupRegion ( * byte, and a field with Dword access specified. */ ACPI_ERROR ((AE_INFO, - "Field [%4.4s] access width (%u bytes) " - "too large for region [%4.4s] (length %u)", + "Field [%4.4s] access width (%u bytes) too large for region [%4.4s] (length %u)", AcpiUtGetNodeName (ObjDesc->CommonField.Node), ObjDesc->CommonField.AccessByteWidth, AcpiUtGetNodeName (RgnDesc->Region.Node), @@ -284,8 +282,7 @@ AcpiExSetupRegion ( * exceeds region length, indicate an error */ ACPI_ERROR ((AE_INFO, - "Field [%4.4s] Base+Offset+Width %u+%u+%u " - "is beyond end of region [%4.4s] (length %u)", + "Field [%4.4s] Base+Offset+Width %u+%u+%u is beyond end of region [%4.4s] (length %u)", AcpiUtGetNodeName (ObjDesc->CommonField.Node), ObjDesc->CommonField.BaseByteOffset, FieldDatumByteOffset, ObjDesc->CommonField.AccessByteWidth, @@ -375,8 +372,8 @@ AcpiExAccessRegion ( /* Invoke the appropriate AddressSpace/OpRegion handler */ Status = AcpiEvAddressSpaceDispatch (RgnDesc, ObjDesc, - Function, RegionOffset, - ACPI_MUL_8 (ObjDesc->CommonField.AccessByteWidth), Value); + Function, RegionOffset, + ACPI_MUL_8 (ObjDesc->CommonField.AccessByteWidth), Value); if (ACPI_FAILURE (Status)) { @@ -587,8 +584,8 @@ AcpiExFieldDatumIo ( * For simple RegionFields, we just directly access the owning * Operation Region. */ - Status = AcpiExAccessRegion ( - ObjDesc, FieldDatumByteOffset, Value, ReadWrite); + Status = AcpiExAccessRegion (ObjDesc, FieldDatumByteOffset, Value, + ReadWrite); break; case ACPI_TYPE_LOCAL_INDEX_FIELD: @@ -611,7 +608,8 @@ AcpiExFieldDatumIo ( FieldDatumByteOffset)); Status = AcpiExInsertIntoField (ObjDesc->IndexField.IndexObj, - &FieldDatumByteOffset, sizeof (FieldDatumByteOffset)); + &FieldDatumByteOffset, + sizeof (FieldDatumByteOffset)); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -624,8 +622,8 @@ AcpiExFieldDatumIo ( ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, "Read from Data Register\n")); - Status = AcpiExExtractFromField ( - ObjDesc->IndexField.DataObj, Value, sizeof (UINT64)); + Status = AcpiExExtractFromField (ObjDesc->IndexField.DataObj, + Value, sizeof (UINT64)); } else { @@ -635,8 +633,8 @@ AcpiExFieldDatumIo ( "Write to Data Register: Value %8.8X%8.8X\n", ACPI_FORMAT_UINT64 (*Value))); - Status = AcpiExInsertIntoField ( - ObjDesc->IndexField.DataObj, Value, sizeof (UINT64)); + Status = AcpiExInsertIntoField (ObjDesc->IndexField.DataObj, + Value, sizeof (UINT64)); } break; @@ -718,14 +716,14 @@ AcpiExWriteWithUpdateRule ( * ones) The left shift drops the bits we want to ignore. */ if ((~Mask << (ACPI_MUL_8 (sizeof (Mask)) - - ACPI_MUL_8 (ObjDesc->CommonField.AccessByteWidth))) != 0) + ACPI_MUL_8 (ObjDesc->CommonField.AccessByteWidth))) != 0) { /* * Read the current contents of the byte/word/dword containing * the field, and merge with the new field value. */ - Status = AcpiExFieldDatumIo ( - ObjDesc, FieldDatumByteOffset, &CurrentValue, ACPI_READ); + Status = AcpiExFieldDatumIo (ObjDesc, FieldDatumByteOffset, + &CurrentValue, ACPI_READ); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -753,15 +751,13 @@ AcpiExWriteWithUpdateRule ( ACPI_ERROR ((AE_INFO, "Unknown UpdateRule value: 0x%X", - (ObjDesc->CommonField.FieldFlags & - AML_FIELD_UPDATE_RULE_MASK))); + (ObjDesc->CommonField.FieldFlags & AML_FIELD_UPDATE_RULE_MASK))); return_ACPI_STATUS (AE_AML_OPERAND_VALUE); } } ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, - "Mask %8.8X%8.8X, DatumOffset %X, Width %X, " - "Value %8.8X%8.8X, MergedValue %8.8X%8.8X\n", + "Mask %8.8X%8.8X, DatumOffset %X, Width %X, Value %8.8X%8.8X, MergedValue %8.8X%8.8X\n", ACPI_FORMAT_UINT64 (Mask), FieldDatumByteOffset, ObjDesc->CommonField.AccessByteWidth, @@ -770,8 +766,8 @@ AcpiExWriteWithUpdateRule ( /* Write the merged value */ - Status = AcpiExFieldDatumIo ( - ObjDesc, FieldDatumByteOffset, &MergedValue, ACPI_WRITE); + Status = AcpiExFieldDatumIo (ObjDesc, FieldDatumByteOffset, + &MergedValue, ACPI_WRITE); return_ACPI_STATUS (Status); } @@ -882,8 +878,8 @@ AcpiExExtractFromField ( /* Get next input datum from the field */ FieldOffset += ObjDesc->CommonField.AccessByteWidth; - Status = AcpiExFieldDatumIo ( - ObjDesc, FieldOffset, &RawDatum, ACPI_READ); + Status = AcpiExFieldDatumIo (ObjDesc, FieldOffset, + &RawDatum, ACPI_READ); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -980,8 +976,7 @@ AcpiExInsertIntoField ( NewBuffer = NULL; RequiredLength = ACPI_ROUND_BITS_UP_TO_BYTES ( - ObjDesc->CommonField.BitLength); - + ObjDesc->CommonField.BitLength); /* * We must have a buffer that is at least as long as the field * we are writing to. This is because individual fields are @@ -1059,8 +1054,8 @@ AcpiExInsertIntoField ( /* Write merged datum to the target field */ MergedDatum &= Mask; - Status = AcpiExWriteWithUpdateRule ( - ObjDesc, Mask, MergedDatum, FieldOffset); + Status = AcpiExWriteWithUpdateRule (ObjDesc, Mask, + MergedDatum, FieldOffset); if (ACPI_FAILURE (Status)) { goto Exit; @@ -1117,8 +1112,8 @@ AcpiExInsertIntoField ( /* Write the last datum to the field */ MergedDatum &= Mask; - Status = AcpiExWriteWithUpdateRule ( - ObjDesc, Mask, MergedDatum, FieldOffset); + Status = AcpiExWriteWithUpdateRule (ObjDesc, + Mask, MergedDatum, FieldOffset); Exit: /* Free temporary buffer if we used one */ diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exmisc.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exmisc.c index cde2279509..f678670ae4 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exmisc.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exmisc.c @@ -180,9 +180,9 @@ AcpiExGetObjectReference ( default: - ACPI_ERROR ((AE_INFO, "Invalid Reference Class 0x%2.2X", + ACPI_ERROR ((AE_INFO, "Unknown Reference Class 0x%2.2X", ObjDesc->Reference.Class)); - return_ACPI_STATUS (AE_AML_OPERAND_TYPE); + return_ACPI_STATUS (AE_AML_INTERNAL); } break; @@ -338,7 +338,6 @@ AcpiExDoConcatenate ( ACPI_OPERAND_OBJECT *LocalOperand1 = Operand1; ACPI_OPERAND_OBJECT *ReturnDesc; char *NewBuf; - const char *TypeString; ACPI_STATUS Status; @@ -360,42 +359,9 @@ AcpiExDoConcatenate ( break; case ACPI_TYPE_STRING: - /* - * Per the ACPI spec, Concatenate only supports int/str/buf. - * However, we support all objects here as an extension. - * This improves the usefulness of the Printf() macro. - * 12/2015. - */ - switch (Operand1->Common.Type) - { - case ACPI_TYPE_INTEGER: - case ACPI_TYPE_STRING: - case ACPI_TYPE_BUFFER: - Status = AcpiExConvertToString ( - Operand1, &LocalOperand1, ACPI_IMPLICIT_CONVERT_HEX); - break; - - default: - /* - * Just emit a string containing the object type. - */ - TypeString = AcpiUtGetTypeName (Operand1->Common.Type); - - LocalOperand1 = AcpiUtCreateStringObject ( - ((ACPI_SIZE) strlen (TypeString) + 9)); /* 9 For "[Object]" */ - if (!LocalOperand1) - { - Status = AE_NO_MEMORY; - goto Cleanup; - } - - strcpy (LocalOperand1->String.Pointer, "["); - strcat (LocalOperand1->String.Pointer, TypeString); - strcat (LocalOperand1->String.Pointer, " Object]"); - Status = AE_OK; - break; - } + Status = AcpiExConvertToString (Operand1, &LocalOperand1, + ACPI_IMPLICIT_CONVERT_HEX); break; case ACPI_TYPE_BUFFER: @@ -435,8 +401,8 @@ AcpiExDoConcatenate ( /* Result of two Integers is a Buffer */ /* Need enough buffer space for two integers */ - ReturnDesc = AcpiUtCreateBufferObject ( - (ACPI_SIZE) ACPI_MUL_2 (AcpiGbl_IntegerByteWidth)); + ReturnDesc = AcpiUtCreateBufferObject ((ACPI_SIZE) + ACPI_MUL_2 (AcpiGbl_IntegerByteWidth)); if (!ReturnDesc) { Status = AE_NO_MEMORY; @@ -448,12 +414,13 @@ AcpiExDoConcatenate ( /* Copy the first integer, LSB first */ memcpy (NewBuf, &Operand0->Integer.Value, - AcpiGbl_IntegerByteWidth); + AcpiGbl_IntegerByteWidth); /* Copy the second integer (LSB first) after the first */ memcpy (NewBuf + AcpiGbl_IntegerByteWidth, - &LocalOperand1->Integer.Value, AcpiGbl_IntegerByteWidth); + &LocalOperand1->Integer.Value, + AcpiGbl_IntegerByteWidth); break; case ACPI_TYPE_STRING: @@ -461,8 +428,8 @@ AcpiExDoConcatenate ( /* Result of two Strings is a String */ ReturnDesc = AcpiUtCreateStringObject ( - ((ACPI_SIZE) Operand0->String.Length + - LocalOperand1->String.Length)); + ((ACPI_SIZE) Operand0->String.Length + + LocalOperand1->String.Length)); if (!ReturnDesc) { Status = AE_NO_MEMORY; @@ -474,7 +441,8 @@ AcpiExDoConcatenate ( /* Concatenate the strings */ strcpy (NewBuf, Operand0->String.Pointer); - strcat (NewBuf, LocalOperand1->String.Pointer); + strcpy (NewBuf + Operand0->String.Length, + LocalOperand1->String.Pointer); break; case ACPI_TYPE_BUFFER: @@ -482,8 +450,8 @@ AcpiExDoConcatenate ( /* Result of two Buffers is a Buffer */ ReturnDesc = AcpiUtCreateBufferObject ( - ((ACPI_SIZE) Operand0->Buffer.Length + - LocalOperand1->Buffer.Length)); + ((ACPI_SIZE) Operand0->Buffer.Length + + LocalOperand1->Buffer.Length)); if (!ReturnDesc) { Status = AE_NO_MEMORY; @@ -495,10 +463,10 @@ AcpiExDoConcatenate ( /* Concatenate the buffers */ memcpy (NewBuf, Operand0->Buffer.Pointer, - Operand0->Buffer.Length); + Operand0->Buffer.Length); memcpy (NewBuf + Operand0->Buffer.Length, - LocalOperand1->Buffer.Pointer, - LocalOperand1->Buffer.Length); + LocalOperand1->Buffer.Pointer, + LocalOperand1->Buffer.Length); break; default: @@ -740,8 +708,8 @@ AcpiExDoLogicalOp ( case ACPI_TYPE_STRING: - Status = AcpiExConvertToString ( - Operand1, &LocalOperand1, ACPI_IMPLICIT_CONVERT_HEX); + Status = AcpiExConvertToString (Operand1, &LocalOperand1, + ACPI_IMPLICIT_CONVERT_HEX); break; case ACPI_TYPE_BUFFER: @@ -818,8 +786,8 @@ AcpiExDoLogicalOp ( /* Lexicographic compare: compare the data bytes */ Compare = memcmp (Operand0->Buffer.Pointer, - LocalOperand1->Buffer.Pointer, - (Length0 > Length1) ? Length1 : Length0); + LocalOperand1->Buffer.Pointer, + (Length0 > Length1) ? Length1 : Length0); switch (Opcode) { diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exmutex.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exmutex.c index f3cf1bb592..c688a504e7 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exmutex.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exmutex.c @@ -281,7 +281,8 @@ AcpiExAcquireMutexObject ( } else { - Status = AcpiExSystemWaitMutex (ObjDesc->Mutex.OsMutex, Timeout); + Status = AcpiExSystemWaitMutex (ObjDesc->Mutex.OsMutex, + Timeout); } if (ACPI_FAILURE (Status)) @@ -344,48 +345,33 @@ AcpiExAcquireMutex ( } /* - * Current sync level must be less than or equal to the sync level - * of the mutex. This mechanism provides some deadlock prevention. + * Current sync level must be less than or equal to the sync level of the + * mutex. This mechanism provides some deadlock prevention */ if (WalkState->Thread->CurrentSyncLevel > ObjDesc->Mutex.SyncLevel) { ACPI_ERROR ((AE_INFO, - "Cannot acquire Mutex [%4.4s], " - "current SyncLevel is too large (%u)", + "Cannot acquire Mutex [%4.4s], current SyncLevel is too large (%u)", AcpiUtGetNodeName (ObjDesc->Mutex.Node), WalkState->Thread->CurrentSyncLevel)); return_ACPI_STATUS (AE_AML_MUTEX_ORDER); } - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, - "Acquiring: Mutex SyncLevel %u, Thread SyncLevel %u, " - "Depth %u TID %p\n", - ObjDesc->Mutex.SyncLevel, WalkState->Thread->CurrentSyncLevel, - ObjDesc->Mutex.AcquisitionDepth, WalkState->Thread)); - Status = AcpiExAcquireMutexObject ((UINT16) TimeDesc->Integer.Value, - ObjDesc, WalkState->Thread->ThreadId); - + ObjDesc, WalkState->Thread->ThreadId); if (ACPI_SUCCESS (Status) && ObjDesc->Mutex.AcquisitionDepth == 1) { /* Save Thread object, original/current sync levels */ ObjDesc->Mutex.OwnerThread = WalkState->Thread; - ObjDesc->Mutex.OriginalSyncLevel = - WalkState->Thread->CurrentSyncLevel; - WalkState->Thread->CurrentSyncLevel = - ObjDesc->Mutex.SyncLevel; + ObjDesc->Mutex.OriginalSyncLevel = WalkState->Thread->CurrentSyncLevel; + WalkState->Thread->CurrentSyncLevel = ObjDesc->Mutex.SyncLevel; /* Link the mutex to the current thread for force-unlock at method exit */ AcpiExLinkMutex (ObjDesc, WalkState->Thread); } - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, - "Acquired: Mutex SyncLevel %u, Thread SyncLevel %u, Depth %u\n", - ObjDesc->Mutex.SyncLevel, WalkState->Thread->CurrentSyncLevel, - ObjDesc->Mutex.AcquisitionDepth)); - return_ACPI_STATUS (Status); } @@ -481,9 +467,9 @@ AcpiExReleaseMutex ( ACPI_OPERAND_OBJECT *ObjDesc, ACPI_WALK_STATE *WalkState) { + ACPI_STATUS Status = AE_OK; UINT8 PreviousSyncLevel; ACPI_THREAD_STATE *OwnerThread; - ACPI_STATUS Status = AE_OK; ACPI_FUNCTION_TRACE (ExReleaseMutex); @@ -541,8 +527,7 @@ AcpiExReleaseMutex ( if (ObjDesc->Mutex.SyncLevel != OwnerThread->CurrentSyncLevel) { ACPI_ERROR ((AE_INFO, - "Cannot release Mutex [%4.4s], SyncLevel mismatch: " - "mutex %u current %u", + "Cannot release Mutex [%4.4s], SyncLevel mismatch: mutex %u current %u", AcpiUtGetNodeName (ObjDesc->Mutex.Node), ObjDesc->Mutex.SyncLevel, WalkState->Thread->CurrentSyncLevel)); return_ACPI_STATUS (AE_AML_MUTEX_ORDER); @@ -556,13 +541,6 @@ AcpiExReleaseMutex ( PreviousSyncLevel = OwnerThread->AcquiredMutexList->Mutex.OriginalSyncLevel; - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, - "Releasing: Object SyncLevel %u, Thread SyncLevel %u, " - "Prev SyncLevel %u, Depth %u TID %p\n", - ObjDesc->Mutex.SyncLevel, WalkState->Thread->CurrentSyncLevel, - PreviousSyncLevel, ObjDesc->Mutex.AcquisitionDepth, - WalkState->Thread)); - Status = AcpiExReleaseMutexObject (ObjDesc); if (ACPI_FAILURE (Status)) { @@ -576,12 +554,6 @@ AcpiExReleaseMutex ( OwnerThread->CurrentSyncLevel = PreviousSyncLevel; } - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, - "Released: Object SyncLevel %u, Thread SyncLevel, %u, " - "Prev SyncLevel %u, Depth %u\n", - ObjDesc->Mutex.SyncLevel, WalkState->Thread->CurrentSyncLevel, - PreviousSyncLevel, ObjDesc->Mutex.AcquisitionDepth)); - return_ACPI_STATUS (Status); } @@ -612,7 +584,7 @@ AcpiExReleaseAllMutexes ( ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_FUNCTION_TRACE (ExReleaseAllMutexes); + ACPI_FUNCTION_NAME (ExReleaseAllMutexes); /* Traverse the list of owned mutexes, releasing each one */ @@ -620,10 +592,14 @@ AcpiExReleaseAllMutexes ( while (Next) { ObjDesc = Next; + Next = ObjDesc->Mutex.Next; + + ObjDesc->Mutex.Prev = NULL; + ObjDesc->Mutex.Next = NULL; + ObjDesc->Mutex.AcquisitionDepth = 0; + ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, - "Mutex [%4.4s] force-release, SyncLevel %u Depth %u\n", - ObjDesc->Mutex.Node->Name.Ascii, ObjDesc->Mutex.SyncLevel, - ObjDesc->Mutex.AcquisitionDepth)); + "Force-releasing held mutex: %p\n", ObjDesc)); /* Release the mutex, special case for Global Lock */ @@ -638,20 +614,13 @@ AcpiExReleaseAllMutexes ( AcpiOsReleaseMutex (ObjDesc->Mutex.OsMutex); } + /* Mark mutex unowned */ + + ObjDesc->Mutex.OwnerThread = NULL; + ObjDesc->Mutex.ThreadId = 0; + /* Update Thread SyncLevel (Last mutex is the important one) */ Thread->CurrentSyncLevel = ObjDesc->Mutex.OriginalSyncLevel; - - /* Mark mutex unowned */ - - Next = ObjDesc->Mutex.Next; - - ObjDesc->Mutex.Prev = NULL; - ObjDesc->Mutex.Next = NULL; - ObjDesc->Mutex.AcquisitionDepth = 0; - ObjDesc->Mutex.OwnerThread = NULL; - ObjDesc->Mutex.ThreadId = 0; } - - return_VOID; } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exnames.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exnames.c index d222a21045..38ceba0a09 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exnames.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exnames.c @@ -232,7 +232,6 @@ AcpiExAllocateNameString ( return_PTR (NameString); } - /******************************************************************************* * * FUNCTION: AcpiExNameSegment @@ -262,8 +261,8 @@ AcpiExNameSegment ( /* - * If first character is a digit, then we know that we aren't looking - * at a valid name segment + * If first character is a digit, then we know that we aren't looking at a + * valid name segment */ CharBuf[0] = *AmlAddress; @@ -467,8 +466,7 @@ AcpiExGetNameString ( AmlAddress++; NumSegments = *AmlAddress; - NameString = AcpiExAllocateNameString ( - PrefixCount, NumSegments); + NameString = AcpiExAllocateNameString (PrefixCount, NumSegments); if (!NameString) { Status = AE_NO_MEMORY; diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exoparg1.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exoparg1.c index 965de2df6b..c7addbdbe5 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exoparg1.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exoparg1.c @@ -403,7 +403,7 @@ AcpiExOpcode_1A_1T_1R ( * endian unsigned value, so this boundary condition is valid. */ for (Temp32 = 0; ReturnDesc->Integer.Value && - Temp32 < ACPI_INTEGER_BIT_SIZE; ++Temp32) + Temp32 < ACPI_INTEGER_BIT_SIZE; ++Temp32) { ReturnDesc->Integer.Value >>= 1; } @@ -420,7 +420,7 @@ AcpiExOpcode_1A_1T_1R ( * endian unsigned value, so this boundary condition is valid. */ for (Temp32 = 0; ReturnDesc->Integer.Value && - Temp32 < ACPI_INTEGER_BIT_SIZE; ++Temp32) + Temp32 < ACPI_INTEGER_BIT_SIZE; ++Temp32) { ReturnDesc->Integer.Value <<= 1; } @@ -526,7 +526,7 @@ AcpiExOpcode_1A_1T_1R ( /* Get the object reference, store it, and remove our reference */ Status = AcpiExGetObjectReference (Operand[0], - &ReturnDesc2, WalkState); + &ReturnDesc2, WalkState); if (ACPI_FAILURE (Status)) { goto Cleanup; @@ -581,30 +581,28 @@ AcpiExOpcode_1A_1T_1R ( */ case AML_COPY_OP: /* Copy (Source, Target) */ - Status = AcpiUtCopyIobjectToIobject ( - Operand[0], &ReturnDesc, WalkState); + Status = AcpiUtCopyIobjectToIobject (Operand[0], &ReturnDesc, + WalkState); break; case AML_TO_DECSTRING_OP: /* ToDecimalString (Data, Result) */ - Status = AcpiExConvertToString ( - Operand[0], &ReturnDesc, ACPI_EXPLICIT_CONVERT_DECIMAL); + Status = AcpiExConvertToString (Operand[0], &ReturnDesc, + ACPI_EXPLICIT_CONVERT_DECIMAL); if (ReturnDesc == Operand[0]) { /* No conversion performed, add ref to handle return value */ - AcpiUtAddReference (ReturnDesc); } break; case AML_TO_HEXSTRING_OP: /* ToHexString (Data, Result) */ - Status = AcpiExConvertToString ( - Operand[0], &ReturnDesc, ACPI_EXPLICIT_CONVERT_HEX); + Status = AcpiExConvertToString (Operand[0], &ReturnDesc, + ACPI_EXPLICIT_CONVERT_HEX); if (ReturnDesc == Operand[0]) { /* No conversion performed, add ref to handle return value */ - AcpiUtAddReference (ReturnDesc); } break; @@ -615,19 +613,17 @@ AcpiExOpcode_1A_1T_1R ( if (ReturnDesc == Operand[0]) { /* No conversion performed, add ref to handle return value */ - AcpiUtAddReference (ReturnDesc); } break; case AML_TO_INTEGER_OP: /* ToInteger (Data, Result) */ - Status = AcpiExConvertToInteger ( - Operand[0], &ReturnDesc, ACPI_ANY_BASE); + Status = AcpiExConvertToInteger (Operand[0], &ReturnDesc, + ACPI_ANY_BASE); if (ReturnDesc == Operand[0]) { /* No conversion performed, add ref to handle return value */ - AcpiUtAddReference (ReturnDesc); } break; @@ -778,11 +774,11 @@ AcpiExOpcode_1A_0T_1R ( */ if (WalkState->Opcode == AML_INCREMENT_OP) { - ReturnDesc->Integer.Value = TempDesc->Integer.Value + 1; + ReturnDesc->Integer.Value = TempDesc->Integer.Value +1; } else { - ReturnDesc->Integer.Value = TempDesc->Integer.Value - 1; + ReturnDesc->Integer.Value = TempDesc->Integer.Value -1; } /* Finished with this Integer object */ @@ -796,7 +792,7 @@ AcpiExOpcode_1A_0T_1R ( Status = AcpiExStore (ReturnDesc, Operand[0], WalkState); break; - case AML_OBJECT_TYPE_OP: /* ObjectType (SourceObject) */ + case AML_TYPE_OP: /* ObjectType (SourceObject) */ /* * Note: The operand is not resolved at this point because we want to * get the associated object, not its value. For example, we don't @@ -830,8 +826,8 @@ AcpiExOpcode_1A_0T_1R ( /* Get the base object */ - Status = AcpiExResolveMultiple ( - WalkState, Operand[0], &Type, &TempDesc); + Status = AcpiExResolveMultiple (WalkState, + Operand[0], &Type, &TempDesc); if (ACPI_FAILURE (Status)) { goto Cleanup; @@ -877,10 +873,8 @@ AcpiExOpcode_1A_0T_1R ( default: ACPI_ERROR ((AE_INFO, - "Operand must be Buffer/Integer/String/Package" - " - found type %s", + "Operand must be Buffer/Integer/String/Package - found type %s", AcpiUtGetTypeName (Type))); - Status = AE_AML_OPERAND_TYPE; goto Cleanup; } @@ -905,8 +899,7 @@ AcpiExOpcode_1A_0T_1R ( case AML_REF_OF_OP: /* RefOf (SourceObject) */ - Status = AcpiExGetObjectReference ( - Operand[0], &ReturnDesc, WalkState); + Status = AcpiExGetObjectReference (Operand[0], &ReturnDesc, WalkState); if (ACPI_FAILURE (Status)) { goto Cleanup; @@ -953,9 +946,9 @@ AcpiExOpcode_1A_0T_1R ( /* Set Operand[0] to the value of the local/arg */ Status = AcpiDsMethodDataGetValue ( - Operand[0]->Reference.Class, - Operand[0]->Reference.Value, - WalkState, &TempDesc); + Operand[0]->Reference.Class, + Operand[0]->Reference.Value, + WalkState, &TempDesc); if (ACPI_FAILURE (Status)) { goto Cleanup; @@ -1009,19 +1002,19 @@ AcpiExOpcode_1A_0T_1R ( * Field, so we need to resolve the node to a value. */ Status = AcpiNsGetNode (WalkState->ScopeInfo->Scope.Node, - Operand[0]->String.Pointer, - ACPI_NS_SEARCH_PARENT, - ACPI_CAST_INDIRECT_PTR ( - ACPI_NAMESPACE_NODE, &ReturnDesc)); + Operand[0]->String.Pointer, + ACPI_NS_SEARCH_PARENT, + ACPI_CAST_INDIRECT_PTR ( + ACPI_NAMESPACE_NODE, &ReturnDesc)); if (ACPI_FAILURE (Status)) { goto Cleanup; } Status = AcpiExResolveNodeToValue ( - ACPI_CAST_INDIRECT_PTR ( - ACPI_NAMESPACE_NODE, &ReturnDesc), - WalkState); + ACPI_CAST_INDIRECT_PTR ( + ACPI_NAMESPACE_NODE, &ReturnDesc), + WalkState); goto Cleanup; } } @@ -1037,7 +1030,7 @@ AcpiExOpcode_1A_0T_1R ( * dereferenced above. */ ReturnDesc = AcpiNsGetAttachedObject ( - (ACPI_NAMESPACE_NODE *) Operand[0]); + (ACPI_NAMESPACE_NODE *) Operand[0]); AcpiUtAddReference (ReturnDesc); } else @@ -1104,7 +1097,6 @@ AcpiExOpcode_1A_0T_1R ( ACPI_ERROR ((AE_INFO, "Unknown Index TargetType 0x%X in reference object %p", Operand[0]->Reference.TargetType, Operand[0])); - Status = AE_AML_OPERAND_TYPE; goto Cleanup; } @@ -1135,8 +1127,8 @@ AcpiExOpcode_1A_0T_1R ( case ACPI_TYPE_LOCAL_BANK_FIELD: case ACPI_TYPE_LOCAL_INDEX_FIELD: - Status = AcpiExReadDataFromField ( - WalkState, ReturnDesc, &TempDesc); + Status = AcpiExReadDataFromField (WalkState, + ReturnDesc, &TempDesc); if (ACPI_FAILURE (Status)) { goto Cleanup; @@ -1171,7 +1163,6 @@ AcpiExOpcode_1A_0T_1R ( ACPI_ERROR ((AE_INFO, "Unknown AML opcode 0x%X", WalkState->Opcode)); - Status = AE_AML_BAD_OPCODE; goto Cleanup; } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exoparg2.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exoparg2.c index 29b41a5072..f1ab70620d 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exoparg2.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exoparg2.c @@ -275,11 +275,10 @@ AcpiExOpcode_2A_2T_1R ( /* Quotient to ReturnDesc1, remainder to ReturnDesc2 */ - Status = AcpiUtDivide ( - Operand[0]->Integer.Value, - Operand[1]->Integer.Value, - &ReturnDesc1->Integer.Value, - &ReturnDesc2->Integer.Value); + Status = AcpiUtDivide (Operand[0]->Integer.Value, + Operand[1]->Integer.Value, + &ReturnDesc1->Integer.Value, + &ReturnDesc2->Integer.Value); if (ACPI_FAILURE (Status)) { goto Cleanup; @@ -290,7 +289,6 @@ AcpiExOpcode_2A_2T_1R ( ACPI_ERROR ((AE_INFO, "Unknown AML opcode 0x%X", WalkState->Opcode)); - Status = AE_AML_BAD_OPCODE; goto Cleanup; } @@ -375,10 +373,9 @@ AcpiExOpcode_2A_1T_1R ( goto Cleanup; } - ReturnDesc->Integer.Value = AcpiExDoMathOp ( - WalkState->Opcode, - Operand[0]->Integer.Value, - Operand[1]->Integer.Value); + ReturnDesc->Integer.Value = AcpiExDoMathOp (WalkState->Opcode, + Operand[0]->Integer.Value, + Operand[1]->Integer.Value); goto StoreResultToTarget; } @@ -395,17 +392,16 @@ AcpiExOpcode_2A_1T_1R ( /* ReturnDesc will contain the remainder */ - Status = AcpiUtDivide ( - Operand[0]->Integer.Value, - Operand[1]->Integer.Value, - NULL, - &ReturnDesc->Integer.Value); + Status = AcpiUtDivide (Operand[0]->Integer.Value, + Operand[1]->Integer.Value, + NULL, + &ReturnDesc->Integer.Value); break; case AML_CONCAT_OP: /* Concatenate (Data1, Data2, Result) */ - Status = AcpiExDoConcatenate ( - Operand[0], Operand[1], &ReturnDesc, WalkState); + Status = AcpiExDoConcatenate (Operand[0], Operand[1], + &ReturnDesc, WalkState); break; case AML_TO_STRING_OP: /* ToString (Buffer, Length, Result) (ACPI 2.0) */ @@ -452,8 +448,8 @@ AcpiExOpcode_2A_1T_1R ( /* ConcatenateResTemplate (Buffer, Buffer, Result) (ACPI 2.0) */ - Status = AcpiExConcatTemplate ( - Operand[0], Operand[1], &ReturnDesc, WalkState); + Status = AcpiExConcatTemplate (Operand[0], Operand[1], + &ReturnDesc, WalkState); break; case AML_INDEX_OP: /* Index (Source Index Result) */ @@ -636,8 +632,8 @@ AcpiExOpcode_2A_0T_1R ( /* LogicalOp (Operand0, Operand1) */ Status = AcpiExDoLogicalNumericOp (WalkState->Opcode, - Operand[0]->Integer.Value, Operand[1]->Integer.Value, - &LogicalResult); + Operand[0]->Integer.Value, Operand[1]->Integer.Value, + &LogicalResult); goto StoreLogicalResult; } else if (WalkState->OpInfo->Flags & AML_LOGICAL) @@ -645,7 +641,7 @@ AcpiExOpcode_2A_0T_1R ( /* LogicalOp (Operand0, Operand1) */ Status = AcpiExDoLogicalOp (WalkState->Opcode, Operand[0], - Operand[1], &LogicalResult); + Operand[1], &LogicalResult); goto StoreLogicalResult; } @@ -676,7 +672,6 @@ AcpiExOpcode_2A_0T_1R ( ACPI_ERROR ((AE_INFO, "Unknown AML opcode 0x%X", WalkState->Opcode)); - Status = AE_AML_BAD_OPCODE; goto Cleanup; } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exoparg3.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exoparg3.c index aa52392d10..b2c49bef8d 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exoparg3.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exoparg3.c @@ -178,8 +178,7 @@ AcpiExOpcode_3A_0T_0R ( case AML_FATAL_OP: /* Fatal (FatalType FatalCode FatalArg) */ ACPI_DEBUG_PRINT ((ACPI_DB_INFO, - "FatalOp: Type %X Code %X Arg %X " - "<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n", + "FatalOp: Type %X Code %X Arg %X <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n", (UINT32) Operand[0]->Integer.Value, (UINT32) Operand[1]->Integer.Value, (UINT32) Operand[2]->Integer.Value)); @@ -187,8 +186,8 @@ AcpiExOpcode_3A_0T_0R ( Fatal = ACPI_ALLOCATE (sizeof (ACPI_SIGNAL_FATAL_INFO)); if (Fatal) { - Fatal->Type = (UINT32) Operand[0]->Integer.Value; - Fatal->Code = (UINT32) Operand[1]->Integer.Value; + Fatal->Type = (UINT32) Operand[0]->Integer.Value; + Fatal->Code = (UINT32) Operand[1]->Integer.Value; Fatal->Argument = (UINT32) Operand[2]->Integer.Value; } @@ -216,7 +215,6 @@ AcpiExOpcode_3A_0T_0R ( ACPI_ERROR ((AE_INFO, "Unknown AML opcode 0x%X", WalkState->Opcode)); - Status = AE_AML_BAD_OPCODE; goto Cleanup; } @@ -264,7 +262,7 @@ AcpiExOpcode_3A_1T_1R ( * either a String or a Buffer, so just use its type. */ ReturnDesc = AcpiUtCreateInternalObject ( - (Operand[0])->Common.Type); + (Operand[0])->Common.Type); if (!ReturnDesc) { Status = AE_NO_MEMORY; @@ -289,8 +287,8 @@ AcpiExOpcode_3A_1T_1R ( else if ((Index + Length) > Operand[0]->String.Length) { - Length = - (ACPI_SIZE) Operand[0]->String.Length - (ACPI_SIZE) Index; + Length = (ACPI_SIZE) Operand[0]->String.Length - + (ACPI_SIZE) Index; } /* Strings always have a sub-pointer, not so for buffers */ @@ -336,8 +334,8 @@ AcpiExOpcode_3A_1T_1R ( { /* We have a buffer, copy the portion requested */ - memcpy (Buffer, - Operand[0]->String.Pointer + Index, Length); + memcpy (Buffer, Operand[0]->String.Pointer + Index, + Length); } /* Set the length of the new String/Buffer */ @@ -354,7 +352,6 @@ AcpiExOpcode_3A_1T_1R ( ACPI_ERROR ((AE_INFO, "Unknown AML opcode 0x%X", WalkState->Opcode)); - Status = AE_AML_BAD_OPCODE; goto Cleanup; } @@ -372,12 +369,12 @@ Cleanup: AcpiUtRemoveReference (ReturnDesc); WalkState->ResultObj = NULL; } + + /* Set the return object and exit */ + else { - /* Set the return object and exit */ - WalkState->ResultObj = ReturnDesc; } - return_ACPI_STATUS (Status); } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exoparg6.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exoparg6.c index 6423334b8c..a7d76d686c 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exoparg6.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exoparg6.c @@ -205,8 +205,8 @@ AcpiExDoMatch ( * True if equal: (P[i] == M) * Change to: (M == P[i]) */ - Status = AcpiExDoLogicalOp ( - AML_LEQUAL_OP, MatchObj, PackageObj, &LogicalResult); + Status = AcpiExDoLogicalOp (AML_LEQUAL_OP, MatchObj, PackageObj, + &LogicalResult); if (ACPI_FAILURE (Status)) { return (FALSE); @@ -218,8 +218,8 @@ AcpiExDoMatch ( * True if less than or equal: (P[i] <= M) (P[i] NotGreater than M) * Change to: (M >= P[i]) (M NotLess than P[i]) */ - Status = AcpiExDoLogicalOp ( - AML_LLESS_OP, MatchObj, PackageObj, &LogicalResult); + Status = AcpiExDoLogicalOp (AML_LLESS_OP, MatchObj, PackageObj, + &LogicalResult); if (ACPI_FAILURE (Status)) { return (FALSE); @@ -232,8 +232,8 @@ AcpiExDoMatch ( * True if less than: (P[i] < M) * Change to: (M > P[i]) */ - Status = AcpiExDoLogicalOp ( - AML_LGREATER_OP, MatchObj, PackageObj, &LogicalResult); + Status = AcpiExDoLogicalOp (AML_LGREATER_OP, MatchObj, PackageObj, + &LogicalResult); if (ACPI_FAILURE (Status)) { return (FALSE); @@ -245,8 +245,8 @@ AcpiExDoMatch ( * True if greater than or equal: (P[i] >= M) (P[i] NotLess than M) * Change to: (M <= P[i]) (M NotGreater than P[i]) */ - Status = AcpiExDoLogicalOp ( - AML_LGREATER_OP, MatchObj, PackageObj, &LogicalResult); + Status = AcpiExDoLogicalOp (AML_LGREATER_OP, MatchObj, PackageObj, + &LogicalResult); if (ACPI_FAILURE (Status)) { return (FALSE); @@ -259,8 +259,8 @@ AcpiExDoMatch ( * True if greater than: (P[i] > M) * Change to: (M < P[i]) */ - Status = AcpiExDoLogicalOp ( - AML_LLESS_OP, MatchObj, PackageObj, &LogicalResult); + Status = AcpiExDoLogicalOp (AML_LLESS_OP, MatchObj, PackageObj, + &LogicalResult); if (ACPI_FAILURE (Status)) { return (FALSE); @@ -376,13 +376,13 @@ AcpiExOpcode_6A_0T_1R ( * non-match. */ if (!AcpiExDoMatch ((UINT32) Operand[1]->Integer.Value, - ThisElement, Operand[2])) + ThisElement, Operand[2])) { continue; } if (!AcpiExDoMatch ((UINT32) Operand[3]->Integer.Value, - ThisElement, Operand[4])) + ThisElement, Operand[4])) { continue; } @@ -403,7 +403,6 @@ AcpiExOpcode_6A_0T_1R ( ACPI_ERROR ((AE_INFO, "Unknown AML opcode 0x%X", WalkState->Opcode)); - Status = AE_AML_BAD_OPCODE; goto Cleanup; } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exprep.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exprep.c index 91ee2b8c0b..d84ccc3efb 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exprep.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exprep.c @@ -1,6 +1,6 @@ /****************************************************************************** * - * Module Name: exprep - ACPI AML field prep utilities + * Module Name: exprep - ACPI AML (p-code) execution - field prep utilities * *****************************************************************************/ @@ -141,7 +141,6 @@ AcpiExGenerateAccess ( UINT32 FieldBitLength, UINT32 RegionLength); - /******************************************************************************* * * FUNCTION: AcpiExGenerateAccess @@ -186,13 +185,10 @@ AcpiExGenerateAccess ( /* Round Field start offset and length to "minimal" byte boundaries */ - FieldByteOffset = ACPI_DIV_8 ( - ACPI_ROUND_DOWN (FieldBitOffset, 8)); - - FieldByteEndOffset = ACPI_DIV_8 ( - ACPI_ROUND_UP (FieldBitLength + FieldBitOffset, 8)); - - FieldByteLength = FieldByteEndOffset - FieldByteOffset; + FieldByteOffset = ACPI_DIV_8 (ACPI_ROUND_DOWN (FieldBitOffset, 8)); + FieldByteEndOffset = ACPI_DIV_8 (ACPI_ROUND_UP (FieldBitLength + + FieldBitOffset, 8)); + FieldByteLength = FieldByteEndOffset - FieldByteOffset; ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, "Bit length %u, Bit offset %u\n", @@ -217,8 +213,7 @@ AcpiExGenerateAccess ( * are done. (This does not optimize for the perfectly aligned * case yet). */ - if (ACPI_ROUND_UP (FieldByteEndOffset, AccessByteWidth) <= - RegionLength) + if (ACPI_ROUND_UP (FieldByteEndOffset, AccessByteWidth) <= RegionLength) { FieldStartOffset = ACPI_ROUND_DOWN (FieldByteOffset, AccessByteWidth) / @@ -242,8 +237,7 @@ AcpiExGenerateAccess ( if (Accesses <= 1) { ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, - "Entire field can be accessed " - "with one operation of size %u\n", + "Entire field can be accessed with one operation of size %u\n", AccessByteWidth)); return_VALUE (AccessByteWidth); } @@ -254,15 +248,14 @@ AcpiExGenerateAccess ( */ if (Accesses < MinimumAccesses) { - MinimumAccesses = Accesses; + MinimumAccesses = Accesses; MinimumAccessWidth = AccessByteWidth; } } else { ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, - "AccessWidth %u end is NOT within region\n", - AccessByteWidth)); + "AccessWidth %u end is NOT within region\n", AccessByteWidth)); if (AccessByteWidth == 1) { ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, @@ -290,7 +283,6 @@ AcpiExGenerateAccess ( */ ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, "Cannot access field in one operation, using width 8\n")); - return_VALUE (8); } #endif /* ACPI_UNDER_DEVELOPMENT */ @@ -375,7 +367,6 @@ AcpiExDecodeFieldAccess ( ACPI_ERROR ((AE_INFO, "Unknown field access type 0x%X", Access)); - return_UINT32 (0); } @@ -455,8 +446,8 @@ AcpiExPrepCommonFieldObject ( * For all other access types (Byte, Word, Dword, Qword), the Bitwidth is * the same (equivalent) as the ByteAlignment. */ - AccessBitWidth = AcpiExDecodeFieldAccess ( - ObjDesc, FieldFlags, &ByteAlignment); + AccessBitWidth = AcpiExDecodeFieldAccess (ObjDesc, FieldFlags, + &ByteAlignment); if (!AccessBitWidth) { return_ACPI_STATUS (AE_AML_OPERAND_VALUE); @@ -552,8 +543,8 @@ AcpiExPrepFieldValue ( ObjDesc->CommonField.Node = Info->FieldNode; Status = AcpiExPrepCommonFieldObject (ObjDesc, - Info->FieldFlags, Info->Attribute, - Info->FieldBitPosition, Info->FieldBitLength); + Info->FieldFlags, Info->Attribute, + Info->FieldBitPosition, Info->FieldBitLength); if (ACPI_FAILURE (Status)) { AcpiUtDeleteObjectDesc (ObjDesc); @@ -585,10 +576,8 @@ AcpiExPrepFieldValue ( } } - ObjDesc->Field.ResourceBuffer = - SecondDesc->Buffer.Pointer; - ObjDesc->Field.ResourceLength = - (UINT16) SecondDesc->Buffer.Length; + ObjDesc->Field.ResourceBuffer = SecondDesc->Buffer.Pointer; + ObjDesc->Field.ResourceLength = (UINT16) SecondDesc->Buffer.Length; } else if (Info->ResourceBuffer) { @@ -610,8 +599,7 @@ AcpiExPrepFieldValue ( if (AccessByteWidth < 256) { - ObjDesc->CommonField.AccessByteWidth = - (UINT8) AccessByteWidth; + ObjDesc->CommonField.AccessByteWidth = (UINT8) AccessByteWidth; } } @@ -621,10 +609,8 @@ AcpiExPrepFieldValue ( ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, "RegionField: BitOff %X, Off %X, Gran %X, Region %p\n", - ObjDesc->Field.StartFieldBitOffset, - ObjDesc->Field.BaseByteOffset, - ObjDesc->Field.AccessByteWidth, - ObjDesc->Field.RegionObj)); + ObjDesc->Field.StartFieldBitOffset, ObjDesc->Field.BaseByteOffset, + ObjDesc->Field.AccessByteWidth, ObjDesc->Field.RegionObj)); break; case ACPI_TYPE_LOCAL_BANK_FIELD: @@ -704,8 +690,7 @@ AcpiExPrepFieldValue ( ObjDesc->IndexField.AccessByteWidth); ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, - "IndexField: BitOff %X, Off %X, Value %X, " - "Gran %X, Index %p, Data %p\n", + "IndexField: BitOff %X, Off %X, Value %X, Gran %X, Index %p, Data %p\n", ObjDesc->IndexField.StartFieldBitOffset, ObjDesc->IndexField.BaseByteOffset, ObjDesc->IndexField.Value, @@ -725,11 +710,10 @@ AcpiExPrepFieldValue ( * Store the constructed descriptor (ObjDesc) into the parent Node, * preserving the current type of that NamedObj. */ - Status = AcpiNsAttachObject ( - Info->FieldNode, ObjDesc, AcpiNsGetType (Info->FieldNode)); + Status = AcpiNsAttachObject (Info->FieldNode, ObjDesc, + AcpiNsGetType (Info->FieldNode)); - ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, - "Set NamedObj %p [%4.4s], ObjDesc %p\n", + ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, "Set NamedObj %p [%4.4s], ObjDesc %p\n", Info->FieldNode, AcpiUtGetNodeName (Info->FieldNode), ObjDesc)); /* Remove local reference to the object */ diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exregion.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exregion.c index 23c04dcb77..cf60500f30 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exregion.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exregion.c @@ -489,8 +489,7 @@ AcpiExPciConfigSpaceHandler ( PciRegister = (UINT16) (UINT32) Address; ACPI_DEBUG_PRINT ((ACPI_DB_INFO, - "Pci-Config %u (%u) Seg(%04x) Bus(%04x) " - "Dev(%04x) Func(%04x) Reg(%04x)\n", + "Pci-Config %u (%u) Seg(%04x) Bus(%04x) Dev(%04x) Func(%04x) Reg(%04x)\n", Function, BitWidth, PciId->Segment, PciId->Bus, PciId->Device, PciId->Function, PciRegister)); @@ -499,14 +498,14 @@ AcpiExPciConfigSpaceHandler ( case ACPI_READ: *Value = 0; - Status = AcpiOsReadPciConfiguration ( - PciId, PciRegister, Value, BitWidth); + Status = AcpiOsReadPciConfiguration (PciId, PciRegister, + Value, BitWidth); break; case ACPI_WRITE: - Status = AcpiOsWritePciConfiguration ( - PciId, PciRegister, *Value, BitWidth); + Status = AcpiOsWritePciConfiguration (PciId, PciRegister, + *Value, BitWidth); break; default: diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exresnte.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exresnte.c index 4c334f6ac1..6967bbb3f9 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exresnte.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exresnte.c @@ -170,9 +170,9 @@ AcpiExResolveNodeToValue ( * The stack pointer points to a ACPI_NAMESPACE_NODE (Node). Get the * object that is attached to the Node. */ - Node = *ObjectPtr; + Node = *ObjectPtr; SourceDesc = AcpiNsGetAttachedObject (Node); - EntryType = AcpiNsGetType ((ACPI_HANDLE) Node); + EntryType = AcpiNsGetType ((ACPI_HANDLE) Node); ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Entry=%p SourceDesc=%p [%s]\n", Node, SourceDesc, AcpiUtGetTypeName (EntryType))); @@ -182,15 +182,15 @@ AcpiExResolveNodeToValue ( { /* There is always exactly one level of indirection */ - Node = ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, Node->Object); + Node = ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, Node->Object); SourceDesc = AcpiNsGetAttachedObject (Node); - EntryType = AcpiNsGetType ((ACPI_HANDLE) Node); + EntryType = AcpiNsGetType ((ACPI_HANDLE) Node); *ObjectPtr = Node; } /* * Several object types require no further processing: - * 1) Device/Thermal objects don't have a "real" subobject, return Node + * 1) Device/Thermal objects don't have a "real" subobject, return the Node * 2) Method locals and arguments have a pseudo-Node * 3) 10/2007: Added method type to assist with Package construction. */ diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exresolv.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exresolv.c index 6628e93e63..d32e8426e0 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exresolv.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exresolv.c @@ -191,8 +191,8 @@ AcpiExResolveToValue ( if (ACPI_GET_DESCRIPTOR_TYPE (*StackPtr) == ACPI_DESC_TYPE_NAMED) { Status = AcpiExResolveNodeToValue ( - ACPI_CAST_INDIRECT_PTR (ACPI_NAMESPACE_NODE, StackPtr), - WalkState); + ACPI_CAST_INDIRECT_PTR (ACPI_NAMESPACE_NODE, StackPtr), + WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -251,7 +251,7 @@ AcpiExResolveObjectToValue ( * Note: this increments the local's object reference count */ Status = AcpiDsMethodDataGetValue (RefType, - StackDesc->Reference.Value, WalkState, &ObjDesc); + StackDesc->Reference.Value, WalkState, &ObjDesc); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -297,6 +297,7 @@ AcpiExResolveObjectToValue ( * (i.e., dereference the package index) * Delete the ref object, increment the returned object */ + AcpiUtRemoveReference (StackDesc); AcpiUtAddReference (ObjDesc); *StackPtr = ObjDesc; } @@ -307,8 +308,7 @@ AcpiExResolveObjectToValue ( * the package, can't dereference it */ ACPI_ERROR ((AE_INFO, - "Attempt to dereference an Index to " - "NULL package element Idx=%p", + "Attempt to dereference an Index to NULL package element Idx=%p", StackDesc)); Status = AE_AML_UNINITIALIZED_ELEMENT; } @@ -359,8 +359,7 @@ AcpiExResolveObjectToValue ( default: ACPI_ERROR ((AE_INFO, - "Unknown Reference type 0x%X in %p", - RefType, StackDesc)); + "Unknown Reference type 0x%X in %p", RefType, StackDesc)); Status = AE_AML_INTERNAL; break; } @@ -381,8 +380,7 @@ AcpiExResolveObjectToValue ( case ACPI_TYPE_LOCAL_BANK_FIELD: case ACPI_TYPE_LOCAL_INDEX_FIELD: - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, - "FieldRead SourceDesc=%p Type=%X\n", + ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "FieldRead SourceDesc=%p Type=%X\n", StackDesc, StackDesc->Common.Type)); Status = AcpiExReadDataFromField (WalkState, StackDesc, &ObjDesc); @@ -453,8 +451,7 @@ AcpiExResolveMultiple ( if (Type == ACPI_TYPE_LOCAL_ALIAS) { Type = ((ACPI_NAMESPACE_NODE *) ObjDesc)->Type; - ObjDesc = AcpiNsGetAttachedObject ( - (ACPI_NAMESPACE_NODE *) ObjDesc); + ObjDesc = AcpiNsGetAttachedObject ((ACPI_NAMESPACE_NODE *) ObjDesc); } if (!ObjDesc) @@ -568,7 +565,7 @@ AcpiExResolveMultiple ( if (ReturnDesc) { Status = AcpiDsMethodDataGetValue (ObjDesc->Reference.Class, - ObjDesc->Reference.Value, WalkState, &ObjDesc); + ObjDesc->Reference.Value, WalkState, &ObjDesc); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -578,7 +575,7 @@ AcpiExResolveMultiple ( else { Status = AcpiDsMethodDataGetNode (ObjDesc->Reference.Class, - ObjDesc->Reference.Value, WalkState, &Node); + ObjDesc->Reference.Value, WalkState, &Node); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -603,8 +600,7 @@ AcpiExResolveMultiple ( default: ACPI_ERROR ((AE_INFO, - "Unknown Reference Class 0x%2.2X", - ObjDesc->Reference.Class)); + "Unknown Reference Class 0x%2.2X", ObjDesc->Reference.Class)); return_ACPI_STATUS (AE_AML_INTERNAL); } } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exresop.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exresop.c index 214e6de2f8..fab4993c1d 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exresop.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exresop.c @@ -171,8 +171,7 @@ AcpiExCheckObjectType ( * specification, a store to a constant is a noop.) */ if ((ThisType == ACPI_TYPE_INTEGER) && - (((ACPI_OPERAND_OBJECT *) Object)->Common.Flags & - AOPOBJ_AML_CONSTANT)) + (((ACPI_OPERAND_OBJECT *) Object)->Common.Flags & AOPOBJ_AML_CONSTANT)) { return (AE_OK); } @@ -289,8 +288,7 @@ AcpiExResolveOperands ( */ if (ObjectType == ACPI_TYPE_LOCAL_ALIAS) { - ObjDesc = AcpiNsGetAttachedObject ( - (ACPI_NAMESPACE_NODE *) ObjDesc); + ObjDesc = AcpiNsGetAttachedObject ((ACPI_NAMESPACE_NODE *) ObjDesc); *StackPtr = ObjDesc; ObjectType = ((ACPI_NAMESPACE_NODE *) ObjDesc)->Type; } @@ -371,8 +369,7 @@ AcpiExResolveOperands ( { case ARGI_REF_OR_STRING: /* Can be a String or Reference */ - if ((ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) == - ACPI_DESC_TYPE_OPERAND) && + if ((ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) == ACPI_DESC_TYPE_OPERAND) && (ObjDesc->Common.Type == ACPI_TYPE_STRING)) { /* @@ -395,8 +392,6 @@ AcpiExResolveOperands ( case ARGI_TARGETREF: /* Allows implicit conversion rules before store */ case ARGI_FIXED_TARGET: /* No implicit conversion before store to target */ case ARGI_SIMPLE_TARGET: /* Name, Local, or Arg - no implicit conversion */ - case ARGI_STORE_TARGET: - /* * Need an operand of type ACPI_TYPE_LOCAL_REFERENCE * A Namespace Node is OK as-is @@ -406,8 +401,8 @@ AcpiExResolveOperands ( goto NextOperand; } - Status = AcpiExCheckObjectType ( - ACPI_TYPE_LOCAL_REFERENCE, ObjectType, ObjDesc); + Status = AcpiExCheckObjectType (ACPI_TYPE_LOCAL_REFERENCE, + ObjectType, ObjDesc); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -558,8 +553,8 @@ AcpiExResolveOperands ( * But we can implicitly convert from a BUFFER or INTEGER * Aka - "Implicit Source Operand Conversion" */ - Status = AcpiExConvertToString ( - ObjDesc, StackPtr, ACPI_IMPLICIT_CONVERT_HEX); + Status = AcpiExConvertToString (ObjDesc, StackPtr, + ACPI_IMPLICIT_CONVERT_HEX); if (ACPI_FAILURE (Status)) { if (Status == AE_TYPE) @@ -692,10 +687,8 @@ AcpiExResolveOperands ( case ARGI_REGION_OR_BUFFER: /* Used by Load() only */ - /* - * Need an operand of type REGION or a BUFFER - * (which could be a resolved region field) - */ + /* Need an operand of type REGION or a BUFFER (which could be a resolved region field) */ + switch (ObjDesc->Common.Type) { case ACPI_TYPE_BUFFER: @@ -739,9 +732,9 @@ AcpiExResolveOperands ( if (AcpiGbl_EnableInterpreterSlack) { /* - * Enable original behavior of Store(), allowing any - * and all objects as the source operand. The ACPI - * spec does not allow this, however. + * Enable original behavior of Store(), allowing any and all + * objects as the source operand. The ACPI spec does not + * allow this, however. */ break; } @@ -754,8 +747,7 @@ AcpiExResolveOperands ( } ACPI_ERROR ((AE_INFO, - "Needed Integer/Buffer/String/Package/Ref/Ddb]" - ", found [%s] %p", + "Needed Integer/Buffer/String/Package/Ref/Ddb], found [%s] %p", AcpiUtGetObjectTypeName (ObjDesc), ObjDesc)); return_ACPI_STATUS (AE_AML_OPERAND_TYPE); @@ -777,8 +769,8 @@ AcpiExResolveOperands ( * Make sure that the original object was resolved to the * required object type (Simple cases only). */ - Status = AcpiExCheckObjectType ( - TypeNeeded, (*StackPtr)->Common.Type, *StackPtr); + Status = AcpiExCheckObjectType (TypeNeeded, + (*StackPtr)->Common.Type, *StackPtr); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exstore.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exstore.c index 096d65d5bd..47c212ddec 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exstore.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exstore.c @@ -189,8 +189,8 @@ AcpiExStore ( * Storing an object into a Named node. */ Status = AcpiExStoreObjectToNode (SourceDesc, - (ACPI_NAMESPACE_NODE *) DestDesc, WalkState, - ACPI_IMPLICIT_CONVERSION); + (ACPI_NAMESPACE_NODE *) DestDesc, WalkState, + ACPI_IMPLICIT_CONVERSION); return_ACPI_STATUS (Status); } @@ -219,7 +219,7 @@ AcpiExStore ( /* Destination is not a Reference object */ ACPI_ERROR ((AE_INFO, - "Target is not a Reference or Constant object - [%s] %p", + "Target is not a Reference or Constant object - %s [%p]", AcpiUtGetObjectTypeName (DestDesc), DestDesc)); return_ACPI_STATUS (AE_AML_OPERAND_TYPE); @@ -240,8 +240,8 @@ AcpiExStore ( /* Storing an object into a Name "container" */ Status = AcpiExStoreObjectToNode (SourceDesc, - RefDesc->Reference.Object, - WalkState, ACPI_IMPLICIT_CONVERSION); + RefDesc->Reference.Object, + WalkState, ACPI_IMPLICIT_CONVERSION); break; case ACPI_REFCLASS_INDEX: @@ -257,7 +257,7 @@ AcpiExStore ( /* Store to a method local/arg */ Status = AcpiDsStoreObjectToLocal (RefDesc->Reference.Class, - RefDesc->Reference.Value, SourceDesc, WalkState); + RefDesc->Reference.Value, SourceDesc, WalkState); break; case ACPI_REFCLASS_DEBUG: @@ -266,7 +266,7 @@ AcpiExStore ( * displayed and otherwise has no effect -- see ACPI Specification */ ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, - "**** Write to Debug Object: Object %p [%s] ****:\n\n", + "**** Write to Debug Object: Object %p %s ****:\n\n", SourceDesc, AcpiUtGetObjectTypeName (SourceDesc))); ACPI_DEBUG_OBJECT (SourceDesc, 0, 0); @@ -346,8 +346,7 @@ AcpiExStoreObjectToIndex ( { /* Normal object, copy it */ - Status = AcpiUtCopyIobjectToIobject ( - SourceDesc, &NewDesc, WalkState); + Status = AcpiUtCopyIobjectToIobject (SourceDesc, &NewDesc, WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -429,7 +428,7 @@ AcpiExStoreObjectToIndex ( /* All other types are invalid */ ACPI_ERROR ((AE_INFO, - "Source must be type [Integer/Buffer/String], found [%s]", + "Source must be Integer/Buffer/String type, not %s", AcpiUtGetObjectTypeName (SourceDesc))); return_ACPI_STATUS (AE_AML_OPERAND_TYPE); } @@ -441,8 +440,8 @@ AcpiExStoreObjectToIndex ( default: ACPI_ERROR ((AE_INFO, - "Target is not of type [Package/BufferField]")); - Status = AE_AML_TARGET_TYPE; + "Target is not a Package or BufferField")); + Status = AE_AML_OPERAND_TYPE; break; } @@ -463,20 +462,20 @@ AcpiExStoreObjectToIndex ( * * DESCRIPTION: Store the object to the named object. * - * The assignment of an object to a named object is handled here. - * The value passed in will replace the current value (if any) - * with the input value. + * The Assignment of an object to a named object is handled here + * The value passed in will replace the current value (if any) + * with the input value. * - * When storing into an object the data is converted to the - * target object type then stored in the object. This means - * that the target object type (for an initialized target) will - * not be changed by a store operation. A CopyObject can change - * the target type, however. + * When storing into an object the data is converted to the + * target object type then stored in the object. This means + * that the target object type (for an initialized target) will + * not be changed by a store operation. A CopyObject can change + * the target type, however. * - * The ImplicitConversion flag is set to NO/FALSE only when - * storing to an ArgX -- as per the rules of the ACPI spec. + * The ImplicitConversion flag is set to NO/FALSE only when + * storing to an ArgX -- as per the rules of the ACPI spec. * - * Assumes parameters are already validated. + * Assumes parameters are already validated. * ******************************************************************************/ @@ -501,75 +500,9 @@ AcpiExStoreObjectToNode ( TargetType = AcpiNsGetType (Node); TargetDesc = AcpiNsGetAttachedObject (Node); - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Storing %p [%s] to node %p [%s]\n", + ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Storing %p (%s) to node %p (%s)\n", SourceDesc, AcpiUtGetObjectTypeName (SourceDesc), - Node, AcpiUtGetTypeName (TargetType))); - - /* Only limited target types possible for everything except CopyObject */ - - if (WalkState->Opcode != AML_COPY_OP) - { - /* - * Only CopyObject allows all object types to be overwritten. For - * TargetRef(s), there are restrictions on the object types that - * are allowed. - * - * Allowable operations/typing for Store: - * - * 1) Simple Store - * Integer --> Integer (Named/Local/Arg) - * String --> String (Named/Local/Arg) - * Buffer --> Buffer (Named/Local/Arg) - * Package --> Package (Named/Local/Arg) - * - * 2) Store with implicit conversion - * Integer --> String or Buffer (Named) - * String --> Integer or Buffer (Named) - * Buffer --> Integer or String (Named) - */ - switch (TargetType) - { - case ACPI_TYPE_PACKAGE: - /* - * Here, can only store a package to an existing package. - * Storing a package to a Local/Arg is OK, and handled - * elsewhere. - */ - if (WalkState->Opcode == AML_STORE_OP) - { - if (SourceDesc->Common.Type != ACPI_TYPE_PACKAGE) - { - ACPI_ERROR ((AE_INFO, - "Cannot assign type [%s] to [Package] " - "(source must be type Pkg)", - AcpiUtGetObjectTypeName (SourceDesc))); - - return_ACPI_STATUS (AE_AML_TARGET_TYPE); - } - break; - } - - /* Fallthrough */ - - case ACPI_TYPE_DEVICE: - case ACPI_TYPE_EVENT: - case ACPI_TYPE_MUTEX: - case ACPI_TYPE_REGION: - case ACPI_TYPE_POWER: - case ACPI_TYPE_PROCESSOR: - case ACPI_TYPE_THERMAL: - - ACPI_ERROR ((AE_INFO, - "Target must be [Buffer/Integer/String/Reference]" - ", found [%s] (%4.4s)", - AcpiUtGetTypeName (Node->Type), Node->Name.Ascii)); - - return_ACPI_STATUS (AE_AML_TARGET_TYPE); - - default: - break; - } - } + Node, AcpiUtGetTypeName (TargetType))); /* * Resolve the source object to an actual value @@ -585,13 +518,13 @@ AcpiExStoreObjectToNode ( switch (TargetType) { + case ACPI_TYPE_INTEGER: + case ACPI_TYPE_STRING: + case ACPI_TYPE_BUFFER: /* * The simple data types all support implicit source operand * conversion before the store. */ - case ACPI_TYPE_INTEGER: - case ACPI_TYPE_STRING: - case ACPI_TYPE_BUFFER: if ((WalkState->Opcode == AML_COPY_OP) || !ImplicitConversion) @@ -601,7 +534,8 @@ AcpiExStoreObjectToNode ( * an implicit conversion, as per the ACPI specification. * A direct store is performed instead. */ - Status = AcpiExStoreDirectToNode (SourceDesc, Node, WalkState); + Status = AcpiExStoreDirectToNode (SourceDesc, Node, + WalkState); break; } @@ -625,11 +559,11 @@ AcpiExStoreObjectToNode ( * store has been performed such that the node/object type * has been changed. */ - Status = AcpiNsAttachObject ( - Node, NewDesc, NewDesc->Common.Type); + Status = AcpiNsAttachObject (Node, NewDesc, + NewDesc->Common.Type); ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, - "Store type [%s] into [%s] via Convert/Attach\n", + "Store %s into %s via Convert/Attach\n", AcpiUtGetObjectTypeName (SourceDesc), AcpiUtGetObjectTypeName (NewDesc))); } @@ -651,14 +585,18 @@ AcpiExStoreObjectToNode ( default: /* - * CopyObject operator: No conversions for all other types. - * Instead, directly store a copy of the source object. + * No conversions for all other types. Directly store a copy of + * the source object. This is the ACPI spec-defined behavior for + * the CopyObject operator. * - * This is the ACPI spec-defined behavior for the CopyObject - * operator. (Note, for this default case, all normal - * Store/Target operations exited above with an error). + * NOTE: For the Store operator, this is a departure from the + * ACPI spec, which states "If conversion is impossible, abort + * the running control method". Instead, this code implements + * "If conversion is impossible, treat the Store operation as + * a CopyObject". */ - Status = AcpiExStoreDirectToNode (SourceDesc, Node, WalkState); + Status = AcpiExStoreDirectToNode (SourceDesc, Node, + WalkState); break; } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exstoren.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exstoren.c index f563f8a6a9..c1879b43d8 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exstoren.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exstoren.c @@ -196,15 +196,14 @@ AcpiExResolveObject ( (SourceDesc->Common.Type != ACPI_TYPE_BUFFER) && (SourceDesc->Common.Type != ACPI_TYPE_STRING) && !((SourceDesc->Common.Type == ACPI_TYPE_LOCAL_REFERENCE) && - (SourceDesc->Reference.Class== ACPI_REFCLASS_TABLE))) + (SourceDesc->Reference.Class== ACPI_REFCLASS_TABLE))) { /* Conversion successful but still not a valid type */ ACPI_ERROR ((AE_INFO, - "Cannot assign type [%s] to [%s] (must be type Int/Str/Buf)", + "Cannot assign type %s to %s (must be type Int/Str/Buf)", AcpiUtGetObjectTypeName (SourceDesc), AcpiUtGetTypeName (TargetType))); - Status = AE_AML_OPERAND_TYPE; } break; @@ -305,7 +304,7 @@ AcpiExStoreObjectToObject ( * converted object. */ Status = AcpiExConvertToTargetType (DestDesc->Common.Type, - SourceDesc, &ActualSrcDesc, WalkState); + SourceDesc, &ActualSrcDesc, WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -357,7 +356,7 @@ AcpiExStoreObjectToObject ( /* * All other types come here. */ - ACPI_WARNING ((AE_INFO, "Store into type [%s] not implemented", + ACPI_WARNING ((AE_INFO, "Store into type %s not implemented", AcpiUtGetObjectTypeName (DestDesc))); Status = AE_NOT_IMPLEMENTED; diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exstorob.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exstorob.c index bcfe8001b0..8c23aeead9 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exstorob.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exstorob.c @@ -1,6 +1,6 @@ /****************************************************************************** * - * Module Name: exstorob - AML object store support, store to object + * Module Name: exstorob - AML Interpreter object store support, store to object * *****************************************************************************/ @@ -293,9 +293,8 @@ AcpiExStoreStringToString ( ACPI_FREE (TargetDesc->String.Pointer); } - TargetDesc->String.Pointer = - ACPI_ALLOCATE_ZEROED ((ACPI_SIZE) Length + 1); - + TargetDesc->String.Pointer = ACPI_ALLOCATE_ZEROED ( + (ACPI_SIZE) Length + 1); if (!TargetDesc->String.Pointer) { return_ACPI_STATUS (AE_NO_MEMORY); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exsystem.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exsystem.c index 781348071d..49ec2e987b 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exsystem.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exsystem.c @@ -158,6 +158,7 @@ AcpiExSystemWaitSemaphore ( /* We must wait, so unlock the interpreter */ AcpiExExitInterpreter (); + Status = AcpiOsWaitSemaphore (Semaphore, 1, Timeout); ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, @@ -210,6 +211,7 @@ AcpiExSystemWaitMutex ( /* We must wait, so unlock the interpreter */ AcpiExExitInterpreter (); + Status = AcpiOsAcquireMutex (Mutex, Timeout); ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, @@ -260,8 +262,8 @@ AcpiExSystemDoStall ( * (ACPI specifies 100 usec as max, but this gives some slack in * order to support existing BIOSs) */ - ACPI_ERROR ((AE_INFO, - "Time parameter is too large (%u)", HowLong)); + ACPI_ERROR ((AE_INFO, "Time parameter is too large (%u)", + HowLong)); Status = AE_AML_OPERAND_VALUE; } else @@ -376,7 +378,7 @@ AcpiExSystemWaitEvent ( if (ObjDesc) { Status = AcpiExSystemWaitSemaphore (ObjDesc->Event.OsSemaphore, - (UINT16) TimeDesc->Integer.Value); + (UINT16) TimeDesc->Integer.Value); } return_ACPI_STATUS (Status); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exutils.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exutils.c index 0356a8d30f..90a791d122 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exutils.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exutils.c @@ -259,8 +259,8 @@ AcpiExTruncateFor32bitTable ( (ObjDesc->Integer.Value > (UINT64) ACPI_UINT32_MAX)) { /* - * We are executing in a 32-bit ACPI table. Truncate - * the value to 32 bits by zeroing out the upper 32-bit field + * We are executing in a 32-bit ACPI table. + * Truncate the value to 32 bits by zeroing out the upper 32-bit field */ ObjDesc->Integer.Value &= (UINT64) ACPI_UINT32_MAX; return (TRUE); @@ -304,7 +304,7 @@ AcpiExAcquireGlobalLock ( /* Attempt to get the global lock, wait forever */ Status = AcpiExAcquireMutexObject (ACPI_WAIT_FOREVER, - AcpiGbl_GlobalLockMutex, AcpiOsGetThreadId ()); + AcpiGbl_GlobalLockMutex, AcpiOsGetThreadId ()); if (ACPI_FAILURE (Status)) { @@ -441,8 +441,7 @@ AcpiExEisaIdToString ( if (CompressedId > ACPI_UINT32_MAX) { ACPI_WARNING ((AE_INFO, - "Expected EISAID is larger than 32 bits: " - "0x%8.8X%8.8X, truncating", + "Expected EISAID is larger than 32 bits: 0x%8.8X%8.8X, truncating", ACPI_FORMAT_UINT64 (CompressedId))); } @@ -569,4 +568,5 @@ AcpiIsValidSpaceId ( return (TRUE); } + #endif diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwacpi.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwacpi.c index 87a41c323a..0530383533 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwacpi.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwacpi.c @@ -185,7 +185,7 @@ AcpiHwSetMode ( /* BIOS should have disabled ALL fixed and GP events */ Status = AcpiHwWritePort (AcpiGbl_FADT.SmiCommand, - (UINT32) AcpiGbl_FADT.AcpiEnable, 8); + (UINT32) AcpiGbl_FADT.AcpiEnable, 8); ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Attempting to enable ACPI mode\n")); break; @@ -195,9 +195,9 @@ AcpiHwSetMode ( * enable bits to default */ Status = AcpiHwWritePort (AcpiGbl_FADT.SmiCommand, - (UINT32) AcpiGbl_FADT.AcpiDisable, 8); + (UINT32) AcpiGbl_FADT.AcpiDisable, 8); ACPI_DEBUG_PRINT ((ACPI_DB_INFO, - "Attempting to enable Legacy (non-ACPI) mode\n")); + "Attempting to enable Legacy (non-ACPI) mode\n")); break; default: @@ -221,8 +221,8 @@ AcpiHwSetMode ( { if (AcpiHwGetMode () == Mode) { - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, - "Mode %X successfully enabled\n", Mode)); + ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Mode %X successfully enabled\n", + Mode)); return_ACPI_STATUS (AE_OK); } AcpiOsStall (ACPI_USEC_PER_MSEC); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwesleep.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwesleep.c index ecc729cc09..ba8acdcecc 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwesleep.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwesleep.c @@ -202,8 +202,7 @@ AcpiHwExtendedSleep ( /* Clear wake status (WAK_STS) */ - Status = AcpiWrite ((UINT64) ACPI_X_WAKE_STATUS, - &AcpiGbl_FADT.SleepStatus); + Status = AcpiWrite ((UINT64) ACPI_X_WAKE_STATUS, &AcpiGbl_FADT.SleepStatus); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -275,7 +274,7 @@ AcpiHwExtendedWakePrep ( Status = AcpiGetSleepTypeData (ACPI_STATE_S0, - &AcpiGbl_SleepTypeA, &AcpiGbl_SleepTypeB); + &AcpiGbl_SleepTypeA, &AcpiGbl_SleepTypeB); if (ACPI_SUCCESS (Status)) { SleepTypeValue = ((AcpiGbl_SleepTypeA << ACPI_X_SLEEP_TYPE_POSITION) & diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwgpe.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwgpe.c index 8e4cc8bbbc..1ab6965447 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwgpe.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwgpe.c @@ -280,7 +280,9 @@ AcpiHwClearGpe ( */ RegisterBit = AcpiHwGetGpeRegisterBit (GpeEventInfo); - Status = AcpiHwWrite (RegisterBit, &GpeRegisterInfo->StatusAddress); + Status = AcpiHwWrite (RegisterBit, + &GpeRegisterInfo->StatusAddress); + return (Status); } @@ -321,7 +323,7 @@ AcpiHwGetGpeStatus ( /* GPE currently handled? */ if (ACPI_GPE_DISPATCH_TYPE (GpeEventInfo->Flags) != - ACPI_GPE_DISPATCH_NONE) + ACPI_GPE_DISPATCH_NONE) { LocalEventStatus |= ACPI_EVENT_FLAG_HAS_HANDLER; } @@ -403,8 +405,8 @@ AcpiHwGpeEnableWrite ( GpeRegisterInfo->EnableMask = EnableMask; - Status = AcpiHwWrite (EnableMask, &GpeRegisterInfo->EnableAddress); + return (Status); } @@ -529,7 +531,7 @@ AcpiHwEnableRuntimeGpeBlock ( /* Enable all "runtime" GPEs in this register */ Status = AcpiHwGpeEnableWrite (GpeRegisterInfo->EnableForRun, - GpeRegisterInfo); + GpeRegisterInfo); if (ACPI_FAILURE (Status)) { return (Status); @@ -576,7 +578,7 @@ AcpiHwEnableWakeupGpeBlock ( * remaining ones. */ Status = AcpiHwGpeEnableWrite (GpeRegisterInfo->EnableForWake, - GpeRegisterInfo); + GpeRegisterInfo); if (ACPI_FAILURE (Status)) { return (Status); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwregs.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwregs.c index 8cc2f473eb..492833e01d 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwregs.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwregs.c @@ -140,7 +140,6 @@ AcpiHwWriteMultiple ( #endif /* !ACPI_REDUCED_HARDWARE */ - /****************************************************************************** * * FUNCTION: AcpiHwValidateRegister @@ -269,14 +268,14 @@ AcpiHwRead ( if (Reg->SpaceId == ACPI_ADR_SPACE_SYSTEM_MEMORY) { Status = AcpiOsReadMemory ((ACPI_PHYSICAL_ADDRESS) - Address, &Value64, Reg->BitWidth); + Address, &Value64, Reg->BitWidth); *Value = (UINT32) Value64; } else /* ACPI_ADR_SPACE_SYSTEM_IO, validated earlier */ { Status = AcpiHwReadPort ((ACPI_IO_ADDRESS) - Address, Value, Reg->BitWidth); + Address, Value, Reg->BitWidth); } ACPI_DEBUG_PRINT ((ACPI_DB_IO, @@ -330,12 +329,12 @@ AcpiHwWrite ( if (Reg->SpaceId == ACPI_ADR_SPACE_SYSTEM_MEMORY) { Status = AcpiOsWriteMemory ((ACPI_PHYSICAL_ADDRESS) - Address, (UINT64) Value, Reg->BitWidth); + Address, (UINT64) Value, Reg->BitWidth); } else /* ACPI_ADR_SPACE_SYSTEM_IO, validated earlier */ { Status = AcpiHwWritePort ((ACPI_IO_ADDRESS) - Address, Value, Reg->BitWidth); + Address, Value, Reg->BitWidth); } ACPI_DEBUG_PRINT ((ACPI_DB_IO, @@ -380,7 +379,7 @@ AcpiHwClearAcpiStatus ( /* Clear the fixed events in PM1 A/B */ Status = AcpiHwRegisterWrite (ACPI_REGISTER_PM1_STATUS, - ACPI_BITMASK_ALL_FIXED_STATUS); + ACPI_BITMASK_ALL_FIXED_STATUS); AcpiOsReleaseLock (AcpiGbl_HardwareLock, LockFlags); @@ -499,22 +498,22 @@ AcpiHwRegisterRead ( case ACPI_REGISTER_PM1_STATUS: /* PM1 A/B: 16-bit access each */ Status = AcpiHwReadMultiple (&Value, - &AcpiGbl_XPm1aStatus, - &AcpiGbl_XPm1bStatus); + &AcpiGbl_XPm1aStatus, + &AcpiGbl_XPm1bStatus); break; case ACPI_REGISTER_PM1_ENABLE: /* PM1 A/B: 16-bit access each */ Status = AcpiHwReadMultiple (&Value, - &AcpiGbl_XPm1aEnable, - &AcpiGbl_XPm1bEnable); + &AcpiGbl_XPm1aEnable, + &AcpiGbl_XPm1bEnable); break; case ACPI_REGISTER_PM1_CONTROL: /* PM1 A/B: 16-bit access each */ Status = AcpiHwReadMultiple (&Value, - &AcpiGbl_FADT.XPm1aControlBlock, - &AcpiGbl_FADT.XPm1bControlBlock); + &AcpiGbl_FADT.XPm1aControlBlock, + &AcpiGbl_FADT.XPm1bControlBlock); /* * Zero the write-only bits. From the ACPI specification, "Hardware @@ -610,15 +609,15 @@ AcpiHwRegisterWrite ( Value &= ~ACPI_PM1_STATUS_PRESERVED_BITS; Status = AcpiHwWriteMultiple (Value, - &AcpiGbl_XPm1aStatus, - &AcpiGbl_XPm1bStatus); + &AcpiGbl_XPm1aStatus, + &AcpiGbl_XPm1bStatus); break; case ACPI_REGISTER_PM1_ENABLE: /* PM1 A/B: 16-bit access each */ Status = AcpiHwWriteMultiple (Value, - &AcpiGbl_XPm1aEnable, - &AcpiGbl_XPm1bEnable); + &AcpiGbl_XPm1aEnable, + &AcpiGbl_XPm1bEnable); break; case ACPI_REGISTER_PM1_CONTROL: /* PM1 A/B: 16-bit access each */ @@ -627,8 +626,8 @@ AcpiHwRegisterWrite ( * Note: This includes SCI_EN, we never want to change this bit */ Status = AcpiHwReadMultiple (&ReadValue, - &AcpiGbl_FADT.XPm1aControlBlock, - &AcpiGbl_FADT.XPm1bControlBlock); + &AcpiGbl_FADT.XPm1aControlBlock, + &AcpiGbl_FADT.XPm1bControlBlock); if (ACPI_FAILURE (Status)) { goto Exit; @@ -641,8 +640,8 @@ AcpiHwRegisterWrite ( /* Now we can write the data */ Status = AcpiHwWriteMultiple (Value, - &AcpiGbl_FADT.XPm1aControlBlock, - &AcpiGbl_FADT.XPm1bControlBlock); + &AcpiGbl_FADT.XPm1aControlBlock, + &AcpiGbl_FADT.XPm1bControlBlock); break; case ACPI_REGISTER_PM2_CONTROL: /* 8-bit access */ diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwsleep.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwsleep.c index f80f421288..6438ea7aba 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwsleep.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwsleep.c @@ -155,8 +155,7 @@ AcpiHwLegacySleep ( /* Clear wake status */ - Status = AcpiWriteBitRegister (ACPI_BITREG_WAKE_STATUS, - ACPI_CLEAR_STATUS); + Status = AcpiWriteBitRegister (ACPI_BITREG_WAKE_STATUS, ACPI_CLEAR_STATUS); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -190,7 +189,7 @@ AcpiHwLegacySleep ( /* Get current value of PM1A control */ Status = AcpiHwRegisterRead (ACPI_REGISTER_PM1_CONTROL, - &Pm1aControl); + &Pm1aControl); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -201,7 +200,7 @@ AcpiHwLegacySleep ( /* Clear the SLP_EN and SLP_TYP fields */ Pm1aControl &= ~(SleepTypeRegInfo->AccessBitMask | - SleepEnableRegInfo->AccessBitMask); + SleepEnableRegInfo->AccessBitMask); Pm1bControl = Pm1aControl; /* Insert the SLP_TYP bits */ @@ -255,7 +254,7 @@ AcpiHwLegacySleep ( AcpiOsStall (10 * ACPI_USEC_PER_SEC); Status = AcpiHwRegisterWrite (ACPI_REGISTER_PM1_CONTROL, - SleepEnableRegInfo->AccessBitMask); + SleepEnableRegInfo->AccessBitMask); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -311,7 +310,7 @@ AcpiHwLegacyWakePrep ( * by some machines. */ Status = AcpiGetSleepTypeData (ACPI_STATE_S0, - &AcpiGbl_SleepTypeA, &AcpiGbl_SleepTypeB); + &AcpiGbl_SleepTypeA, &AcpiGbl_SleepTypeB); if (ACPI_SUCCESS (Status)) { SleepTypeRegInfo = @@ -322,7 +321,7 @@ AcpiHwLegacyWakePrep ( /* Get current value of PM1A control */ Status = AcpiHwRegisterRead (ACPI_REGISTER_PM1_CONTROL, - &Pm1aControl); + &Pm1aControl); if (ACPI_SUCCESS (Status)) { /* Clear the SLP_EN and SLP_TYP fields */ @@ -407,8 +406,7 @@ AcpiHwLegacyWake ( * and use it to determine whether the system is rebooting or * resuming. Clear WAK_STS for compatibility. */ - (void) AcpiWriteBitRegister (ACPI_BITREG_WAKE_STATUS, - ACPI_CLEAR_STATUS); + (void) AcpiWriteBitRegister (ACPI_BITREG_WAKE_STATUS, ACPI_CLEAR_STATUS); AcpiGbl_SystemAwakeAndRunning = TRUE; /* Enable power button */ diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwxface.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwxface.c index 1a30db6aba..12c4ffbfae 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwxface.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwxface.c @@ -241,7 +241,7 @@ AcpiRead ( if (Reg->SpaceId == ACPI_ADR_SPACE_SYSTEM_MEMORY) { Status = AcpiOsReadMemory ((ACPI_PHYSICAL_ADDRESS) - Address, ReturnValue, Reg->BitWidth); + Address, ReturnValue, Reg->BitWidth); if (ACPI_FAILURE (Status)) { return (Status); @@ -259,7 +259,7 @@ AcpiRead ( } Status = AcpiHwReadPort ((ACPI_IO_ADDRESS) - Address, &ValueLo, Width); + Address, &ValueLo, Width); if (ACPI_FAILURE (Status)) { return (Status); @@ -270,7 +270,7 @@ AcpiRead ( /* Read the top 32 bits */ Status = AcpiHwReadPort ((ACPI_IO_ADDRESS) - (Address + 4), &ValueHi, 32); + (Address + 4), &ValueHi, 32); if (ACPI_FAILURE (Status)) { return (Status); @@ -335,7 +335,7 @@ AcpiWrite ( if (Reg->SpaceId == ACPI_ADR_SPACE_SYSTEM_MEMORY) { Status = AcpiOsWriteMemory ((ACPI_PHYSICAL_ADDRESS) - Address, Value, Reg->BitWidth); + Address, Value, Reg->BitWidth); if (ACPI_FAILURE (Status)) { return (Status); @@ -350,7 +350,7 @@ AcpiWrite ( } Status = AcpiHwWritePort ((ACPI_IO_ADDRESS) - Address, ACPI_LODWORD (Value), Width); + Address, ACPI_LODWORD (Value), Width); if (ACPI_FAILURE (Status)) { return (Status); @@ -359,7 +359,7 @@ AcpiWrite ( if (Reg->BitWidth == 64) { Status = AcpiHwWritePort ((ACPI_IO_ADDRESS) - (Address + 4), ACPI_HIDWORD (Value), 32); + (Address + 4), ACPI_HIDWORD (Value), 32); if (ACPI_FAILURE (Status)) { return (Status); @@ -430,7 +430,7 @@ AcpiReadBitRegister ( /* Read the entire parent register */ Status = AcpiHwRegisterRead (BitRegInfo->ParentRegister, - &RegisterValue); + &RegisterValue); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -439,7 +439,7 @@ AcpiReadBitRegister ( /* Normalize the value that was read, mask off other bits */ Value = ((RegisterValue & BitRegInfo->AccessBitMask) - >> BitRegInfo->BitPosition); + >> BitRegInfo->BitPosition); ACPI_DEBUG_PRINT ((ACPI_DB_IO, "BitReg %X, ParentReg %X, Actual %8.8X, ReturnValue %8.8X\n", @@ -511,7 +511,7 @@ AcpiWriteBitRegister ( * interested in */ Status = AcpiHwRegisterRead (BitRegInfo->ParentRegister, - &RegisterValue); + &RegisterValue); if (ACPI_FAILURE (Status)) { goto UnlockAndExit; @@ -525,7 +525,7 @@ AcpiWriteBitRegister ( BitRegInfo->AccessBitMask, Value); Status = AcpiHwRegisterWrite (BitRegInfo->ParentRegister, - RegisterValue); + RegisterValue); } else { @@ -545,7 +545,7 @@ AcpiWriteBitRegister ( if (RegisterValue) { Status = AcpiHwRegisterWrite (ACPI_REGISTER_PM1_STATUS, - RegisterValue); + RegisterValue); } } @@ -637,20 +637,12 @@ AcpiGetSleepTypeData ( * Evaluate the \_Sx namespace object containing the register values * for this state */ - Info->RelativePathname = ACPI_CAST_PTR (char, - AcpiGbl_SleepStateNames[SleepState]); - + Info->RelativePathname = ACPI_CAST_PTR ( + char, AcpiGbl_SleepStateNames[SleepState]); Status = AcpiNsEvaluate (Info); if (ACPI_FAILURE (Status)) { - if (Status == AE_NOT_FOUND) - { - /* The _Sx states are optional, ignore NOT_FOUND */ - - goto FinalCleanup; - } - - goto WarningCleanup; + goto Cleanup; } /* Must have a return object */ @@ -660,7 +652,7 @@ AcpiGetSleepTypeData ( ACPI_ERROR ((AE_INFO, "No Sleep State object returned from [%s]", Info->RelativePathname)); Status = AE_AML_NO_RETURN_VALUE; - goto WarningCleanup; + goto Cleanup; } /* Return object must be of type Package */ @@ -669,7 +661,7 @@ AcpiGetSleepTypeData ( { ACPI_ERROR ((AE_INFO, "Sleep State return object is not a Package")); Status = AE_AML_OPERAND_TYPE; - goto ReturnValueCleanup; + goto Cleanup1; } /* @@ -716,18 +708,16 @@ AcpiGetSleepTypeData ( break; } -ReturnValueCleanup: +Cleanup1: AcpiUtRemoveReference (Info->ReturnObject); -WarningCleanup: +Cleanup: if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, - "While evaluating Sleep State [%s]", - Info->RelativePathname)); + "While evaluating Sleep State [%s]", Info->RelativePathname)); } -FinalCleanup: ACPI_FREE (Info); return_ACPI_STATUS (Status); } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwxfsleep.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwxfsleep.c index b0abf1a5af..ce6e8eeb6a 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwxfsleep.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwxfsleep.c @@ -244,7 +244,7 @@ AcpiSetFirmwareWakingVector ( if (AcpiGbl_FACS) { (void) AcpiHwSetFirmwareWakingVector (AcpiGbl_FACS, - PhysicalAddress, PhysicalAddress64); + PhysicalAddress, PhysicalAddress64); } return_ACPI_STATUS (AE_OK); @@ -311,7 +311,7 @@ AcpiEnterSleepStateS4bios ( ACPI_FLUSH_CPU_CACHE (); Status = AcpiHwWritePort (AcpiGbl_FADT.SmiCommand, - (UINT32) AcpiGbl_FADT.S4BiosRequest, 8); + (UINT32) AcpiGbl_FADT.S4BiosRequest, 8); do { AcpiOsStall (ACPI_USEC_PER_MSEC); @@ -320,7 +320,6 @@ AcpiEnterSleepStateS4bios ( { return_ACPI_STATUS (Status); } - } while (!InValue); return_ACPI_STATUS (AE_OK); @@ -416,7 +415,7 @@ AcpiEnterSleepStatePrep ( Status = AcpiGetSleepTypeData (SleepState, - &AcpiGbl_SleepTypeA, &AcpiGbl_SleepTypeB); + &AcpiGbl_SleepTypeA, &AcpiGbl_SleepTypeB); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsaccess.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsaccess.c index e44164f33e..666730849e 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsaccess.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsaccess.c @@ -189,8 +189,8 @@ AcpiNsRootInitialize ( } Status = AcpiNsLookup (NULL, InitVal->Name, InitVal->Type, - ACPI_IMODE_LOAD_PASS2, ACPI_NS_NO_UPSEARCH, - NULL, &NewNode); + ACPI_IMODE_LOAD_PASS2, ACPI_NS_NO_UPSEARCH, + NULL, &NewNode); if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, @@ -291,7 +291,7 @@ AcpiNsRootInitialize ( /* Create additional counting semaphore for global lock */ Status = AcpiOsCreateSemaphore ( - 1, 0, &AcpiGbl_GlobalLockSemaphore); + 1, 0, &AcpiGbl_GlobalLockSemaphore); if (ACPI_FAILURE (Status)) { AcpiUtRemoveReference (ObjDesc); @@ -312,7 +312,7 @@ AcpiNsRootInitialize ( /* Store pointer to value descriptor in the Node */ Status = AcpiNsAttachObject (NewNode, ObjDesc, - ObjDesc->Common.Type); + ObjDesc->Common.Type); /* Remove local reference to the object */ @@ -329,7 +329,7 @@ UnlockAndExit: if (ACPI_SUCCESS (Status)) { Status = AcpiNsGetNode (NULL, "\\_GPE", ACPI_NS_NO_UPSEARCH, - &AcpiGbl_FadtGpeDevice); + &AcpiGbl_FadtGpeDevice); } return_ACPI_STATUS (Status); @@ -661,7 +661,7 @@ AcpiNsLookup ( /* Try to find the single (4 character) ACPI name */ Status = AcpiNsSearchAndEnter (SimpleName, WalkState, CurrentNode, - InterpreterMode, ThisSearchType, LocalFlags, &ThisNode); + InterpreterMode, ThisSearchType, LocalFlags, &ThisNode); if (ACPI_FAILURE (Status)) { if (Status == AE_NOT_FOUND) diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsalloc.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsalloc.c index 65d6ba2435..293bf26697 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsalloc.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsalloc.c @@ -157,7 +157,7 @@ AcpiNsCreateNode ( #ifdef ACPI_DBG_TRACK_ALLOCATIONS Temp = AcpiGbl_NsNodeList->TotalAllocated - - AcpiGbl_NsNodeList->TotalFreed; + AcpiGbl_NsNodeList->TotalFreed; if (Temp > AcpiGbl_NsNodeList->MaxOccupied) { AcpiGbl_NsNodeList->MaxOccupied = Temp; @@ -349,8 +349,7 @@ AcpiNsInstallNode ( * modified the namespace. This is used for cleanup when the * method exits. */ - WalkState->MethodDesc->Method.InfoFlags |= - ACPI_METHOD_MODIFIED_NAMESPACE; + WalkState->MethodDesc->Method.InfoFlags |= ACPI_METHOD_MODIFIED_NAMESPACE; } } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsarguments.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsarguments.c index a5b3490605..08e0716fa1 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsarguments.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsarguments.c @@ -209,8 +209,7 @@ AcpiNsCheckAcpiCompliance ( /* Get the ACPI-required arg count from the predefined info table */ - RequiredParamCount = - METHOD_GET_ARG_COUNT (Predefined->Info.ArgumentList); + RequiredParamCount = METHOD_GET_ARG_COUNT (Predefined->Info.ArgumentList); /* * If this object is not a control method, we can check if the ACPI @@ -356,8 +355,7 @@ AcpiNsCheckArgumentCount ( * Some methods are allowed to have a "minimum" number of args (_SCP) * because their definition in ACPI has changed over time. */ - RequiredParamCount = - METHOD_GET_ARG_COUNT (Predefined->Info.ArgumentList); + RequiredParamCount = METHOD_GET_ARG_COUNT (Predefined->Info.ArgumentList); if (UserParamCount < RequiredParamCount) { diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsconvert.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsconvert.c index af5b255337..b79458e244 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsconvert.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsconvert.c @@ -156,7 +156,7 @@ AcpiNsConvertToInteger ( /* String-to-Integer conversion */ Status = AcpiUtStrtoul64 (OriginalObject->String.Pointer, - ACPI_ANY_BASE, &Value); + ACPI_ANY_BASE, &Value); if (ACPI_FAILURE (Status)) { return (Status); @@ -176,8 +176,7 @@ AcpiNsConvertToInteger ( for (i = 0; i < OriginalObject->Buffer.Length; i++) { - Value |= ((UINT64) - OriginalObject->Buffer.Pointer[i] << (i * 8)); + Value |= ((UINT64) OriginalObject->Buffer.Pointer[i] << (i * 8)); } break; @@ -240,8 +239,8 @@ AcpiNsConvertToString ( } else { - Status = AcpiExConvertToString (OriginalObject, - &NewObject, ACPI_IMPLICIT_CONVERT_HEX); + Status = AcpiExConvertToString (OriginalObject, &NewObject, + ACPI_IMPLICIT_CONVERT_HEX); if (ACPI_FAILURE (Status)) { return (Status); @@ -336,8 +335,7 @@ AcpiNsConvertToBuffer ( /* String-to-Buffer conversion. Simple data copy */ - NewObject = AcpiUtCreateBufferObject - (OriginalObject->String.Length); + NewObject = AcpiUtCreateBufferObject (OriginalObject->String.Length); if (!NewObject) { return (AE_NO_MEMORY); @@ -404,8 +402,7 @@ AcpiNsConvertToBuffer ( * * FUNCTION: AcpiNsConvertToUnicode * - * PARAMETERS: Scope - Namespace node for the method/object - * OriginalObject - ASCII String Object to be converted + * PARAMETERS: OriginalObject - ASCII String Object to be converted * ReturnObject - Where the new converted object is returned * * RETURN: Status. AE_OK if conversion was successful. @@ -416,7 +413,6 @@ AcpiNsConvertToBuffer ( ACPI_STATUS AcpiNsConvertToUnicode ( - ACPI_NAMESPACE_NODE *Scope, ACPI_OPERAND_OBJECT *OriginalObject, ACPI_OPERAND_OBJECT **ReturnObject) { @@ -478,8 +474,7 @@ AcpiNsConvertToUnicode ( * * FUNCTION: AcpiNsConvertToResource * - * PARAMETERS: Scope - Namespace node for the method/object - * OriginalObject - Object to be converted + * PARAMETERS: OriginalObject - Object to be converted * ReturnObject - Where the new converted object is returned * * RETURN: Status. AE_OK if conversion was successful @@ -491,7 +486,6 @@ AcpiNsConvertToUnicode ( ACPI_STATUS AcpiNsConvertToResource ( - ACPI_NAMESPACE_NODE *Scope, ACPI_OPERAND_OBJECT *OriginalObject, ACPI_OPERAND_OBJECT **ReturnObject) { @@ -558,81 +552,3 @@ AcpiNsConvertToResource ( *ReturnObject = NewObject; return (AE_OK); } - - -/******************************************************************************* - * - * FUNCTION: AcpiNsConvertToReference - * - * PARAMETERS: Scope - Namespace node for the method/object - * OriginalObject - Object to be converted - * ReturnObject - Where the new converted object is returned - * - * RETURN: Status. AE_OK if conversion was successful - * - * DESCRIPTION: Attempt to convert a Integer object to a ObjectReference. - * Buffer. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiNsConvertToReference ( - ACPI_NAMESPACE_NODE *Scope, - ACPI_OPERAND_OBJECT *OriginalObject, - ACPI_OPERAND_OBJECT **ReturnObject) -{ - ACPI_OPERAND_OBJECT *NewObject = NULL; - ACPI_STATUS Status; - ACPI_NAMESPACE_NODE *Node; - ACPI_GENERIC_STATE ScopeInfo; - char *Name; - - - ACPI_FUNCTION_NAME (NsConvertToReference); - - - /* Convert path into internal presentation */ - - Status = AcpiNsInternalizeName (OriginalObject->String.Pointer, &Name); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Find the namespace node */ - - ScopeInfo.Scope.Node = ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, Scope); - Status = AcpiNsLookup (&ScopeInfo, Name, - ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE, - ACPI_NS_SEARCH_PARENT | ACPI_NS_DONT_OPEN_SCOPE, NULL, &Node); - if (ACPI_FAILURE (Status)) - { - /* Check if we are resolving a named reference within a package */ - - ACPI_ERROR_NAMESPACE (OriginalObject->String.Pointer, Status); - goto ErrorExit; - } - - /* Create and init a new internal ACPI object */ - - NewObject = AcpiUtCreateInternalObject (ACPI_TYPE_LOCAL_REFERENCE); - if (!NewObject) - { - Status = AE_NO_MEMORY; - goto ErrorExit; - } - NewObject->Reference.Node = Node; - NewObject->Reference.Object = Node->Object; - NewObject->Reference.Class = ACPI_REFCLASS_NAME; - - /* - * Increase reference of the object if needed (the object is likely a - * null for device nodes). - */ - AcpiUtAddReference (Node->Object); - -ErrorExit: - ACPI_FREE (Name); - *ReturnObject = NewObject; - return (AE_OK); -} diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsdump.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsdump.c index 6510b4f6af..0d3b57eecf 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsdump.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsdump.c @@ -331,8 +331,7 @@ AcpiNsDumpOneObject ( if (Type > ACPI_TYPE_LOCAL_MAX) { - ACPI_WARNING ((AE_INFO, - "Invalid ACPI Object Type 0x%08X", Type)); + ACPI_WARNING ((AE_INFO, "Invalid ACPI Object Type 0x%08X", Type)); } AcpiOsPrintf ("%4.4s", AcpiUtGetNodeName (ThisNode)); @@ -341,7 +340,7 @@ AcpiNsDumpOneObject ( /* Now we can print out the pertinent information */ AcpiOsPrintf (" %-12s %p %2.2X ", - AcpiUtGetTypeName (Type), ThisNode, ThisNode->OwnerId); + AcpiUtGetTypeName (Type), ThisNode, ThisNode->OwnerId); DbgLevel = AcpiDbgLevel; AcpiDbgLevel = 0; @@ -428,7 +427,7 @@ AcpiNsDumpOneObject ( if (ObjDesc->Common.Flags & AOPOBJ_DATA_VALID) { AcpiOsPrintf ("Len %.2X", - ObjDesc->Buffer.Length); + ObjDesc->Buffer.Length); /* Dump some of the buffer */ @@ -609,9 +608,9 @@ AcpiNsDumpOneObject ( /* If there is an attached object, display it */ - DbgLevel = AcpiDbgLevel; + DbgLevel = AcpiDbgLevel; AcpiDbgLevel = 0; - ObjDesc = AcpiNsGetAttachedObject (ThisNode); + ObjDesc = AcpiNsGetAttachedObject (ThisNode); AcpiDbgLevel = DbgLevel; /* Dump attached objects */ @@ -638,18 +637,14 @@ AcpiNsDumpOneObject ( if (ObjType > ACPI_TYPE_LOCAL_MAX) { - AcpiOsPrintf ( - "(Pointer to ACPI Object type %.2X [UNKNOWN])\n", + AcpiOsPrintf ("(Pointer to ACPI Object type %.2X [UNKNOWN])\n", ObjType); - BytesToDump = 32; } else { - AcpiOsPrintf ( - "(Pointer to ACPI Object type %.2X [%s])\n", + AcpiOsPrintf ("(Pointer to ACPI Object type %.2X [%s])\n", ObjType, AcpiUtGetTypeName (ObjType)); - BytesToDump = sizeof (ACPI_OPERAND_OBJECT); } @@ -679,8 +674,7 @@ AcpiNsDumpOneObject ( */ BytesToDump = ObjDesc->String.Length; ObjDesc = (void *) ObjDesc->String.Pointer; - - AcpiOsPrintf ("(Buffer/String pointer %p length %X)\n", + AcpiOsPrintf ( "(Buffer/String pointer %p length %X)\n", ObjDesc, BytesToDump); ACPI_DUMP_BUFFER (ObjDesc, BytesToDump); goto Cleanup; @@ -781,8 +775,8 @@ AcpiNsDumpObjects ( Info.DisplayType = DisplayType; (void) AcpiNsWalkNamespace (Type, StartHandle, MaxDepth, - ACPI_NS_WALK_NO_UNLOCK | ACPI_NS_WALK_TEMP_NODES, - AcpiNsDumpOneObject, NULL, (void *) &Info, NULL); + ACPI_NS_WALK_NO_UNLOCK | ACPI_NS_WALK_TEMP_NODES, + AcpiNsDumpOneObject, NULL, (void *) &Info, NULL); (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); } @@ -832,7 +826,7 @@ AcpiNsDumpOneObjectPath ( return (AE_OK); } - Pathname = AcpiNsGetNormalizedPathname (Node, TRUE); + Pathname = AcpiNsGetExternalPathname (Node); PathIndent = 1; if (Level <= MaxLevel) @@ -918,14 +912,14 @@ AcpiNsDumpObjectPaths ( /* Get the max depth of the namespace tree, for formatting later */ (void) AcpiNsWalkNamespace (Type, StartHandle, MaxDepth, - ACPI_NS_WALK_NO_UNLOCK | ACPI_NS_WALK_TEMP_NODES, - AcpiNsGetMaxDepth, NULL, (void *) &MaxLevel, NULL); + ACPI_NS_WALK_NO_UNLOCK | ACPI_NS_WALK_TEMP_NODES, + AcpiNsGetMaxDepth, NULL, (void *) &MaxLevel, NULL); /* Now dump the entire namespace */ (void) AcpiNsWalkNamespace (Type, StartHandle, MaxDepth, - ACPI_NS_WALK_NO_UNLOCK | ACPI_NS_WALK_TEMP_NODES, - AcpiNsDumpOneObjectPath, NULL, (void *) &MaxLevel, NULL); + ACPI_NS_WALK_NO_UNLOCK | ACPI_NS_WALK_TEMP_NODES, + AcpiNsDumpOneObjectPath, NULL, (void *) &MaxLevel, NULL); (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); } @@ -996,8 +990,7 @@ AcpiNsDumpTables ( * If the name space has not been initialized, * there is nothing to dump. */ - ACPI_DEBUG_PRINT ((ACPI_DB_TABLES, - "namespace not initialized!\n")); + ACPI_DEBUG_PRINT ((ACPI_DB_TABLES, "namespace not initialized!\n")); return_VOID; } @@ -1010,7 +1003,7 @@ AcpiNsDumpTables ( } AcpiNsDumpObjects (ACPI_TYPE_ANY, ACPI_DISPLAY_OBJECTS, MaxDepth, - ACPI_OWNER_ID_MAX, SearchHandle); + ACPI_OWNER_ID_MAX, SearchHandle); return_VOID; } #endif diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsdumpdv.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsdumpdv.c index 9afad0b5e2..8e570d1f73 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsdumpdv.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsdumpdv.c @@ -222,8 +222,8 @@ AcpiNsDumpRootDevices ( "Display of all devices in the namespace:\n")); Status = AcpiNsWalkNamespace (ACPI_TYPE_DEVICE, SysBusHandle, - ACPI_UINT32_MAX, ACPI_NS_WALK_NO_UNLOCK, - AcpiNsDumpOneDevice, NULL, NULL, NULL); + ACPI_UINT32_MAX, ACPI_NS_WALK_NO_UNLOCK, + AcpiNsDumpOneDevice, NULL, NULL, NULL); } #endif diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nseval.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nseval.c index a62269fe53..7c8d6fd186 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nseval.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nseval.c @@ -217,7 +217,7 @@ AcpiNsEvaluate ( /* Get the full pathname to the object, for use in warning messages */ - Info->FullPathname = AcpiNsGetNormalizedPathname (Info->Node, TRUE); + Info->FullPathname = AcpiNsGetExternalPathname (Info->Node); if (!Info->FullPathname) { return_ACPI_STATUS (AE_NO_MEMORY); @@ -491,7 +491,7 @@ AcpiNsExecModuleCodeList ( * * DESCRIPTION: Execute a control method containing a block of module-level * executable AML code. The control method is temporarily - * installed to a local copy of the root node, then evaluated. + * installed to the root node, then evaluated. * ******************************************************************************/ @@ -500,9 +500,10 @@ AcpiNsExecModuleCode ( ACPI_OPERAND_OBJECT *MethodObj, ACPI_EVALUATE_INFO *Info) { - ACPI_STATUS Status; - ACPI_NAMESPACE_NODE *TempNode; + ACPI_OPERAND_OBJECT *ParentObj; ACPI_NAMESPACE_NODE *ParentNode; + ACPI_OBJECT_TYPE Type; + ACPI_STATUS Status; ACPI_FUNCTION_TRACE (NsExecModuleCode); @@ -513,19 +514,22 @@ AcpiNsExecModuleCode ( * of the method object descriptor. */ ParentNode = ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, - MethodObj->Method.NextObject); + MethodObj->Method.NextObject); + Type = AcpiNsGetType (ParentNode); - /* Take a copy of the parent node to act as parent of this method */ - - TempNode = ACPI_ALLOCATE (sizeof (ACPI_NAMESPACE_NODE)); - if (!TempNode) + /* + * Get the region handler and save it in the method object. We may need + * this if an operation region declaration causes a _REG method to be run. + * + * We can't do this in AcpiPsLinkModuleCode because + * AcpiGbl_RootNode->Object is NULL at PASS1. + */ + if ((Type == ACPI_TYPE_DEVICE) && ParentNode->Object) { - return_VOID; + MethodObj->Method.Dispatch.Handler = + ParentNode->Object->Device.Handler; } - memcpy (TempNode, ParentNode, sizeof (ACPI_NAMESPACE_NODE)); - TempNode->Object = NULL; /* Clear the subobject */ - /* Must clear NextObject (AcpiNsAttachObject needs the field) */ MethodObj->Method.NextObject = NULL; @@ -533,14 +537,26 @@ AcpiNsExecModuleCode ( /* Initialize the evaluation information block */ memset (Info, 0, sizeof (ACPI_EVALUATE_INFO)); - Info->PrefixNode = TempNode; + Info->PrefixNode = ParentNode; + + /* + * Get the currently attached parent object. Add a reference, because the + * ref count will be decreased when the method object is installed to + * the parent node. + */ + ParentObj = AcpiNsGetAttachedObject (ParentNode); + if (ParentObj) + { + AcpiUtAddReference (ParentObj); + } /* Install the method (module-level code) in the parent node */ - Status = AcpiNsAttachObject (TempNode, MethodObj, ACPI_TYPE_METHOD); + Status = AcpiNsAttachObject (ParentNode, MethodObj, + ACPI_TYPE_METHOD); if (ACPI_FAILURE (Status)) { - goto Cleanup; + goto Exit; } /* Execute the parent node as a control method */ @@ -558,7 +574,25 @@ AcpiNsExecModuleCode ( AcpiUtRemoveReference (Info->ReturnObject); } -Cleanup: - ACPI_FREE (TempNode); + /* Detach the temporary method object */ + + AcpiNsDetachObject (ParentNode); + + /* Restore the original parent object */ + + if (ParentObj) + { + Status = AcpiNsAttachObject (ParentNode, ParentObj, Type); + } + else + { + ParentNode->Type = (UINT8) Type; + } + +Exit: + if (ParentObj) + { + AcpiUtRemoveReference (ParentObj); + } return_VOID; } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsinit.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsinit.c index 7b4acc1e65..6bedef95af 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsinit.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsinit.c @@ -182,8 +182,8 @@ AcpiNsInitializeObjects ( /* Walk entire namespace from the supplied root */ Status = AcpiWalkNamespace (ACPI_TYPE_ANY, ACPI_ROOT_OBJECT, - ACPI_UINT32_MAX, AcpiNsInitOneObject, NULL, - &Info, NULL); + ACPI_UINT32_MAX, AcpiNsInitOneObject, NULL, + &Info, NULL); if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, "During WalkNamespace")); @@ -245,7 +245,7 @@ AcpiNsInitializeDevices ( /* Tree analysis: find all subtrees that contain _INI methods */ Status = AcpiNsWalkNamespace (ACPI_TYPE_ANY, ACPI_ROOT_OBJECT, - ACPI_UINT32_MAX, FALSE, AcpiNsFindIniMethods, NULL, &Info, NULL); + ACPI_UINT32_MAX, FALSE, AcpiNsFindIniMethods, NULL, &Info, NULL); if (ACPI_FAILURE (Status)) { goto ErrorExit; @@ -279,7 +279,7 @@ AcpiNsInitializeDevices ( /* Walk namespace to execute all _INIs on present devices */ Status = AcpiNsWalkNamespace (ACPI_TYPE_ANY, ACPI_ROOT_OBJECT, - ACPI_UINT32_MAX, FALSE, AcpiNsInitOneDevice, NULL, &Info, NULL); + ACPI_UINT32_MAX, FALSE, AcpiNsInitOneDevice, NULL, &Info, NULL); /* * Any _OSI requests should be completed by now. If the BIOS has @@ -703,7 +703,7 @@ AcpiNsInitOneDevice ( { /* Ignore error and move on to next device */ - char *ScopeName = AcpiNsGetNormalizedPathname (DeviceNode, TRUE); + char *ScopeName = AcpiNsGetExternalPathname (Info->Node); ACPI_EXCEPTION ((AE_INFO, Status, "during %s._INI execution", ScopeName)); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsload.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsload.c index 738f8978a6..8e1a0c25ca 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsload.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsload.c @@ -239,24 +239,6 @@ Unlock: ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "**** Completed Table Object Initialization\n")); - /* - * Execute any module-level code that was detected during the table load - * phase. Although illegal since ACPI 2.0, there are many machines that - * contain this type of code. Each block of detected executable AML code - * outside of any control method is wrapped with a temporary control - * method object and placed on a global list. The methods on this list - * are executed below. - * - * This case executes the module-level code for each table immediately - * after the table has been loaded. This provides compatibility with - * other ACPI implementations. Optionally, the execution can be deferred - * until later, see AcpiInitializeObjects. - */ - if (!AcpiGbl_GroupModuleLevelCode) - { - AcpiNsExecModuleCodeList (); - } - return_ACPI_STATUS (Status); } @@ -349,8 +331,8 @@ AcpiNsDeleteSubtree ( ParentHandle = StartHandle; - ChildHandle = NULL; - Level = 1; + ChildHandle = NULL; + Level = 1; /* * Traverse the tree of objects until we bubble back up @@ -361,7 +343,7 @@ AcpiNsDeleteSubtree ( /* Attempt to get the next object in this scope */ Status = AcpiGetNextObject (ACPI_TYPE_ANY, ParentHandle, - ChildHandle, &NextChildHandle); + ChildHandle, &NextChildHandle); ChildHandle = NextChildHandle; @@ -372,7 +354,7 @@ AcpiNsDeleteSubtree ( /* Check if this object has any children */ if (ACPI_SUCCESS (AcpiGetNextObject (ACPI_TYPE_ANY, ChildHandle, - NULL, &Dummy))) + NULL, &Dummy))) { /* * There is at least one child of this object, @@ -450,6 +432,7 @@ AcpiNsUnloadNamespace ( /* This function does the real work */ Status = AcpiNsDeleteSubtree (Handle); + return_ACPI_STATUS (Status); } #endif diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsnames.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsnames.c index cd11cb4d4a..3ca04f011e 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsnames.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsnames.c @@ -149,6 +149,7 @@ AcpiNsGetExternalPathname ( NameBuffer = AcpiNsGetNormalizedPathname (Node, FALSE); + return_PTR (NameBuffer); } @@ -176,6 +177,7 @@ AcpiNsGetPathnameLength ( Size = AcpiNsBuildNormalizedPath (Node, NULL, 0, FALSE); + return (Size); } @@ -235,7 +237,7 @@ AcpiNsHandleToPathname ( /* Build the path in the caller buffer */ (void) AcpiNsBuildNormalizedPath (Node, Buffer->Pointer, - RequiredSize, NoTrailing); + RequiredSize, NoTrailing); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -316,7 +318,6 @@ AcpiNsBuildNormalizedPath ( { ACPI_PATH_PUT8(FullPath, PathSize, AML_DUAL_NAME_PREFIX, Length); } - ACPI_MOVE_32_TO_32 (Name, &NextNode->Name); DoNoTrailing = NoTrailing; for (i = 0; i < 4; i++) @@ -331,10 +332,8 @@ AcpiNsBuildNormalizedPath ( ACPI_PATH_PUT8(FullPath, PathSize, c, Length); } } - NextNode = NextNode->Parent; } - ACPI_PATH_PUT8(FullPath, PathSize, AML_ROOT_PREFIX, Length); /* Reverse the path string */ @@ -342,8 +341,7 @@ AcpiNsBuildNormalizedPath ( if (Length <= PathSize) { Left = FullPath; - Right = FullPath+Length - 1; - + Right = FullPath+Length-1; while (Left < Right) { c = *Left; @@ -355,7 +353,7 @@ AcpiNsBuildNormalizedPath ( /* Append the trailing null */ BuildTrailingNull: - ACPI_PATH_PUT8 (FullPath, PathSize, '\0', Length); + ACPI_PATH_PUT8(FullPath, PathSize, '\0', Length); #undef ACPI_PATH_PUT8 @@ -405,8 +403,7 @@ AcpiNsGetNormalizedPathname ( NameBuffer = ACPI_ALLOCATE_ZEROED (Size); if (!NameBuffer) { - ACPI_ERROR ((AE_INFO, - "Could not allocate %u bytes", (UINT32) Size)); + ACPI_ERROR ((AE_INFO, "Could not allocate %u bytes", (UINT32) Size)); return_PTR (NULL); } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsobject.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsobject.c index a6f887606b..50b1d65379 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsobject.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsobject.c @@ -217,7 +217,7 @@ AcpiNsAttachObject ( * Value passed is a name handle and that name has a * non-null value. Use that name's value and type. */ - ObjDesc = ((ACPI_NAMESPACE_NODE *) Object)->Object; + ObjDesc = ((ACPI_NAMESPACE_NODE *) Object)->Object; ObjectType = ((ACPI_NAMESPACE_NODE *) Object)->Type; } @@ -267,8 +267,8 @@ AcpiNsAttachObject ( LastObjDesc->Common.NextObject = Node->Object; } - Node->Type = (UINT8) ObjectType; - Node->Object = ObjDesc; + Node->Type = (UINT8) ObjectType; + Node->Object = ObjDesc; return_ACPI_STATUS (AE_OK); } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsparse.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsparse.c index 9fcc47fe42..26dd9f3467 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsparse.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsparse.c @@ -196,7 +196,7 @@ AcpiNsOneCompleteParse ( } Status = AcpiDsInitAmlWalk (WalkState, ParseRoot, NULL, - AmlStart, AmlLength, NULL, (UINT8) PassNumber); + AmlStart, AmlLength, NULL, (UINT8) PassNumber); if (ACPI_FAILURE (Status)) { AcpiDsDeleteWalkState (WalkState); @@ -215,8 +215,7 @@ AcpiNsOneCompleteParse ( if (StartNode && StartNode != AcpiGbl_RootNode) { - Status = AcpiDsScopeStackPush ( - StartNode, ACPI_TYPE_METHOD, WalkState); + Status = AcpiDsScopeStackPush (StartNode, ACPI_TYPE_METHOD, WalkState); if (ACPI_FAILURE (Status)) { AcpiDsDeleteWalkState (WalkState); @@ -226,8 +225,7 @@ AcpiNsOneCompleteParse ( /* Parse the AML */ - ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, - "*PARSE* pass %u parse\n", PassNumber)); + ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "*PARSE* pass %u parse\n", PassNumber)); Status = AcpiPsParseAml (WalkState); Cleanup: @@ -271,9 +269,8 @@ AcpiNsParseTable ( * performs another complete parse of the AML. */ ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "**** Start pass 1\n")); - Status = AcpiNsOneCompleteParse (ACPI_IMODE_LOAD_PASS1, - TableIndex, StartNode); + TableIndex, StartNode); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -290,7 +287,7 @@ AcpiNsParseTable ( */ ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "**** Start pass 2\n")); Status = AcpiNsOneCompleteParse (ACPI_IMODE_LOAD_PASS2, - TableIndex, StartNode); + TableIndex, StartNode); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nspredef.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nspredef.c index 85793f9de2..8a522d2d2e 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nspredef.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nspredef.c @@ -321,7 +321,7 @@ AcpiNsCheckObjectType ( { ACPI_OPERAND_OBJECT *ReturnObject = *ReturnObjectPtr; ACPI_STATUS Status = AE_OK; - char TypeBuffer[96]; /* Room for 10 types */ + char TypeBuffer[48]; /* Room for 5 types */ /* A Namespace node should not get here, but make sure */ diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsprepkg.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsprepkg.c index aa7134eda1..627ee3ecd8 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsprepkg.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsprepkg.c @@ -243,8 +243,8 @@ AcpiNsCheckPackage ( /* Validate all elements of the returned package */ Status = AcpiNsCheckPackageElements (Info, Elements, - Package->RetInfo.ObjectType1, Package->RetInfo.Count1, - Package->RetInfo.ObjectType2, Package->RetInfo.Count2, 0); + Package->RetInfo.ObjectType1, Package->RetInfo.Count1, + Package->RetInfo.ObjectType2, Package->RetInfo.Count2, 0); break; case ACPI_PTYPE1_VAR: @@ -255,7 +255,7 @@ AcpiNsCheckPackage ( for (i = 0; i < Count; i++) { Status = AcpiNsCheckObjectType (Info, Elements, - Package->RetInfo.ObjectType1, i); + Package->RetInfo.ObjectType1, i); if (ACPI_FAILURE (Status)) { return (Status); @@ -287,7 +287,7 @@ AcpiNsCheckPackage ( /* These are the required package elements (0, 1, or 2) */ Status = AcpiNsCheckObjectType (Info, Elements, - Package->RetInfo3.ObjectType[i], i); + Package->RetInfo3.ObjectType[i], i); if (ACPI_FAILURE (Status)) { return (Status); @@ -298,7 +298,7 @@ AcpiNsCheckPackage ( /* These are the optional package elements */ Status = AcpiNsCheckObjectType (Info, Elements, - Package->RetInfo3.TailObjectType, i); + Package->RetInfo3.TailObjectType, i); if (ACPI_FAILURE (Status)) { return (Status); @@ -312,8 +312,8 @@ AcpiNsCheckPackage ( /* First element is the (Integer) revision */ - Status = AcpiNsCheckObjectType ( - Info, Elements, ACPI_RTYPE_INTEGER, 0); + Status = AcpiNsCheckObjectType (Info, Elements, + ACPI_RTYPE_INTEGER, 0); if (ACPI_FAILURE (Status)) { return (Status); @@ -331,8 +331,8 @@ AcpiNsCheckPackage ( /* First element is the (Integer) count of subpackages to follow */ - Status = AcpiNsCheckObjectType ( - Info, Elements, ACPI_RTYPE_INTEGER, 0); + Status = AcpiNsCheckObjectType (Info, Elements, + ACPI_RTYPE_INTEGER, 0); if (ACPI_FAILURE (Status)) { return (Status); @@ -375,8 +375,7 @@ AcpiNsCheckPackage ( { /* Create the new outer package and populate it */ - Status = AcpiNsWrapWithPackage ( - Info, ReturnObject, ReturnObjectPtr); + Status = AcpiNsWrapWithPackage (Info, ReturnObject, ReturnObjectPtr); if (ACPI_FAILURE (Status)) { return (Status); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsrepair.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsrepair.c index 556af7cda8..fbb9c7efdb 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsrepair.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsrepair.c @@ -186,11 +186,6 @@ static const ACPI_SIMPLE_REPAIR_INFO AcpiObjectRepairInfo[] = ACPI_NOT_PACKAGE_ELEMENT, AcpiNsConvertToResource }, - /* Object reference conversions */ - - { "_DEP", ACPI_RTYPE_STRING, ACPI_ALL_PACKAGE_ELEMENTS, - AcpiNsConvertToReference }, - /* Unicode conversions */ { "_MLS", ACPI_RTYPE_STRING, 1, @@ -251,8 +246,7 @@ AcpiNsSimpleRepair ( ACPI_WARN_ALWAYS, "Missing expected return value")); } - Status = Predefined->ObjectConverter (Info->Node, ReturnObject, - &NewObject); + Status = Predefined->ObjectConverter (ReturnObject, &NewObject); if (ACPI_FAILURE (Status)) { /* A fatal error occurred during a conversion */ @@ -300,7 +294,7 @@ AcpiNsSimpleRepair ( ACPI_WARN_ALWAYS, "Found unexpected NULL package element")); Status = AcpiNsRepairNullElement (Info, ExpectedBtypes, - PackageIndex, ReturnObjectPtr); + PackageIndex, ReturnObjectPtr); if (ACPI_SUCCESS (Status)) { return (AE_OK); /* Repair was successful */ @@ -451,15 +445,13 @@ AcpiNsMatchSimpleRepair ( /* Check if we can actually repair this name/type combination */ if ((ReturnBtype & ThisName->UnexpectedBtypes) && - (ThisName->PackageIndex == ACPI_ALL_PACKAGE_ELEMENTS || - PackageIndex == ThisName->PackageIndex)) + (PackageIndex == ThisName->PackageIndex)) { return (ThisName); } return (NULL); } - ThisName++; } @@ -544,13 +536,11 @@ AcpiNsRepairNullElement ( /* Set the reference count according to the parent Package object */ - NewObject->Common.ReferenceCount = - Info->ParentPackage->Common.ReferenceCount; + NewObject->Common.ReferenceCount = Info->ParentPackage->Common.ReferenceCount; ACPI_DEBUG_PRINT ((ACPI_DB_REPAIR, "%s: Converted NULL package element to expected %s at index %u\n", - Info->FullPathname, AcpiUtGetObjectTypeName (NewObject), - PackageIndex)); + Info->FullPathname, AcpiUtGetObjectTypeName (NewObject), PackageIndex)); *ReturnObjectPtr = NewObject; Info->ReturnFlags |= ACPI_OBJECT_REPAIRED; @@ -633,7 +623,6 @@ AcpiNsRemoveNullElements ( *Dest = *Source; Dest++; } - Source++; } @@ -690,8 +679,8 @@ AcpiNsWrapWithPackage ( /* - * Create the new outer package and populate it. The new - * package will have a single element, the lone sub-object. + * Create the new outer package and populate it. The new package will + * have a single element, the lone sub-object. */ PkgObjDesc = AcpiUtCreatePackageObject (1); if (!PkgObjDesc) diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsrepair2.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsrepair2.c index dda6c98007..a252d41f38 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsrepair2.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsrepair2.c @@ -326,7 +326,6 @@ AcpiNsMatchComplexRepair ( { return (ThisName); } - ThisName++; } @@ -359,7 +358,7 @@ AcpiNsRepair_ALR ( Status = AcpiNsCheckSortedList (Info, ReturnObject, 0, 2, 1, - ACPI_SORT_ASCENDING, "AmbientIlluminance"); + ACPI_SORT_ASCENDING, "AmbientIlluminance"); return (Status); } @@ -412,8 +411,7 @@ AcpiNsRepair_FDE ( if (ReturnObject->Buffer.Length != ACPI_FDE_BYTE_BUFFER_SIZE) { - ACPI_WARN_PREDEFINED ((AE_INFO, - Info->FullPathname, Info->NodeFlags, + ACPI_WARN_PREDEFINED ((AE_INFO, Info->FullPathname, Info->NodeFlags, "Incorrect return buffer length %u, expected %u", ReturnObject->Buffer.Length, ACPI_FDE_DWORD_BUFFER_SIZE)); @@ -422,8 +420,7 @@ AcpiNsRepair_FDE ( /* Create the new (larger) buffer object */ - BufferObject = AcpiUtCreateBufferObject ( - ACPI_FDE_DWORD_BUFFER_SIZE); + BufferObject = AcpiUtCreateBufferObject (ACPI_FDE_DWORD_BUFFER_SIZE); if (!BufferObject) { return (AE_NO_MEMORY); @@ -432,8 +429,7 @@ AcpiNsRepair_FDE ( /* Expand each byte to a DWORD */ ByteBuffer = ReturnObject->Buffer.Pointer; - DwordBuffer = ACPI_CAST_PTR (UINT32, - BufferObject->Buffer.Pointer); + DwordBuffer = ACPI_CAST_PTR (UINT32, BufferObject->Buffer.Pointer); for (i = 0; i < ACPI_FDE_FIELD_COUNT; i++) { @@ -586,8 +582,7 @@ AcpiNsRepair_CST ( if ((*OuterElements)->Package.Count == 0) { - ACPI_WARN_PREDEFINED ((AE_INFO, - Info->FullPathname, Info->NodeFlags, + ACPI_WARN_PREDEFINED ((AE_INFO, Info->FullPathname, Info->NodeFlags, "SubPackage[%u] - removing entry due to zero count", i)); Removing = TRUE; goto RemoveElement; @@ -596,8 +591,7 @@ AcpiNsRepair_CST ( ObjDesc = (*OuterElements)->Package.Elements[1]; /* Index1 = Type */ if ((UINT32) ObjDesc->Integer.Value == 0) { - ACPI_WARN_PREDEFINED ((AE_INFO, - Info->FullPathname, Info->NodeFlags, + ACPI_WARN_PREDEFINED ((AE_INFO, Info->FullPathname, Info->NodeFlags, "SubPackage[%u] - removing entry due to invalid Type(0)", i)); Removing = TRUE; } @@ -624,7 +618,7 @@ RemoveElement: * C-state type, in ascending order. */ Status = AcpiNsCheckSortedList (Info, ReturnObject, 1, 4, 1, - ACPI_SORT_ASCENDING, "C-State Type"); + ACPI_SORT_ASCENDING, "C-State Type"); if (ACPI_FAILURE (Status)) { return (Status); @@ -672,8 +666,7 @@ AcpiNsRepair_HID ( if (ReturnObject->String.Length == 0) { - ACPI_WARN_PREDEFINED ((AE_INFO, - Info->FullPathname, Info->NodeFlags, + ACPI_WARN_PREDEFINED ((AE_INFO, Info->FullPathname, Info->NodeFlags, "Invalid zero-length _HID or _CID string")); /* Return AE_OK anyway, let driver handle it */ @@ -835,8 +828,8 @@ AcpiNsRepair_PSS ( * incorrectly sorted, sort it. We sort by CpuFrequency, since this * should be proportional to the power. */ - Status = AcpiNsCheckSortedList (Info, ReturnObject, 0, 6, 0, - ACPI_SORT_DESCENDING, "CpuFrequency"); + Status =AcpiNsCheckSortedList (Info, ReturnObject, 0, 6, 0, + ACPI_SORT_DESCENDING, "CpuFrequency"); if (ACPI_FAILURE (Status)) { return (Status); @@ -857,8 +850,7 @@ AcpiNsRepair_PSS ( if ((UINT32) ObjDesc->Integer.Value > PreviousValue) { - ACPI_WARN_PREDEFINED ((AE_INFO, - Info->FullPathname, Info->NodeFlags, + ACPI_WARN_PREDEFINED ((AE_INFO, Info->FullPathname, Info->NodeFlags, "SubPackage[%u,%u] - suspicious power dissipation values", i-1, i)); } @@ -912,7 +904,7 @@ AcpiNsRepair_TSS ( } Status = AcpiNsCheckSortedList (Info, ReturnObject, 0, 5, 1, - ACPI_SORT_DESCENDING, "PowerDissipation"); + ACPI_SORT_DESCENDING, "PowerDissipation"); return (Status); } @@ -1144,7 +1136,6 @@ AcpiNsRemoveElement ( *Dest = *Source; Dest++; } - Source++; } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nssearch.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nssearch.c index 94de93e7dc..060b10cc81 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nssearch.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nssearch.c @@ -184,7 +184,7 @@ AcpiNsSearchOneScope ( { char *ScopeName; - ScopeName = AcpiNsGetNormalizedPathname (ParentNode, TRUE); + ScopeName = AcpiNsGetExternalPathname (ParentNode); if (ScopeName) { ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, @@ -320,7 +320,7 @@ AcpiNsSearchParentTree ( * the actual name we are searching for. Typechecking comes later. */ Status = AcpiNsSearchOneScope ( - TargetName, ParentNode, ACPI_TYPE_ANY, ReturnNode); + TargetName, ParentNode, ACPI_TYPE_ANY, ReturnNode); if (ACPI_SUCCESS (Status)) { return_ACPI_STATUS (Status); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsutils.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsutils.c index fd207e5734..acee74970b 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsutils.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsutils.c @@ -268,10 +268,9 @@ AcpiNsGetInternalNameLength ( Info->FullyQualified = FALSE; /* - * For the internal name, the required length is 4 bytes per segment, - * plus 1 each for RootPrefix, MultiNamePrefixOp, segment count, - * trailing null (which is not really needed, but no there's harm in - * putting it there) + * For the internal name, the required length is 4 bytes per segment, plus + * 1 each for RootPrefix, MultiNamePrefixOp, segment count, trailing null + * (which is not really needed, but no there's harm in putting it there) * * strlen() + 1 covers the first NameSeg, which has no path separator */ @@ -316,7 +315,7 @@ AcpiNsGetInternalNameLength ( } Info->Length = (ACPI_NAME_SIZE * Info->NumSegments) + - 4 + Info->NumCarats; + 4 + Info->NumCarats; Info->NextExternalChar = NextExternalChar; } @@ -647,7 +646,7 @@ AcpiNsExternalizeName ( * punctuation ('.') between object names, plus the NULL terminator. */ RequiredLength = PrefixLength + (4 * NumSegments) + - ((NumSegments > 0) ? (NumSegments - 1) : 0) + 1; + ((NumSegments > 0) ? (NumSegments - 1) : 0) + 1; /* * Check to see if we're still in bounds. If not, there's a problem @@ -685,8 +684,7 @@ AcpiNsExternalizeName ( /* Copy and validate the 4-char name segment */ - ACPI_MOVE_NAME (&(*ConvertedName)[j], - &InternalName[NamesIndex]); + ACPI_MOVE_NAME (&(*ConvertedName)[j], &InternalName[NamesIndex]); AcpiUtRepairName (&(*ConvertedName)[j]); j += ACPI_NAME_SIZE; @@ -887,7 +885,6 @@ AcpiNsGetNode ( { *ReturnNode = AcpiGbl_RootNode; } - return_ACPI_STATUS (AE_OK); } @@ -922,12 +919,12 @@ AcpiNsGetNode ( /* Lookup the name in the namespace */ Status = AcpiNsLookup (&ScopeInfo, InternalPath, ACPI_TYPE_ANY, - ACPI_IMODE_EXECUTE, (Flags | ACPI_NS_DONT_OPEN_SCOPE), - NULL, ReturnNode); + ACPI_IMODE_EXECUTE, (Flags | ACPI_NS_DONT_OPEN_SCOPE), + NULL, ReturnNode); if (ACPI_FAILURE (Status)) { ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "%s, %s\n", - Pathname, AcpiFormatException (Status))); + Pathname, AcpiFormatException (Status))); } (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nswalk.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nswalk.c index f02fbf4937..aa23760ff1 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nswalk.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nswalk.c @@ -290,10 +290,10 @@ AcpiNsWalkNamespace ( /* Null child means "get first node" */ - ParentNode = StartNode; - ChildNode = AcpiNsGetNextNode (ParentNode, NULL); - ChildType = ACPI_TYPE_ANY; - Level = 1; + ParentNode = StartNode; + ChildNode = AcpiNsGetNextNode (ParentNode, NULL); + ChildType = ACPI_TYPE_ANY; + Level = 1; /* * Traverse the tree of nodes until we bubble back up to where we @@ -351,7 +351,7 @@ AcpiNsWalkNamespace ( if (DescendingCallback) { Status = DescendingCallback (ChildNode, Level, - Context, ReturnValue); + Context, ReturnValue); } } else @@ -359,7 +359,7 @@ AcpiNsWalkNamespace ( if (AscendingCallback) { Status = AscendingCallback (ChildNode, Level, - Context, ReturnValue); + Context, ReturnValue); } } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsxfeval.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsxfeval.c index 8a4aaa8f6f..06328a6123 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsxfeval.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsxfeval.c @@ -504,13 +504,13 @@ AcpiEvaluateObject ( /* Get the size of the returned object */ Status = AcpiUtGetObjectSize (Info->ReturnObject, - &BufferSpaceNeeded); + &BufferSpaceNeeded); if (ACPI_SUCCESS (Status)) { /* Validate/Allocate/Clear caller buffer */ Status = AcpiUtInitializeBuffer (ReturnBuffer, - BufferSpaceNeeded); + BufferSpaceNeeded); if (ACPI_FAILURE (Status)) { /* @@ -526,8 +526,8 @@ AcpiEvaluateObject ( { /* We have enough space for the object, build it */ - Status = AcpiUtCopyIobjectToEobject ( - Info->ReturnObject, ReturnBuffer); + Status = AcpiUtCopyIobjectToEobject (Info->ReturnObject, + ReturnBuffer); } } } @@ -740,8 +740,8 @@ AcpiWalkNamespace ( } Status = AcpiNsWalkNamespace (Type, StartObject, MaxDepth, - ACPI_NS_WALK_UNLOCK, DescendingCallback, - AscendingCallback, Context, ReturnValue); + ACPI_NS_WALK_UNLOCK, DescendingCallback, + AscendingCallback, Context, ReturnValue); UnlockAndExit2: (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); @@ -892,8 +892,8 @@ AcpiNsGetDeviceCallback ( /* We have a valid device, invoke the user function */ - Status = Info->UserFunction (ObjHandle, NestingLevel, - Info->Context, ReturnValue); + Status = Info->UserFunction (ObjHandle, NestingLevel, Info->Context, + ReturnValue); return (Status); } @@ -948,8 +948,8 @@ AcpiGetDevices ( * We're going to call their callback from OUR callback, so we need * to know what it is, and their context parameter. */ - Info.Hid = HID; - Info.Context = Context; + Info.Hid = HID; + Info.Context = Context; Info.UserFunction = UserFunction; /* @@ -965,8 +965,8 @@ AcpiGetDevices ( } Status = AcpiNsWalkNamespace (ACPI_TYPE_DEVICE, ACPI_ROOT_OBJECT, - ACPI_UINT32_MAX, ACPI_NS_WALK_UNLOCK, - AcpiNsGetDeviceCallback, NULL, &Info, ReturnValue); + ACPI_UINT32_MAX, ACPI_NS_WALK_UNLOCK, + AcpiNsGetDeviceCallback, NULL, &Info, ReturnValue); (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); return_ACPI_STATUS (Status); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsxfname.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsxfname.c index 82d1c21501..51cc4f4802 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsxfname.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsxfname.c @@ -249,7 +249,7 @@ AcpiGetName ( { ACPI_STATUS Status; ACPI_NAMESPACE_NODE *Node; - const char *NodeName; + char *NodeName; /* Parameter validation */ @@ -271,7 +271,7 @@ AcpiGetName ( /* Get the full pathname (From the namespace root) */ Status = AcpiNsHandleToPathname (Handle, Buffer, - NameType == ACPI_FULL_PATHNAME ? FALSE : TRUE); + NameType == ACPI_FULL_PATHNAME ? FALSE : TRUE); return (Status); } @@ -337,6 +337,7 @@ AcpiNsCopyDeviceId ( ACPI_PNP_DEVICE_ID *Source, char *StringArea) { + /* Create the destination PNP_DEVICE_ID */ Dest->String = StringArea; @@ -362,18 +363,11 @@ AcpiNsCopyDeviceId ( * namespace node and possibly by running several standard * control methods (Such as in the case of a device.) * - * For Device and Processor objects, run the Device _HID, _UID, _CID, _STA, - * _CLS, _ADR, _SxW, and _SxD methods. + * For Device and Processor objects, run the Device _HID, _UID, _CID, _SUB, + * _CLS, _STA, _ADR, _SxW, and _SxD methods. * * Note: Allocates the return buffer, must be freed by the caller. * - * Note: This interface is intended to be used during the initial device - * discovery namespace traversal. Therefore, no complex methods can be - * executed, especially those that access operation regions. Therefore, do - * not add any additional methods that could cause problems in this area. - * this was the fate of the _SUB method which was found to cause such - * problems and was removed (11/2015). - * ******************************************************************************/ ACPI_STATUS @@ -386,6 +380,7 @@ AcpiGetObjectInfo ( ACPI_PNP_DEVICE_ID_LIST *CidList = NULL; ACPI_PNP_DEVICE_ID *Hid = NULL; ACPI_PNP_DEVICE_ID *Uid = NULL; + ACPI_PNP_DEVICE_ID *Sub = NULL; ACPI_PNP_DEVICE_ID *Cls = NULL; char *NextIdString; ACPI_OBJECT_TYPE Type; @@ -439,7 +434,7 @@ AcpiGetObjectInfo ( { /* * Get extra info for ACPI Device/Processor objects only: - * Run the Device _HID, _UID, _CLS, and _CID methods. + * Run the Device _HID, _UID, _SUB, _CID, and _CLS methods. * * Note: none of these methods are required, so they may or may * not be present for this device. The Info->Valid bitfield is used @@ -464,6 +459,15 @@ AcpiGetObjectInfo ( Valid |= ACPI_VALID_UID; } + /* Execute the Device._SUB method */ + + Status = AcpiUtExecute_SUB (Node, &Sub); + if (ACPI_SUCCESS (Status)) + { + InfoSize += Sub->Length; + Valid |= ACPI_VALID_SUB; + } + /* Execute the Device._CID method */ Status = AcpiUtExecute_CID (Node, &CidList); @@ -526,7 +530,7 @@ AcpiGetObjectInfo ( /* Execute the Device._ADR method */ Status = AcpiUtEvaluateNumericObject (METHOD_NAME__ADR, Node, - &Info->Address); + &Info->Address); if (ACPI_SUCCESS (Status)) { Valid |= ACPI_VALID_ADR; @@ -535,8 +539,8 @@ AcpiGetObjectInfo ( /* Execute the Device._SxW methods */ Status = AcpiUtExecutePowerMethods (Node, - AcpiGbl_LowestDstateNames, ACPI_NUM_SxW_METHODS, - Info->LowestDstates); + AcpiGbl_LowestDstateNames, ACPI_NUM_SxW_METHODS, + Info->LowestDstates); if (ACPI_SUCCESS (Status)) { Valid |= ACPI_VALID_SXWS; @@ -545,8 +549,8 @@ AcpiGetObjectInfo ( /* Execute the Device._SxD methods */ Status = AcpiUtExecutePowerMethods (Node, - AcpiGbl_HighestDstateNames, ACPI_NUM_SxD_METHODS, - Info->HighestDstates); + AcpiGbl_HighestDstateNames, ACPI_NUM_SxD_METHODS, + Info->HighestDstates); if (ACPI_SUCCESS (Status)) { Valid |= ACPI_VALID_SXDS; @@ -566,8 +570,9 @@ AcpiGetObjectInfo ( } /* - * Copy the HID, UID, and CIDs to the return buffer. The variable-length - * strings are copied to the reserved area at the end of the buffer. + * Copy the HID, UID, SUB, and CIDs to the return buffer. + * The variable-length strings are copied to the reserved area + * at the end of the buffer. * * For HID and CID, check if the ID is a PCI Root Bridge. */ @@ -588,6 +593,12 @@ AcpiGetObjectInfo ( Uid, NextIdString); } + if (Sub) + { + NextIdString = AcpiNsCopyDeviceId (&Info->SubsystemId, + Sub, NextIdString); + } + if (CidList) { Info->CompatibleIdList.Count = CidList->Count; @@ -634,6 +645,10 @@ Cleanup: { ACPI_FREE (Uid); } + if (Sub) + { + ACPI_FREE (Sub); + } if (CidList) { ACPI_FREE (CidList); @@ -709,7 +724,6 @@ AcpiInstallMethod ( ParserState.Aml += AcpiPsGetOpcodeSize (Opcode); ParserState.PkgEnd = AcpiPsGetNextPackageEnd (&ParserState); Path = AcpiPsGetNextNamestring (&ParserState); - MethodFlags = *ParserState.Aml++; AmlStart = ParserState.Aml; AmlLength = ACPI_PTR_DIFF (ParserState.PkgEnd, AmlStart); @@ -742,7 +756,7 @@ AcpiInstallMethod ( /* The lookup either returns an existing node or creates a new one */ Status = AcpiNsLookup (NULL, Path, ACPI_TYPE_METHOD, ACPI_IMODE_LOAD_PASS1, - ACPI_NS_DONT_OPEN_SCOPE | ACPI_NS_ERROR_IF_FOUND, NULL, &Node); + ACPI_NS_DONT_OPEN_SCOPE | ACPI_NS_ERROR_IF_FOUND, NULL, &Node); (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsxfobj.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsxfobj.c index d2c19d6e23..2ca409fcad 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsxfobj.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsxfobj.c @@ -153,8 +153,10 @@ AcpiGetType ( return (AE_BAD_PARAMETER); } - /* Special case for the predefined Root Node (return type ANY) */ - + /* + * Special case for the predefined Root Node + * (return type ANY) + */ if (Handle == ACPI_ROOT_OBJECT) { *RetType = ACPI_TYPE_ANY; @@ -178,6 +180,7 @@ AcpiGetType ( *RetType = Node->Type; + Status = AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); return (Status); } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psargs.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psargs.c index d6654a158f..cbb24a9f89 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psargs.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psargs.c @@ -359,8 +359,8 @@ AcpiPsGetNextNamepath ( * the upsearch) */ Status = AcpiNsLookup (WalkState->ScopeInfo, Path, - ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE, - ACPI_NS_SEARCH_PARENT | ACPI_NS_DONT_OPEN_SCOPE, NULL, &Node); + ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE, + ACPI_NS_SEARCH_PARENT | ACPI_NS_DONT_OPEN_SCOPE, NULL, &Node); /* * If this name is a control method invocation, we must @@ -370,7 +370,7 @@ AcpiPsGetNextNamepath ( PossibleMethodCall && (Node->Type == ACPI_TYPE_METHOD)) { - if (GET_CURRENT_ARG_TYPE (WalkState->ArgTypes) == ARGP_SUPERNAME) + if (WalkState->Opcode == AML_UNLOAD_OP) { /* * AcpiPsGetNextNamestring has increased the AML pointer, @@ -431,7 +431,7 @@ AcpiPsGetNextNamepath ( /* 1) NotFound is ok during load pass 1/2 (allow forward references) */ if ((WalkState->ParseFlags & ACPI_PARSE_MODE_MASK) != - ACPI_PARSE_EXECUTE) + ACPI_PARSE_EXECUTE) { Status = AE_OK; } @@ -463,7 +463,7 @@ AcpiPsGetNextNamepath ( ACPI_ERROR_NAMESPACE (Path, Status); if ((WalkState->ParseFlags & ACPI_PARSE_MODE_MASK) == - ACPI_PARSE_EXECUTE) + ACPI_PARSE_EXECUTE) { /* Report a control method execution error */ @@ -816,7 +816,7 @@ AcpiPsGetNextField ( * * PARAMETERS: WalkState - Current state * ParserState - Current parser state object - * ArgType - The parser argument type (ARGP_*) + * ArgType - The argument type (AML_*_ARG) * ReturnArg - Where the next arg is returned * * RETURN: Status, and an op object containing the next argument. @@ -859,7 +859,6 @@ AcpiPsGetNextArg ( { return_ACPI_STATUS (AE_NO_MEMORY); } - AcpiPsGetNextSimpleArg (ParserState, ArgType, Arg); break; @@ -908,7 +907,7 @@ AcpiPsGetNextArg ( /* Non-empty list */ Arg = AcpiPsAllocOp (AML_INT_BYTELIST_OP, - ParserState->Aml); + ParserState->Aml); if (!Arg) { return_ACPI_STATUS (AE_NO_MEMORY); @@ -929,7 +928,6 @@ AcpiPsGetNextArg ( case ARGP_TARGET: case ARGP_SUPERNAME: case ARGP_SIMPLENAME: - case ARGP_NAME_OR_REF: Subop = AcpiPsPeekOpcode (ParserState); if (Subop == 0 || @@ -945,16 +943,15 @@ AcpiPsGetNextArg ( return_ACPI_STATUS (AE_NO_MEMORY); } - /* SuperName allows argument to be a method call */ + /* To support SuperName arg of Unload */ - if (ArgType == ARGP_SUPERNAME) + if (WalkState->Opcode == AML_UNLOAD_OP) { - Status = AcpiPsGetNextNamepath (WalkState, ParserState, - Arg, ACPI_POSSIBLE_METHOD_CALL); + Status = AcpiPsGetNextNamepath (WalkState, ParserState, Arg, 1); /* - * If the SuperName argument is a method call, we have - * already restored the AML pointer, just free this Arg + * If the SuperName arg of Unload is a method call, + * we have restored the AML pointer, just free this Arg */ if (Arg->Common.AmlOpcode == AML_INT_METHODCALL_OP) { @@ -964,8 +961,7 @@ AcpiPsGetNextArg ( } else { - Status = AcpiPsGetNextNamepath (WalkState, ParserState, - Arg, ACPI_NOT_METHOD_CALL); + Status = AcpiPsGetNextNamepath (WalkState, ParserState, Arg, 0); } } else diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psloop.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psloop.c index 524a6bd09e..bd7166fa56 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psloop.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psloop.c @@ -192,8 +192,7 @@ AcpiPsGetArguments ( case AML_INT_NAMEPATH_OP: /* AML_NAMESTRING_ARG */ - Status = AcpiPsGetNextNamepath (WalkState, - &(WalkState->ParserState), Op, ACPI_POSSIBLE_METHOD_CALL); + Status = AcpiPsGetNextNamepath (WalkState, &(WalkState->ParserState), Op, 1); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -206,13 +205,12 @@ AcpiPsGetArguments ( /* * Op is not a constant or string, append each argument to the Op */ - while (GET_CURRENT_ARG_TYPE (WalkState->ArgTypes) && - !WalkState->ArgCount) + while (GET_CURRENT_ARG_TYPE (WalkState->ArgTypes) && !WalkState->ArgCount) { WalkState->Aml = WalkState->ParserState.Aml; Status = AcpiPsGetNextArg (WalkState, &(WalkState->ParserState), - GET_CURRENT_ARG_TYPE (WalkState->ArgTypes), &Arg); + GET_CURRENT_ARG_TYPE (WalkState->ArgTypes), &Arg); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -624,7 +622,7 @@ AcpiPsParseLoop ( * prepare for argument */ Status = AcpiPsPushScope (ParserState, Op, - WalkState->ArgTypes, WalkState->ArgCount); + WalkState->ArgTypes, WalkState->ArgCount); if (ACPI_FAILURE (Status)) { Status = AcpiPsCompleteOp (WalkState, &Op, Status); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psobject.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psobject.c index 0037871d9f..77e94345a8 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psobject.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psobject.c @@ -181,7 +181,7 @@ AcpiPsGetAmlOpcode ( if (WalkState->PassNumber == 2) { AmlOffset = (UINT32) ACPI_PTR_DIFF (WalkState->Aml, - WalkState->ParserState.AmlStart); + WalkState->ParserState.AmlStart); ACPI_ERROR ((AE_INFO, "Unknown opcode 0x%.2X at table offset 0x%.4X, ignoring", @@ -223,8 +223,7 @@ AcpiPsGetAmlOpcode ( /* Found opcode info, this is a normal opcode */ - WalkState->ParserState.Aml += - AcpiPsGetOpcodeSize (WalkState->Opcode); + WalkState->ParserState.Aml += AcpiPsGetOpcodeSize (WalkState->Opcode); WalkState->ArgTypes = WalkState->OpInfo->ParseArgs; break; } @@ -274,7 +273,7 @@ AcpiPsBuildNamedOp ( (GET_CURRENT_ARG_TYPE (WalkState->ArgTypes) != ARGP_NAME)) { Status = AcpiPsGetNextArg (WalkState, &(WalkState->ParserState), - GET_CURRENT_ARG_TYPE (WalkState->ArgTypes), &Arg); + GET_CURRENT_ARG_TYPE (WalkState->ArgTypes), &Arg); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psopcode.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psopcode.c index 45908155e4..41181c61b0 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psopcode.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psopcode.c @@ -317,7 +317,7 @@ const ACPI_OPCODE_INFO AcpiGbl_AmlOpInfo[AML_NUM_OPCODES] = /* 34 */ ACPI_OP ("CreateWordField", ARGP_CREATE_WORD_FIELD_OP, ARGI_CREATE_WORD_FIELD_OP, ACPI_TYPE_BUFFER_FIELD, AML_CLASS_CREATE, AML_TYPE_CREATE_FIELD, AML_HAS_ARGS | AML_NSOBJECT | AML_NSNODE | AML_DEFER | AML_CREATE), /* 35 */ ACPI_OP ("CreateByteField", ARGP_CREATE_BYTE_FIELD_OP, ARGI_CREATE_BYTE_FIELD_OP, ACPI_TYPE_BUFFER_FIELD, AML_CLASS_CREATE, AML_TYPE_CREATE_FIELD, AML_HAS_ARGS | AML_NSOBJECT | AML_NSNODE | AML_DEFER | AML_CREATE), /* 36 */ ACPI_OP ("CreateBitField", ARGP_CREATE_BIT_FIELD_OP, ARGI_CREATE_BIT_FIELD_OP, ACPI_TYPE_BUFFER_FIELD, AML_CLASS_CREATE, AML_TYPE_CREATE_FIELD, AML_HAS_ARGS | AML_NSOBJECT | AML_NSNODE | AML_DEFER | AML_CREATE), -/* 37 */ ACPI_OP ("ObjectType", ARGP_OBJECT_TYPE_OP, ARGI_OBJECT_TYPE_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_1R, AML_FLAGS_EXEC_1A_0T_1R | AML_NO_OPERAND_RESOLVE), +/* 37 */ ACPI_OP ("ObjectType", ARGP_TYPE_OP, ARGI_TYPE_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_1R, AML_FLAGS_EXEC_1A_0T_1R | AML_NO_OPERAND_RESOLVE), /* 38 */ ACPI_OP ("LAnd", ARGP_LAND_OP, ARGI_LAND_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_0T_1R, AML_FLAGS_EXEC_2A_0T_1R | AML_LOGICAL_NUMERIC | AML_CONSTANT), /* 39 */ ACPI_OP ("LOr", ARGP_LOR_OP, ARGI_LOR_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_0T_1R, AML_FLAGS_EXEC_2A_0T_1R | AML_LOGICAL_NUMERIC | AML_CONSTANT), /* 3A */ ACPI_OP ("LNot", ARGP_LNOT_OP, ARGI_LNOT_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_1R, AML_FLAGS_EXEC_1A_0T_1R | AML_CONSTANT), diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psparse.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psparse.c index a1d6612c36..599a766e56 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psparse.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psparse.c @@ -272,8 +272,8 @@ AcpiPsCompleteThisOp ( * These opcodes contain TermArg operands. The current * op must be replaced by a placeholder return op */ - ReplacementOp = AcpiPsAllocOp ( - AML_INT_RETURN_VALUE_OP, Op->Common.Aml); + ReplacementOp = AcpiPsAllocOp (AML_INT_RETURN_VALUE_OP, + Op->Common.Aml); if (!ReplacementOp) { Status = AE_NO_MEMORY; @@ -292,8 +292,8 @@ AcpiPsCompleteThisOp ( (Op->Common.Parent->Common.AmlOpcode == AML_BANK_FIELD_OP) || (Op->Common.Parent->Common.AmlOpcode == AML_VAR_PACKAGE_OP)) { - ReplacementOp = AcpiPsAllocOp ( - AML_INT_RETURN_VALUE_OP, Op->Common.Aml); + ReplacementOp = AcpiPsAllocOp (AML_INT_RETURN_VALUE_OP, + Op->Common.Aml); if (!ReplacementOp) { Status = AE_NO_MEMORY; @@ -307,7 +307,7 @@ AcpiPsCompleteThisOp ( (Op->Common.AmlOpcode == AML_VAR_PACKAGE_OP)) { ReplacementOp = AcpiPsAllocOp (Op->Common.AmlOpcode, - Op->Common.Aml); + Op->Common.Aml); if (!ReplacementOp) { Status = AE_NO_MEMORY; @@ -323,8 +323,8 @@ AcpiPsCompleteThisOp ( default: - ReplacementOp = AcpiPsAllocOp ( - AML_INT_RETURN_VALUE_OP, Op->Common.Aml); + ReplacementOp = AcpiPsAllocOp (AML_INT_RETURN_VALUE_OP, + Op->Common.Aml); if (!ReplacementOp) { Status = AE_NO_MEMORY; @@ -339,11 +339,11 @@ AcpiPsCompleteThisOp ( if (ReplacementOp) { - ReplacementOp->Common.Parent = Op->Common.Parent; - ReplacementOp->Common.Value.Arg = NULL; - ReplacementOp->Common.Node = Op->Common.Node; + ReplacementOp->Common.Parent = Op->Common.Parent; + ReplacementOp->Common.Value.Arg = NULL; + ReplacementOp->Common.Node = Op->Common.Node; Op->Common.Parent->Common.Value.Arg = ReplacementOp; - ReplacementOp->Common.Next = Op->Common.Next; + ReplacementOp->Common.Next = Op->Common.Next; } else { @@ -362,11 +362,11 @@ AcpiPsCompleteThisOp ( { if (ReplacementOp) { - ReplacementOp->Common.Parent = Op->Common.Parent; + ReplacementOp->Common.Parent = Op->Common.Parent; ReplacementOp->Common.Value.Arg = NULL; - ReplacementOp->Common.Node = Op->Common.Node; - Prev->Common.Next = ReplacementOp; - ReplacementOp->Common.Next = Op->Common.Next; + ReplacementOp->Common.Node = Op->Common.Node; + Prev->Common.Next = ReplacementOp; + ReplacementOp->Common.Next = Op->Common.Next; Next = NULL; } else @@ -566,8 +566,7 @@ AcpiPsParseAml ( */ if (WalkState->MethodDesc) { - WalkState->Thread->CurrentSyncLevel = - WalkState->MethodDesc->Method.SyncLevel; + WalkState->Thread->CurrentSyncLevel = WalkState->MethodDesc->Method.SyncLevel; } AcpiDsPushWalkState (WalkState, Thread); @@ -613,8 +612,8 @@ AcpiPsParseAml ( } /* - * If the transfer to the new method method call worked - *, a new walk state was created -- get it + * If the transfer to the new method method call worked, a new walk + * state was created -- get it */ WalkState = AcpiDsGetCurrentWalkState (Thread); continue; @@ -633,8 +632,7 @@ AcpiPsParseAml ( /* Check for possible multi-thread reentrancy problem */ if ((Status == AE_ALREADY_EXISTS) && - (!(WalkState->MethodDesc->Method.InfoFlags & - ACPI_METHOD_SERIALIZED))) + (!(WalkState->MethodDesc->Method.InfoFlags & ACPI_METHOD_SERIALIZED))) { /* * Method is not serialized and tried to create an object @@ -660,8 +658,7 @@ AcpiPsParseAml ( * encountered an error during the method parse phase, there's lots of * cleanup to do */ - if (((WalkState->ParseFlags & ACPI_PARSE_MODE_MASK) == - ACPI_PARSE_EXECUTE) || + if (((WalkState->ParseFlags & ACPI_PARSE_MODE_MASK) == ACPI_PARSE_EXECUTE) || (ACPI_FAILURE (Status))) { AcpiDsTerminateControlMethod (WalkState->MethodDesc, WalkState); @@ -708,7 +705,7 @@ AcpiPsParseAml ( /* Restart the calling control method */ Status = AcpiDsRestartControlMethod (WalkState, - PreviousWalkState->ImplicitReturnObj); + PreviousWalkState->ImplicitReturnObj); } else { @@ -719,7 +716,7 @@ AcpiPsParseAml ( AcpiDsClearImplicitReturn (PreviousWalkState); Status = AcpiDsRestartControlMethod (WalkState, - PreviousWalkState->ReturnDesc); + PreviousWalkState->ReturnDesc); } if (ACPI_SUCCESS (Status)) { diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psscope.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psscope.c index 60e03b4eee..f44ea48897 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psscope.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psscope.c @@ -308,9 +308,9 @@ AcpiPsPopScope ( /* Return to parsing previous op */ - *Op = Scope->ParseScope.Op; - *ArgList = Scope->ParseScope.ArgList; - *ArgCount = Scope->ParseScope.ArgCount; + *Op = Scope->ParseScope.Op; + *ArgList = Scope->ParseScope.ArgList; + *ArgCount = Scope->ParseScope.ArgCount; ParserState->PkgEnd = Scope->ParseScope.PkgEnd; /* All done with this scope state structure */ @@ -321,8 +321,8 @@ AcpiPsPopScope ( { /* Empty parse stack, prepare to fetch next opcode */ - *Op = NULL; - *ArgList = 0; + *Op = NULL; + *ArgList = 0; *ArgCount = 0; } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psutils.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psutils.c index 168f098f91..3aa4954ae1 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psutils.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psutils.c @@ -177,8 +177,8 @@ AcpiPsInitOp ( Op->Common.AmlOpcode = Opcode; ACPI_DISASM_ONLY_MEMBERS (strncpy (Op->Common.AmlOpName, - (AcpiPsGetOpcodeInfo (Opcode))->Name, - sizeof (Op->Common.AmlOpName))); + (AcpiPsGetOpcodeInfo (Opcode))->Name, + sizeof (Op->Common.AmlOpName))); } @@ -277,8 +277,7 @@ AcpiPsFreeOp ( if (Op->Common.AmlOpcode == AML_INT_RETURN_VALUE_OP) { - ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, - "Free retval op: %p\n", Op)); + ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, "Free retval op: %p\n", Op)); } if (Op->Common.Flags & ACPI_PARSEOP_GENERIC) diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/pswalk.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/pswalk.c index fa837ee2e3..a447970c4b 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/pswalk.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/pswalk.c @@ -178,7 +178,6 @@ AcpiPsDeleteParseTree ( { return_VOID; } - if (Next) { Op = Next; diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psxface.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psxface.c index b03f776a52..eb5c0182b6 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psxface.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psxface.c @@ -255,7 +255,7 @@ AcpiPsExecuteMethod ( Info->PassNumber = ACPI_IMODE_EXECUTE; WalkState = AcpiDsCreateWalkState ( - Info->ObjDesc->Method.OwnerId, NULL, NULL, NULL); + Info->ObjDesc->Method.OwnerId, NULL, NULL, NULL); if (!WalkState) { Status = AE_NO_MEMORY; @@ -263,8 +263,8 @@ AcpiPsExecuteMethod ( } Status = AcpiDsInitAmlWalk (WalkState, Op, Info->Node, - Info->ObjDesc->Method.AmlStart, - Info->ObjDesc->Method.AmlLength, Info, Info->PassNumber); + Info->ObjDesc->Method.AmlStart, + Info->ObjDesc->Method.AmlLength, Info, Info->PassNumber); if (ACPI_FAILURE (Status)) { AcpiDsDeleteWalkState (WalkState); @@ -375,8 +375,7 @@ AcpiPsUpdateParameterList ( { /* Ignore errors, just do them all */ - (void) AcpiUtUpdateObjectReference ( - Info->Parameters[i], Action); + (void) AcpiUtUpdateObjectReference (Info->Parameters[i], Action); } } } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rsaddr.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rsaddr.c index 2b603f0bda..9d1d4d7390 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rsaddr.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rsaddr.c @@ -400,35 +400,30 @@ AcpiRsGetAddressCommon ( /* Validate the Resource Type */ - if ((Aml->Address.ResourceType > 2) && - (Aml->Address.ResourceType < 0xC0)) + if ((Aml->Address.ResourceType > 2) && (Aml->Address.ResourceType < 0xC0)) { return (FALSE); } /* Get the Resource Type and General Flags */ - (void) AcpiRsConvertAmlToResource ( - Resource, Aml, AcpiRsConvertGeneralFlags); + (void) AcpiRsConvertAmlToResource (Resource, Aml, AcpiRsConvertGeneralFlags); /* Get the Type-Specific Flags (Memory and I/O descriptors only) */ if (Resource->Data.Address.ResourceType == ACPI_MEMORY_RANGE) { - (void) AcpiRsConvertAmlToResource ( - Resource, Aml, AcpiRsConvertMemFlags); + (void) AcpiRsConvertAmlToResource (Resource, Aml, AcpiRsConvertMemFlags); } else if (Resource->Data.Address.ResourceType == ACPI_IO_RANGE) { - (void) AcpiRsConvertAmlToResource ( - Resource, Aml, AcpiRsConvertIoFlags); + (void) AcpiRsConvertAmlToResource (Resource, Aml, AcpiRsConvertIoFlags); } else { /* Generic resource type, just grab the TypeSpecific byte */ - Resource->Data.Address.Info.TypeSpecific = - Aml->Address.SpecificFlags; + Resource->Data.Address.Info.TypeSpecific = Aml->Address.SpecificFlags; } return (TRUE); @@ -459,26 +454,22 @@ AcpiRsSetAddressCommon ( /* Set the Resource Type and General Flags */ - (void) AcpiRsConvertResourceToAml ( - Resource, Aml, AcpiRsConvertGeneralFlags); + (void) AcpiRsConvertResourceToAml (Resource, Aml, AcpiRsConvertGeneralFlags); /* Set the Type-Specific Flags (Memory and I/O descriptors only) */ if (Resource->Data.Address.ResourceType == ACPI_MEMORY_RANGE) { - (void) AcpiRsConvertResourceToAml ( - Resource, Aml, AcpiRsConvertMemFlags); + (void) AcpiRsConvertResourceToAml (Resource, Aml, AcpiRsConvertMemFlags); } else if (Resource->Data.Address.ResourceType == ACPI_IO_RANGE) { - (void) AcpiRsConvertResourceToAml ( - Resource, Aml, AcpiRsConvertIoFlags); + (void) AcpiRsConvertResourceToAml (Resource, Aml, AcpiRsConvertIoFlags); } else { /* Generic resource type, just copy the TypeSpecific byte */ - Aml->Address.SpecificFlags = - Resource->Data.Address.Info.TypeSpecific; + Aml->Address.SpecificFlags = Resource->Data.Address.Info.TypeSpecific; } } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rscalc.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rscalc.c index deab7e2a33..33a438ea6f 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rscalc.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rscalc.c @@ -236,17 +236,16 @@ AcpiRsStreamOptionLength ( /* - * The ResourceSourceIndex and ResourceSource are optional elements of - * some Large-type resource descriptors. + * The ResourceSourceIndex and ResourceSource are optional elements of some + * Large-type resource descriptors. */ /* - * If the length of the actual resource descriptor is greater than the - * ACPI spec-defined minimum length, it means that a ResourceSourceIndex - * exists and is followed by a (required) null terminated string. The - * string length (including the null terminator) is the resource length - * minus the minimum length, minus one byte for the ResourceSourceIndex - * itself. + * If the length of the actual resource descriptor is greater than the ACPI + * spec-defined minimum length, it means that a ResourceSourceIndex exists + * and is followed by a (required) null terminated string. The string length + * (including the null terminator) is the resource length minus the minimum + * length, minus one byte for the ResourceSourceIndex itself. */ if (ResourceLength > MinimumAmlResourceLength) { @@ -382,9 +381,9 @@ AcpiRsGetAmlLength ( * 16-Bit Address Resource: * Add the size of the optional ResourceSource info */ - TotalSize = (ACPI_RS_LENGTH) (TotalSize + - AcpiRsStructOptionLength ( - &Resource->Data.Address16.ResourceSource)); + TotalSize = (ACPI_RS_LENGTH) + (TotalSize + AcpiRsStructOptionLength ( + &Resource->Data.Address16.ResourceSource)); break; @@ -393,9 +392,9 @@ AcpiRsGetAmlLength ( * 32-Bit Address Resource: * Add the size of the optional ResourceSource info */ - TotalSize = (ACPI_RS_LENGTH) (TotalSize + - AcpiRsStructOptionLength ( - &Resource->Data.Address32.ResourceSource)); + TotalSize = (ACPI_RS_LENGTH) + (TotalSize + AcpiRsStructOptionLength ( + &Resource->Data.Address32.ResourceSource)); break; @@ -404,9 +403,9 @@ AcpiRsGetAmlLength ( * 64-Bit Address Resource: * Add the size of the optional ResourceSource info */ - TotalSize = (ACPI_RS_LENGTH) (TotalSize + - AcpiRsStructOptionLength ( - &Resource->Data.Address64.ResourceSource)); + TotalSize = (ACPI_RS_LENGTH) + (TotalSize + AcpiRsStructOptionLength ( + &Resource->Data.Address64.ResourceSource)); break; @@ -416,7 +415,8 @@ AcpiRsGetAmlLength ( * Add the size of each additional optional interrupt beyond the * required 1 (4 bytes for each UINT32 interrupt number) */ - TotalSize = (ACPI_RS_LENGTH) (TotalSize + + TotalSize = (ACPI_RS_LENGTH) + (TotalSize + ((Resource->Data.ExtendedIrq.InterruptCount - 1) * 4) + /* Add the size of the optional ResourceSource info */ @@ -428,8 +428,7 @@ AcpiRsGetAmlLength ( case ACPI_RESOURCE_TYPE_GPIO: - TotalSize = (ACPI_RS_LENGTH) (TotalSize + - (Resource->Data.Gpio.PinTableLength * 2) + + TotalSize = (ACPI_RS_LENGTH) (TotalSize + (Resource->Data.Gpio.PinTableLength * 2) + Resource->Data.Gpio.ResourceSource.StringLength + Resource->Data.Gpio.VendorLength); @@ -438,8 +437,7 @@ AcpiRsGetAmlLength ( case ACPI_RESOURCE_TYPE_SERIAL_BUS: - TotalSize = AcpiGbl_AmlResourceSerialBusSizes [ - Resource->Data.CommonSerialBus.Type]; + TotalSize = AcpiGbl_AmlResourceSerialBusSizes [Resource->Data.CommonSerialBus.Type]; TotalSize = (ACPI_RS_LENGTH) (TotalSize + Resource->Data.I2cSerialBus.ResourceSource.StringLength + @@ -618,15 +616,12 @@ AcpiRsGetListLength ( if (AmlResource->Gpio.VendorLength) { - ExtraStructBytes += - AmlResource->Gpio.VendorOffset - - AmlResource->Gpio.PinTableOffset + - AmlResource->Gpio.VendorLength; + ExtraStructBytes += AmlResource->Gpio.VendorOffset - + AmlResource->Gpio.PinTableOffset + AmlResource->Gpio.VendorLength; } else { - ExtraStructBytes += - AmlResource->LargeHeader.ResourceLength + + ExtraStructBytes += AmlResource->LargeHeader.ResourceLength + sizeof (AML_RESOURCE_LARGE_HEADER) - AmlResource->Gpio.PinTableOffset; } @@ -636,8 +631,7 @@ AcpiRsGetListLength ( MinimumAmlResourceLength = AcpiGbl_ResourceAmlSerialBusSizes[ AmlResource->CommonSerialBus.Type]; - ExtraStructBytes += - AmlResource->CommonSerialBus.ResourceLength - + ExtraStructBytes += AmlResource->CommonSerialBus.ResourceLength - MinimumAmlResourceLength; break; @@ -652,8 +646,7 @@ AcpiRsGetListLength ( * Important: Round the size up for the appropriate alignment. This * is a requirement on IA64. */ - if (AcpiUtGetResourceType (AmlBuffer) == - ACPI_RESOURCE_NAME_SERIAL_BUS) + if (AcpiUtGetResourceType (AmlBuffer) == ACPI_RESOURCE_NAME_SERIAL_BUS) { BufferSize = AcpiGbl_ResourceStructSerialBusSizes[ AmlResource->CommonSerialBus.Type] + ExtraStructBytes; @@ -661,10 +654,10 @@ AcpiRsGetListLength ( else { BufferSize = AcpiGbl_ResourceStructSizes[ResourceIndex] + - ExtraStructBytes; + ExtraStructBytes; } - BufferSize = (UINT32) ACPI_ROUND_UP_TO_NATIVE_WORD (BufferSize); + *SizeNeeded += BufferSize; ACPI_DEBUG_PRINT ((ACPI_DB_RESOURCES, @@ -801,7 +794,7 @@ AcpiRsGetPciRoutingTableLength ( else { TempSizeNeeded += AcpiNsGetPathnameLength ( - (*SubObjectList)->Reference.Node); + (*SubObjectList)->Reference.Node); } } else diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rscreate.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rscreate.c index 0bf0ec5dc3..8cf00d3c50 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rscreate.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rscreate.c @@ -158,8 +158,8 @@ AcpiBufferToResource ( /* Get the required length for the converted resource */ - Status = AcpiRsGetListLength ( - AmlBuffer, AmlBufferLength, &ListSizeNeeded); + Status = AcpiRsGetListLength (AmlBuffer, AmlBufferLength, + &ListSizeNeeded); if (Status == AE_AML_NO_RESOURCE_END_TAG) { Status = AE_OK; @@ -181,7 +181,7 @@ AcpiBufferToResource ( /* Perform the AML-to-Resource conversion */ Status = AcpiUtWalkAmlResources (NULL, AmlBuffer, AmlBufferLength, - AcpiRsConvertAmlToResources, &CurrentResourcePtr); + AcpiRsConvertAmlToResources, &CurrentResourcePtr); if (Status == AE_AML_NO_RESOURCE_END_TAG) { Status = AE_OK; @@ -269,14 +269,14 @@ AcpiRsCreateResourceList ( Resource = OutputBuffer->Pointer; Status = AcpiUtWalkAmlResources (NULL, AmlStart, AmlBufferLength, - AcpiRsConvertAmlToResources, &Resource); + AcpiRsConvertAmlToResources, &Resource); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "OutputBuffer %p Length %X\n", - OutputBuffer->Pointer, (UINT32) OutputBuffer->Length)); + OutputBuffer->Pointer, (UINT32) OutputBuffer->Length)); return_ACPI_STATUS (AE_OK); } @@ -327,8 +327,8 @@ AcpiRsCreatePciRoutingTable ( /* Get the required buffer length */ - Status = AcpiRsGetPciRoutingTableLength ( - PackageObject,&BufferSizeNeeded); + Status = AcpiRsGetPciRoutingTableLength (PackageObject, + &BufferSizeNeeded); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -350,10 +350,10 @@ AcpiRsCreatePciRoutingTable ( * package that in turn contains an UINT64 Address, a UINT8 Pin, * a Name, and a UINT8 SourceIndex. */ - TopObjectList = PackageObject->Package.Elements; + TopObjectList = PackageObject->Package.Elements; NumberOfElements = PackageObject->Package.Count; - Buffer = OutputBuffer->Pointer; - UserPrt = ACPI_CAST_PTR (ACPI_PCI_ROUTING_TABLE, Buffer); + Buffer = OutputBuffer->Pointer; + UserPrt = ACPI_CAST_PTR (ACPI_PCI_ROUTING_TABLE, Buffer); for (Index = 0; Index < NumberOfElements; Index++) { @@ -367,9 +367,9 @@ AcpiRsCreatePciRoutingTable ( UserPrt = ACPI_CAST_PTR (ACPI_PCI_ROUTING_TABLE, Buffer); /* - * Fill in the Length field with the information we have at this - * point. The minus four is to subtract the size of the UINT8 - * Source[4] member because it is added below. + * Fill in the Length field with the information we have at this point. + * The minus four is to subtract the size of the UINT8 Source[4] member + * because it is added below. */ UserPrt->Length = (sizeof (ACPI_PCI_ROUTING_TABLE) - 4); @@ -395,8 +395,7 @@ AcpiRsCreatePciRoutingTable ( ObjDesc = SubObjectList[0]; if (!ObjDesc || ObjDesc->Common.Type != ACPI_TYPE_INTEGER) { - ACPI_ERROR ((AE_INFO, - "(PRT[%u].Address) Need Integer, found %s", + ACPI_ERROR ((AE_INFO, "(PRT[%u].Address) Need Integer, found %s", Index, AcpiUtGetObjectTypeName (ObjDesc))); return_ACPI_STATUS (AE_BAD_DATA); } @@ -439,12 +438,12 @@ AcpiRsCreatePciRoutingTable ( /* Use *remaining* length of the buffer as max for pathname */ PathBuffer.Length = OutputBuffer->Length - - (UINT32) ((UINT8 *) UserPrt->Source - - (UINT8 *) OutputBuffer->Pointer); + (UINT32) ((UINT8 *) UserPrt->Source - + (UINT8 *) OutputBuffer->Pointer); PathBuffer.Pointer = UserPrt->Source; - Status = AcpiNsHandleToPathname ( - (ACPI_HANDLE) Node, &PathBuffer, FALSE); + Status = AcpiNsHandleToPathname ((ACPI_HANDLE) Node, + &PathBuffer, FALSE); /* +1 to include null terminator */ @@ -464,8 +463,8 @@ AcpiRsCreatePciRoutingTable ( case ACPI_TYPE_INTEGER: /* - * If this is a number, then the Source Name is NULL, since - * the entire buffer was zeroed out, we can leave this alone. + * If this is a number, then the Source Name is NULL, since the + * entire buffer was zeroed out, we can leave this alone. * * Add to the Length field the length of the UINT32 NULL */ @@ -504,7 +503,7 @@ AcpiRsCreatePciRoutingTable ( } ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "OutputBuffer %p Length %X\n", - OutputBuffer->Pointer, (UINT32) OutputBuffer->Length)); + OutputBuffer->Pointer, (UINT32) OutputBuffer->Length)); return_ACPI_STATUS (AE_OK); } @@ -545,8 +544,8 @@ AcpiRsCreateAmlResources ( /* Get the buffer size needed for the AML byte stream */ - Status = AcpiRsGetAmlLength ( - ResourceList->Pointer, ResourceList->Length, &AmlSizeNeeded); + Status = AcpiRsGetAmlLength (ResourceList->Pointer, + ResourceList->Length, &AmlSizeNeeded); ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "AmlSizeNeeded=%X, %s\n", (UINT32) AmlSizeNeeded, AcpiFormatException (Status))); @@ -566,7 +565,7 @@ AcpiRsCreateAmlResources ( /* Do the conversion */ Status = AcpiRsConvertResourcesToAml (ResourceList->Pointer, - AmlSizeNeeded, OutputBuffer->Pointer); + AmlSizeNeeded, OutputBuffer->Pointer); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rslist.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rslist.c index 8e6460f3e1..4fda294ce5 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rslist.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rslist.c @@ -169,12 +169,9 @@ AcpiRsConvertAmlToResources ( /* Get the appropriate conversion info table */ AmlResource = ACPI_CAST_PTR (AML_RESOURCE, Aml); - - if (AcpiUtGetResourceType (Aml) == - ACPI_RESOURCE_NAME_SERIAL_BUS) + if (AcpiUtGetResourceType (Aml) == ACPI_RESOURCE_NAME_SERIAL_BUS) { - if (AmlResource->CommonSerialBus.Type > - AML_RESOURCE_MAX_SERIALBUSTYPE) + if (AmlResource->CommonSerialBus.Type > AML_RESOURCE_MAX_SERIALBUSTYPE) { ConversionTable = NULL; } @@ -182,13 +179,15 @@ AcpiRsConvertAmlToResources ( { /* This is an I2C, SPI, or UART SerialBus descriptor */ - ConversionTable = AcpiGbl_ConvertResourceSerialBusDispatch [ - AmlResource->CommonSerialBus.Type]; + ConversionTable = + AcpiGbl_ConvertResourceSerialBusDispatch[ + AmlResource->CommonSerialBus.Type]; } } else { - ConversionTable = AcpiGbl_GetResourceDispatch[ResourceIndex]; + ConversionTable = + AcpiGbl_GetResourceDispatch[ResourceIndex]; } if (!ConversionTable) @@ -283,8 +282,7 @@ AcpiRsConvertResourcesToAml ( if (Resource->Type == ACPI_RESOURCE_TYPE_SERIAL_BUS) { - if (Resource->Data.CommonSerialBus.Type > - AML_RESOURCE_MAX_SERIALBUSTYPE) + if (Resource->Data.CommonSerialBus.Type > AML_RESOURCE_MAX_SERIALBUSTYPE) { ConversionTable = NULL; } @@ -310,7 +308,8 @@ AcpiRsConvertResourcesToAml ( } Status = AcpiRsConvertResourceToAml (Resource, - ACPI_CAST_PTR (AML_RESOURCE, Aml), ConversionTable); + ACPI_CAST_PTR (AML_RESOURCE, Aml), + ConversionTable); if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, @@ -321,8 +320,8 @@ AcpiRsConvertResourcesToAml ( /* Perform final sanity check on the new AML resource descriptor */ - Status = AcpiUtValidateResource ( - NULL, ACPI_CAST_PTR (AML_RESOURCE, Aml), NULL); + Status = AcpiUtValidateResource (NULL, + ACPI_CAST_PTR (AML_RESOURCE, Aml), NULL); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rsmisc.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rsmisc.c index 04c1765c64..1a5512e175 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rsmisc.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rsmisc.c @@ -193,7 +193,7 @@ AcpiRsConvertAmlToResource ( * Source is the external AML byte stream buffer, * destination is the internal resource descriptor */ - Source = ACPI_ADD_PTR (void, Aml, Info->AmlOffset); + Source = ACPI_ADD_PTR (void, Aml, Info->AmlOffset); Destination = ACPI_ADD_PTR (void, Resource, Info->ResourceOffset); switch (Info->Opcode) @@ -272,7 +272,8 @@ AcpiRsConvertAmlToResource ( ItemCount = ACPI_GET8 (Source); ACPI_SET8 (Destination, ItemCount); - Resource->Length = Resource->Length + (Info->Value * ItemCount); + Resource->Length = Resource->Length + + (Info->Value * ItemCount); break; case ACPI_RSC_COUNT_GPIO_RES: @@ -344,7 +345,7 @@ AcpiRsConvertAmlToResource ( /* Generate and set the PIN data pointer */ Target = (char *) ACPI_ADD_PTR (void, Resource, - (Resource->Length - ItemCount * 2)); + (Resource->Length - ItemCount * 2)); *(UINT16 **) Destination = ACPI_CAST_PTR (UINT16, Target); /* Copy the PIN data */ @@ -358,7 +359,7 @@ AcpiRsConvertAmlToResource ( /* Generate and set the ResourceSource string pointer */ Target = (char *) ACPI_ADD_PTR (void, Resource, - (Resource->Length - ItemCount)); + (Resource->Length - ItemCount)); *(UINT8 **) Destination = ACPI_CAST_PTR (UINT8, Target); /* Copy the ResourceSource string */ @@ -372,7 +373,7 @@ AcpiRsConvertAmlToResource ( /* Generate and set the Vendor Data pointer */ Target = (char *) ACPI_ADD_PTR (void, Resource, - (Resource->Length - ItemCount)); + (Resource->Length - ItemCount)); *(UINT8 **) Destination = ACPI_CAST_PTR (UINT8, Target); /* Copy the Vendor Data */ @@ -386,13 +387,12 @@ AcpiRsConvertAmlToResource ( /* Generate and set the ResourceSource string pointer */ Target = (char *) ACPI_ADD_PTR (void, Resource, - (Resource->Length - ItemCount)); + (Resource->Length - ItemCount)); *(UINT8 **) Destination = ACPI_CAST_PTR (UINT8, Target); /* Copy the ResourceSource string */ - Source = ACPI_ADD_PTR ( - void, Aml, (ACPI_GET16 (Source) + Info->Value)); + Source = ACPI_ADD_PTR (void, Aml, (ACPI_GET16 (Source) + Info->Value)); AcpiRsMoveData (Target, Source, ItemCount, Info->Opcode); break; @@ -514,8 +514,7 @@ Exit: { /* Round the resource struct length up to the next boundary (32 or 64) */ - Resource->Length = (UINT32) - ACPI_ROUND_UP_TO_NATIVE_WORD (Resource->Length); + Resource->Length = (UINT32) ACPI_ROUND_UP_TO_NATIVE_WORD (Resource->Length); } return_ACPI_STATUS (AE_OK); } @@ -571,7 +570,7 @@ AcpiRsConvertResourceToAml ( * Source is the internal resource descriptor, * destination is the external AML byte stream buffer */ - Source = ACPI_ADD_PTR (void, Resource, Info->ResourceOffset); + Source = ACPI_ADD_PTR (void, Resource, Info->ResourceOffset); Destination = ACPI_ADD_PTR (void, Aml, Info->AmlOffset); switch (Info->Opcode) @@ -580,8 +579,7 @@ AcpiRsConvertResourceToAml ( memset (Aml, 0, INIT_RESOURCE_LENGTH (Info)); AmlLength = INIT_RESOURCE_LENGTH (Info); - AcpiRsSetResourceHeader ( - INIT_RESOURCE_TYPE (Info), AmlLength, Aml); + AcpiRsSetResourceHeader (INIT_RESOURCE_TYPE (Info), AmlLength, Aml); break; case ACPI_RSC_INITGET: @@ -623,8 +621,7 @@ AcpiRsConvertResourceToAml ( ItemCount = ACPI_GET8 (Source); ACPI_SET8 (Destination, ItemCount); - AmlLength = (UINT16) - (AmlLength + (Info->Value * (ItemCount - 1))); + AmlLength = (UINT16) (AmlLength + (Info->Value * (ItemCount - 1))); break; case ACPI_RSC_COUNT16: @@ -650,8 +647,7 @@ AcpiRsConvertResourceToAml ( ItemCount = ACPI_GET16 (Source); ACPI_SET16 (Destination, ItemCount); - AmlLength = (UINT16) ( - AmlLength + (Info->Value * ItemCount)); + AmlLength = (UINT16) (AmlLength + (Info->Value * ItemCount)); AcpiRsSetResourceLength (AmlLength, Aml); break; @@ -712,7 +708,7 @@ AcpiRsConvertResourceToAml ( case ACPI_RSC_MOVE_GPIO_PIN: Destination = (char *) ACPI_ADD_PTR (void, Aml, - ACPI_GET16 (Destination)); + ACPI_GET16 (Destination)); Source = * (UINT16 **) Source; AcpiRsMoveData (Destination, Source, ItemCount, Info->Opcode); break; @@ -722,7 +718,7 @@ AcpiRsConvertResourceToAml ( /* Used for both ResourceSource string and VendorData */ Destination = (char *) ACPI_ADD_PTR (void, Aml, - ACPI_GET16 (Destination)); + ACPI_GET16 (Destination)); Source = * (UINT8 **) Source; AcpiRsMoveData (Destination, Source, ItemCount, Info->Opcode); break; @@ -730,7 +726,7 @@ AcpiRsConvertResourceToAml ( case ACPI_RSC_MOVE_SERIAL_VEN: Destination = (char *) ACPI_ADD_PTR (void, Aml, - (AmlLength - ItemCount)); + (AmlLength - ItemCount)); Source = * (UINT8 **) Source; AcpiRsMoveData (Destination, Source, ItemCount, Info->Opcode); break; @@ -738,7 +734,7 @@ AcpiRsConvertResourceToAml ( case ACPI_RSC_MOVE_SERIAL_RES: Destination = (char *) ACPI_ADD_PTR (void, Aml, - (AmlLength - ItemCount)); + (AmlLength - ItemCount)); Source = * (UINT8 **) Source; AcpiRsMoveData (Destination, Source, ItemCount, Info->Opcode); break; @@ -755,7 +751,7 @@ AcpiRsConvertResourceToAml ( * Optional ResourceSource (Index and String) */ AmlLength = AcpiRsSetResourceSource ( - Aml, (ACPI_RS_LENGTH) AmlLength, Source); + Aml, (ACPI_RS_LENGTH) AmlLength, Source); AcpiRsSetResourceLength (AmlLength, Aml); break; @@ -781,8 +777,8 @@ AcpiRsConvertResourceToAml ( /* * 16-bit encoded bitmask (IRQ macro) */ - Temp16 = AcpiRsEncodeBitmask ( - Source, *ACPI_ADD_PTR (UINT8, Resource, Info->Value)); + Temp16 = AcpiRsEncodeBitmask (Source, + *ACPI_ADD_PTR (UINT8, Resource, Info->Value)); ACPI_MOVE_16_TO_16 (Destination, &Temp16); break; @@ -805,7 +801,7 @@ AcpiRsConvertResourceToAml ( case ACPI_RSC_COMPARE_VALUE: if (*ACPI_ADD_PTR (UINT8, Resource, - COMPARE_TARGET (Info)) != COMPARE_VALUE (Info)) + COMPARE_TARGET (Info)) != COMPARE_VALUE (Info)) { goto Exit; } @@ -823,7 +819,7 @@ AcpiRsConvertResourceToAml ( * Control - Exit conversion if equal */ if (*ACPI_ADD_PTR (UINT8, Resource, - COMPARE_TARGET (Info)) == COMPARE_VALUE (Info)) + COMPARE_TARGET (Info)) == COMPARE_VALUE (Info)) { goto Exit; } @@ -847,8 +843,7 @@ Exit: #if 0 /* Previous resource validations */ - if (Aml->ExtAddress64.RevisionID != - AML_RESOURCE_EXTENDED_ADDRESS_REVISION) + if (Aml->ExtAddress64.RevisionID != AML_RESOURCE_EXTENDED_ADDRESS_REVISION) { return_ACPI_STATUS (AE_SUPPORT); } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rsutils.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rsutils.c index f8d5cefd75..a7dc2150b1 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rsutils.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rsutils.c @@ -257,23 +257,20 @@ AcpiRsMoveData ( case ACPI_RSC_MOVE16: case ACPI_RSC_MOVE_GPIO_PIN: - ACPI_MOVE_16_TO_16 ( - &ACPI_CAST_PTR (UINT16, Destination)[i], - &ACPI_CAST_PTR (UINT16, Source)[i]); + ACPI_MOVE_16_TO_16 (&ACPI_CAST_PTR (UINT16, Destination)[i], + &ACPI_CAST_PTR (UINT16, Source)[i]); break; case ACPI_RSC_MOVE32: - ACPI_MOVE_32_TO_32 ( - &ACPI_CAST_PTR (UINT32, Destination)[i], - &ACPI_CAST_PTR (UINT32, Source)[i]); + ACPI_MOVE_32_TO_32 (&ACPI_CAST_PTR (UINT32, Destination)[i], + &ACPI_CAST_PTR (UINT32, Source)[i]); break; case ACPI_RSC_MOVE64: - ACPI_MOVE_64_TO_64 ( - &ACPI_CAST_PTR (UINT64, Destination)[i], - &ACPI_CAST_PTR (UINT64, Source)[i]); + ACPI_MOVE_64_TO_64 (&ACPI_CAST_PTR (UINT64, Destination)[i], + &ACPI_CAST_PTR (UINT64, Source)[i]); break; default: @@ -323,18 +320,18 @@ AcpiRsSetResourceLength ( { /* Large descriptor -- bytes 1-2 contain the 16-bit length */ - ACPI_MOVE_16_TO_16 ( - &Aml->LargeHeader.ResourceLength, &ResourceLength); + ACPI_MOVE_16_TO_16 (&Aml->LargeHeader.ResourceLength, &ResourceLength); } else { - /* - * Small descriptor -- bits 2:0 of byte 0 contain the length - * Clear any existing length, preserving descriptor type bits - */ + /* Small descriptor -- bits 2:0 of byte 0 contain the length */ + Aml->SmallHeader.DescriptorType = (UINT8) - ((Aml->SmallHeader.DescriptorType & - ~ACPI_RESOURCE_NAME_SMALL_LENGTH_MASK) + + /* Clear any existing length, preserving descriptor type bits */ + + ((Aml->SmallHeader.DescriptorType & ~ACPI_RESOURCE_NAME_SMALL_LENGTH_MASK) + | ResourceLength); } } @@ -453,8 +450,8 @@ AcpiRsGetResourceSource ( AmlResourceSource = ACPI_ADD_PTR (UINT8, Aml, MinimumLength); /* - * ResourceSource is present if the length of the descriptor is longer - * than the minimum length. + * ResourceSource is present if the length of the descriptor is longer than + * the minimum length. * * Note: Some resource descriptors will have an additional null, so * we add 1 to the minimum length. @@ -472,8 +469,8 @@ AcpiRsGetResourceSource ( * String destination pointer is not specified; Set the String * pointer to the end of the current ResourceSource structure. */ - ResourceSource->StringPtr = ACPI_ADD_PTR ( - char, ResourceSource, sizeof (ACPI_RESOURCE_SOURCE)); + ResourceSource->StringPtr = ACPI_ADD_PTR (char, ResourceSource, + sizeof (ACPI_RESOURCE_SOURCE)); } /* @@ -485,15 +482,13 @@ AcpiRsGetResourceSource ( */ TotalLength = (UINT32) strlen ( ACPI_CAST_PTR (char, &AmlResourceSource[1])) + 1; - TotalLength = (UINT32) ACPI_ROUND_UP_TO_NATIVE_WORD (TotalLength); memset (ResourceSource->StringPtr, 0, TotalLength); /* Copy the ResourceSource string to the destination */ - ResourceSource->StringLength = AcpiRsStrcpy ( - ResourceSource->StringPtr, + ResourceSource->StringLength = AcpiRsStrcpy (ResourceSource->StringPtr, ACPI_CAST_PTR (char, &AmlResourceSource[1])); return ((ACPI_RS_LENGTH) TotalLength); @@ -561,8 +556,7 @@ AcpiRsSetResourceSource ( * Add the length of the string (+ 1 for null terminator) to the * final descriptor length */ - DescriptorLength += ((ACPI_RSDESC_SIZE) - ResourceSource->StringLength + 1); + DescriptorLength += ((ACPI_RSDESC_SIZE) ResourceSource->StringLength + 1); } /* Return the new total length of the AML descriptor */ @@ -605,8 +599,8 @@ AcpiRsGetPrtMethodData ( /* Execute the method, no parameters */ - Status = AcpiUtEvaluateObject ( - Node, METHOD_NAME__PRT, ACPI_BTYPE_PACKAGE, &ObjDesc); + Status = AcpiUtEvaluateObject (Node, METHOD_NAME__PRT, + ACPI_BTYPE_PACKAGE, &ObjDesc); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -659,8 +653,8 @@ AcpiRsGetCrsMethodData ( /* Execute the method, no parameters */ - Status = AcpiUtEvaluateObject ( - Node, METHOD_NAME__CRS, ACPI_BTYPE_BUFFER, &ObjDesc); + Status = AcpiUtEvaluateObject (Node, METHOD_NAME__CRS, + ACPI_BTYPE_BUFFER, &ObjDesc); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -714,8 +708,8 @@ AcpiRsGetPrsMethodData ( /* Execute the method, no parameters */ - Status = AcpiUtEvaluateObject ( - Node, METHOD_NAME__PRS, ACPI_BTYPE_BUFFER, &ObjDesc); + Status = AcpiUtEvaluateObject (Node, METHOD_NAME__PRS, + ACPI_BTYPE_BUFFER, &ObjDesc); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -769,8 +763,8 @@ AcpiRsGetAeiMethodData ( /* Execute the method, no parameters */ - Status = AcpiUtEvaluateObject ( - Node, METHOD_NAME__AEI, ACPI_BTYPE_BUFFER, &ObjDesc); + Status = AcpiUtEvaluateObject (Node, METHOD_NAME__AEI, + ACPI_BTYPE_BUFFER, &ObjDesc); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -826,8 +820,7 @@ AcpiRsGetMethodData ( /* Execute the method, no parameters */ - Status = AcpiUtEvaluateObject ( - ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, Handle), + Status = AcpiUtEvaluateObject (ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, Handle), Path, ACPI_BTYPE_BUFFER, &ObjDesc); if (ACPI_FAILURE (Status)) { diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rsxface.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rsxface.c index 9580053749..9aea3dcb2d 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rsxface.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rsxface.c @@ -126,7 +126,7 @@ /* Local macros for 16,32-bit to 64-bit conversion */ #define ACPI_COPY_FIELD(Out, In, Field) ((Out)->Field = (In)->Field) -#define ACPI_COPY_ADDRESS(Out, In) \ +#define ACPI_COPY_ADDRESS(Out, In) \ ACPI_COPY_FIELD(Out, In, ResourceType); \ ACPI_COPY_FIELD(Out, In, ProducerConsumer); \ ACPI_COPY_FIELD(Out, In, Decode); \ @@ -505,15 +505,13 @@ AcpiResourceToAddress64 ( { case ACPI_RESOURCE_TYPE_ADDRESS16: - Address16 = ACPI_CAST_PTR ( - ACPI_RESOURCE_ADDRESS16, &Resource->Data); + Address16 = ACPI_CAST_PTR (ACPI_RESOURCE_ADDRESS16, &Resource->Data); ACPI_COPY_ADDRESS (Out, Address16); break; case ACPI_RESOURCE_TYPE_ADDRESS32: - Address32 = ACPI_CAST_PTR ( - ACPI_RESOURCE_ADDRESS32, &Resource->Data); + Address32 = ACPI_CAST_PTR (ACPI_RESOURCE_ADDRESS32, &Resource->Data); ACPI_COPY_ADDRESS (Out, Address32); break; @@ -578,8 +576,8 @@ AcpiGetVendorResource ( /* Walk the _CRS or _PRS resource list for this device */ - Status = AcpiWalkResources ( - DeviceHandle, Name, AcpiRsMatchVendorResource, &Info); + Status = AcpiWalkResources (DeviceHandle, Name, AcpiRsMatchVendorResource, + &Info); if (ACPI_FAILURE (Status)) { return (Status); @@ -698,8 +696,7 @@ AcpiWalkResourceBuffer ( /* Buffer contains the resource list and length */ Resource = ACPI_CAST_PTR (ACPI_RESOURCE, Buffer->Pointer); - ResourceEnd = ACPI_ADD_PTR ( - ACPI_RESOURCE, Buffer->Pointer, Buffer->Length); + ResourceEnd = ACPI_ADD_PTR (ACPI_RESOURCE, Buffer->Pointer, Buffer->Length); /* Walk the resource list until the EndTag is found (or buffer end) */ diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbdata.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbdata.c index 8b388f446a..daacf41e28 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbdata.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbdata.c @@ -194,7 +194,7 @@ AcpiTbAcquireTable ( case ACPI_TABLE_ORIGIN_EXTERNAL_VIRTUAL: Table = ACPI_CAST_PTR (ACPI_TABLE_HEADER, - ACPI_PHYSADDR_TO_PTR (TableDesc->Address)); + ACPI_PHYSADDR_TO_PTR (TableDesc->Address)); break; default: @@ -301,7 +301,7 @@ AcpiTbAcquireTempTable ( case ACPI_TABLE_ORIGIN_EXTERNAL_VIRTUAL: TableHeader = ACPI_CAST_PTR (ACPI_TABLE_HEADER, - ACPI_PHYSADDR_TO_PTR (Address)); + ACPI_PHYSADDR_TO_PTR (Address)); if (!TableHeader) { return (AE_NO_MEMORY); @@ -375,7 +375,7 @@ AcpiTbValidateTable ( if (!TableDesc->Pointer) { Status = AcpiTbAcquireTable (TableDesc, &TableDesc->Pointer, - &TableDesc->Length, &TableDesc->Flags); + &TableDesc->Length, &TableDesc->Flags); if (!TableDesc->Pointer) { Status = AE_NO_MEMORY; @@ -516,7 +516,6 @@ AcpiTbVerifyTempTable ( AcpiUtValidAcpiName (TableDesc->Signature.Ascii) ? TableDesc->Signature.Ascii : "????", ACPI_FORMAT_UINT64 (TableDesc->Address))); - goto InvalidateAndExit; } } @@ -794,7 +793,7 @@ AcpiTbAllocateOwnerId ( if (TableIndex < AcpiGbl_RootTableList.CurrentTableCount) { Status = AcpiUtAllocateOwnerId ( - &(AcpiGbl_RootTableList.Tables[TableIndex].OwnerId)); + &(AcpiGbl_RootTableList.Tables[TableIndex].OwnerId)); } (void) AcpiUtReleaseMutex (ACPI_MTX_TABLES); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbfadt.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbfadt.c index dc933d6314..4f82733974 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbfadt.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbfadt.c @@ -398,7 +398,7 @@ AcpiTbSelectAddress ( * * FUNCTION: AcpiTbParseFadt * - * PARAMETERS: None + * PARAMETERS: TableIndex - Index for the FADT * * RETURN: None * @@ -409,7 +409,7 @@ AcpiTbSelectAddress ( void AcpiTbParseFadt ( - void) + UINT32 TableIndex) { UINT32 Length; ACPI_TABLE_HEADER *Table; @@ -422,10 +422,10 @@ AcpiTbParseFadt ( * Get a local copy of the FADT and convert it to a common format * Map entire FADT, assumed to be smaller than one page. */ - Length = AcpiGbl_RootTableList.Tables[AcpiGbl_FadtIndex].Length; + Length = AcpiGbl_RootTableList.Tables[TableIndex].Length; Table = AcpiOsMapMemory ( - AcpiGbl_RootTableList.Tables[AcpiGbl_FadtIndex].Address, Length); + AcpiGbl_RootTableList.Tables[TableIndex].Address, Length); if (!Table) { return; diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbfind.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbfind.c index 3a7f705cd7..bf692b8a88 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbfind.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbfind.c @@ -180,7 +180,7 @@ AcpiTbFindTable ( for (i = 0; i < AcpiGbl_RootTableList.CurrentTableCount; ++i) { if (memcmp (&(AcpiGbl_RootTableList.Tables[i].Signature), - Header.Signature, ACPI_NAME_SIZE)) + Header.Signature, ACPI_NAME_SIZE)) { /* Not the requested table */ @@ -208,13 +208,13 @@ AcpiTbFindTable ( /* Check for table match on all IDs */ if (!memcmp (AcpiGbl_RootTableList.Tables[i].Pointer->Signature, - Header.Signature, ACPI_NAME_SIZE) && + Header.Signature, ACPI_NAME_SIZE) && (!OemId[0] || !memcmp (AcpiGbl_RootTableList.Tables[i].Pointer->OemId, - Header.OemId, ACPI_OEM_ID_SIZE)) && + Header.OemId, ACPI_OEM_ID_SIZE)) && (!OemTableId[0] || !memcmp (AcpiGbl_RootTableList.Tables[i].Pointer->OemTableId, - Header.OemTableId, ACPI_OEM_TABLE_ID_SIZE))) + Header.OemTableId, ACPI_OEM_TABLE_ID_SIZE))) { *TableIndex = i; diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbinstal.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbinstal.c index 9c5b9c144e..2d7bb9456f 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbinstal.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbinstal.c @@ -155,7 +155,7 @@ AcpiTbCompareTables ( Status = AcpiTbAcquireTable (&AcpiGbl_RootTableList.Tables[TableIndex], - &Table, &TableLength, &TableFlags); + &Table, &TableLength, &TableFlags); if (ACPI_FAILURE (Status)) { return (FALSE); @@ -278,7 +278,7 @@ AcpiTbInstallFixedTable ( /* Fill a table descriptor for validation */ Status = AcpiTbAcquireTempTable (&NewTableDesc, Address, - ACPI_TABLE_ORIGIN_INTERNAL_PHYSICAL); + ACPI_TABLE_ORIGIN_INTERNAL_PHYSICAL); if (ACPI_FAILURE (Status)) { ACPI_ERROR ((AE_INFO, "Could not acquire table length at %8.8X%8.8X", @@ -350,8 +350,7 @@ AcpiTbInstallStandardTable ( Status = AcpiTbAcquireTempTable (&NewTableDesc, Address, Flags); if (ACPI_FAILURE (Status)) { - ACPI_ERROR ((AE_INFO, - "Could not acquire table length at %8.8X%8.8X", + ACPI_ERROR ((AE_INFO, "Could not acquire table length at %8.8X%8.8X", ACPI_FORMAT_UINT64 (Address))); return_ACPI_STATUS (Status); } @@ -364,8 +363,7 @@ AcpiTbInstallStandardTable ( AcpiGbl_DisableSsdtTableInstall && ACPI_COMPARE_NAME (&NewTableDesc.Signature, ACPI_SIG_SSDT)) { - ACPI_INFO ((AE_INFO, - "Ignoring installation of %4.4s at %8.8X%8.8X", + ACPI_INFO ((AE_INFO, "Ignoring installation of %4.4s at %8.8X%8.8X", NewTableDesc.Signature.Ascii, ACPI_FORMAT_UINT64 (Address))); goto ReleaseAndExit; } @@ -433,8 +431,7 @@ AcpiTbInstallStandardTable ( * need to be unregistered when they are unloaded, and slots in the * root table list should be reused when empty. */ - if (AcpiGbl_RootTableList.Tables[i].Flags & - ACPI_TABLE_IS_LOADED) + if (AcpiGbl_RootTableList.Tables[i].Flags & ACPI_TABLE_IS_LOADED) { /* Table is still loaded, this is an error */ diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbprint.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbprint.c index ff221d2187..e958041672 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbprint.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbprint.c @@ -160,7 +160,6 @@ AcpiTbFixString ( { *String = '?'; } - String++; Length--; } @@ -229,8 +228,8 @@ AcpiTbPrintTableHeader ( { /* RSDP has no common fields */ - memcpy (LocalHeader.OemId, ACPI_CAST_PTR (ACPI_TABLE_RSDP, - Header)->OemId, ACPI_OEM_ID_SIZE); + memcpy (LocalHeader.OemId, + ACPI_CAST_PTR (ACPI_TABLE_RSDP, Header)->OemId, ACPI_OEM_ID_SIZE); AcpiTbFixString (LocalHeader.OemId, ACPI_OEM_ID_SIZE); ACPI_INFO ((AE_INFO, "RSDP 0x%8.8X%8.8X %06X (v%.2d %-6.6s)", diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbutils.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbutils.c index 0f25fda984..05704258c1 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbutils.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbutils.c @@ -158,16 +158,16 @@ AcpiTbInitializeFacs ( return (AE_OK); } else if (AcpiGbl_FADT.XFacs && - (!AcpiGbl_FADT.Facs || !AcpiGbl_Use32BitFacsAddresses)) + (!AcpiGbl_FADT.Facs || !AcpiGbl_Use32BitFacsAddresses)) { (void) AcpiGetTableByIndex (AcpiGbl_XFacsIndex, - ACPI_CAST_INDIRECT_PTR (ACPI_TABLE_HEADER, &Facs)); + ACPI_CAST_INDIRECT_PTR (ACPI_TABLE_HEADER, &Facs)); AcpiGbl_FACS = Facs; } else if (AcpiGbl_FADT.Facs) { (void) AcpiGetTableByIndex (AcpiGbl_FacsIndex, - ACPI_CAST_INDIRECT_PTR (ACPI_TABLE_HEADER, &Facs)); + ACPI_CAST_INDIRECT_PTR (ACPI_TABLE_HEADER, &Facs)); AcpiGbl_FACS = Facs; } @@ -178,6 +178,33 @@ AcpiTbInitializeFacs ( #endif /* !ACPI_REDUCED_HARDWARE */ +/******************************************************************************* + * + * FUNCTION: AcpiTbTablesLoaded + * + * PARAMETERS: None + * + * RETURN: TRUE if required ACPI tables are loaded + * + * DESCRIPTION: Determine if the minimum required ACPI tables are present + * (FADT, FACS, DSDT) + * + ******************************************************************************/ + +BOOLEAN +AcpiTbTablesLoaded ( + void) +{ + + if (AcpiGbl_RootTableList.CurrentTableCount >= 4) + { + return (TRUE); + } + + return (FALSE); +} + + /******************************************************************************* * * FUNCTION: AcpiTbCheckDsdtHeader @@ -205,7 +232,6 @@ AcpiTbCheckDsdtHeader ( ACPI_BIOS_ERROR ((AE_INFO, "The DSDT has been corrupted or replaced - " "old, new headers below")); - AcpiTbPrintTableHeader (0, &AcpiGbl_OriginalDsdtHeader); AcpiTbPrintTableHeader (0, AcpiGbl_DSDT); @@ -254,8 +280,8 @@ AcpiTbCopyDsdt ( AcpiTbInitTableDescriptor ( &AcpiGbl_RootTableList.Tables[AcpiGbl_DsdtIndex], - ACPI_PTR_TO_PHYSADDR (NewTable), - ACPI_TABLE_ORIGIN_INTERNAL_VIRTUAL, NewTable); + ACPI_PTR_TO_PHYSADDR (NewTable), ACPI_TABLE_ORIGIN_INTERNAL_VIRTUAL, + NewTable); ACPI_INFO ((AE_INFO, "Forced DSDT copy: length 0x%05X copied locally, original unmapped", @@ -300,8 +326,7 @@ AcpiTbGetRootTableEntry ( * 32-bit platform, RSDT: Return 32-bit table entry * 64-bit platform, RSDT: Expand 32-bit to 64-bit and return */ - return ((ACPI_PHYSICAL_ADDRESS) (*ACPI_CAST_PTR ( - UINT32, TableEntry))); + return ((ACPI_PHYSICAL_ADDRESS) (*ACPI_CAST_PTR (UINT32, TableEntry))); } else { @@ -467,12 +492,10 @@ AcpiTbParseRootTable ( ACPI_TABLE_ORIGIN_INTERNAL_PHYSICAL, FALSE, TRUE, &TableIndex); if (ACPI_SUCCESS (Status) && - ACPI_COMPARE_NAME ( - &AcpiGbl_RootTableList.Tables[TableIndex].Signature, + ACPI_COMPARE_NAME (&AcpiGbl_RootTableList.Tables[TableIndex].Signature, ACPI_SIG_FADT)) { - AcpiGbl_FadtIndex = TableIndex; - AcpiTbParseFadt (); + AcpiTbParseFadt (TableIndex); } NextTable: @@ -481,6 +504,7 @@ NextTable: } AcpiOsUnmapMemory (Table, Length); + return_ACPI_STATUS (AE_OK); } @@ -491,7 +515,7 @@ NextTable: * * PARAMETERS: Signature - Sig string to be validated * - * RETURN: TRUE if signature is has 4 valid ACPI characters + * RETURN: TRUE if signature is correct length and has valid characters * * DESCRIPTION: Validate an ACPI table signature. * @@ -504,6 +528,13 @@ AcpiIsValidSignature ( UINT32 i; + /* Validate the signature length */ + + if (strlen (Signature) != ACPI_NAME_SIZE) + { + return (FALSE); + } + /* Validate each character in the signature */ for (i = 0; i < ACPI_NAME_SIZE; i++) diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbxface.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbxface.c index 83de853e12..25e140553d 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbxface.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbxface.c @@ -318,8 +318,8 @@ AcpiGetTableHeader ( for (i = 0, j = 0; i < AcpiGbl_RootTableList.CurrentTableCount; i++) { - if (!ACPI_COMPARE_NAME ( - &(AcpiGbl_RootTableList.Tables[i].Signature), Signature)) + if (!ACPI_COMPARE_NAME (&(AcpiGbl_RootTableList.Tables[i].Signature), + Signature)) { continue; } @@ -336,14 +336,15 @@ AcpiGetTableHeader ( ACPI_TABLE_ORIGIN_INTERNAL_PHYSICAL) { Header = AcpiOsMapMemory ( - AcpiGbl_RootTableList.Tables[i].Address, - sizeof (ACPI_TABLE_HEADER)); + AcpiGbl_RootTableList.Tables[i].Address, + sizeof (ACPI_TABLE_HEADER)); if (!Header) { return (AE_NO_MEMORY); } - memcpy (OutTableHeader, Header, sizeof (ACPI_TABLE_HEADER)); + memcpy (OutTableHeader, Header, + sizeof (ACPI_TABLE_HEADER)); AcpiOsUnmapMemory (Header, sizeof (ACPI_TABLE_HEADER)); } else @@ -404,8 +405,8 @@ AcpiGetTable ( for (i = 0, j = 0; i < AcpiGbl_RootTableList.CurrentTableCount; i++) { - if (!ACPI_COMPARE_NAME ( - &(AcpiGbl_RootTableList.Tables[i].Signature), Signature)) + if (!ACPI_COMPARE_NAME (&(AcpiGbl_RootTableList.Tables[i].Signature), + Signature)) { continue; } @@ -476,8 +477,7 @@ AcpiGetTableByIndex ( { /* Table is not mapped, map it */ - Status = AcpiTbValidateTable ( - &AcpiGbl_RootTableList.Tables[TableIndex]); + Status = AcpiTbValidateTable (&AcpiGbl_RootTableList.Tables[TableIndex]); if (ACPI_FAILURE (Status)) { (void) AcpiUtReleaseMutex (ACPI_MTX_TABLES); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbxfload.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbxfload.c index 2290e16e05..1d51c913f5 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbxfload.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbxfload.c @@ -282,7 +282,6 @@ AcpiTbLoadNamespace ( { ACPI_EXCEPTION ((AE_INFO, Status, "(%4.4s:%8.8s) while loading table", Table->Signature.Ascii, Table->Pointer->OemTableId)); - TablesFailed++; ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INIT, @@ -300,7 +299,7 @@ AcpiTbLoadNamespace ( if (!TablesFailed) { ACPI_INFO ((AE_INFO, - "%u ACPI AML tables successfully acquired and loaded\n", + "%u ACPI AML tables successfully acquired and loaded", TablesLoaded)); } else @@ -416,8 +415,8 @@ AcpiLoadTable ( (void) AcpiUtAcquireMutex (ACPI_MTX_TABLES); Status = AcpiTbInstallStandardTable (ACPI_PTR_TO_PHYSADDR (Table), - ACPI_TABLE_ORIGIN_EXTERNAL_VIRTUAL, TRUE, FALSE, - &TableIndex); + ACPI_TABLE_ORIGIN_EXTERNAL_VIRTUAL, TRUE, FALSE, + &TableIndex); (void) AcpiUtReleaseMutex (ACPI_MTX_TABLES); if (ACPI_FAILURE (Status)) @@ -429,8 +428,7 @@ AcpiLoadTable ( * Note: Now table is "INSTALLED", it must be validated before * using. */ - Status = AcpiTbValidateTable ( - &AcpiGbl_RootTableList.Tables[TableIndex]); + Status = AcpiTbValidateTable (&AcpiGbl_RootTableList.Tables[TableIndex]); if (ACPI_FAILURE (Status)) { goto UnlockAndExit; @@ -443,7 +441,7 @@ AcpiLoadTable ( if (AcpiGbl_TableHandler) { (void) AcpiGbl_TableHandler (ACPI_TABLE_EVENT_LOAD, Table, - AcpiGbl_TableHandlerContext); + AcpiGbl_TableHandlerContext); } UnlockAndExit: @@ -526,8 +524,8 @@ AcpiUnloadParentTable ( * that can create namespace objects. */ if (ACPI_COMPARE_NAME ( - AcpiGbl_RootTableList.Tables[i].Signature.Ascii, - ACPI_SIG_DSDT)) + AcpiGbl_RootTableList.Tables[i].Signature.Ascii, + ACPI_SIG_DSDT)) { Status = AE_TYPE; break; @@ -546,8 +544,8 @@ AcpiUnloadParentTable ( if (AcpiGbl_TableHandler) { (void) AcpiGbl_TableHandler (ACPI_TABLE_EVENT_UNLOAD, - AcpiGbl_RootTableList.Tables[i].Pointer, - AcpiGbl_TableHandlerContext); + AcpiGbl_RootTableList.Tables[i].Pointer, + AcpiGbl_TableHandlerContext); } /* diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbxfroot.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbxfroot.c index 582ff67dba..45d7d54675 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbxfroot.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbxfroot.c @@ -243,8 +243,8 @@ AcpiFindRootPointer ( /* 1a) Get the location of the Extended BIOS Data Area (EBDA) */ TablePtr = AcpiOsMapMemory ( - (ACPI_PHYSICAL_ADDRESS) ACPI_EBDA_PTR_LOCATION, - ACPI_EBDA_PTR_LENGTH); + (ACPI_PHYSICAL_ADDRESS) ACPI_EBDA_PTR_LOCATION, + ACPI_EBDA_PTR_LENGTH); if (!TablePtr) { ACPI_ERROR ((AE_INFO, @@ -270,8 +270,8 @@ AcpiFindRootPointer ( * minimum of 1K length) */ TablePtr = AcpiOsMapMemory ( - (ACPI_PHYSICAL_ADDRESS) PhysicalAddress, - ACPI_EBDA_WINDOW_SIZE); + (ACPI_PHYSICAL_ADDRESS) PhysicalAddress, + ACPI_EBDA_WINDOW_SIZE); if (!TablePtr) { ACPI_ERROR ((AE_INFO, @@ -281,16 +281,14 @@ AcpiFindRootPointer ( return_ACPI_STATUS (AE_NO_MEMORY); } - MemRover = AcpiTbScanMemoryForRsdp ( - TablePtr, ACPI_EBDA_WINDOW_SIZE); + MemRover = AcpiTbScanMemoryForRsdp (TablePtr, ACPI_EBDA_WINDOW_SIZE); AcpiOsUnmapMemory (TablePtr, ACPI_EBDA_WINDOW_SIZE); if (MemRover) { /* Return the physical address */ - PhysicalAddress += - (UINT32) ACPI_PTR_DIFF (MemRover, TablePtr); + PhysicalAddress += (UINT32) ACPI_PTR_DIFF (MemRover, TablePtr); *TableAddress = (ACPI_PHYSICAL_ADDRESS) PhysicalAddress; return_ACPI_STATUS (AE_OK); @@ -301,8 +299,8 @@ AcpiFindRootPointer ( * 2) Search upper memory: 16-byte boundaries in E0000h-FFFFFh */ TablePtr = AcpiOsMapMemory ( - (ACPI_PHYSICAL_ADDRESS) ACPI_HI_RSDP_WINDOW_BASE, - ACPI_HI_RSDP_WINDOW_SIZE); + (ACPI_PHYSICAL_ADDRESS) ACPI_HI_RSDP_WINDOW_BASE, + ACPI_HI_RSDP_WINDOW_SIZE); if (!TablePtr) { @@ -313,8 +311,7 @@ AcpiFindRootPointer ( return_ACPI_STATUS (AE_NO_MEMORY); } - MemRover = AcpiTbScanMemoryForRsdp ( - TablePtr, ACPI_HI_RSDP_WINDOW_SIZE); + MemRover = AcpiTbScanMemoryForRsdp (TablePtr, ACPI_HI_RSDP_WINDOW_SIZE); AcpiOsUnmapMemory (TablePtr, ACPI_HI_RSDP_WINDOW_SIZE); if (MemRover) @@ -372,8 +369,7 @@ AcpiTbScanMemoryForRsdp ( { /* The RSDP signature and checksum must both be correct */ - Status = AcpiTbValidateRsdp ( - ACPI_CAST_PTR (ACPI_TABLE_RSDP, MemRover)); + Status = AcpiTbValidateRsdp (ACPI_CAST_PTR (ACPI_TABLE_RSDP, MemRover)); if (ACPI_SUCCESS (Status)) { /* Sig and checksum valid, we have found a real RSDP */ diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utaddress.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utaddress.c index 18f39bd7cd..9d65019b42 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utaddress.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utaddress.c @@ -335,7 +335,7 @@ AcpiUtCheckAddressRange ( OverlapCount++; if (Warn) /* Optional warning message */ { - Pathname = AcpiNsGetNormalizedPathname (RangeInfo->RegionNode, TRUE); + Pathname = AcpiNsGetExternalPathname (RangeInfo->RegionNode); ACPI_WARNING ((AE_INFO, "%s range 0x%8.8X%8.8X-0x%8.8X%8.8X conflicts with OpRegion 0x%8.8X%8.8X-0x%8.8X%8.8X (%s)", diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utalloc.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utalloc.c index 22ebf3e29c..62c3e28f31 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utalloc.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utalloc.c @@ -182,35 +182,35 @@ AcpiUtCreateCaches ( /* Object Caches, for frequently used objects */ Status = AcpiOsCreateCache ("Acpi-Namespace", sizeof (ACPI_NAMESPACE_NODE), - ACPI_MAX_NAMESPACE_CACHE_DEPTH, &AcpiGbl_NamespaceCache); + ACPI_MAX_NAMESPACE_CACHE_DEPTH, &AcpiGbl_NamespaceCache); if (ACPI_FAILURE (Status)) { return (Status); } Status = AcpiOsCreateCache ("Acpi-State", sizeof (ACPI_GENERIC_STATE), - ACPI_MAX_STATE_CACHE_DEPTH, &AcpiGbl_StateCache); + ACPI_MAX_STATE_CACHE_DEPTH, &AcpiGbl_StateCache); if (ACPI_FAILURE (Status)) { return (Status); } Status = AcpiOsCreateCache ("Acpi-Parse", sizeof (ACPI_PARSE_OBJ_COMMON), - ACPI_MAX_PARSE_CACHE_DEPTH, &AcpiGbl_PsNodeCache); + ACPI_MAX_PARSE_CACHE_DEPTH, &AcpiGbl_PsNodeCache); if (ACPI_FAILURE (Status)) { return (Status); } Status = AcpiOsCreateCache ("Acpi-ParseExt", sizeof (ACPI_PARSE_OBJ_NAMED), - ACPI_MAX_EXTPARSE_CACHE_DEPTH, &AcpiGbl_PsNodeExtCache); + ACPI_MAX_EXTPARSE_CACHE_DEPTH, &AcpiGbl_PsNodeExtCache); if (ACPI_FAILURE (Status)) { return (Status); } Status = AcpiOsCreateCache ("Acpi-Operand", sizeof (ACPI_OPERAND_OBJECT), - ACPI_MAX_OBJECT_CACHE_DEPTH, &AcpiGbl_OperandCache); + ACPI_MAX_OBJECT_CACHE_DEPTH, &AcpiGbl_OperandCache); if (ACPI_FAILURE (Status)) { return (Status); @@ -222,14 +222,14 @@ AcpiUtCreateCaches ( /* Memory allocation lists */ Status = AcpiUtCreateList ("Acpi-Global", 0, - &AcpiGbl_GlobalList); + &AcpiGbl_GlobalList); if (ACPI_FAILURE (Status)) { return (Status); } Status = AcpiUtCreateList ("Acpi-Namespace", sizeof (ACPI_NAMESPACE_NODE), - &AcpiGbl_NsNodeList); + &AcpiGbl_NsNodeList); if (ACPI_FAILURE (Status)) { return (Status); @@ -259,7 +259,6 @@ AcpiUtDeleteCaches ( #ifdef ACPI_DBG_TRACK_ALLOCATIONS char Buffer[7]; - if (AcpiGbl_DisplayFinalMemStats) { strcpy (Buffer, "MEMORY"); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utcache.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utcache.c index b0cf6b0677..5cf52502eb 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utcache.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utcache.c @@ -165,9 +165,9 @@ AcpiOsCreateCache ( /* Populate the cache object and return it */ memset (Cache, 0, sizeof (ACPI_MEMORY_LIST)); - Cache->ListName = CacheName; + Cache->ListName = CacheName; Cache->ObjectSize = ObjectSize; - Cache->MaxDepth = MaxDepth; + Cache->MaxDepth = MaxDepth; *ReturnCache = Cache; return (AE_OK); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utclib.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utclib.c new file mode 100644 index 0000000000..5c62672e50 --- /dev/null +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utclib.c @@ -0,0 +1,990 @@ +/****************************************************************************** + * + * Module Name: utclib - ACPICA implementations of C library functions + * + *****************************************************************************/ + +/****************************************************************************** + * + * 1. Copyright Notice + * + * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * All rights reserved. + * + * 2. License + * + * 2.1. This is your license from Intel Corp. under its intellectual property + * rights. You may have additional license terms from the party that provided + * you this software, covering your right to use that party's intellectual + * property rights. + * + * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a + * copy of the source code appearing in this file ("Covered Code") an + * irrevocable, perpetual, worldwide license under Intel's copyrights in the + * base code distributed originally by Intel ("Original Intel Code") to copy, + * make derivatives, distribute, use and display any portion of the Covered + * Code in any form, with the right to sublicense such rights; and + * + * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent + * license (with the right to sublicense), under only those claims of Intel + * patents that are infringed by the Original Intel Code, to make, use, sell, + * offer to sell, and import the Covered Code and derivative works thereof + * solely to the minimum extent necessary to exercise the above copyright + * license, and in no event shall the patent license extend to any additions + * to or modifications of the Original Intel Code. No other license or right + * is granted directly or by implication, estoppel or otherwise; + * + * The above copyright and patent license is granted only if the following + * conditions are met: + * + * 3. Conditions + * + * 3.1. Redistribution of Source with Rights to Further Distribute Source. + * Redistribution of source code of any substantial portion of the Covered + * Code or modification with rights to further distribute source must include + * the above Copyright Notice, the above License, this list of Conditions, + * and the following Disclaimer and Export Compliance provision. In addition, + * Licensee must cause all Covered Code to which Licensee contributes to + * contain a file documenting the changes Licensee made to create that Covered + * Code and the date of any change. Licensee must include in that file the + * documentation of any changes made by any predecessor Licensee. Licensee + * must include a prominent statement that the modification is derived, + * directly or indirectly, from Original Intel Code. + * + * 3.2. Redistribution of Source with no Rights to Further Distribute Source. + * Redistribution of source code of any substantial portion of the Covered + * Code or modification without rights to further distribute source must + * include the following Disclaimer and Export Compliance provision in the + * documentation and/or other materials provided with distribution. In + * addition, Licensee may not authorize further sublicense of source of any + * portion of the Covered Code, and must include terms to the effect that the + * license from Licensee to its licensee is limited to the intellectual + * property embodied in the software Licensee provides to its licensee, and + * not to intellectual property embodied in modifications its licensee may + * make. + * + * 3.3. Redistribution of Executable. Redistribution in executable form of any + * substantial portion of the Covered Code or modification must reproduce the + * above Copyright Notice, and the following Disclaimer and Export Compliance + * provision in the documentation and/or other materials provided with the + * distribution. + * + * 3.4. Intel retains all right, title, and interest in and to the Original + * Intel Code. + * + * 3.5. Neither the name Intel nor any other trademark owned or controlled by + * Intel shall be used in advertising or otherwise to promote the sale, use or + * other dealings in products derived from or relating to the Covered Code + * without prior written authorization from Intel. + * + * 4. Disclaimer and Export Compliance + * + * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED + * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE + * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, + * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY + * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY + * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A + * PARTICULAR PURPOSE. + * + * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES + * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR + * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, + * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY + * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL + * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS + * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY + * LIMITED REMEDY. + * + * 4.3. Licensee shall not export, either directly or indirectly, any of this + * software or system incorporating such software without first obtaining any + * required license or other approval from the U. S. Department of Commerce or + * any other agency or department of the United States Government. In the + * event Licensee exports any such software from the United States or + * re-exports any such software from a foreign destination, Licensee shall + * ensure that the distribution and export/re-export of the software is in + * compliance with all laws, regulations, orders, or other restrictions of the + * U.S. Export Administration Regulations. Licensee agrees that neither it nor + * any of its subsidiaries will export/re-export any technical data, process, + * software, or service, directly or indirectly, to any country for which the + * United States government or any agency thereof requires an export license, + * other governmental approval, or letter of assurance, without first obtaining + * such license, approval or letter. + * + *****************************************************************************/ + +#define ACPI_CLIBRARY +#include "acpi.h" +#include "accommon.h" + +/* + * This module contains implementations of the standard C library functions + * that are required by the ACPICA code at both application level and kernel + * level. + * + * The module is an optional feature that can be used if a local/system + * C library is not available. Some operating system kernels may not have + * an internal C library. + * + * In general, these functions are less efficient than an inline or assembly + * code implementation. + * + * These C functions and the associated prototypes are enabled by default + * unless the ACPI_USE_SYSTEM_CLIBRARY symbol is defined. This is usually + * automatically defined for the ACPICA applications such as iASL and + * AcpiExec, so that these user-level applications use the local C library + * instead of the functions in this module. + */ + +/******************************************************************************* + * + * Functions implemented in this module: + * + * FUNCTION: memcmp + * FUNCTION: memcpy + * FUNCTION: memset + * FUNCTION: strlen + * FUNCTION: strcpy + * FUNCTION: strncpy + * FUNCTION: strcmp + * FUNCTION: strchr + * FUNCTION: strncmp + * FUNCTION: strcat + * FUNCTION: strncat + * FUNCTION: strstr + * FUNCTION: strtoul + * FUNCTION: toupper + * FUNCTION: tolower + * FUNCTION: is* functions + * + ******************************************************************************/ + +#define _COMPONENT ACPI_UTILITIES + ACPI_MODULE_NAME ("utclib") + + +#ifndef ACPI_USE_SYSTEM_CLIBRARY /* Entire module */ + + +/******************************************************************************* + * + * FUNCTION: memcmp + * + * PARAMETERS: Buffer1 - First Buffer + * Buffer2 - Second Buffer + * Count - Maximum # of bytes to compare + * + * RETURN: Index where Buffers mismatched, or 0 if Buffers matched + * + * DESCRIPTION: Compare two Buffers, with a maximum length + * + ******************************************************************************/ + +int +memcmp ( + void *VBuffer1, + void *VBuffer2, + ACPI_SIZE Count) +{ + char *Buffer1 = (char *) VBuffer1; + char *Buffer2 = (char *) VBuffer2; + + + for ( ; Count-- && (*Buffer1 == *Buffer2); Buffer1++, Buffer2++) + { + } + + return ((Count == ACPI_SIZE_MAX) ? 0 : ((unsigned char) *Buffer1 - + (unsigned char) *Buffer2)); +} + + +/******************************************************************************* + * + * FUNCTION: memcpy + * + * PARAMETERS: Dest - Target of the copy + * Src - Source buffer to copy + * Count - Number of bytes to copy + * + * RETURN: Dest + * + * DESCRIPTION: Copy arbitrary bytes of memory + * + ******************************************************************************/ + +void * +memcpy ( + void *Dest, + const void *Src, + ACPI_SIZE Count) +{ + char *New = (char *) Dest; + char *Old = (char *) Src; + + + while (Count) + { + *New = *Old; + New++; + Old++; + Count--; + } + + return (Dest); +} + + +/******************************************************************************* + * + * FUNCTION: memset + * + * PARAMETERS: Dest - Buffer to set + * Value - Value to set each byte of memory + * Count - Number of bytes to set + * + * RETURN: Dest + * + * DESCRIPTION: Initialize a buffer to a known value. + * + ******************************************************************************/ + +void * +memset ( + void *Dest, + int Value, + ACPI_SIZE Count) +{ + char *New = (char *) Dest; + + + while (Count) + { + *New = (char) Value; + New++; + Count--; + } + + return (Dest); +} + + +/******************************************************************************* + * + * FUNCTION: strlen + * + * PARAMETERS: String - Null terminated string + * + * RETURN: Length + * + * DESCRIPTION: Returns the length of the input string + * + ******************************************************************************/ + + +ACPI_SIZE +strlen ( + const char *String) +{ + UINT32 Length = 0; + + + /* Count the string until a null is encountered */ + + while (*String) + { + Length++; + String++; + } + + return (Length); +} + + +/******************************************************************************* + * + * FUNCTION: strcpy + * + * PARAMETERS: DstString - Target of the copy + * SrcString - The source string to copy + * + * RETURN: DstString + * + * DESCRIPTION: Copy a null terminated string + * + ******************************************************************************/ + +char * +strcpy ( + char *DstString, + const char *SrcString) +{ + char *String = DstString; + + + /* Move bytes brute force */ + + while (*SrcString) + { + *String = *SrcString; + + String++; + SrcString++; + } + + /* Null terminate */ + + *String = 0; + return (DstString); +} + + +/******************************************************************************* + * + * FUNCTION: strncpy + * + * PARAMETERS: DstString - Target of the copy + * SrcString - The source string to copy + * Count - Maximum # of bytes to copy + * + * RETURN: DstString + * + * DESCRIPTION: Copy a null terminated string, with a maximum length + * + ******************************************************************************/ + +char * +strncpy ( + char *DstString, + const char *SrcString, + ACPI_SIZE Count) +{ + char *String = DstString; + + + /* Copy the string */ + + for (String = DstString; + Count && (Count--, (*String++ = *SrcString++)); ) + {;} + + /* Pad with nulls if necessary */ + + while (Count--) + { + *String = 0; + String++; + } + + /* Return original pointer */ + + return (DstString); +} + + +/******************************************************************************* + * + * FUNCTION: strcmp + * + * PARAMETERS: String1 - First string + * String2 - Second string + * + * RETURN: Index where strings mismatched, or 0 if strings matched + * + * DESCRIPTION: Compare two null terminated strings + * + ******************************************************************************/ + +int +strcmp ( + const char *String1, + const char *String2) +{ + + + for ( ; (*String1 == *String2); String2++) + { + if (!*String1++) + { + return (0); + } + } + + return ((unsigned char) *String1 - (unsigned char) *String2); +} + + +/******************************************************************************* + * + * FUNCTION: strchr + * + * PARAMETERS: String - Search string + * ch - character to search for + * + * RETURN: Ptr to char or NULL if not found + * + * DESCRIPTION: Search a string for a character + * + ******************************************************************************/ + +char * +strchr ( + const char *String, + int ch) +{ + + + for ( ; (*String); String++) + { + if ((*String) == (char) ch) + { + return ((char *) String); + } + } + + return (NULL); +} + + +/******************************************************************************* + * + * FUNCTION: strncmp + * + * PARAMETERS: String1 - First string + * String2 - Second string + * Count - Maximum # of bytes to compare + * + * RETURN: Index where strings mismatched, or 0 if strings matched + * + * DESCRIPTION: Compare two null terminated strings, with a maximum length + * + ******************************************************************************/ + +int +strncmp ( + const char *String1, + const char *String2, + ACPI_SIZE Count) +{ + + + for ( ; Count-- && (*String1 == *String2); String2++) + { + if (!*String1++) + { + return (0); + } + } + + return ((Count == ACPI_SIZE_MAX) ? 0 : ((unsigned char) *String1 - + (unsigned char) *String2)); +} + + +/******************************************************************************* + * + * FUNCTION: strcat + * + * PARAMETERS: DstString - Target of the copy + * SrcString - The source string to copy + * + * RETURN: DstString + * + * DESCRIPTION: Append a null terminated string to a null terminated string + * + ******************************************************************************/ + +char * +strcat ( + char *DstString, + const char *SrcString) +{ + char *String; + + + /* Find end of the destination string */ + + for (String = DstString; *String++; ) + { ; } + + /* Concatenate the string */ + + for (--String; (*String++ = *SrcString++); ) + { ; } + + return (DstString); +} + + +/******************************************************************************* + * + * FUNCTION: strncat + * + * PARAMETERS: DstString - Target of the copy + * SrcString - The source string to copy + * Count - Maximum # of bytes to copy + * + * RETURN: DstString + * + * DESCRIPTION: Append a null terminated string to a null terminated string, + * with a maximum count. + * + ******************************************************************************/ + +char * +strncat ( + char *DstString, + const char *SrcString, + ACPI_SIZE Count) +{ + char *String; + + + if (Count) + { + /* Find end of the destination string */ + + for (String = DstString; *String++; ) + { ; } + + /* Concatenate the string */ + + for (--String; (*String++ = *SrcString++) && --Count; ) + { ; } + + /* Null terminate if necessary */ + + if (!Count) + { + *String = 0; + } + } + + return (DstString); +} + + +/******************************************************************************* + * + * FUNCTION: strstr + * + * PARAMETERS: String1 - Target string + * String2 - Substring to search for + * + * RETURN: Where substring match starts, Null if no match found + * + * DESCRIPTION: Checks if String2 occurs in String1. This is not really a + * full implementation of strstr, only sufficient for command + * matching + * + ******************************************************************************/ + +char * +strstr ( + char *String1, + char *String2) +{ + UINT32 Length; + + + Length = strlen (String2); + if (!Length) + { + return (String1); + } + + while (strlen (String1) >= Length) + { + if (memcmp (String1, String2, Length) == 0) + { + return (String1); + } + String1++; + } + + return (NULL); +} + + +/******************************************************************************* + * + * FUNCTION: strtoul + * + * PARAMETERS: String - Null terminated string + * Terminater - Where a pointer to the terminating byte is + * returned + * Base - Radix of the string + * + * RETURN: Converted value + * + * DESCRIPTION: Convert a string into a 32-bit unsigned value. + * Note: use strtoul64 for 64-bit integers. + * + ******************************************************************************/ + +UINT32 +strtoul ( + const char *String, + char **Terminator, + UINT32 Base) +{ + UINT32 converted = 0; + UINT32 index; + UINT32 sign; + const char *StringStart; + UINT32 ReturnValue = 0; + ACPI_STATUS Status = AE_OK; + + + /* + * Save the value of the pointer to the buffer's first + * character, save the current errno value, and then + * skip over any white space in the buffer: + */ + StringStart = String; + while (isspace (*String) || *String == '\t') + { + ++String; + } + + /* + * The buffer may contain an optional plus or minus sign. + * If it does, then skip over it but remember what is was: + */ + if (*String == '-') + { + sign = ACPI_SIGN_NEGATIVE; + ++String; + } + else if (*String == '+') + { + ++String; + sign = ACPI_SIGN_POSITIVE; + } + else + { + sign = ACPI_SIGN_POSITIVE; + } + + /* + * If the input parameter Base is zero, then we need to + * determine if it is octal, decimal, or hexadecimal: + */ + if (Base == 0) + { + if (*String == '0') + { + if (tolower (*(++String)) == 'x') + { + Base = 16; + ++String; + } + else + { + Base = 8; + } + } + else + { + Base = 10; + } + } + else if (Base < 2 || Base > 36) + { + /* + * The specified Base parameter is not in the domain of + * this function: + */ + goto done; + } + + /* + * For octal and hexadecimal bases, skip over the leading + * 0 or 0x, if they are present. + */ + if (Base == 8 && *String == '0') + { + String++; + } + + if (Base == 16 && + *String == '0' && + tolower (*(++String)) == 'x') + { + String++; + } + + /* + * Main loop: convert the string to an unsigned long: + */ + while (*String) + { + if (isdigit (*String)) + { + index = (UINT32) ((UINT8) *String - '0'); + } + else + { + index = (UINT32) toupper (*String); + if (isupper (index)) + { + index = index - 'A' + 10; + } + else + { + goto done; + } + } + + if (index >= Base) + { + goto done; + } + + /* + * Check to see if value is out of range: + */ + + if (ReturnValue > ((ACPI_UINT32_MAX - (UINT32) index) / + (UINT32) Base)) + { + Status = AE_ERROR; + ReturnValue = 0; /* reset */ + } + else + { + ReturnValue *= Base; + ReturnValue += index; + converted = 1; + } + + ++String; + } + +done: + /* + * If appropriate, update the caller's pointer to the next + * unconverted character in the buffer. + */ + if (Terminator) + { + if (converted == 0 && ReturnValue == 0 && String != NULL) + { + *Terminator = (char *) StringStart; + } + else + { + *Terminator = (char *) String; + } + } + + if (Status == AE_ERROR) + { + ReturnValue = ACPI_UINT32_MAX; + } + + /* + * If a minus sign was present, then "the conversion is negated": + */ + if (sign == ACPI_SIGN_NEGATIVE) + { + ReturnValue = (ACPI_UINT32_MAX - ReturnValue) + 1; + } + + return (ReturnValue); +} + + +/******************************************************************************* + * + * FUNCTION: toupper + * + * PARAMETERS: c - Character to convert + * + * RETURN: Converted character as an int + * + * DESCRIPTION: Convert character to uppercase + * + ******************************************************************************/ + +int +toupper ( + int c) +{ + + return (islower(c) ? ((c)-0x20) : (c)); +} + + +/******************************************************************************* + * + * FUNCTION: tolower + * + * PARAMETERS: c - Character to convert + * + * RETURN: Converted character as an int + * + * DESCRIPTION: Convert character to lowercase + * + ******************************************************************************/ + +int +tolower ( + int c) +{ + + return (isupper(c) ? ((c)+0x20) : (c)); +} + + +/******************************************************************************* + * + * FUNCTION: is* function array + * + * DESCRIPTION: is* functions use the ctype table below + * + ******************************************************************************/ + +const UINT8 AcpiGbl_Ctypes[257] = { + _ACPI_CN, /* 0x00 0 NUL */ + _ACPI_CN, /* 0x01 1 SOH */ + _ACPI_CN, /* 0x02 2 STX */ + _ACPI_CN, /* 0x03 3 ETX */ + _ACPI_CN, /* 0x04 4 EOT */ + _ACPI_CN, /* 0x05 5 ENQ */ + _ACPI_CN, /* 0x06 6 ACK */ + _ACPI_CN, /* 0x07 7 BEL */ + _ACPI_CN, /* 0x08 8 BS */ + _ACPI_CN|_ACPI_SP, /* 0x09 9 TAB */ + _ACPI_CN|_ACPI_SP, /* 0x0A 10 LF */ + _ACPI_CN|_ACPI_SP, /* 0x0B 11 VT */ + _ACPI_CN|_ACPI_SP, /* 0x0C 12 FF */ + _ACPI_CN|_ACPI_SP, /* 0x0D 13 CR */ + _ACPI_CN, /* 0x0E 14 SO */ + _ACPI_CN, /* 0x0F 15 SI */ + _ACPI_CN, /* 0x10 16 DLE */ + _ACPI_CN, /* 0x11 17 DC1 */ + _ACPI_CN, /* 0x12 18 DC2 */ + _ACPI_CN, /* 0x13 19 DC3 */ + _ACPI_CN, /* 0x14 20 DC4 */ + _ACPI_CN, /* 0x15 21 NAK */ + _ACPI_CN, /* 0x16 22 SYN */ + _ACPI_CN, /* 0x17 23 ETB */ + _ACPI_CN, /* 0x18 24 CAN */ + _ACPI_CN, /* 0x19 25 EM */ + _ACPI_CN, /* 0x1A 26 SUB */ + _ACPI_CN, /* 0x1B 27 ESC */ + _ACPI_CN, /* 0x1C 28 FS */ + _ACPI_CN, /* 0x1D 29 GS */ + _ACPI_CN, /* 0x1E 30 RS */ + _ACPI_CN, /* 0x1F 31 US */ + _ACPI_XS|_ACPI_SP, /* 0x20 32 ' ' */ + _ACPI_PU, /* 0x21 33 '!' */ + _ACPI_PU, /* 0x22 34 '"' */ + _ACPI_PU, /* 0x23 35 '#' */ + _ACPI_PU, /* 0x24 36 '$' */ + _ACPI_PU, /* 0x25 37 '%' */ + _ACPI_PU, /* 0x26 38 '&' */ + _ACPI_PU, /* 0x27 39 ''' */ + _ACPI_PU, /* 0x28 40 '(' */ + _ACPI_PU, /* 0x29 41 ')' */ + _ACPI_PU, /* 0x2A 42 '*' */ + _ACPI_PU, /* 0x2B 43 '+' */ + _ACPI_PU, /* 0x2C 44 ',' */ + _ACPI_PU, /* 0x2D 45 '-' */ + _ACPI_PU, /* 0x2E 46 '.' */ + _ACPI_PU, /* 0x2F 47 '/' */ + _ACPI_XD|_ACPI_DI, /* 0x30 48 '0' */ + _ACPI_XD|_ACPI_DI, /* 0x31 49 '1' */ + _ACPI_XD|_ACPI_DI, /* 0x32 50 '2' */ + _ACPI_XD|_ACPI_DI, /* 0x33 51 '3' */ + _ACPI_XD|_ACPI_DI, /* 0x34 52 '4' */ + _ACPI_XD|_ACPI_DI, /* 0x35 53 '5' */ + _ACPI_XD|_ACPI_DI, /* 0x36 54 '6' */ + _ACPI_XD|_ACPI_DI, /* 0x37 55 '7' */ + _ACPI_XD|_ACPI_DI, /* 0x38 56 '8' */ + _ACPI_XD|_ACPI_DI, /* 0x39 57 '9' */ + _ACPI_PU, /* 0x3A 58 ':' */ + _ACPI_PU, /* 0x3B 59 ';' */ + _ACPI_PU, /* 0x3C 60 '<' */ + _ACPI_PU, /* 0x3D 61 '=' */ + _ACPI_PU, /* 0x3E 62 '>' */ + _ACPI_PU, /* 0x3F 63 '?' */ + _ACPI_PU, /* 0x40 64 '@' */ + _ACPI_XD|_ACPI_UP, /* 0x41 65 'A' */ + _ACPI_XD|_ACPI_UP, /* 0x42 66 'B' */ + _ACPI_XD|_ACPI_UP, /* 0x43 67 'C' */ + _ACPI_XD|_ACPI_UP, /* 0x44 68 'D' */ + _ACPI_XD|_ACPI_UP, /* 0x45 69 'E' */ + _ACPI_XD|_ACPI_UP, /* 0x46 70 'F' */ + _ACPI_UP, /* 0x47 71 'G' */ + _ACPI_UP, /* 0x48 72 'H' */ + _ACPI_UP, /* 0x49 73 'I' */ + _ACPI_UP, /* 0x4A 74 'J' */ + _ACPI_UP, /* 0x4B 75 'K' */ + _ACPI_UP, /* 0x4C 76 'L' */ + _ACPI_UP, /* 0x4D 77 'M' */ + _ACPI_UP, /* 0x4E 78 'N' */ + _ACPI_UP, /* 0x4F 79 'O' */ + _ACPI_UP, /* 0x50 80 'P' */ + _ACPI_UP, /* 0x51 81 'Q' */ + _ACPI_UP, /* 0x52 82 'R' */ + _ACPI_UP, /* 0x53 83 'S' */ + _ACPI_UP, /* 0x54 84 'T' */ + _ACPI_UP, /* 0x55 85 'U' */ + _ACPI_UP, /* 0x56 86 'V' */ + _ACPI_UP, /* 0x57 87 'W' */ + _ACPI_UP, /* 0x58 88 'X' */ + _ACPI_UP, /* 0x59 89 'Y' */ + _ACPI_UP, /* 0x5A 90 'Z' */ + _ACPI_PU, /* 0x5B 91 '[' */ + _ACPI_PU, /* 0x5C 92 '\' */ + _ACPI_PU, /* 0x5D 93 ']' */ + _ACPI_PU, /* 0x5E 94 '^' */ + _ACPI_PU, /* 0x5F 95 '_' */ + _ACPI_PU, /* 0x60 96 '`' */ + _ACPI_XD|_ACPI_LO, /* 0x61 97 'a' */ + _ACPI_XD|_ACPI_LO, /* 0x62 98 'b' */ + _ACPI_XD|_ACPI_LO, /* 0x63 99 'c' */ + _ACPI_XD|_ACPI_LO, /* 0x64 100 'd' */ + _ACPI_XD|_ACPI_LO, /* 0x65 101 'e' */ + _ACPI_XD|_ACPI_LO, /* 0x66 102 'f' */ + _ACPI_LO, /* 0x67 103 'g' */ + _ACPI_LO, /* 0x68 104 'h' */ + _ACPI_LO, /* 0x69 105 'i' */ + _ACPI_LO, /* 0x6A 106 'j' */ + _ACPI_LO, /* 0x6B 107 'k' */ + _ACPI_LO, /* 0x6C 108 'l' */ + _ACPI_LO, /* 0x6D 109 'm' */ + _ACPI_LO, /* 0x6E 110 'n' */ + _ACPI_LO, /* 0x6F 111 'o' */ + _ACPI_LO, /* 0x70 112 'p' */ + _ACPI_LO, /* 0x71 113 'q' */ + _ACPI_LO, /* 0x72 114 'r' */ + _ACPI_LO, /* 0x73 115 's' */ + _ACPI_LO, /* 0x74 116 't' */ + _ACPI_LO, /* 0x75 117 'u' */ + _ACPI_LO, /* 0x76 118 'v' */ + _ACPI_LO, /* 0x77 119 'w' */ + _ACPI_LO, /* 0x78 120 'x' */ + _ACPI_LO, /* 0x79 121 'y' */ + _ACPI_LO, /* 0x7A 122 'z' */ + _ACPI_PU, /* 0x7B 123 '{' */ + _ACPI_PU, /* 0x7C 124 '|' */ + _ACPI_PU, /* 0x7D 125 '}' */ + _ACPI_PU, /* 0x7E 126 '~' */ + _ACPI_CN, /* 0x7F 127 DEL */ + + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x80 to 0x8F */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x90 to 0x9F */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0xA0 to 0xAF */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0xB0 to 0xBF */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0xC0 to 0xCF */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0xD0 to 0xDF */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0xE0 to 0xEF */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0xF0 to 0xFF */ + 0 /* 0x100 */ +}; + + +#endif /* ACPI_USE_SYSTEM_CLIBRARY */ diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utcopy.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utcopy.c index 5ba4a221c4..bc777876e3 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utcopy.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utcopy.c @@ -235,7 +235,7 @@ AcpiUtCopyIsimpleToEsimple ( ExternalObject->String.Pointer = (char *) DataSpace; ExternalObject->String.Length = InternalObject->String.Length; *BufferSpaceUsed = ACPI_ROUND_UP_TO_NATIVE_WORD ( - (ACPI_SIZE) InternalObject->String.Length + 1); + (ACPI_SIZE) InternalObject->String.Length + 1); memcpy ((void *) DataSpace, (void *) InternalObject->String.Pointer, @@ -247,7 +247,7 @@ AcpiUtCopyIsimpleToEsimple ( ExternalObject->Buffer.Pointer = DataSpace; ExternalObject->Buffer.Length = InternalObject->Buffer.Length; *BufferSpaceUsed = ACPI_ROUND_UP_TO_NATIVE_WORD ( - InternalObject->String.Length); + InternalObject->String.Length); memcpy ((void *) DataSpace, (void *) InternalObject->Buffer.Pointer, @@ -347,9 +347,9 @@ AcpiUtCopyIelementToEelement ( ACPI_FUNCTION_ENTRY (); - ThisIndex = State->Pkg.Index; - TargetObject = (ACPI_OBJECT *) &((ACPI_OBJECT *) - (State->Pkg.DestObject))->Package.Elements[ThisIndex]; + ThisIndex = State->Pkg.Index; + TargetObject = (ACPI_OBJECT *) + &((ACPI_OBJECT *)(State->Pkg.DestObject))->Package.Elements[ThisIndex]; switch (ObjectType) { @@ -358,7 +358,7 @@ AcpiUtCopyIelementToEelement ( * This is a simple or null object */ Status = AcpiUtCopyIsimpleToEsimple (SourceObject, - TargetObject, Info->FreeSpace, &ObjectSpace); + TargetObject, Info->FreeSpace, &ObjectSpace); if (ACPI_FAILURE (Status)) { return (Status); @@ -369,9 +369,9 @@ AcpiUtCopyIelementToEelement ( /* * Build the package object */ - TargetObject->Type = ACPI_TYPE_PACKAGE; - TargetObject->Package.Count = SourceObject->Package.Count; - TargetObject->Package.Elements = + TargetObject->Type = ACPI_TYPE_PACKAGE; + TargetObject->Package.Count = SourceObject->Package.Count; + TargetObject->Package.Elements = ACPI_CAST_PTR (ACPI_OBJECT, Info->FreeSpace); /* @@ -384,8 +384,8 @@ AcpiUtCopyIelementToEelement ( * update the buffer length counter */ ObjectSpace = ACPI_ROUND_UP_TO_NATIVE_WORD ( - (ACPI_SIZE) TargetObject->Package.Count * - sizeof (ACPI_OBJECT)); + (ACPI_SIZE) TargetObject->Package.Count * + sizeof (ACPI_OBJECT)); break; default: @@ -393,8 +393,8 @@ AcpiUtCopyIelementToEelement ( return (AE_BAD_PARAMETER); } - Info->FreeSpace += ObjectSpace; - Info->Length += ObjectSpace; + Info->FreeSpace += ObjectSpace; + Info->Length += ObjectSpace; return (Status); } @@ -440,28 +440,28 @@ AcpiUtCopyIpackageToEpackage ( /* * Free space begins right after the first package */ - Info.Length = ACPI_ROUND_UP_TO_NATIVE_WORD (sizeof (ACPI_OBJECT)); - Info.FreeSpace = Buffer + - ACPI_ROUND_UP_TO_NATIVE_WORD (sizeof (ACPI_OBJECT)); + Info.Length = ACPI_ROUND_UP_TO_NATIVE_WORD (sizeof (ACPI_OBJECT)); + Info.FreeSpace = Buffer + ACPI_ROUND_UP_TO_NATIVE_WORD ( + sizeof (ACPI_OBJECT)); Info.ObjectSpace = 0; Info.NumPackages = 1; - ExternalObject->Type = InternalObject->Common.Type; - ExternalObject->Package.Count = InternalObject->Package.Count; - ExternalObject->Package.Elements = - ACPI_CAST_PTR (ACPI_OBJECT, Info.FreeSpace); + ExternalObject->Type = InternalObject->Common.Type; + ExternalObject->Package.Count = InternalObject->Package.Count; + ExternalObject->Package.Elements = ACPI_CAST_PTR (ACPI_OBJECT, + Info.FreeSpace); /* * Leave room for an array of ACPI_OBJECTS in the buffer * and move the free space past it */ - Info.Length += (ACPI_SIZE) ExternalObject->Package.Count * - ACPI_ROUND_UP_TO_NATIVE_WORD (sizeof (ACPI_OBJECT)); + Info.Length += (ACPI_SIZE) ExternalObject->Package.Count * + ACPI_ROUND_UP_TO_NATIVE_WORD (sizeof (ACPI_OBJECT)); Info.FreeSpace += ExternalObject->Package.Count * - ACPI_ROUND_UP_TO_NATIVE_WORD (sizeof (ACPI_OBJECT)); + ACPI_ROUND_UP_TO_NATIVE_WORD (sizeof (ACPI_OBJECT)); Status = AcpiUtWalkPackageTree (InternalObject, ExternalObject, - AcpiUtCopyIelementToEelement, &Info); + AcpiUtCopyIelementToEelement, &Info); *SpaceUsed = Info.Length; return_ACPI_STATUS (Status); @@ -500,7 +500,7 @@ AcpiUtCopyIobjectToEobject ( * nested packages) */ Status = AcpiUtCopyIpackageToEpackage (InternalObject, - RetBuffer->Pointer, &RetBuffer->Length); + RetBuffer->Pointer, &RetBuffer->Length); } else { @@ -508,10 +508,10 @@ AcpiUtCopyIobjectToEobject ( * Build a simple object (no nested objects) */ Status = AcpiUtCopyIsimpleToEsimple (InternalObject, - ACPI_CAST_PTR (ACPI_OBJECT, RetBuffer->Pointer), - ACPI_ADD_PTR (UINT8, RetBuffer->Pointer, - ACPI_ROUND_UP_TO_NATIVE_WORD (sizeof (ACPI_OBJECT))), - &RetBuffer->Length); + ACPI_CAST_PTR (ACPI_OBJECT, RetBuffer->Pointer), + ACPI_ADD_PTR (UINT8, RetBuffer->Pointer, + ACPI_ROUND_UP_TO_NATIVE_WORD (sizeof (ACPI_OBJECT))), + &RetBuffer->Length); /* * build simple does not include the object size in the length * so we add it in here @@ -561,7 +561,7 @@ AcpiUtCopyEsimpleToIsimple ( case ACPI_TYPE_LOCAL_REFERENCE: InternalObject = AcpiUtCreateInternalObject ( - (UINT8) ExternalObject->Type); + (UINT8) ExternalObject->Type); if (!InternalObject) { return_ACPI_STATUS (AE_NO_MEMORY); @@ -601,10 +601,10 @@ AcpiUtCopyEsimpleToIsimple ( } memcpy (InternalObject->String.Pointer, - ExternalObject->String.Pointer, - ExternalObject->String.Length); + ExternalObject->String.Pointer, + ExternalObject->String.Length); - InternalObject->String.Length = ExternalObject->String.Length; + InternalObject->String.Length = ExternalObject->String.Length; break; case ACPI_TYPE_BUFFER: @@ -617,10 +617,10 @@ AcpiUtCopyEsimpleToIsimple ( } memcpy (InternalObject->Buffer.Pointer, - ExternalObject->Buffer.Pointer, - ExternalObject->Buffer.Length); + ExternalObject->Buffer.Pointer, + ExternalObject->Buffer.Length); - InternalObject->Buffer.Length = ExternalObject->Buffer.Length; + InternalObject->Buffer.Length = ExternalObject->Buffer.Length; /* Mark buffer data valid */ @@ -629,7 +629,7 @@ AcpiUtCopyEsimpleToIsimple ( case ACPI_TYPE_INTEGER: - InternalObject->Integer.Value = ExternalObject->Integer.Value; + InternalObject->Integer.Value = ExternalObject->Integer.Value; break; case ACPI_TYPE_LOCAL_REFERENCE: @@ -687,8 +687,7 @@ AcpiUtCopyEpackageToIpackage ( /* Create the package object */ - PackageObject = AcpiUtCreatePackageObject ( - ExternalObject->Package.Count); + PackageObject = AcpiUtCreatePackageObject (ExternalObject->Package.Count); if (!PackageObject) { return_ACPI_STATUS (AE_NO_MEMORY); @@ -697,14 +696,14 @@ AcpiUtCopyEpackageToIpackage ( PackageElements = PackageObject->Package.Elements; /* - * Recursive implementation. Probably ok, since nested external - * packages as parameters should be very rare. + * Recursive implementation. Probably ok, since nested external packages + * as parameters should be very rare. */ for (i = 0; i < ExternalObject->Package.Count; i++) { Status = AcpiUtCopyEobjectToIobject ( - &ExternalObject->Package.Elements[i], - &PackageElements[i]); + &ExternalObject->Package.Elements[i], + &PackageElements[i]); if (ACPI_FAILURE (Status)) { /* Truncate package and delete it */ @@ -751,16 +750,14 @@ AcpiUtCopyEobjectToIobject ( if (ExternalObject->Type == ACPI_TYPE_PACKAGE) { - Status = AcpiUtCopyEpackageToIpackage ( - ExternalObject, InternalObject); + Status = AcpiUtCopyEpackageToIpackage (ExternalObject, InternalObject); } else { /* * Build a simple object (no nested objects) */ - Status = AcpiUtCopyEsimpleToIsimple (ExternalObject, - InternalObject); + Status = AcpiUtCopyEsimpleToIsimple (ExternalObject, InternalObject); } return_ACPI_STATUS (Status); @@ -911,7 +908,7 @@ AcpiUtCopySimpleObject ( case ACPI_TYPE_EVENT: Status = AcpiOsCreateSemaphore (ACPI_NO_UNIT_LIMIT, 0, - &DestDesc->Event.OsSemaphore); + &DestDesc->Event.OsSemaphore); if (ACPI_FAILURE (Status)) { return (Status); @@ -957,9 +954,9 @@ AcpiUtCopyIelementToIelement ( ACPI_FUNCTION_ENTRY (); - ThisIndex = State->Pkg.Index; + ThisIndex = State->Pkg.Index; ThisTargetPtr = (ACPI_OPERAND_OBJECT **) - &State->Pkg.DestObject->Package.Elements[ThisIndex]; + &State->Pkg.DestObject->Package.Elements[ThisIndex]; switch (ObjectType) { @@ -973,7 +970,7 @@ AcpiUtCopyIelementToIelement ( * This is a simple object, just copy it */ TargetObject = AcpiUtCreateInternalObject ( - SourceObject->Common.Type); + SourceObject->Common.Type); if (!TargetObject) { return (AE_NO_MEMORY); @@ -1000,8 +997,7 @@ AcpiUtCopyIelementToIelement ( * This object is a package - go down another nesting level * Create and build the package object */ - TargetObject = AcpiUtCreatePackageObject ( - SourceObject->Package.Count); + TargetObject = AcpiUtCreatePackageObject (SourceObject->Package.Count); if (!TargetObject) { return (AE_NO_MEMORY); @@ -1058,16 +1054,16 @@ AcpiUtCopyIpackageToIpackage ( ACPI_FUNCTION_TRACE (UtCopyIpackageToIpackage); - DestObj->Common.Type = SourceObj->Common.Type; - DestObj->Common.Flags = SourceObj->Common.Flags; - DestObj->Package.Count = SourceObj->Package.Count; + DestObj->Common.Type = SourceObj->Common.Type; + DestObj->Common.Flags = SourceObj->Common.Flags; + DestObj->Package.Count = SourceObj->Package.Count; /* * Create the object array and walk the source package tree */ DestObj->Package.Elements = ACPI_ALLOCATE_ZEROED ( - ((ACPI_SIZE) SourceObj->Package.Count + 1) * - sizeof (void *)); + ((ACPI_SIZE) SourceObj->Package.Count + 1) * + sizeof (void *)); if (!DestObj->Package.Elements) { ACPI_ERROR ((AE_INFO, "Package allocation failure")); @@ -1079,7 +1075,7 @@ AcpiUtCopyIpackageToIpackage ( * This handles nested packages of arbitrary depth. */ Status = AcpiUtWalkPackageTree (SourceObj, DestObj, - AcpiUtCopyIelementToIelement, WalkState); + AcpiUtCopyIelementToIelement, WalkState); if (ACPI_FAILURE (Status)) { /* On failure, delete the destination package object */ @@ -1129,8 +1125,8 @@ AcpiUtCopyIobjectToIobject ( if (SourceDesc->Common.Type == ACPI_TYPE_PACKAGE) { - Status = AcpiUtCopyIpackageToIpackage ( - SourceDesc, *DestDesc, WalkState); + Status = AcpiUtCopyIpackageToIpackage (SourceDesc, *DestDesc, + WalkState); } else { @@ -1141,7 +1137,7 @@ AcpiUtCopyIobjectToIobject ( if (ACPI_FAILURE (Status)) { - AcpiUtRemoveReference (*DestDesc); + AcpiUtRemoveReference(*DestDesc); } return_ACPI_STATUS (Status); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utdecode.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utdecode.c index 3d927f511c..eb0dc9f27d 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utdecode.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utdecode.c @@ -191,7 +191,7 @@ const char *AcpiGbl_RegionTypes[ACPI_NUM_PREDEFINED_REGIONS] = }; -const char * +char * AcpiUtGetRegionName ( UINT8 SpaceId) { @@ -213,7 +213,7 @@ AcpiUtGetRegionName ( return ("InvalidSpaceId"); } - return (AcpiGbl_RegionTypes[SpaceId]); + return (ACPI_CAST_PTR (char, AcpiGbl_RegionTypes[SpaceId])); } @@ -241,7 +241,7 @@ static const char *AcpiGbl_EventTypes[ACPI_NUM_FIXED_EVENTS] = }; -const char * +char * AcpiUtGetEventName ( UINT32 EventId) { @@ -251,7 +251,7 @@ AcpiUtGetEventName ( return ("InvalidEventID"); } - return (AcpiGbl_EventTypes[EventId]); + return (ACPI_CAST_PTR (char, AcpiGbl_EventTypes[EventId])); } @@ -273,8 +273,7 @@ AcpiUtGetEventName ( * * The type ACPI_TYPE_ANY (Untyped) is used as a "don't care" when searching; * when stored in a table it really means that we have thus far seen no - * evidence to indicate what type is actually going to be stored for this - & entry. + * evidence to indicate what type is actually going to be stored for this entry. */ static const char AcpiGbl_BadType[] = "UNDEFINED"; @@ -316,47 +315,31 @@ static const char *AcpiGbl_NsTypeNames[] = }; -const char * +char * AcpiUtGetTypeName ( ACPI_OBJECT_TYPE Type) { if (Type > ACPI_TYPE_INVALID) { - return (AcpiGbl_BadType); + return (ACPI_CAST_PTR (char, AcpiGbl_BadType)); } - return (AcpiGbl_NsTypeNames[Type]); + return (ACPI_CAST_PTR (char, AcpiGbl_NsTypeNames[Type])); } -const char * +char * AcpiUtGetObjectTypeName ( ACPI_OPERAND_OBJECT *ObjDesc) { - ACPI_FUNCTION_TRACE (UtGetObjectTypeName); - if (!ObjDesc) { - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Null Object Descriptor\n")); - return_PTR ("[NULL Object Descriptor]"); + return ("[NULL Object Descriptor]"); } - /* These descriptor types share a common area */ - - if ((ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) != ACPI_DESC_TYPE_OPERAND) && - (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) != ACPI_DESC_TYPE_NAMED)) - { - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, - "Invalid object descriptor type: 0x%2.2X [%s] (%p)\n", - ACPI_GET_DESCRIPTOR_TYPE (ObjDesc), - AcpiUtGetDescriptorName (ObjDesc), ObjDesc)); - - return_PTR ("Invalid object"); - } - - return_PTR (AcpiUtGetTypeName (ObjDesc->Common.Type)); + return (AcpiUtGetTypeName (ObjDesc->Common.Type)); } @@ -372,7 +355,7 @@ AcpiUtGetObjectTypeName ( * ******************************************************************************/ -const char * +char * AcpiUtGetNodeName ( void *Object) { @@ -448,7 +431,7 @@ static const char *AcpiGbl_DescTypeNames[] = }; -const char * +char * AcpiUtGetDescriptorName ( void *Object) { @@ -463,7 +446,9 @@ AcpiUtGetDescriptorName ( return ("Not a Descriptor"); } - return (AcpiGbl_DescTypeNames[ACPI_GET_DESCRIPTOR_TYPE (Object)]); + return (ACPI_CAST_PTR (char, + AcpiGbl_DescTypeNames[ACPI_GET_DESCRIPTOR_TYPE (Object)])); + } @@ -540,7 +525,7 @@ AcpiUtGetReferenceName ( /* Names for internal mutex objects, used for debug output */ -static const char *AcpiGbl_MutexNames[ACPI_NUM_MUTEX] = +static char *AcpiGbl_MutexNames[ACPI_NUM_MUTEX] = { "ACPI_MTX_Interpreter", "ACPI_MTX_Namespace", @@ -548,9 +533,11 @@ static const char *AcpiGbl_MutexNames[ACPI_NUM_MUTEX] = "ACPI_MTX_Events", "ACPI_MTX_Caches", "ACPI_MTX_Memory", + "ACPI_MTX_CommandComplete", + "ACPI_MTX_CommandReady" }; -const char * +char * AcpiUtGetMutexName ( UINT32 MutexId) { diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utdelete.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utdelete.c index 4fa093c4dc..8a55c8edea 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utdelete.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utdelete.c @@ -292,7 +292,6 @@ AcpiUtDeleteInternalObj ( AcpiUtDeleteObjectDesc (Object->Method.Mutex); Object->Method.Mutex = NULL; } - if (Object->Method.Node) { Object->Method.Node = NULL; @@ -626,8 +625,8 @@ AcpiUtUpdateObjectReference ( } /* - * All sub-objects must have their reference count incremented - * also. Different object types have different subobjects. + * All sub-objects must have their reference count incremented also. + * Different object types have different subobjects. */ switch (Object->Common.Type) { @@ -687,7 +686,7 @@ AcpiUtUpdateObjectReference ( * for later processing (this eliminates recursion.) */ Status = AcpiUtCreateUpdateStateAndPush ( - NextObject, Action, &StateList); + NextObject, Action, &StateList); if (ACPI_FAILURE (Status)) { goto ErrorExit; @@ -712,7 +711,7 @@ AcpiUtUpdateObjectReference ( NextObject = Object->BankField.BankObj; Status = AcpiUtCreateUpdateStateAndPush ( - Object->BankField.RegionObj, Action, &StateList); + Object->BankField.RegionObj, Action, &StateList); if (ACPI_FAILURE (Status)) { goto ErrorExit; @@ -723,7 +722,7 @@ AcpiUtUpdateObjectReference ( NextObject = Object->IndexField.IndexObj; Status = AcpiUtCreateUpdateStateAndPush ( - Object->IndexField.DataObj, Action, &StateList); + Object->IndexField.DataObj, Action, &StateList); if (ACPI_FAILURE (Status)) { goto ErrorExit; diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/uterror.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/uterror.c index cd8b913dc8..52b9ae064f 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/uterror.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/uterror.c @@ -316,8 +316,8 @@ AcpiUtNamespaceError ( { /* Convert path to external format */ - Status = AcpiNsExternalizeName ( - ACPI_UINT32_MAX, InternalName, NULL, &Name); + Status = AcpiNsExternalizeName (ACPI_UINT32_MAX, + InternalName, NULL, &Name); /* Print target name */ @@ -379,8 +379,8 @@ AcpiUtMethodError ( if (Path) { - Status = AcpiNsGetNode (PrefixNode, Path, - ACPI_NS_NO_UPSEARCH, &Node); + Status = AcpiNsGetNode (PrefixNode, Path, ACPI_NS_NO_UPSEARCH, + &Node); if (ACPI_FAILURE (Status)) { AcpiOsPrintf ("[Could not get node by pathname]"); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/uteval.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/uteval.c index 81c155c89d..dd754c0974 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/uteval.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/uteval.c @@ -303,7 +303,7 @@ AcpiUtEvaluateNumericObject ( Status = AcpiUtEvaluateObject (DeviceNode, ObjectName, - ACPI_BTYPE_INTEGER, &ObjDesc); + ACPI_BTYPE_INTEGER, &ObjDesc); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -350,7 +350,7 @@ AcpiUtExecute_STA ( Status = AcpiUtEvaluateObject (DeviceNode, METHOD_NAME__STA, - ACPI_BTYPE_INTEGER, &ObjDesc); + ACPI_BTYPE_INTEGER, &ObjDesc); if (ACPI_FAILURE (Status)) { if (AE_NOT_FOUND == Status) @@ -423,8 +423,8 @@ AcpiUtExecutePowerMethods ( * return type is an Integer. */ Status = AcpiUtEvaluateObject (DeviceNode, - ACPI_CAST_PTR (char, MethodNames[i]), - ACPI_BTYPE_INTEGER, &ObjDesc); + ACPI_CAST_PTR (char, MethodNames[i]), + ACPI_BTYPE_INTEGER, &ObjDesc); if (ACPI_SUCCESS (Status)) { OutValues[i] = (UINT8) ObjDesc->Integer.Value; diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/uthex.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/uthex.c index 3a320034e8..c652f6a0fa 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/uthex.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/uthex.c @@ -122,7 +122,7 @@ /* Hex to ASCII conversion table */ -static const char AcpiGbl_HexToAscii[] = +static char AcpiGbl_HexToAscii[] = { '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F' }; diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utids.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utids.c index 6d9a59fd5f..3bb12f0053 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utids.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utids.c @@ -155,7 +155,7 @@ AcpiUtExecute_HID ( Status = AcpiUtEvaluateObject (DeviceNode, METHOD_NAME__HID, - ACPI_BTYPE_INTEGER | ACPI_BTYPE_STRING, &ObjDesc); + ACPI_BTYPE_INTEGER | ACPI_BTYPE_STRING, &ObjDesc); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -174,8 +174,7 @@ AcpiUtExecute_HID ( /* Allocate a buffer for the HID */ - Hid = ACPI_ALLOCATE_ZEROED ( - sizeof (ACPI_PNP_DEVICE_ID) + (ACPI_SIZE) Length); + Hid = ACPI_ALLOCATE_ZEROED (sizeof (ACPI_PNP_DEVICE_ID) + (ACPI_SIZE) Length); if (!Hid) { Status = AE_NO_MEMORY; @@ -210,6 +209,77 @@ Cleanup: } +/******************************************************************************* + * + * FUNCTION: AcpiUtExecute_SUB + * + * PARAMETERS: DeviceNode - Node for the device + * ReturnId - Where the _SUB is returned + * + * RETURN: Status + * + * DESCRIPTION: Executes the _SUB control method that returns the subsystem + * ID of the device. The _SUB value is always a string containing + * either a valid PNP or ACPI ID. + * + * NOTE: Internal function, no parameter validation + * + ******************************************************************************/ + +ACPI_STATUS +AcpiUtExecute_SUB ( + ACPI_NAMESPACE_NODE *DeviceNode, + ACPI_PNP_DEVICE_ID **ReturnId) +{ + ACPI_OPERAND_OBJECT *ObjDesc; + ACPI_PNP_DEVICE_ID *Sub; + UINT32 Length; + ACPI_STATUS Status; + + + ACPI_FUNCTION_TRACE (UtExecute_SUB); + + + Status = AcpiUtEvaluateObject (DeviceNode, METHOD_NAME__SUB, + ACPI_BTYPE_STRING, &ObjDesc); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } + + /* Get the size of the String to be returned, includes null terminator */ + + Length = ObjDesc->String.Length + 1; + + /* Allocate a buffer for the SUB */ + + Sub = ACPI_ALLOCATE_ZEROED (sizeof (ACPI_PNP_DEVICE_ID) + (ACPI_SIZE) Length); + if (!Sub) + { + Status = AE_NO_MEMORY; + goto Cleanup; + } + + /* Area for the string starts after PNP_DEVICE_ID struct */ + + Sub->String = ACPI_ADD_PTR (char, Sub, sizeof (ACPI_PNP_DEVICE_ID)); + + /* Simply copy existing string */ + + strcpy (Sub->String, ObjDesc->String.Pointer); + Sub->Length = Length; + *ReturnId = Sub; + + +Cleanup: + + /* On exit, we must delete the return object */ + + AcpiUtRemoveReference (ObjDesc); + return_ACPI_STATUS (Status); +} + + /******************************************************************************* * * FUNCTION: AcpiUtExecute_UID @@ -243,7 +313,7 @@ AcpiUtExecute_UID ( Status = AcpiUtEvaluateObject (DeviceNode, METHOD_NAME__UID, - ACPI_BTYPE_INTEGER | ACPI_BTYPE_STRING, &ObjDesc); + ACPI_BTYPE_INTEGER | ACPI_BTYPE_STRING, &ObjDesc); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -262,8 +332,7 @@ AcpiUtExecute_UID ( /* Allocate a buffer for the UID */ - Uid = ACPI_ALLOCATE_ZEROED ( - sizeof (ACPI_PNP_DEVICE_ID) + (ACPI_SIZE) Length); + Uid = ACPI_ALLOCATE_ZEROED (sizeof (ACPI_PNP_DEVICE_ID) + (ACPI_SIZE) Length); if (!Uid) { Status = AE_NO_MEMORY; @@ -344,8 +413,8 @@ AcpiUtExecute_CID ( /* Evaluate the _CID method for this device */ Status = AcpiUtEvaluateObject (DeviceNode, METHOD_NAME__CID, - ACPI_BTYPE_INTEGER | ACPI_BTYPE_STRING | ACPI_BTYPE_PACKAGE, - &ObjDesc); + ACPI_BTYPE_INTEGER | ACPI_BTYPE_STRING | ACPI_BTYPE_PACKAGE, + &ObjDesc); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -422,8 +491,7 @@ AcpiUtExecute_CID ( { /* Convert the Integer (EISAID) CID to a string */ - AcpiExEisaIdToString ( - NextIdString, CidObjects[i]->Integer.Value); + AcpiExEisaIdToString (NextIdString, CidObjects[i]->Integer.Value); Length = ACPI_EISAID_STRING_SIZE; } else /* ACPI_TYPE_STRING */ @@ -492,7 +560,7 @@ AcpiUtExecute_CLS ( Status = AcpiUtEvaluateObject (DeviceNode, METHOD_NAME__CLS, - ACPI_BTYPE_PACKAGE, &ObjDesc); + ACPI_BTYPE_PACKAGE, &ObjDesc); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -522,8 +590,7 @@ AcpiUtExecute_CLS ( /* Allocate a buffer for the CLS */ - Cls = ACPI_ALLOCATE_ZEROED ( - sizeof (ACPI_PNP_DEVICE_ID) + (ACPI_SIZE) Length); + Cls = ACPI_ALLOCATE_ZEROED (sizeof (ACPI_PNP_DEVICE_ID) + (ACPI_SIZE) Length); if (!Cls) { Status = AE_NO_MEMORY; diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utinit.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utinit.c index c29f2886d2..ed090f1314 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utinit.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utinit.c @@ -298,6 +298,7 @@ AcpiUtInitGlobals ( AcpiGbl_NextOwnerIdOffset = 0; AcpiGbl_DebuggerConfiguration = DEBUGGER_THREADING; AcpiGbl_OsiMutex = NULL; + AcpiGbl_RegMethodsExecuted = FALSE; AcpiGbl_MaxLoopIterations = 0xFFFF; /* Hardware oriented */ @@ -333,6 +334,8 @@ AcpiUtInitGlobals ( AcpiGbl_DisableMemTracking = FALSE; #endif + ACPI_DEBUGGER_EXEC (AcpiGbl_DbTerminateThreads = FALSE); + return_ACPI_STATUS (AE_OK); } @@ -381,20 +384,6 @@ AcpiUtSubsystemShutdown ( ACPI_FUNCTION_TRACE (UtSubsystemShutdown); - /* Just exit if subsystem is already shutdown */ - - if (AcpiGbl_Shutdown) - { - ACPI_ERROR ((AE_INFO, "ACPI Subsystem is already terminated")); - return_VOID; - } - - /* Subsystem appears active, go ahead and shut it down */ - - AcpiGbl_Shutdown = TRUE; - AcpiGbl_StartupFlags = 0; - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Shutting down ACPI Subsystem\n")); - #ifndef ACPI_ASL_COMPILER /* Close the AcpiEvent Handling */ diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utmath.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utmath.c index b8d04224e7..dafba6d8e3 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utmath.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utmath.c @@ -194,10 +194,9 @@ AcpiUtShortDivide ( * and is generated by the second divide. */ ACPI_DIV_64_BY_32 (0, DividendOvl.Part.Hi, Divisor, - Quotient.Part.Hi, Remainder32); - + Quotient.Part.Hi, Remainder32); ACPI_DIV_64_BY_32 (Remainder32, DividendOvl.Part.Lo, Divisor, - Quotient.Part.Lo, Remainder32); + Quotient.Part.Lo, Remainder32); /* Return only what was requested */ @@ -273,10 +272,9 @@ AcpiUtDivide ( * and is generated by the second divide. */ ACPI_DIV_64_BY_32 (0, Dividend.Part.Hi, Divisor.Part.Lo, - Quotient.Part.Hi, Partial1); - + Quotient.Part.Hi, Partial1); ACPI_DIV_64_BY_32 (Partial1, Dividend.Part.Lo, Divisor.Part.Lo, - Quotient.Part.Lo, Remainder.Part.Lo); + Quotient.Part.Lo, Remainder.Part.Lo); } else @@ -293,24 +291,25 @@ AcpiUtDivide ( do { - ACPI_SHIFT_RIGHT_64 ( - NormalizedDivisor.Part.Hi, NormalizedDivisor.Part.Lo); - ACPI_SHIFT_RIGHT_64 ( - NormalizedDividend.Part.Hi, NormalizedDividend.Part.Lo); + ACPI_SHIFT_RIGHT_64 (NormalizedDivisor.Part.Hi, + NormalizedDivisor.Part.Lo); + ACPI_SHIFT_RIGHT_64 (NormalizedDividend.Part.Hi, + NormalizedDividend.Part.Lo); } while (NormalizedDivisor.Part.Hi != 0); /* Partial divide */ - ACPI_DIV_64_BY_32 ( - NormalizedDividend.Part.Hi, NormalizedDividend.Part.Lo, - NormalizedDivisor.Part.Lo, Quotient.Part.Lo, Partial1); + ACPI_DIV_64_BY_32 (NormalizedDividend.Part.Hi, + NormalizedDividend.Part.Lo, + NormalizedDivisor.Part.Lo, + Quotient.Part.Lo, Partial1); /* - * The quotient is always 32 bits, and simply requires - * adjustment. The 64-bit remainder must be generated. + * The quotient is always 32 bits, and simply requires adjustment. + * The 64-bit remainder must be generated. */ - Partial1 = Quotient.Part.Lo * Divisor.Part.Hi; + Partial1 = Quotient.Part.Lo * Divisor.Part.Hi; Partial2.Full = (UINT64) Quotient.Part.Lo * Divisor.Part.Lo; Partial3.Full = (UINT64) Partial2.Part.Hi + Partial1; @@ -336,7 +335,7 @@ AcpiUtDivide ( } } - Remainder.Full = Remainder.Full - Dividend.Full; + Remainder.Full = Remainder.Full - Dividend.Full; Remainder.Part.Hi = (UINT32) -((INT32) Remainder.Part.Hi); Remainder.Part.Lo = (UINT32) -((INT32) Remainder.Part.Lo); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utmisc.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utmisc.c index 4a248d76da..ecf22db7ce 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utmisc.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utmisc.c @@ -144,10 +144,10 @@ AcpiUtIsPciRootBridge ( * ACPI 3.0+: check for a PCI Express root also. */ if (!(strcmp (Id, - PCI_ROOT_HID_STRING)) || + PCI_ROOT_HID_STRING)) || !(strcmp (Id, - PCI_EXPRESS_ROOT_HID_STRING))) + PCI_EXPRESS_ROOT_HID_STRING))) { return (TRUE); } @@ -257,17 +257,17 @@ AcpiUtSetIntegerWidth ( { /* 32-bit case */ - AcpiGbl_IntegerBitWidth = 32; + AcpiGbl_IntegerBitWidth = 32; AcpiGbl_IntegerNybbleWidth = 8; - AcpiGbl_IntegerByteWidth = 4; + AcpiGbl_IntegerByteWidth = 4; } else { /* 64-bit case (ACPI 2.0+) */ - AcpiGbl_IntegerBitWidth = 64; + AcpiGbl_IntegerBitWidth = 64; AcpiGbl_IntegerNybbleWidth = 16; - AcpiGbl_IntegerByteWidth = 8; + AcpiGbl_IntegerByteWidth = 8; } } @@ -358,9 +358,9 @@ AcpiUtWalkPackageTree ( { /* Get one element of the package */ - ThisIndex = State->Pkg.Index; + ThisIndex = State->Pkg.Index; ThisSourceObj = (ACPI_OPERAND_OBJECT *) - State->Pkg.SourceObject->Package.Elements[ThisIndex]; + State->Pkg.SourceObject->Package.Elements[ThisIndex]; /* * Check for: @@ -371,8 +371,7 @@ AcpiUtWalkPackageTree ( * case below. */ if ((!ThisSourceObj) || - (ACPI_GET_DESCRIPTOR_TYPE (ThisSourceObj) != - ACPI_DESC_TYPE_OPERAND) || + (ACPI_GET_DESCRIPTOR_TYPE (ThisSourceObj) != ACPI_DESC_TYPE_OPERAND) || (ThisSourceObj->Common.Type != ACPI_TYPE_PACKAGE)) { Status = WalkCallback (ACPI_COPY_TYPE_SIMPLE, ThisSourceObj, @@ -383,8 +382,7 @@ AcpiUtWalkPackageTree ( } State->Pkg.Index++; - while (State->Pkg.Index >= - State->Pkg.SourceObject->Package.Count) + while (State->Pkg.Index >= State->Pkg.SourceObject->Package.Count) { /* * We've handled all of the objects at this level, This means @@ -419,8 +417,8 @@ AcpiUtWalkPackageTree ( { /* This is a subobject of type package */ - Status = WalkCallback ( - ACPI_COPY_TYPE_PACKAGE, ThisSourceObj, State, Context); + Status = WalkCallback (ACPI_COPY_TYPE_PACKAGE, ThisSourceObj, + State, Context); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -431,8 +429,8 @@ AcpiUtWalkPackageTree ( * The callback above returned a new target package object. */ AcpiUtPushGenericState (&StateList, State); - State = AcpiUtCreatePkgState ( - ThisSourceObj, State->Pkg.ThisTargetObj, 0); + State = AcpiUtCreatePkgState (ThisSourceObj, + State->Pkg.ThisTargetObj, 0); if (!State) { /* Free any stacked Update State objects */ diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utmutex.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utmutex.c index b07adea8da..f5b864f707 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utmutex.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utmutex.c @@ -196,24 +196,6 @@ AcpiUtMutexInitialize ( /* Create the reader/writer lock for namespace access */ Status = AcpiUtCreateRwLock (&AcpiGbl_NamespaceRwLock); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - -#ifdef ACPI_DEBUGGER - - /* Debugger Support */ - - Status = AcpiOsCreateMutex (&AcpiGbl_DbCommandReady); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - Status = AcpiOsCreateMutex (&AcpiGbl_DbCommandComplete); -#endif - return_ACPI_STATUS (Status); } @@ -259,12 +241,6 @@ AcpiUtMutexTerminate ( /* Delete the reader/writer lock */ AcpiUtDeleteRwLock (&AcpiGbl_NamespaceRwLock); - -#ifdef ACPI_DEBUGGER - AcpiOsDeleteMutex (AcpiGbl_DbCommandReady); - AcpiOsDeleteMutex (AcpiGbl_DbCommandComplete); -#endif - return_VOID; } @@ -401,12 +377,11 @@ AcpiUtAcquireMutex ( "Thread %u attempting to acquire Mutex [%s]\n", (UINT32) ThisThreadId, AcpiUtGetMutexName (MutexId))); - Status = AcpiOsAcquireMutex ( - AcpiGbl_MutexInfo[MutexId].Mutex, ACPI_WAIT_FOREVER); + Status = AcpiOsAcquireMutex (AcpiGbl_MutexInfo[MutexId].Mutex, + ACPI_WAIT_FOREVER); if (ACPI_SUCCESS (Status)) { - ACPI_DEBUG_PRINT ((ACPI_DB_MUTEX, - "Thread %u acquired Mutex [%s]\n", + ACPI_DEBUG_PRINT ((ACPI_DB_MUTEX, "Thread %u acquired Mutex [%s]\n", (UINT32) ThisThreadId, AcpiUtGetMutexName (MutexId))); AcpiGbl_MutexInfo[MutexId].UseCount++; diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utnonansi.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utnonansi.c index b69c494d6c..01a4361af2 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utnonansi.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utnonansi.c @@ -404,8 +404,8 @@ AcpiUtStrtoul64 ( /* Divide the digit into the correct position */ - (void) AcpiUtShortDivide ( - (Dividend - (UINT64) ThisDigit), Base, &Quotient, NULL); + (void) AcpiUtShortDivide ((Dividend - (UINT64) ThisDigit), + Base, &Quotient, NULL); if (ReturnValue > Quotient) { diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utobject.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utobject.c index 8116b35273..fb4efaf360 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utobject.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utobject.c @@ -179,8 +179,7 @@ AcpiUtCreateInternalObjectDbg ( /* Allocate the raw object descriptor */ - Object = AcpiUtAllocateObjectDescDbg ( - ModuleName, LineNumber, ComponentId); + Object = AcpiUtAllocateObjectDescDbg (ModuleName, LineNumber, ComponentId); if (!Object) { return_PTR (NULL); @@ -194,8 +193,8 @@ AcpiUtCreateInternalObjectDbg ( /* These types require a secondary object */ - SecondObject = AcpiUtAllocateObjectDescDbg ( - ModuleName, LineNumber, ComponentId); + SecondObject = AcpiUtAllocateObjectDescDbg (ModuleName, + LineNumber, ComponentId); if (!SecondObject) { AcpiUtDeleteObjectDesc (Object); @@ -266,7 +265,7 @@ AcpiUtCreatePackageObject ( * terminated. */ PackageElements = ACPI_ALLOCATE_ZEROED ( - ((ACPI_SIZE) Count + 1) * sizeof (void *)); + ((ACPI_SIZE) Count + 1) * sizeof (void *)); if (!PackageElements) { ACPI_FREE (PackageDesc); @@ -356,7 +355,6 @@ AcpiUtCreateBufferObject ( { ACPI_ERROR ((AE_INFO, "Could not allocate size %u", (UINT32) BufferSize)); - AcpiUtRemoveReference (BufferDesc); return_PTR (NULL); } @@ -416,7 +414,6 @@ AcpiUtCreateStringObject ( { ACPI_ERROR ((AE_INFO, "Could not allocate size %u", (UINT32) StringSize)); - AcpiUtRemoveReference (StringDesc); return_PTR (NULL); } @@ -473,8 +470,8 @@ AcpiUtValidInternalObject ( default: ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, - "%p is not an ACPI operand obj [%s]\n", - Object, AcpiUtGetDescriptorName (Object))); + "%p is not an ACPI operand obj [%s]\n", + Object, AcpiUtGetDescriptorName (Object))); break; } @@ -523,7 +520,7 @@ AcpiUtAllocateObjectDescDbg ( ACPI_SET_DESCRIPTOR_TYPE (Object, ACPI_DESC_TYPE_OPERAND); ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, "%p Size %X\n", - Object, (UINT32) sizeof (ACPI_OPERAND_OBJECT))); + Object, (UINT32) sizeof (ACPI_OPERAND_OBJECT))); return_PTR (Object); } @@ -786,12 +783,12 @@ AcpiUtGetPackageObjectSize ( ACPI_FUNCTION_TRACE_PTR (UtGetPackageObjectSize, InternalObject); - Info.Length = 0; + Info.Length = 0; Info.ObjectSpace = 0; Info.NumPackages = 1; - Status = AcpiUtWalkPackageTree ( - InternalObject, NULL, AcpiUtGetElementLength, &Info); + Status = AcpiUtWalkPackageTree (InternalObject, NULL, + AcpiUtGetElementLength, &Info); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -802,8 +799,8 @@ AcpiUtGetPackageObjectSize ( * just add the length of the package objects themselves. * Round up to the next machine word. */ - Info.Length += ACPI_ROUND_UP_TO_NATIVE_WORD ( - sizeof (ACPI_OBJECT)) * (ACPI_SIZE) Info.NumPackages; + Info.Length += ACPI_ROUND_UP_TO_NATIVE_WORD (sizeof (ACPI_OBJECT)) * + (ACPI_SIZE) Info.NumPackages; /* Return the total package length */ @@ -837,8 +834,7 @@ AcpiUtGetObjectSize ( ACPI_FUNCTION_ENTRY (); - if ((ACPI_GET_DESCRIPTOR_TYPE (InternalObject) == - ACPI_DESC_TYPE_OPERAND) && + if ((ACPI_GET_DESCRIPTOR_TYPE (InternalObject) == ACPI_DESC_TYPE_OPERAND) && (InternalObject->Common.Type == ACPI_TYPE_PACKAGE)) { Status = AcpiUtGetPackageObjectSize (InternalObject, ObjLength); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utosi.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utosi.c index 930c45dbb1..b4d8a71524 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utosi.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utosi.c @@ -228,9 +228,7 @@ AcpiUtInitializeInterfaces ( /* Link the static list of supported interfaces */ - for (i = 0; - i < (ACPI_ARRAY_LENGTH (AcpiDefaultSupportedInterfaces) - 1); - i++) + for (i = 0; i < (ACPI_ARRAY_LENGTH (AcpiDefaultSupportedInterfaces) - 1); i++) { AcpiDefaultSupportedInterfaces[i].Next = &AcpiDefaultSupportedInterfaces[(ACPI_SIZE) i + 1]; @@ -374,10 +372,8 @@ AcpiUtRemoveInterface ( { if (!strcmp (InterfaceName, NextInterface->Name)) { - /* - * Found: name is in either the static list - * or was added at runtime - */ + /* Found: name is in either the static list or was added at runtime */ + if (NextInterface->Flags & ACPI_OSI_DYNAMIC) { /* Interface was added dynamically, remove and free it */ @@ -397,8 +393,8 @@ AcpiUtRemoveInterface ( else { /* - * Interface is in static list. If marked invalid, then - * it does not actually exist. Else, mark it invalid. + * Interface is in static list. If marked invalid, then it + * does not actually exist. Else, mark it invalid. */ if (NextInterface->Flags & ACPI_OSI_INVALID) { diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utownerid.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utownerid.c index 25773a89f8..bf391e11f1 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utownerid.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utownerid.c @@ -153,8 +153,7 @@ AcpiUtAllocateOwnerId ( if (*OwnerId) { - ACPI_ERROR ((AE_INFO, - "Owner ID [0x%2.2X] already exists", *OwnerId)); + ACPI_ERROR ((AE_INFO, "Owner ID [0x%2.2X] already exists", *OwnerId)); return_ACPI_STATUS (AE_ALREADY_EXISTS); } @@ -168,8 +167,8 @@ AcpiUtAllocateOwnerId ( /* * Find a free owner ID, cycle through all possible IDs on repeated - * allocations. (ACPI_NUM_OWNERID_MASKS + 1) because first index - * may have to be scanned twice. + * allocations. (ACPI_NUM_OWNERID_MASKS + 1) because first index may have + * to be scanned twice. */ for (i = 0, j = AcpiGbl_LastOwnerIdIndex; i < (ACPI_NUM_OWNERID_MASKS + 1); @@ -225,8 +224,8 @@ AcpiUtAllocateOwnerId ( * they are released when a table is unloaded or a method completes * execution. * - * If this error happens, there may be very deep nesting of invoked - * control methods, or there may be a bug where the IDs are not released. + * If this error happens, there may be very deep nesting of invoked control + * methods, or there may be a bug where the IDs are not released. */ Status = AE_OWNER_ID_LIMIT; ACPI_ERROR ((AE_INFO, diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utpredef.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utpredef.c index e72fd88dcf..11471c7738 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utpredef.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utpredef.c @@ -326,10 +326,8 @@ AcpiUtMatchResourceName ( const ACPI_PREDEFINED_INFO *ThisName; - /* - * Quick check for a predefined name, first character must - * be underscore - */ + /* Quick check for a predefined name, first character must be underscore */ + if (Name[0] != '_') { return (NULL); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utprint.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utprint.c index 02602ddde4..b3e8fd24a4 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utprint.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utprint.c @@ -462,8 +462,8 @@ AcpiUtFormatNumber ( String = AcpiUtBoundStringOutput (String, End, '0'); if (Base == 16) { - String = AcpiUtBoundStringOutput ( - String, End, Upper ? 'X' : 'x'); + String = AcpiUtBoundStringOutput (String, End, + Upper ? 'X' : 'x'); } } if (!(Type & ACPI_FORMAT_LEFT)) @@ -572,7 +572,6 @@ AcpiUtVsnprintf ( { break; } - } while (1); /* Process width */ @@ -610,7 +609,6 @@ AcpiUtVsnprintf ( ++Format; Precision = va_arg (Args, int); } - if (Precision < 0) { Precision = 0; @@ -673,13 +671,11 @@ AcpiUtVsnprintf ( Pos = AcpiUtBoundStringOutput (Pos, End, ' '); } } - for (i = 0; i < Length; ++i) { Pos = AcpiUtBoundStringOutput (Pos, End, *s); ++s; } - while (Length < Width--) { Pos = AcpiUtBoundStringOutput (Pos, End, ' '); @@ -718,8 +714,8 @@ AcpiUtVsnprintf ( } p = va_arg (Args, void *); - Pos = AcpiUtFormatNumber ( - Pos, End, ACPI_TO_INTEGER (p), 16, Width, Precision, Type); + Pos = AcpiUtFormatNumber (Pos, End, + ACPI_TO_INTEGER (p), 16, Width, Precision, Type); continue; default: @@ -770,7 +766,7 @@ AcpiUtVsnprintf ( } Pos = AcpiUtFormatNumber (Pos, End, Number, Base, - Width, Precision, Type); + Width, Precision, Type); } if (Size > 0) @@ -849,7 +845,7 @@ AcpiUtFileVprintf ( Flags = AcpiOsAcquireLock (AcpiGbl_PrintLock); Length = AcpiUtVsnprintf (AcpiGbl_PrintBuffer, - sizeof (AcpiGbl_PrintBuffer), Format, Args); + sizeof (AcpiGbl_PrintBuffer), Format, Args); (void) AcpiOsWriteFile (File, AcpiGbl_PrintBuffer, Length, 1); AcpiOsReleaseLock (AcpiGbl_PrintLock, Flags); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utresrc.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utresrc.c index 1657972716..44a4c66338 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utresrc.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utresrc.c @@ -561,8 +561,8 @@ AcpiUtWalkAmlResources ( if (ACPI_FAILURE (Status)) { /* - * Exit on failure. Cannot continue because the descriptor - * length may be bogus also. + * Exit on failure. Cannot continue because the descriptor length + * may be bogus also. */ return_ACPI_STATUS (Status); } @@ -575,8 +575,7 @@ AcpiUtWalkAmlResources ( if (UserFunction) { - Status = UserFunction ( - Aml, Length, Offset, ResourceIndex, Context); + Status = UserFunction (Aml, Length, Offset, ResourceIndex, Context); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -698,8 +697,8 @@ AcpiUtValidateResource ( } /* - * Check validity of the resource type, via AcpiGbl_ResourceTypes. - * Zero indicates an invalid resource. + * Check validity of the resource type, via AcpiGbl_ResourceTypes. Zero + * indicates an invalid resource. */ if (!AcpiGbl_ResourceTypes[ResourceIndex]) { @@ -886,7 +885,7 @@ AcpiUtGetResourceLength ( /* Small Resource type -- bits 2:0 of byte 0 contain the length */ ResourceLength = (UINT16) (ACPI_GET8 (Aml) & - ACPI_RESOURCE_NAME_SMALL_LENGTH_MASK); + ACPI_RESOURCE_NAME_SMALL_LENGTH_MASK); } return (ResourceLength); @@ -951,7 +950,7 @@ AcpiUtGetDescriptorLength ( * the header length (depends on if this is a small or large resource) */ return (AcpiUtGetResourceLength (Aml) + - AcpiUtGetResourceHeaderLength (Aml)); + AcpiUtGetResourceHeaderLength (Aml)); } @@ -991,7 +990,7 @@ AcpiUtGetResourceEndTag ( /* Validate the template and get a pointer to the EndTag */ Status = AcpiUtWalkAmlResources (NULL, ObjDesc->Buffer.Pointer, - ObjDesc->Buffer.Length, NULL, (void **) EndTag); + ObjDesc->Buffer.Length, NULL, (void **) EndTag); return_ACPI_STATUS (Status); } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utstate.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utstate.c index 6e5d335450..1e6418662d 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utstate.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utstate.c @@ -350,7 +350,6 @@ AcpiUtCreatePkgState ( State->Pkg.DestObject = ExternalObject; State->Pkg.Index= Index; State->Pkg.NumPackages = 1; - return (State); } @@ -390,7 +389,6 @@ AcpiUtCreateControlState ( State->Common.DescriptorType = ACPI_DESC_TYPE_STATE_CONTROL; State->Common.State = ACPI_CONTROL_CONDITIONAL_EXECUTING; - return (State); } @@ -421,6 +419,5 @@ AcpiUtDeleteGenericState ( { (void) AcpiOsReleaseObject (AcpiGbl_StateCache, State); } - return; } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utstring.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utstring.c index 05178cff54..3660cbb215 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utstring.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utstring.c @@ -219,7 +219,6 @@ AcpiUtPrintString ( break; } } - AcpiOsPrintf ("\""); if (i == MaxLength && String[i]) @@ -343,15 +342,6 @@ AcpiUtRepairName ( ACPI_FUNCTION_NAME (UtRepairName); - /* - * Special case for the root node. This can happen if we get an - * error during the execution of module-level code. - */ - if (ACPI_COMPARE_NAME (Name, "\\___")) - { - return; - } - ACPI_MOVE_NAME (&OriginalName, Name); /* Check each character in the name */ diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/uttrack.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/uttrack.c index 8906866b9b..f7f0bce901 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/uttrack.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/uttrack.c @@ -187,7 +187,7 @@ AcpiUtCreateList ( memset (Cache, 0, sizeof (ACPI_MEMORY_LIST)); - Cache->ListName = ListName; + Cache->ListName = ListName; Cache->ObjectSize = ObjectSize; *ReturnCache = Cache; @@ -241,8 +241,8 @@ AcpiUtAllocateAndTrack ( return (NULL); } - Status = AcpiUtTrackAllocation ( - Allocation, Size, ACPI_MEM_MALLOC, Component, Module, Line); + Status = AcpiUtTrackAllocation (Allocation, Size, + ACPI_MEM_MALLOC, Component, Module, Line); if (ACPI_FAILURE (Status)) { AcpiOsFree (Allocation); @@ -252,12 +252,9 @@ AcpiUtAllocateAndTrack ( AcpiGbl_GlobalList->TotalAllocated++; AcpiGbl_GlobalList->TotalSize += (UINT32) Size; AcpiGbl_GlobalList->CurrentTotalSize += (UINT32) Size; - - if (AcpiGbl_GlobalList->CurrentTotalSize > - AcpiGbl_GlobalList->MaxOccupied) + if (AcpiGbl_GlobalList->CurrentTotalSize > AcpiGbl_GlobalList->MaxOccupied) { - AcpiGbl_GlobalList->MaxOccupied = - AcpiGbl_GlobalList->CurrentTotalSize; + AcpiGbl_GlobalList->MaxOccupied = AcpiGbl_GlobalList->CurrentTotalSize; } return ((void *) &Allocation->UserSpace); @@ -299,8 +296,7 @@ AcpiUtAllocateZeroedAndTrack ( Size = 1; } - Allocation = AcpiOsAllocateZeroed ( - Size + sizeof (ACPI_DEBUG_MEM_HEADER)); + Allocation = AcpiOsAllocateZeroed (Size + sizeof (ACPI_DEBUG_MEM_HEADER)); if (!Allocation) { /* Report allocation error */ @@ -311,7 +307,7 @@ AcpiUtAllocateZeroedAndTrack ( } Status = AcpiUtTrackAllocation (Allocation, Size, - ACPI_MEM_CALLOC, Component, Module, Line); + ACPI_MEM_CALLOC, Component, Module, Line); if (ACPI_FAILURE (Status)) { AcpiOsFree (Allocation); @@ -321,12 +317,9 @@ AcpiUtAllocateZeroedAndTrack ( AcpiGbl_GlobalList->TotalAllocated++; AcpiGbl_GlobalList->TotalSize += (UINT32) Size; AcpiGbl_GlobalList->CurrentTotalSize += (UINT32) Size; - - if (AcpiGbl_GlobalList->CurrentTotalSize > - AcpiGbl_GlobalList->MaxOccupied) + if (AcpiGbl_GlobalList->CurrentTotalSize > AcpiGbl_GlobalList->MaxOccupied) { - AcpiGbl_GlobalList->MaxOccupied = - AcpiGbl_GlobalList->CurrentTotalSize; + AcpiGbl_GlobalList->MaxOccupied = AcpiGbl_GlobalList->CurrentTotalSize; } return ((void *) &Allocation->UserSpace); @@ -371,12 +364,13 @@ AcpiUtFreeAndTrack ( } DebugBlock = ACPI_CAST_PTR (ACPI_DEBUG_MEM_BLOCK, - (((char *) Allocation) - sizeof (ACPI_DEBUG_MEM_HEADER))); + (((char *) Allocation) - sizeof (ACPI_DEBUG_MEM_HEADER))); AcpiGbl_GlobalList->TotalFreed++; AcpiGbl_GlobalList->CurrentTotalSize -= DebugBlock->Size; - Status = AcpiUtRemoveAllocation (DebugBlock, Component, Module, Line); + Status = AcpiUtRemoveAllocation (DebugBlock, + Component, Module, Line); if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, "Could not free memory")); @@ -518,10 +512,10 @@ AcpiUtTrackAllocation ( /* Fill in the instance data */ - Allocation->Size = (UINT32) Size; + Allocation->Size = (UINT32) Size; Allocation->AllocType = AllocType; Allocation->Component = Component; - Allocation->Line = Line; + Allocation->Line = Line; strncpy (Allocation->Module, Module, ACPI_MAX_MODULE_NAME); Allocation->Module[ACPI_MAX_MODULE_NAME-1] = 0; @@ -532,8 +526,7 @@ AcpiUtTrackAllocation ( if (MemList->ListHead) { - ((ACPI_DEBUG_MEM_BLOCK *)(MemList->ListHead))->Previous = - Allocation; + ((ACPI_DEBUG_MEM_BLOCK *)(MemList->ListHead))->Previous = Allocation; } Allocation->Next = MemList->ListHead; @@ -666,37 +659,37 @@ AcpiUtDumpAllocationInfo ( /* ACPI_DEBUG_PRINT (TRACE_ALLOCATIONS | TRACE_TABLES, - ("%30s: %4d (%3d Kb)\n", "Current allocations", - MemList->CurrentCount, - ROUND_UP_TO_1K (MemList->CurrentSize))); + ("%30s: %4d (%3d Kb)\n", "Current allocations", + MemList->CurrentCount, + ROUND_UP_TO_1K (MemList->CurrentSize))); ACPI_DEBUG_PRINT (TRACE_ALLOCATIONS | TRACE_TABLES, - ("%30s: %4d (%3d Kb)\n", "Max concurrent allocations", - MemList->MaxConcurrentCount, - ROUND_UP_TO_1K (MemList->MaxConcurrentSize))); + ("%30s: %4d (%3d Kb)\n", "Max concurrent allocations", + MemList->MaxConcurrentCount, + ROUND_UP_TO_1K (MemList->MaxConcurrentSize))); ACPI_DEBUG_PRINT (TRACE_ALLOCATIONS | TRACE_TABLES, - ("%30s: %4d (%3d Kb)\n", "Total (all) internal objects", - RunningObjectCount, - ROUND_UP_TO_1K (RunningObjectSize))); + ("%30s: %4d (%3d Kb)\n", "Total (all) internal objects", + RunningObjectCount, + ROUND_UP_TO_1K (RunningObjectSize))); ACPI_DEBUG_PRINT (TRACE_ALLOCATIONS | TRACE_TABLES, - ("%30s: %4d (%3d Kb)\n", "Total (all) allocations", - RunningAllocCount, - ROUND_UP_TO_1K (RunningAllocSize))); + ("%30s: %4d (%3d Kb)\n", "Total (all) allocations", + RunningAllocCount, + ROUND_UP_TO_1K (RunningAllocSize))); ACPI_DEBUG_PRINT (TRACE_ALLOCATIONS | TRACE_TABLES, - ("%30s: %4d (%3d Kb)\n", "Current Nodes", - AcpiGbl_CurrentNodeCount, - ROUND_UP_TO_1K (AcpiGbl_CurrentNodeSize))); + ("%30s: %4d (%3d Kb)\n", "Current Nodes", + AcpiGbl_CurrentNodeCount, + ROUND_UP_TO_1K (AcpiGbl_CurrentNodeSize))); ACPI_DEBUG_PRINT (TRACE_ALLOCATIONS | TRACE_TABLES, - ("%30s: %4d (%3d Kb)\n", "Max Nodes", - AcpiGbl_MaxConcurrentNodeCount, - ROUND_UP_TO_1K ((AcpiGbl_MaxConcurrentNodeCount * - sizeof (ACPI_NAMESPACE_NODE))))); + ("%30s: %4d (%3d Kb)\n", "Max Nodes", + AcpiGbl_MaxConcurrentNodeCount, + ROUND_UP_TO_1K ((AcpiGbl_MaxConcurrentNodeCount * + sizeof (ACPI_NAMESPACE_NODE))))); */ return_VOID; } @@ -748,8 +741,7 @@ AcpiUtDumpAllocations ( if ((Element->Component & Component) && ((Module == NULL) || (0 == strcmp (Module, Element->Module)))) { - Descriptor = ACPI_CAST_PTR ( - ACPI_DESCRIPTOR, &Element->UserSpace); + Descriptor = ACPI_CAST_PTR (ACPI_DESCRIPTOR, &Element->UserSpace); if (Element->Size < sizeof (ACPI_COMMON_DESCRIPTOR)) { @@ -762,8 +754,7 @@ AcpiUtDumpAllocations ( { /* Ignore allocated objects that are in a cache */ - if (ACPI_GET_DESCRIPTOR_TYPE (Descriptor) != - ACPI_DESC_TYPE_CACHED) + if (ACPI_GET_DESCRIPTOR_TYPE (Descriptor) != ACPI_DESC_TYPE_CACHED) { AcpiOsPrintf ("%p Length 0x%04X %9.9s-%u [%s] ", Descriptor, Element->Size, Element->Module, diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utuuid.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utuuid.c index 7a6f698029..71fa0bc874 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utuuid.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utuuid.c @@ -165,11 +165,11 @@ AcpiUtConvertStringToUuid ( for (i = 0; i < UUID_BUFFER_LENGTH; i++) { - UuidBuffer[i] = (AcpiUtAsciiCharToHex ( - InString[AcpiGbl_MapToUuidOffset[i]]) << 4); + UuidBuffer[i] = + (AcpiUtAsciiCharToHex (InString[AcpiGbl_MapToUuidOffset[i]]) << 4); - UuidBuffer[i] |= AcpiUtAsciiCharToHex ( - InString[AcpiGbl_MapToUuidOffset[i] + 1]); + UuidBuffer[i] |= + AcpiUtAsciiCharToHex (InString[AcpiGbl_MapToUuidOffset[i] + 1]); } } #endif diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utxface.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utxface.c index 35fb8a0243..a34970e9b6 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utxface.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utxface.c @@ -145,6 +145,24 @@ AcpiTerminate ( ACPI_FUNCTION_TRACE (AcpiTerminate); + /* Just exit if subsystem is already shutdown */ + + if (AcpiGbl_Shutdown) + { + ACPI_ERROR ((AE_INFO, "ACPI Subsystem is already terminated")); + return_ACPI_STATUS (AE_OK); + } + + /* Subsystem appears active, go ahead and shut it down */ + + AcpiGbl_Shutdown = TRUE; + AcpiGbl_StartupFlags = 0; + ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Shutting down ACPI Subsystem\n")); + + /* Terminate the AML Debugger if present */ + + ACPI_DEBUGGER_EXEC (AcpiGbl_DbTerminateThreads = TRUE); + /* Shutdown and free all resources */ AcpiUtSubsystemShutdown (); @@ -244,6 +262,7 @@ AcpiGetSystemInfo ( * Populate the return buffer */ InfoPtr = (ACPI_SYSTEM_INFO *) OutBuffer->Pointer; + InfoPtr->AcpiCaVersion = ACPI_CA_VERSION; /* System flags (ACPI capabilities) */ @@ -311,9 +330,11 @@ AcpiGetStatistics ( memcpy (Stats->FixedEventCount, AcpiFixedEventCount, sizeof (AcpiFixedEventCount)); + /* Other counters */ Stats->MethodCount = AcpiMethodCount; + return_ACPI_STATUS (AE_OK); } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utxferror.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utxferror.c index bbc0cf6ff7..b62e5df77f 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utxferror.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utxferror.c @@ -205,10 +205,8 @@ AcpiException ( } else { - AcpiOsPrintf (ACPI_MSG_EXCEPTION "%s, ", - AcpiFormatException (Status)); + AcpiOsPrintf (ACPI_MSG_EXCEPTION "%s, ", AcpiFormatException (Status)); } - va_start (ArgList, Format); AcpiOsVprintf (Format, ArgList); ACPI_MSG_SUFFIX; diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utxfinit.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utxfinit.c index 841aaa4345..4703dc18ce 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utxfinit.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utxfinit.c @@ -204,25 +204,6 @@ AcpiInitializeSubsystem ( return_ACPI_STATUS (Status); } - if (!AcpiGbl_OverrideDefaultRegionHandlers) - { - /* - * Install the default operation region handlers. These are the - * handlers that are defined by the ACPI specification to be - * "always accessible" -- namely, SystemMemory, SystemIO, and - * PCI_Config. This also means that no _REG methods need to be - * run for these address spaces. We need to have these handlers - * installed before any AML code can be executed, especially any - * module-level code (11/2015). - */ - Status = AcpiEvInstallRegionHandlers (); - if (ACPI_FAILURE (Status)) - { - ACPI_EXCEPTION ((AE_INFO, Status, "During Region initialization")); - return_ACPI_STATUS (Status); - } - } - return_ACPI_STATUS (AE_OK); } @@ -252,33 +233,6 @@ AcpiEnableSubsystem ( ACPI_FUNCTION_TRACE (AcpiEnableSubsystem); - /* - * The early initialization phase is complete. The namespace is loaded, - * and we can now support address spaces other than Memory, I/O, and - * PCI_Config. - */ - AcpiGbl_EarlyInitialization = FALSE; - - if (AcpiGbl_OverrideDefaultRegionHandlers) - { - /* - * Install the default operation region handlers. These are the - * handlers that are defined by the ACPI specification to be - * "always accessible" -- namely, SystemMemory, SystemIO, and - * PCI_Config. This also means that no _REG methods need to be - * run for these address spaces. We need to have these handlers - * installed before any AML code can be executed, especially any - * module-level code (11/2015). - */ - Status = AcpiEvInstallRegionHandlers (); - if (ACPI_FAILURE (Status)) - { - ACPI_EXCEPTION ((AE_INFO, Status, "During Region initialization")); - return_ACPI_STATUS (Status); - } - } - - #if (!ACPI_REDUCED_HARDWARE) /* Enable ACPI mode */ @@ -311,6 +265,26 @@ AcpiEnableSubsystem ( } } +#endif /* !ACPI_REDUCED_HARDWARE */ + + /* + * Install the default OpRegion handlers. These are installed unless + * other handlers have already been installed via the + * InstallAddressSpaceHandler interface. + */ + if (!(Flags & ACPI_NO_ADDRESS_SPACE_INIT)) + { + ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, + "[Init] Installing default address space handlers\n")); + + Status = AcpiEvInstallRegionHandlers (); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } + } + +#if (!ACPI_REDUCED_HARDWARE) /* * Initialize ACPI Event handling (Fixed and General Purpose) * @@ -418,15 +392,8 @@ AcpiInitializeObjects ( * outside of any control method is wrapped with a temporary control * method object and placed on a global list. The methods on this list * are executed below. - * - * This case executes the module-level code for all tables only after - * all of the tables have been loaded. It is a legacy option and is - * not compatible with other ACPI implementations. See AcpiNsLoadTable. */ - if (AcpiGbl_GroupModuleLevelCode) - { - AcpiNsExecModuleCodeList (); - } + AcpiNsExecModuleCodeList (); /* * Initialize the objects that remain uninitialized. This runs the diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utxfmutex.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utxfmutex.c index 53cc4cce94..2b6342d5fb 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utxfmutex.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utxfmutex.c @@ -170,8 +170,8 @@ AcpiUtGetMutexObject ( MutexNode = Handle; if (Pathname != NULL) { - Status = AcpiGetHandle ( - Handle, Pathname, ACPI_CAST_PTR (ACPI_HANDLE, &MutexNode)); + Status = AcpiGetHandle (Handle, Pathname, + ACPI_CAST_PTR (ACPI_HANDLE, &MutexNode)); if (ACPI_FAILURE (Status)) { return (Status); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acapps.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acapps.h index ed206b2f10..11536425dd 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acapps.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acapps.h @@ -116,7 +116,6 @@ #ifndef _ACAPPS #define _ACAPPS -#include #ifdef _MSC_VER /* disable some level-4 warnings */ #pragma warning(disable:4100) /* warning C4100: unreferenced formal parameter */ @@ -163,49 +162,11 @@ AcpiOsPrintf (Description); #define ACPI_OPTION(Name, Description) \ - AcpiOsPrintf (" %-20s%s\n", Name, Description); + AcpiOsPrintf (" %-18s%s\n", Name, Description); -/* Check for unexpected exceptions */ - -#define ACPI_CHECK_STATUS(Name, Status, Expected) \ - if (Status != Expected) \ - { \ - AcpiOsPrintf ("Unexpected %s from %s (%s-%d)\n", \ - AcpiFormatException (Status), #Name, _AcpiModuleName, __LINE__); \ - } - -/* Check for unexpected non-AE_OK errors */ - - -#define ACPI_CHECK_OK(Name, Status) ACPI_CHECK_STATUS (Name, Status, AE_OK); - #define FILE_SUFFIX_DISASSEMBLY "dsl" -#define FILE_SUFFIX_BINARY_TABLE ".dat" /* Needs the dot */ - - -/* acfileio */ - -ACPI_STATUS -AcGetAllTablesFromFile ( - char *Filename, - UINT8 GetOnlyAmlTables, - ACPI_NEW_TABLE_DESC **ReturnListHead); - -BOOLEAN -AcIsFileBinary ( - FILE *File); - -ACPI_STATUS -AcValidateTableHeader ( - FILE *File, - long TableOffset); - - -/* Values for GetOnlyAmlTables */ - -#define ACPI_GET_ONLY_AML_TABLES TRUE -#define ACPI_GET_ALL_TABLES FALSE +#define ACPI_TABLE_FILE_SUFFIX ".dat" /* @@ -236,6 +197,51 @@ CmGetFileSize ( ACPI_FILE File); +#ifndef ACPI_DUMP_APP +/* + * adisasm + */ +ACPI_STATUS +AdAmlDisassemble ( + BOOLEAN OutToFile, + char *Filename, + char *Prefix, + char **OutFilename); + +void +AdPrintStatistics ( + void); + +ACPI_STATUS +AdFindDsdt( + UINT8 **DsdtPtr, + UINT32 *DsdtLength); + +void +AdDumpTables ( + void); + +ACPI_STATUS +AdGetLocalTables ( + void); + +ACPI_STATUS +AdParseTable ( + ACPI_TABLE_HEADER *Table, + ACPI_OWNER_ID *OwnerId, + BOOLEAN LoadTable, + BOOLEAN External); + +ACPI_STATUS +AdDisplayTables ( + char *Filename, + ACPI_TABLE_HEADER *Table); + +ACPI_STATUS +AdDisplayStatistics ( + void); + + /* * adwalk */ @@ -294,5 +300,6 @@ AdWriteTable ( UINT32 Length, char *TableName, char *OemTableId); +#endif #endif /* _ACAPPS */ diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acdebug.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acdebug.h index d208b2e256..3b245b0764 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acdebug.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acdebug.h @@ -163,17 +163,11 @@ typedef struct acpi_db_execute_walk /* * dbxface - external debugger interfaces */ -ACPI_DBR_DEPENDENT_RETURN_OK ( ACPI_STATUS AcpiDbSingleStep ( ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT *Op, - UINT32 OpType)) - -ACPI_DBR_DEPENDENT_RETURN_VOID ( -void -AcpiDbSignalBreakPoint ( - ACPI_WALK_STATE *WalkState)) + UINT32 OpType); /* @@ -368,11 +362,10 @@ AcpiDbDecodeAndDisplayObject ( char *Target, char *OutputType); -ACPI_DBR_DEPENDENT_RETURN_VOID ( void AcpiDbDisplayResultObject ( ACPI_OPERAND_OBJECT *ObjDesc, - ACPI_WALK_STATE *WalkState)) + ACPI_WALK_STATE *WalkState); ACPI_STATUS AcpiDbDisplayAllMethods ( @@ -398,11 +391,10 @@ void AcpiDbDisplayObjectType ( char *ObjectArg); -ACPI_DBR_DEPENDENT_RETURN_VOID ( void AcpiDbDisplayArgumentObject ( ACPI_OPERAND_OBJECT *ObjDesc, - ACPI_WALK_STATE *WalkState)) + ACPI_WALK_STATE *WalkState); /* @@ -454,8 +446,10 @@ AcpiDbLoadAcpiTable ( char *Filename); ACPI_STATUS -AcpiDbLoadTables ( - ACPI_NEW_TABLE_DESC *ListHead); +AcpiDbGetTableFromFile ( + char *Filename, + ACPI_TABLE_HEADER **Table, + BOOLEAN MustBeAmlTable); /* diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acdisasm.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acdisasm.h index 2ff2dab5de..d448b9f7da 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acdisasm.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acdisasm.h @@ -1119,7 +1119,7 @@ AcpiDmCloseOperator ( /* - * dmtables + * acdisasm */ void AdDisassemblerHeader ( @@ -1129,35 +1129,4 @@ AdDisassemblerHeader ( #define ACPI_IS_AML_TABLE 0 #define ACPI_IS_DATA_TABLE 1 - -/* - * adisasm - */ -ACPI_STATUS -AdAmlDisassemble ( - BOOLEAN OutToFile, - char *Filename, - char *Prefix, - char **OutFilename); - -ACPI_STATUS -AdGetLocalTables ( - void); - -ACPI_STATUS -AdParseTable ( - ACPI_TABLE_HEADER *Table, - ACPI_OWNER_ID *OwnerId, - BOOLEAN LoadTable, - BOOLEAN External); - -ACPI_STATUS -AdDisplayTables ( - char *Filename, - ACPI_TABLE_HEADER *Table); - -ACPI_STATUS -AdDisplayStatistics ( - void); - #endif /* __ACDISASM_H__ */ diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acevents.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acevents.h index e1b1d9bf8b..467e14f997 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acevents.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acevents.h @@ -294,11 +294,6 @@ AcpiEvDeleteGpeHandlers ( /* * evhandler - Address space handling */ -ACPI_OPERAND_OBJECT * -AcpiEvFindRegionHandler ( - ACPI_ADR_SPACE_TYPE SpaceId, - ACPI_OPERAND_OBJECT *HandlerObj); - BOOLEAN AcpiEvHasDefaultHandler ( ACPI_NAMESPACE_NODE *Node, @@ -341,22 +336,17 @@ AcpiEvAttachRegion ( void AcpiEvDetachRegion ( - ACPI_OPERAND_OBJECT *RegionObj, + ACPI_OPERAND_OBJECT *RegionObj, BOOLEAN AcpiNsIsLocked); -void -AcpiEvAssociateRegMethod ( - ACPI_OPERAND_OBJECT *RegionObj); - -void +ACPI_STATUS AcpiEvExecuteRegMethods ( ACPI_NAMESPACE_NODE *Node, - ACPI_ADR_SPACE_TYPE SpaceId, - UINT32 Function); + ACPI_ADR_SPACE_TYPE SpaceId); ACPI_STATUS AcpiEvExecuteRegMethod ( - ACPI_OPERAND_OBJECT *RegionObj, + ACPI_OPERAND_OBJECT *RegionObj, UINT32 Function); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acexcep.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acexcep.h index 60292137c8..cf89df2a82 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acexcep.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acexcep.h @@ -200,9 +200,8 @@ typedef struct acpi_exception_info #define AE_OWNER_ID_LIMIT EXCEP_ENV (0x001B) #define AE_NOT_CONFIGURED EXCEP_ENV (0x001C) #define AE_ACCESS EXCEP_ENV (0x001D) -#define AE_IO_ERROR EXCEP_ENV (0x001E) -#define AE_CODE_ENV_MAX 0x001E +#define AE_CODE_ENV_MAX 0x001D /* @@ -271,9 +270,8 @@ typedef struct acpi_exception_info #define AE_AML_ILLEGAL_ADDRESS EXCEP_AML (0x0020) #define AE_AML_INFINITE_LOOP EXCEP_AML (0x0021) #define AE_AML_UNINITIALIZED_NODE EXCEP_AML (0x0022) -#define AE_AML_TARGET_TYPE EXCEP_AML (0x0023) -#define AE_CODE_AML_MAX 0x0023 +#define AE_CODE_AML_MAX 0x0022 /* @@ -335,8 +333,7 @@ static const ACPI_EXCEPTION_INFO AcpiGbl_ExceptionNames_Env[] = EXCEP_TXT ("AE_NO_HANDLER", "A handler for the operation is not installed"), EXCEP_TXT ("AE_OWNER_ID_LIMIT", "There are no more Owner IDs available for ACPI tables or control methods"), EXCEP_TXT ("AE_NOT_CONFIGURED", "The interface is not part of the current subsystem configuration"), - EXCEP_TXT ("AE_ACCESS", "Permission denied for the requested operation"), - EXCEP_TXT ("AE_IO_ERROR", "An I/O error occurred") + EXCEP_TXT ("AE_ACCESS", "Permission denied for the requested operation") }; static const ACPI_EXCEPTION_INFO AcpiGbl_ExceptionNames_Pgm[] = @@ -399,8 +396,7 @@ static const ACPI_EXCEPTION_INFO AcpiGbl_ExceptionNames_Aml[] = EXCEP_TXT ("AE_AML_BAD_RESOURCE_LENGTH", "The length of a Resource Descriptor in the AML is incorrect"), EXCEP_TXT ("AE_AML_ILLEGAL_ADDRESS", "A memory, I/O, or PCI configuration address is invalid"), EXCEP_TXT ("AE_AML_INFINITE_LOOP", "An apparent infinite AML While loop, method was aborted"), - EXCEP_TXT ("AE_AML_UNINITIALIZED_NODE", "A namespace node is uninitialized or unresolved"), - EXCEP_TXT ("AE_AML_TARGET_TYPE", "A target operand of an incorrect type was encountered") + EXCEP_TXT ("AE_AML_UNINITIALIZED_NODE", "A namespace node is uninitialized or unresolved") }; static const ACPI_EXCEPTION_INFO AcpiGbl_ExceptionNames_Ctrl[] = diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acglobal.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acglobal.h index c0286cc4f7..2d8bd88cbe 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acglobal.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acglobal.h @@ -134,7 +134,6 @@ ACPI_GLOBAL (ACPI_TABLE_HEADER, AcpiGbl_OriginalDsdtHeader); ACPI_INIT_GLOBAL (UINT32, AcpiGbl_DsdtIndex, ACPI_INVALID_TABLE_INDEX); ACPI_INIT_GLOBAL (UINT32, AcpiGbl_FacsIndex, ACPI_INVALID_TABLE_INDEX); ACPI_INIT_GLOBAL (UINT32, AcpiGbl_XFacsIndex, ACPI_INVALID_TABLE_INDEX); -ACPI_INIT_GLOBAL (UINT32, AcpiGbl_FadtIndex, ACPI_INVALID_TABLE_INDEX); #if (!ACPI_REDUCED_HARDWARE) ACPI_GLOBAL (ACPI_TABLE_FACS *, AcpiGbl_FACS); @@ -158,8 +157,6 @@ ACPI_GLOBAL (UINT8, AcpiGbl_IntegerBitWidth); ACPI_GLOBAL (UINT8, AcpiGbl_IntegerByteWidth); ACPI_GLOBAL (UINT8, AcpiGbl_IntegerNybbleWidth); -ACPI_INIT_GLOBAL (UINT8, AcpiGbl_GroupModuleLevelCode, FALSE); - /***************************************************************************** * @@ -222,7 +219,6 @@ ACPI_GLOBAL (ACPI_CACHE_T *, AcpiGbl_OperandCache); ACPI_INIT_GLOBAL (UINT32, AcpiGbl_StartupFlags, 0); ACPI_INIT_GLOBAL (BOOLEAN, AcpiGbl_Shutdown, TRUE); -ACPI_INIT_GLOBAL (BOOLEAN, AcpiGbl_EarlyInitialization, TRUE); /* Global handlers */ @@ -242,7 +238,7 @@ ACPI_GLOBAL (UINT8, AcpiGbl_NextOwnerIdOffset); /* Initialization sequencing */ -ACPI_INIT_GLOBAL (BOOLEAN, AcpiGbl_RegMethodsEnabled, FALSE); +ACPI_GLOBAL (BOOLEAN, AcpiGbl_RegMethodsExecuted); /* Misc */ @@ -404,9 +400,9 @@ ACPI_GLOBAL (ACPI_EXTERNAL_FILE *, AcpiGbl_ExternalFileList); #ifdef ACPI_DEBUGGER +ACPI_INIT_GLOBAL (BOOLEAN, AcpiGbl_DbTerminateThreads, FALSE); ACPI_INIT_GLOBAL (BOOLEAN, AcpiGbl_AbortMethod, FALSE); ACPI_INIT_GLOBAL (BOOLEAN, AcpiGbl_MethodExecuting, FALSE); -ACPI_INIT_GLOBAL (ACPI_THREAD_ID, AcpiGbl_DbThreadId, ACPI_INVALID_THREAD_ID); ACPI_GLOBAL (BOOLEAN, AcpiGbl_DbOpt_NoIniMethods); ACPI_GLOBAL (BOOLEAN, AcpiGbl_DbOpt_NoRegionSupport); @@ -416,8 +412,6 @@ ACPI_GLOBAL (char *, AcpiGbl_DbFilename); ACPI_GLOBAL (UINT32, AcpiGbl_DbDebugLevel); ACPI_GLOBAL (UINT32, AcpiGbl_DbConsoleDebugLevel); ACPI_GLOBAL (ACPI_NAMESPACE_NODE *, AcpiGbl_DbScopeNode); -ACPI_GLOBAL (BOOLEAN, AcpiGbl_DbTerminateLoop); -ACPI_GLOBAL (BOOLEAN, AcpiGbl_DbThreadsTerminated); ACPI_GLOBAL (char *, AcpiGbl_DbArgs[ACPI_DEBUGGER_MAX_ARGS]); ACPI_GLOBAL (ACPI_OBJECT_TYPE, AcpiGbl_DbArgTypes[ACPI_DEBUGGER_MAX_ARGS]); @@ -439,9 +433,6 @@ ACPI_GLOBAL (UINT16, AcpiGbl_NodeTypeCountMisc); ACPI_GLOBAL (UINT32, AcpiGbl_NumNodes); ACPI_GLOBAL (UINT32, AcpiGbl_NumObjects); -ACPI_GLOBAL (ACPI_MUTEX, AcpiGbl_DbCommandReady); -ACPI_GLOBAL (ACPI_MUTEX, AcpiGbl_DbCommandComplete); - #endif /* ACPI_DEBUGGER */ diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/aclocal.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/aclocal.h index b6974fcb07..58f232063a 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/aclocal.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/aclocal.h @@ -159,8 +159,10 @@ union acpi_parse_object; #define ACPI_MTX_EVENTS 3 /* Data for ACPI events */ #define ACPI_MTX_CACHES 4 /* Internal caches, general purposes */ #define ACPI_MTX_MEMORY 5 /* Debug memory tracking lists */ +#define ACPI_MTX_DEBUG_CMD_COMPLETE 6 /* AML debugger */ +#define ACPI_MTX_DEBUG_CMD_READY 7 /* AML debugger */ -#define ACPI_MAX_MUTEX 5 +#define ACPI_MAX_MUTEX 7 #define ACPI_NUM_MUTEX ACPI_MAX_MUTEX+1 @@ -190,14 +192,6 @@ typedef struct acpi_rw_lock #define ACPI_MUTEX_NOT_ACQUIRED (ACPI_THREAD_ID) -1 -/* This Thread ID means an invalid thread ID */ - -#ifdef ACPI_OS_INVALID_THREAD_ID -#define ACPI_INVALID_THREAD_ID ACPI_OS_INVALID_THREAD_ID -#else -#define ACPI_INVALID_THREAD_ID ((ACPI_THREAD_ID) 0xFFFFFFFF) -#endif - /* Table for the global mutexes */ typedef struct acpi_mutex_info @@ -316,16 +310,6 @@ typedef struct acpi_table_list #define ACPI_ROOT_ALLOW_RESIZE (2) -/* List to manage incoming ACPI tables */ - -typedef struct acpi_new_table_desc -{ - ACPI_TABLE_HEADER *Table; - struct acpi_new_table_desc *Next; - -} ACPI_NEW_TABLE_DESC; - - /* Predefined table indexes */ #define ACPI_INVALID_TABLE_INDEX (0xFFFFFFFF) @@ -416,17 +400,13 @@ ACPI_STATUS (*ACPI_INTERNAL_METHOD) ( #define ACPI_BTYPE_BUFFER_FIELD 0x00002000 #define ACPI_BTYPE_DDB_HANDLE 0x00004000 #define ACPI_BTYPE_DEBUG_OBJECT 0x00008000 -#define ACPI_BTYPE_REFERENCE_OBJECT 0x00010000 /* From Index(), RefOf(), etc (Type6Opcodes) */ +#define ACPI_BTYPE_REFERENCE 0x00010000 #define ACPI_BTYPE_RESOURCE 0x00020000 -#define ACPI_BTYPE_NAMED_REFERENCE 0x00040000 /* Generic unresolved Name or Namepath */ #define ACPI_BTYPE_COMPUTE_DATA (ACPI_BTYPE_INTEGER | ACPI_BTYPE_STRING | ACPI_BTYPE_BUFFER) #define ACPI_BTYPE_DATA (ACPI_BTYPE_COMPUTE_DATA | ACPI_BTYPE_PACKAGE) - - /* Used by Copy, DeRefOf, Store, Printf, Fprintf */ - -#define ACPI_BTYPE_DATA_REFERENCE (ACPI_BTYPE_DATA | ACPI_BTYPE_REFERENCE_OBJECT | ACPI_BTYPE_DDB_HANDLE) +#define ACPI_BTYPE_DATA_REFERENCE (ACPI_BTYPE_DATA | ACPI_BTYPE_REFERENCE | ACPI_BTYPE_DDB_HANDLE) #define ACPI_BTYPE_DEVICE_OBJECTS (ACPI_BTYPE_DEVICE | ACPI_BTYPE_THERMAL | ACPI_BTYPE_PROCESSOR) #define ACPI_BTYPE_OBJECTS_AND_REFS 0x0001FFFF /* ARG or LOCAL */ #define ACPI_BTYPE_ALL_OBJECTS 0x0000FFFF @@ -525,7 +505,6 @@ typedef union acpi_predefined_info /* Return object auto-repair info */ typedef ACPI_STATUS (*ACPI_OBJECT_CONVERTER) ( - struct acpi_namespace_node *Scope, union acpi_operand_object *OriginalObject, union acpi_operand_object **ConvertedObject); @@ -561,7 +540,6 @@ typedef struct acpi_simple_repair_info typedef struct acpi_reg_walk_info { ACPI_ADR_SPACE_TYPE SpaceId; - UINT32 Function; UINT32 RegRunCount; } ACPI_REG_WALK_INFO; @@ -1111,10 +1089,9 @@ typedef struct acpi_parse_state #define ACPI_PARSEOP_PARAMLIST 0x02 #define ACPI_PARSEOP_EMPTY_TERMLIST 0x04 #define ACPI_PARSEOP_PREDEF_CHECKED 0x08 -#define ACPI_PARSEOP_CLOSING_PAREN 0x10 +#define ACPI_PARSEOP_SPECIAL 0x10 #define ACPI_PARSEOP_COMPOUND 0x20 #define ACPI_PARSEOP_ASSIGNMENT 0x40 -#define ACPI_PARSEOP_ELSEIF 0x80 /***************************************************************************** diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acmacros.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acmacros.h index ba407326c5..f8dfffb34c 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acmacros.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acmacros.h @@ -477,6 +477,18 @@ #endif +/* + * Some code only gets executed when the debugger is built in. + * Note that this is entirely independent of whether the + * DEBUG_PRINT stuff (set by ACPI_DEBUG_OUTPUT) is on, or not. + */ +#ifdef ACPI_DEBUGGER +#define ACPI_DEBUGGER_EXEC(a) a +#else +#define ACPI_DEBUGGER_EXEC(a) +#endif + + /* * Macros used for ACPICA utilities only */ diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acnamesp.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acnamesp.h index fc109f46dd..db7f1148be 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acnamesp.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acnamesp.h @@ -150,7 +150,6 @@ /* Object is not a package element */ #define ACPI_NOT_PACKAGE_ELEMENT ACPI_UINT32_MAX -#define ACPI_ALL_PACKAGE_ELEMENTS (ACPI_UINT32_MAX-1) /* Always emit warning message, not dependent on node flags */ @@ -297,19 +296,11 @@ AcpiNsConvertToBuffer ( ACPI_STATUS AcpiNsConvertToUnicode ( - ACPI_NAMESPACE_NODE *Scope, ACPI_OPERAND_OBJECT *OriginalObject, ACPI_OPERAND_OBJECT **ReturnObject); ACPI_STATUS AcpiNsConvertToResource ( - ACPI_NAMESPACE_NODE *Scope, - ACPI_OPERAND_OBJECT *OriginalObject, - ACPI_OPERAND_OBJECT **ReturnObject); - -ACPI_STATUS -AcpiNsConvertToReference ( - ACPI_NAMESPACE_NODE *Scope, ACPI_OPERAND_OBJECT *OriginalObject, ACPI_OPERAND_OBJECT **ReturnObject); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acobject.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acobject.h index 0d4a333fee..feaa9d16bf 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acobject.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acobject.h @@ -166,10 +166,9 @@ #define AOPOBJ_AML_CONSTANT 0x01 /* Integer is an AML constant */ #define AOPOBJ_STATIC_POINTER 0x02 /* Data is part of an ACPI table, don't delete */ #define AOPOBJ_DATA_VALID 0x04 /* Object is initialized and data is valid */ -#define AOPOBJ_OBJECT_INITIALIZED 0x08 /* Region is initialized */ -#define AOPOBJ_REG_CONNECTED 0x10 /* _REG was run */ -#define AOPOBJ_SETUP_COMPLETE 0x20 /* Region setup is complete */ -#define AOPOBJ_INVALID 0x40 /* Host OS won't allow a Region address */ +#define AOPOBJ_OBJECT_INITIALIZED 0x08 /* Region is initialized, _REG was run */ +#define AOPOBJ_SETUP_COMPLETE 0x10 /* Region setup is complete */ +#define AOPOBJ_INVALID 0x20 /* Host OS won't allow a Region address */ /****************************************************************************** diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acopcode.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acopcode.h index c6b88c1f3c..133e1347d0 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acopcode.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acopcode.h @@ -165,7 +165,7 @@ #define ARGP_BYTELIST_OP ARGP_LIST1 (ARGP_NAMESTRING) #define ARGP_CONCAT_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET) #define ARGP_CONCAT_RES_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET) -#define ARGP_COND_REF_OF_OP ARGP_LIST2 (ARGP_NAME_OR_REF,ARGP_TARGET) +#define ARGP_COND_REF_OF_OP ARGP_LIST2 (ARGP_SUPERNAME, ARGP_SUPERNAME) #define ARGP_CONNECTFIELD_OP ARGP_LIST1 (ARGP_NAMESTRING) #define ARGP_CONTINUE_OP ARG_NONE #define ARGP_COPY_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_SIMPLENAME) @@ -225,14 +225,13 @@ #define ARGP_NAMEPATH_OP ARGP_LIST1 (ARGP_NAMESTRING) #define ARGP_NOOP_OP ARG_NONE #define ARGP_NOTIFY_OP ARGP_LIST2 (ARGP_SUPERNAME, ARGP_TERMARG) -#define ARGP_OBJECT_TYPE_OP ARGP_LIST1 (ARGP_NAME_OR_REF) #define ARGP_ONE_OP ARG_NONE #define ARGP_ONES_OP ARG_NONE #define ARGP_PACKAGE_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_BYTEDATA, ARGP_DATAOBJLIST) #define ARGP_POWER_RES_OP ARGP_LIST5 (ARGP_PKGLENGTH, ARGP_NAME, ARGP_BYTEDATA, ARGP_WORDDATA, ARGP_OBJLIST) #define ARGP_PROCESSOR_OP ARGP_LIST6 (ARGP_PKGLENGTH, ARGP_NAME, ARGP_BYTEDATA, ARGP_DWORDDATA, ARGP_BYTEDATA, ARGP_OBJLIST) #define ARGP_QWORD_OP ARGP_LIST1 (ARGP_QWORDDATA) -#define ARGP_REF_OF_OP ARGP_LIST1 (ARGP_NAME_OR_REF) +#define ARGP_REF_OF_OP ARGP_LIST1 (ARGP_SUPERNAME) #define ARGP_REGION_OP ARGP_LIST4 (ARGP_NAME, ARGP_BYTEDATA, ARGP_TERMARG, ARGP_TERMARG) #define ARGP_RELEASE_OP ARGP_LIST1 (ARGP_SUPERNAME) #define ARGP_RESERVEDFIELD_OP ARGP_LIST1 (ARGP_NAMESTRING) @@ -259,6 +258,7 @@ #define ARGP_TO_HEX_STR_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TARGET) #define ARGP_TO_INTEGER_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TARGET) #define ARGP_TO_STRING_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET) +#define ARGP_TYPE_OP ARGP_LIST1 (ARGP_SUPERNAME) #define ARGP_UNLOAD_OP ARGP_LIST1 (ARGP_SUPERNAME) #define ARGP_VAR_PACKAGE_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_TERMARG, ARGP_DATAOBJLIST) #define ARGP_WAIT_OP ARGP_LIST2 (ARGP_SUPERNAME, ARGP_TERMARG) @@ -285,7 +285,7 @@ #define ARGI_ARG4 ARG_NONE #define ARGI_ARG5 ARG_NONE #define ARGI_ARG6 ARG_NONE -#define ARGI_BANK_FIELD_OP ARGI_LIST1 (ARGI_INTEGER) +#define ARGI_BANK_FIELD_OP ARGI_INVALID_OPCODE #define ARGI_BIT_AND_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF) #define ARGI_BIT_NAND_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF) #define ARGI_BIT_NOR_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF) @@ -297,7 +297,7 @@ #define ARGI_BUFFER_OP ARGI_LIST1 (ARGI_INTEGER) #define ARGI_BYTE_OP ARGI_INVALID_OPCODE #define ARGI_BYTELIST_OP ARGI_INVALID_OPCODE -#define ARGI_CONCAT_OP ARGI_LIST3 (ARGI_ANYTYPE, ARGI_ANYTYPE, ARGI_TARGETREF) +#define ARGI_CONCAT_OP ARGI_LIST3 (ARGI_COMPUTEDATA,ARGI_COMPUTEDATA, ARGI_TARGETREF) #define ARGI_CONCAT_RES_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_BUFFER, ARGI_TARGETREF) #define ARGI_COND_REF_OF_OP ARGI_LIST2 (ARGI_OBJECT_REF, ARGI_TARGETREF) #define ARGI_CONNECTFIELD_OP ARGI_INVALID_OPCODE @@ -359,7 +359,6 @@ #define ARGI_NAMEPATH_OP ARGI_INVALID_OPCODE #define ARGI_NOOP_OP ARG_NONE #define ARGI_NOTIFY_OP ARGI_LIST2 (ARGI_DEVICE_REF, ARGI_INTEGER) -#define ARGI_OBJECT_TYPE_OP ARGI_LIST1 (ARGI_ANYTYPE) #define ARGI_ONE_OP ARG_NONE #define ARGI_ONES_OP ARG_NONE #define ARGI_PACKAGE_OP ARGI_LIST1 (ARGI_INTEGER) @@ -382,7 +381,7 @@ #define ARGI_SLEEP_OP ARGI_LIST1 (ARGI_INTEGER) #define ARGI_STALL_OP ARGI_LIST1 (ARGI_INTEGER) #define ARGI_STATICSTRING_OP ARGI_INVALID_OPCODE -#define ARGI_STORE_OP ARGI_LIST2 (ARGI_DATAREFOBJ, ARGI_STORE_TARGET) +#define ARGI_STORE_OP ARGI_LIST2 (ARGI_DATAREFOBJ, ARGI_TARGETREF) #define ARGI_STRING_OP ARGI_INVALID_OPCODE #define ARGI_SUBTRACT_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF) #define ARGI_THERMAL_ZONE_OP ARGI_INVALID_OPCODE @@ -393,6 +392,7 @@ #define ARGI_TO_HEX_STR_OP ARGI_LIST2 (ARGI_COMPUTEDATA,ARGI_FIXED_TARGET) #define ARGI_TO_INTEGER_OP ARGI_LIST2 (ARGI_COMPUTEDATA,ARGI_FIXED_TARGET) #define ARGI_TO_STRING_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_INTEGER, ARGI_FIXED_TARGET) +#define ARGI_TYPE_OP ARGI_LIST1 (ARGI_ANYTYPE) #define ARGI_UNLOAD_OP ARGI_LIST1 (ARGI_DDBHANDLE) #define ARGI_VAR_PACKAGE_OP ARGI_LIST1 (ARGI_INTEGER) #define ARGI_WAIT_OP ARGI_LIST2 (ARGI_EVENT, ARGI_INTEGER) diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acparser.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acparser.h index 587638319c..c525dd33cf 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acparser.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acparser.h @@ -178,12 +178,7 @@ AcpiPsGetNextNamepath ( ACPI_WALK_STATE *WalkState, ACPI_PARSE_STATE *ParserState, ACPI_PARSE_OBJECT *Arg, - BOOLEAN PossibleMethodCall); - -/* Values for BOOLEAN above */ - -#define ACPI_NOT_METHOD_CALL FALSE -#define ACPI_POSSIBLE_METHOD_CALL TRUE + BOOLEAN MethodCall); ACPI_STATUS AcpiPsGetNextArg ( diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acpiosxf.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acpiosxf.h index 4afc7d505a..45cec744af 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acpiosxf.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acpiosxf.h @@ -129,8 +129,7 @@ typedef enum OSL_GLOBAL_LOCK_HANDLER, OSL_NOTIFY_HANDLER, OSL_GPE_HANDLER, - OSL_DEBUGGER_MAIN_THREAD, - OSL_DEBUGGER_EXEC_THREAD, + OSL_DEBUGGER_THREAD, OSL_EC_POLL_HANDLER, OSL_EC_BURST_HANDLER diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acpixf.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acpixf.h index 096c52709c..e0cd0d0929 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acpixf.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acpixf.h @@ -118,7 +118,7 @@ /* Current ACPICA subsystem version in YYYYMMDD format */ -#define ACPI_CA_VERSION 0x20151218 +#define ACPI_CA_VERSION 0x20150818 #include "acconfig.h" #include "actypes.h" @@ -263,11 +263,6 @@ ACPI_INIT_GLOBAL (UINT8, AcpiGbl_CopyDsdtLocally, FALSE); */ ACPI_INIT_GLOBAL (UINT8, AcpiGbl_DoNotUseXsdt, FALSE); -/* - * Optionally allow default region handlers to be overridden. - */ -ACPI_INIT_GLOBAL (UINT8, AcpiGbl_OverrideDefaultRegionHandlers, FALSE); - /* * Optionally use 32-bit FADT addresses if and when there is a conflict * (address mismatch) between the 32-bit and 64-bit versions of the @@ -346,10 +341,6 @@ ACPI_INIT_GLOBAL (UINT32, AcpiDbgLevel, ACPI_NORMAL_DEFAULT); #endif ACPI_INIT_GLOBAL (UINT32, AcpiDbgLayer, ACPI_COMPONENT_DEFAULT); -/* Optionally enable timer output with Debug Object output */ - -ACPI_INIT_GLOBAL (UINT8, AcpiGbl_DisplayDebugTimer, FALSE); - /* * Other miscellaneous globals */ @@ -458,30 +449,6 @@ ACPI_GLOBAL (BOOLEAN, AcpiGbl_SystemAwakeAndRunning); #endif /* ACPI_APPLICATION */ -/* - * Debugger prototypes - * - * All interfaces used by debugger will be configured - * out of the ACPICA build unless the ACPI_DEBUGGER - * flag is defined. - */ -#ifdef ACPI_DEBUGGER -#define ACPI_DBR_DEPENDENT_RETURN_OK(Prototype) \ - ACPI_EXTERNAL_RETURN_OK(Prototype) - -#define ACPI_DBR_DEPENDENT_RETURN_VOID(Prototype) \ - ACPI_EXTERNAL_RETURN_VOID(Prototype) - -#else -#define ACPI_DBR_DEPENDENT_RETURN_OK(Prototype) \ - static ACPI_INLINE Prototype {return(AE_OK);} - -#define ACPI_DBR_DEPENDENT_RETURN_VOID(Prototype) \ - static ACPI_INLINE Prototype {return;} - -#endif /* ACPI_DEBUGGER */ - - /***************************************************************************** * * ACPICA public interface prototypes @@ -1321,8 +1288,4 @@ void AcpiTerminateDebugger ( void); -void -AcpiSetDebuggerThreadId ( - ACPI_THREAD_ID ThreadId); - #endif /* __ACXFACE_H__ */ diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/actables.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/actables.h index 3fbeb3b64f..10fb56da1b 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/actables.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/actables.h @@ -187,7 +187,7 @@ AcpiTbSetTableLoadedFlag ( */ void AcpiTbParseFadt ( - void); + UINT32 TableIndex); void AcpiTbCreateLocalFadt ( @@ -279,6 +279,10 @@ ACPI_STATUS AcpiTbInitializeFacs ( void); +BOOLEAN +AcpiTbTablesLoaded ( + void); + void AcpiTbPrintTableHeader( ACPI_PHYSICAL_ADDRESS Address, diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/actbl1.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/actbl1.h index dd00f20104..f7eaa4c603 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/actbl1.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/actbl1.h @@ -1256,7 +1256,7 @@ typedef struct acpi_nfit_memory_map #define ACPI_NFIT_MEM_SAVE_FAILED (1) /* 00: Last SAVE to Memory Device failed */ #define ACPI_NFIT_MEM_RESTORE_FAILED (1<<1) /* 01: Last RESTORE from Memory Device failed */ #define ACPI_NFIT_MEM_FLUSH_FAILED (1<<2) /* 02: Platform flush failed */ -#define ACPI_NFIT_MEM_NOT_ARMED (1<<3) /* 03: Memory Device is not armed */ +#define ACPI_NFIT_MEM_ARMED (1<<3) /* 03: Memory Device observed to be not armed */ #define ACPI_NFIT_MEM_HEALTH_OBSERVED (1<<4) /* 04: Memory Device observed SMART/health events */ #define ACPI_NFIT_MEM_HEALTH_ENABLED (1<<5) /* 05: SMART/health events enabled */ diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/actypes.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/actypes.h index 09a2d82453..e9e765d642 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/actypes.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/actypes.h @@ -1304,7 +1304,7 @@ UINT32 (*ACPI_INTERFACE_HANDLER) ( #define ACPI_PCICLS_STRING_SIZE 7 /* Includes null terminator */ -/* Structures used for device/processor HID, UID, CID */ +/* Structures used for device/processor HID, UID, CID, and SUB */ typedef struct acpi_pnp_device_id { @@ -1339,6 +1339,7 @@ typedef struct acpi_device_info UINT64 Address; /* _ADR value */ ACPI_PNP_DEVICE_ID HardwareId; /* _HID value */ ACPI_PNP_DEVICE_ID UniqueId; /* _UID value */ + ACPI_PNP_DEVICE_ID SubsystemId; /* _SUB value */ ACPI_PNP_DEVICE_ID ClassCode; /* _CLS value */ ACPI_PNP_DEVICE_ID_LIST CompatibleIdList; /* _CID list */ @@ -1354,12 +1355,13 @@ typedef struct acpi_device_info #define ACPI_VALID_ADR 0x0002 #define ACPI_VALID_HID 0x0004 #define ACPI_VALID_UID 0x0008 +#define ACPI_VALID_SUB 0x0010 #define ACPI_VALID_CID 0x0020 #define ACPI_VALID_CLS 0x0040 #define ACPI_VALID_SXDS 0x0100 #define ACPI_VALID_SXWS 0x0200 -/* Flags for _STA method */ +/* Flags for _STA return value (CurrentStatus above) */ #define ACPI_STA_DEVICE_PRESENT 0x01 #define ACPI_STA_DEVICE_ENABLED 0x02 diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acutils.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acutils.h index c85ab838f4..4fc44ff3f0 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acutils.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acutils.h @@ -278,7 +278,7 @@ AcpiUtInitGlobals ( #if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER) -const char * +char * AcpiUtGetMutexName ( UINT32 MutexId); @@ -288,15 +288,15 @@ AcpiUtGetNotifyName ( ACPI_OBJECT_TYPE Type); #endif -const char * +char * AcpiUtGetTypeName ( ACPI_OBJECT_TYPE Type); -const char * +char * AcpiUtGetNodeName ( void *Object); -const char * +char * AcpiUtGetDescriptorName ( void *Object); @@ -304,15 +304,15 @@ const char * AcpiUtGetReferenceName ( ACPI_OPERAND_OBJECT *Object); -const char * +char * AcpiUtGetObjectTypeName ( ACPI_OPERAND_OBJECT *ObjDesc); -const char * +char * AcpiUtGetRegionName ( UINT8 SpaceId); -const char * +char * AcpiUtGetEventName ( UINT32 EventId); @@ -555,6 +555,17 @@ AcpiUtExecutePowerMethods ( UINT8 *OutValues); +/* + * utfileio - file operations + */ +#ifdef ACPI_APPLICATION +ACPI_STATUS +AcpiUtReadTableFromFile ( + char *Filename, + ACPI_TABLE_HEADER **Table); +#endif + + /* * utids - device ID support */ @@ -568,6 +579,11 @@ AcpiUtExecute_UID ( ACPI_NAMESPACE_NODE *DeviceNode, ACPI_PNP_DEVICE_ID **ReturnId); +ACPI_STATUS +AcpiUtExecute_SUB ( + ACPI_NAMESPACE_NODE *DeviceNode, + ACPI_PNP_DEVICE_ID **ReturnId); + ACPI_STATUS AcpiUtExecute_CID ( ACPI_NAMESPACE_NODE *DeviceNode, diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/amlcode.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/amlcode.h index 8a0ddcc0d2..34ac987629 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/amlcode.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/amlcode.h @@ -192,7 +192,7 @@ #define AML_CREATE_WORD_FIELD_OP (UINT16) 0x8b #define AML_CREATE_BYTE_FIELD_OP (UINT16) 0x8c #define AML_CREATE_BIT_FIELD_OP (UINT16) 0x8d -#define AML_OBJECT_TYPE_OP (UINT16) 0x8e +#define AML_TYPE_OP (UINT16) 0x8e #define AML_CREATE_QWORD_FIELD_OP (UINT16) 0x8f /* ACPI 2.0 */ #define AML_LAND_OP (UINT16) 0x90 #define AML_LOR_OP (UINT16) 0x91 @@ -313,8 +313,7 @@ #define ARGP_TERMLIST 0x0F #define ARGP_WORDDATA 0x10 #define ARGP_QWORDDATA 0x11 -#define ARGP_SIMPLENAME 0x12 /* NameString | LocalTerm | ArgTerm */ -#define ARGP_NAME_OR_REF 0x13 /* For ObjectType only */ +#define ARGP_SIMPLENAME 0x12 /* * Resolved argument types for the AML Interpreter @@ -353,15 +352,14 @@ #define ARGI_TARGETREF 0x0F /* Target, subject to implicit conversion */ #define ARGI_FIXED_TARGET 0x10 /* Target, no implicit conversion */ #define ARGI_SIMPLE_TARGET 0x11 /* Name, Local, Arg -- no implicit conversion */ -#define ARGI_STORE_TARGET 0x12 /* Target for store is TARGETREF + package objects */ /* Multiple/complex types */ -#define ARGI_DATAOBJECT 0x13 /* Buffer, String, package or reference to a Node - Used only by SizeOf operator*/ -#define ARGI_COMPLEXOBJ 0x14 /* Buffer, String, or package (Used by INDEX op only) */ -#define ARGI_REF_OR_STRING 0x15 /* Reference or String (Used by DEREFOF op only) */ -#define ARGI_REGION_OR_BUFFER 0x16 /* Used by LOAD op only */ -#define ARGI_DATAREFOBJ 0x17 +#define ARGI_DATAOBJECT 0x12 /* Buffer, String, package or reference to a Node - Used only by SizeOf operator*/ +#define ARGI_COMPLEXOBJ 0x13 /* Buffer, String, or package (Used by INDEX op only) */ +#define ARGI_REF_OR_STRING 0x14 /* Reference or String (Used by DEREFOF op only) */ +#define ARGI_REGION_OR_BUFFER 0x15 /* Used by LOAD op only */ +#define ARGI_DATAREFOBJ 0x16 /* Note: types above can expand to 0x1F maximum */ diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/platform/acenv.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/platform/acenv.h index d393af28a8..614a538bb0 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/platform/acenv.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/platform/acenv.h @@ -369,7 +369,6 @@ #define ACPI_INTERNAL_VAR_XFACE #endif - /* * Debugger threading model * Use single threaded if the entire subsystem is contained in an application @@ -379,11 +378,11 @@ * multi-threaded if ACPI_APPLICATION is not set. */ #ifndef DEBUGGER_THREADING -#if !defined (ACPI_APPLICATION) || defined (ACPI_EXEC_APP) -#define DEBUGGER_THREADING DEBUGGER_MULTI_THREADED +#ifdef ACPI_APPLICATION +#define DEBUGGER_THREADING DEBUGGER_SINGLE_THREADED #else -#define DEBUGGER_THREADING DEBUGGER_SINGLE_THREADED +#define DEBUGGER_THREADING DEBUGGER_MULTI_THREADED #endif #endif /* !DEBUGGER_THREADING */ From 1eafdb85fe21a93aa746e2c93eb9719d8736c4e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Revol?= Date: Fri, 1 Jan 2016 19:30:41 +0100 Subject: [PATCH 036/242] Add a Misc_FreeBSD icon --- data/artwork/icons/Misc_FreeBSD | Bin 0 -> 11098 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 data/artwork/icons/Misc_FreeBSD diff --git a/data/artwork/icons/Misc_FreeBSD b/data/artwork/icons/Misc_FreeBSD new file mode 100644 index 0000000000000000000000000000000000000000..70cb21c1b435c261cbc53ea29565d226bc3c2107 GIT binary patch literal 11098 zcmeHMUyNK;89$fp_8$ed6%YaGjWw}Q2^AGk8}`n$vJ2V%q1}gKR@vE|yPeC<&Wtm| zwwoq)OvG(a3J4^n3vq!+qe7y_XhRy=_);X%7=6$O9{OO6Z`KE+50drwJLjG|=iEJG zPHe~;;bgzP_kQQQ=g;r=ecw6v%>8>04Gr(T?^6OLfGqbYZ{H?FAL{#aHh7fp1!Aoj z8alL>ZH#@0TGdt{)@Ax%tQBGcbyuLy)W0ww#3yc4_Ki}z(h`SZ&0q1}AGk`*X~st<3C?mJMt z3ilNVW+~zA6B{i3*P!PF`ou;{|5xbNr23Kl`(-<9tAvg?!9KA`P|toT$5MT*G!p}L zAzGDExqehM>PfAQ#~X@5bRat+#~@>nHl&hXtMdNccTN;X@7;y_1|)GvM07mVecHxP6$WCVIPLLdel?AWc4^%uhrtoc3dXx_`^Tm(5b@7YQ4pZS!jHm z>t(#{>s%Yy6^iLxbdV5oHAFduaxSg^4D_aRY5kX>H=T?3lzE8Dxt>e)(z)2+M7=zh zxfbyek#Z&8Q|MOIT`FWQaqgBlGvxijb9cc=8S-8kl1f#hn&iEDQ(5xfpdbirTLLaxp?W z!BtRjA3+q>2Kf2~LTbLyficTs#KyWIpumq{t-E0J5v&A+)=Q9v5elfu(Q`cTqvtGM z^reTHhDG_UTH*+C2;su-%0i!m-lRv{Pe5~Mpdkt5l?K|dgZs{#c^+t~n-sWTgcY0Y3|hfqMMv=Uzz_b{(Uvd#*TR;? z1^-8&cfmghy$gQsN?h=NCu_$}MT@Ck!q4rDf`6)6ugQdzk+2l0G!mw$5o4l9#4HjB zqpWZkb_PunE;^bdDQt4l&QLZ9-wOOl_&M70CE*s>vbadt2EB`f`=NJ{(1hMa!V6hD zHVHpS^^yeU!yE}=1?xkVYeYtehJOHfQKAU1L3l5^%k%m6bm7&7J%#@HI|}m;3`)a| zf0%^#5d2OWJX|QIrp5|eAKMKJ)+|M@E|jBxZXbK|=AYhHxV!RMGbaVPjnV&oOjP43 z=jtqqa8w|6Gp=tDTU^&bxGP@lk^n}e0_@;=4u;&!YQuBZ0zu0k!Gas?KjO-!wB@2r zf*lj@9};q_HnAj9Wn3G$@*{xJu^v~81k;e)q&=x2;XP@Qz)vOJWK=kF=BCtAHQ9T0 zkl%4Wp9oLDC43VTzYkf=#Ke1URQdgDCMK=l3B8$^wEjWp&BUbI#AjvJj-8k~sa_@~ zeyiw6$nuc(Y#V)Jk3@r$DLq^k6zb+OKnwE0Cc0=_D4QG9pcD9I|JN{HUy!-WVNrnC zJ0JpWf=mEI$h{B~WUW5}y$Le!DNjRGJ2uGQP4yDwYw#dJUbzBms6*hi1ia|ae@Ss` zG;}m{6A%z#{)kOeunAza_~{uvbZ?-81ya< z@*fGBgRjEg#lb?>j?KaMQ@!MXdoG&;#{#U`pg*4kbUFZ-ur-|ziW;l^#F#fPsxW3aJrVomWUFD}610GeP1D;MXlPYQp2XLs?XzddKOVSgXD z+H=*oCEftiKH29hunRCpIxh=>HH$v@TaUWKWDkY)vKw&eHA9DqSz3A3)D|_ZM z5AyP7Y}E6NZD`;A5sr`)>N7S;%{nO3PvpsZwcf-rO)&cmls+Tc3OnBsu~!z?hrE z=oy5XIS!76jIaZfIemcT8jwD~3UE5A50cNK5uH#ae(XdZJgISBxNu?lNV8N1vz^-I7HO_!{xWk>VcOamfrJw9zg|5XkStQb+wdF}i=` zKCSO&8JtNQF8dAGlYl;);hB1RgzERh)-kVM0Vb=ZRtsPWF{B}|9@@=Ptu<9|&Xn3o zy#_OuKMksD{=e4W8L65(@kPam;Q*HB4=(?zzkj(tHPwpSV#oOHUpVo=yI9aVgYCIS zESbg$bKGpytEw+Tl+-G5GiispVFdiN_o0cr6JAXZ2ZG1{+OIPIX(To6=fB&$dHH{7 zJm-Nj7k(dnxB&X%qmOKep>|ht#EhwrY$QI+80AuPIy68!yKUR@s%NL8m82b~*@?42 zT5n(xJB`fi1J*9sal+b}aI0LKZK0Tp*j=#I^|BlBG+y=T<$HL|%q(nKWr*(n!i;eC z!cp-DAyZGfm=Vm>$sd+(g0Rg#VP~Qp&~s*eV!f3q9?9&llbJ|U-rd04dWHhqmrHlp zjHmFN9w_Pu=_SUxnu~7vg1FQp$*j~@kT;Ur5g}%hS~#1ul8L06wCBRsWT_g<#%4;# zTos*Y7WT`o02fqXj-~dXd73o21ZFND5PYfaI^&ty5@VCv@y9 zPuAP0Q|aC&YXb(Q>}^uE^w94}^h_k4H+zoE*f1V8;X)gzHO znw0TNvMK}743bnctR}c-I`x8CbL-fXzx@05OM|USz1fcS%8cJ)T?_Wgm{BdS)L%v{ zJ&CFK#L_G1n>glUiT+PN$ny%7bVQ#7$GuCh1a~XyRIJ)DL*$j;*fGPcmP`M5s_(`O zN4_#<*q7X9t{x@Nds6Z`hI%=aFq9bzt~H0>2wNcvN_)-uH1sY?c$)2k{&)}lv#GvI z3BxL*gu~U~pmF#Xuoh#W@p?Ag2qdoMeQhhgWm Date: Fri, 1 Jan 2016 19:49:49 +0100 Subject: [PATCH 037/242] Misc_FreeBSD: fix shadows --- data/artwork/icons/Misc_FreeBSD | Bin 11098 -> 11023 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/data/artwork/icons/Misc_FreeBSD b/data/artwork/icons/Misc_FreeBSD index 70cb21c1b435c261cbc53ea29565d226bc3c2107..6ebde23c7d91facc6c24ea6b65bb12f37c0358d6 100644 GIT binary patch delta 291 zcmcZ=)*m)OgRy?1rnao0FasF;2LeV0b_RF%U|&X{$UZg(2Jwl7;sSRh85ls41&JjY z#SFZ{lO5UA7&lJbuPwYr2%!}u%fQD3l4P=CoUFj7HQAq0B!~;BA^?a5fEZ*5GXp0> zh+lvcOgs%J&I-iL3|uJU`+;ICP;noBf3SLx9!bW@8~DVSbQvdK6cJ-9$j{6xVVL}p z(P^?XlO(H#69YrZ_bgChe&0Z>W;hzp#O^YijjlS@)lfTn@` b$-ubTli6B`t(}>>XiSBU}uyLv?} delta 353 zcmeAVyA?J;gYncvO>Nm2VFobx4+M-1>|lxLH0Vqj=+n*5Rx zDDB9=5CP;S0O^FujZET`?U`74Aqp56G(ZX`doo!Yz|?{01du3@E&$RXl?6@(`I&ho x3i+iaK%1b3&tXD0{5F#`HzNZB5CI8BhRy$&tcBRlGBA|&GJt%)IaPF(C;-~ZPy7G? From b23cb01e7c51a4871114faa709cbb27409fdc7f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Revol?= Date: Fri, 1 Jan 2016 20:25:35 +0100 Subject: [PATCH 038/242] Add a Misc_Milestone icon How come we didn't have one yet? --- data/artwork/icons/Misc_Milestone | Bin 0 -> 13981 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 data/artwork/icons/Misc_Milestone diff --git a/data/artwork/icons/Misc_Milestone b/data/artwork/icons/Misc_Milestone new file mode 100644 index 0000000000000000000000000000000000000000..787907ab265e75ef460404d44054e042d2805ad5 GIT binary patch literal 13981 zcmeHNdvH`&9X^|o04aqOf;@#4OB-x?qqJ7Y-4&X&6W(;JOlF!T*^q_J?y|cjP;|O= zq^&I`>44f|mCO(ZoN*u{oq^F-B0AVkgT;;x3|31WN3o*D(YB6%xPITc_uM^q_l8~w zAoQq$Ud-QU3JZh`{xTJA1vEXy7efdOlGqs;k$n zU>k|?M9sE*Vz`YjC>LTI-WB1Uj(-98(V1rXL@3>y5>b@$GOBWvV~=W7s#o<9KD^&rCKL!oE@=a^HWO1+V$%`&u4bTL{}A~*7}vJgTwH*ABL}# z?kyH09XLEIKcHBYIq*k-vo7)4RjXt>eEu4YV<;A*B+hX)d7z_7TF#hP3ntWI`*$|J#!VT$gqZ}W7 z?r(_3Q+W1mDDvj}C-GrkeLo6AXVQItE1sKSx4}%GnZ8%}d?oVF3; zar6BS3zxnhfr9W)G!hG2&cD27d2r#e+930aBelULWi_y6GJmY1FHkpT1U+WdwRZ%j z?b>Oam^LYJ?!X-Z=4(&f5xBgj$EbN{e?W*HgPiQFs6gFVuq!bW?L}q2@K`ixlbGKj z$*ee1ZFhL&=W~PmUKoQ0yJ4cBLw2<9g`I^R_I)DQ)tAWYkYZ3hPA{nr?%eyJ?1`T^ zy`(1ie&vgSg$sWd=&lY`2~jUwRi9Yb{;tuLs4nU&k!NVthfS63OHSHnibbag2l!gr`k;jaMK)kT~(0poE~*IgDa)kV3cB8}He zT7xDb_l5@|6*U|3TP~0URN>IW_u)S;k^Vef>s1eo228phSa%+5EKJvf!fSx*(MI7< z0N3?Eoc1G_n;u@baH$6hlX~!{;|VL=FuZsPD?(Hv>`css4OQ{O!-HOtoPO9eSKO&C zHO>lGhYpW?y^K$%pVabCU*XYpW#;^1()nV&O4t~f&X>ZM0N43aI2TEsFXFULm>XY5 zEnM=&0jHXCYl9Fy0W8LWC1qy5@YtOQp5?*myJlhym}=v8Y|pQ->o1=Sp6Pu9jm&^` z7)Pr2BAQ+@%nBq&)#wP81kWGXj8fyld$VzQ%?6abY^bg^QhfPy=oAnybLemAZ6KU* z<8luypA&_zz&rX{t=I~01EzCAoOTxG#>qPtZgbL53f~A^ zXOVx?cEj9Q+-KpEMNV2}3|HvY5ljzf+$*cQWj!AbvJ;99$ zk0ZMK6&?bvyIVM6`gj_~Q%*PXitj8@ObCxrZS6KNd3un80 zKMc?H$jdF9EfIOrX*VQQDgie5WnhnySiNOh<>%I(heo+$i^;Mm4D0u5{D zdhY3^U2g{-95ch}iL;g?tO&YGNRMzLmEI8zr^FmY4KI8AH?cYQSxh6743b5a)MYS_ zroG(ABk`T=MtmJlUV52?az!xeNwthWWzT%(<*vGSB z0=6+4YSqKMmeto;sjxG8xUhNaXBEKQLKwvdqi8;qZ=N5{lZXAioI)CCstd>3&GZOBNHuLj+C9qizjQGO-I)U+ocjo3sc(_=< zs`h?`GcK9&2mcVzwDDEolteM^@N}FSHT#|5xMSaM;SJGHDusJ|A*z)N91rPaD3)r9 zCtE`4NIWJ=#(nJK=K^n44YTsz`yOxlZs#9Qo-uP=iVDBT)ELM+cYNjc9@E2ZPd$~5 z#bViTIGl|)HKoF7v2o_XrT-mq8!BX~(mN7iR1gB!`{86F9yR--iz2b+a59qi=MBU6 zut#0>q7kpUQWs&SyPQ)`U4;4ID)rwX>S`*+$nsKGbew&GbyHi}8=|e(N=mYSDlN^f zE-JcC+WMkLZJoIaZKz+N?muJsb;$i^=t)*88TrALE z;CjfTxL&&oae3J@{`s52^0*?3iQjzS?B-ureR+5I2Z{M_ zRz1-+qw^cb|8Vl{8Gj$u+Hi?0V&`wWmmA1?nuAj;VVypGI@{LPmOXs{J)J_xr@x3;=0-;@!G`o3oMDfu%$lVbrRPKk5TIl1g7uf72X2eZ6E(7;BNc)UBDTyi-mI^uYN0Ym3yrhSKj;3 z_d2?&jLC<)T8-~ijn5oE`I~2dfAY`&+LHR!xOe3~e*WlX272w8Id_5;wJuz^kmWe6 zJv{zIx~6C~sYO zt?J@r>l6?LWs0ZFao7VaPt5#bmVOB2?vtX@PtiQrPl2(`Vq7ightj)%^FUh+3G)YA z7_Mx0vt53?Jd_gWI8y!KyDeN^m-v(6CfSO-u;Bw!{?$R=K~I(uebl2%D!_a2@91PVNX)-2l8S7ML?h`P{!~LKYMwD$LfhS5WQ=9-s+WjifC0{II*3V;LPwZR^G*uM z)k)#WpQMmrAMOFvQL_!6z8jbuS*P*Nj2KR`N-$2dypyca{or?6c#bS|C~UIGwIqw* zj@v%@qcEGTa8f*j67=7eWIDyd?At9piFe9>EQfAoqVMQK-5=`m$&8>*QLD=*{{LJT zyE--%<8D{SDQeSCrMB2Pj?cn4PW}o}O#DzNXa1#b+9Pm?OK17%*H!6N}|Bs zT>of4c$FZk5k* zLhsw0@Ii7yedJE?L&wWUcdl?xWb?uYd#;#2z8pGEZqzY`OX&z0=LLnS?+`f$r^8I` w->72@M`LrsArO$faE)2Hc(Au$nWg<6V?Mg1!1Fm$xWqGd*`zF5FodN156oZnAOHXW literal 0 HcmV?d00001 From 8de8a927ee9b467197a69e4218e46759e0cef860 Mon Sep 17 00:00:00 2001 From: DarkmatterVale Date: Fri, 1 Jan 2016 13:08:10 +0000 Subject: [PATCH 039/242] Fix white screen of death in remotedesktop Signed-off-by: Adrien Destugues --- src/apps/remotedesktop/RemoteView.cpp | 21 +++++++++++++++++-- .../drawing/interface/remote/NetReceiver.cpp | 14 ++++++++++--- 2 files changed, 30 insertions(+), 5 deletions(-) diff --git a/src/apps/remotedesktop/RemoteView.cpp b/src/apps/remotedesktop/RemoteView.cpp index 0693886d1b..399300a721 100644 --- a/src/apps/remotedesktop/RemoteView.cpp +++ b/src/apps/remotedesktop/RemoteView.cpp @@ -75,6 +75,7 @@ RemoteView::RemoteView(BRect frame, uint16 listenPort) fReceiveBuffer = new(std::nothrow) StreamingRingBuffer(16 * 1024); if (fReceiveBuffer == NULL) { fInitStatus = B_NO_MEMORY; + TRACE_ERROR("no memory available\n"); return; } @@ -85,6 +86,7 @@ RemoteView::RemoteView(BRect frame, uint16 listenPort) fSendBuffer = new(std::nothrow) StreamingRingBuffer(16 * 1024); if (fSendBuffer == NULL) { fInitStatus = B_NO_MEMORY; + TRACE_ERROR("no memory available\n"); return; } @@ -95,6 +97,7 @@ RemoteView::RemoteView(BRect frame, uint16 listenPort) fReceiveEndpoint = new(std::nothrow) BNetEndpoint(); if (fReceiveEndpoint == NULL) { fInitStatus = B_NO_MEMORY; + TRACE_ERROR("no memory available\n"); return; } @@ -105,18 +108,21 @@ RemoteView::RemoteView(BRect frame, uint16 listenPort) fReceiver = new(std::nothrow) NetReceiver(fReceiveEndpoint, fReceiveBuffer); if (fReceiver == NULL) { fInitStatus = B_NO_MEMORY; + TRACE_ERROR("no memory available\n"); return; } fSendEndpoint = new(std::nothrow) BNetEndpoint(); if (fSendEndpoint == NULL) { fInitStatus = B_NO_MEMORY; + TRACE_ERROR("no memory available\n"); return; } fSender = new(std::nothrow) NetSender(fSendEndpoint, fSendBuffer); if (fSender == NULL) { fInitStatus = B_NO_MEMORY; + TRACE_ERROR("no memory available\n"); return; } @@ -125,6 +131,7 @@ RemoteView::RemoteView(BRect frame, uint16 listenPort) B_RGB32); if (fOffscreenBitmap == NULL) { fInitStatus = B_NO_MEMORY; + TRACE_ERROR("no memory available\n"); return; } @@ -132,6 +139,7 @@ RemoteView::RemoteView(BRect frame, uint16 listenPort) B_FOLLOW_NONE, B_WILL_DRAW); if (fOffscreen == NULL) { fInitStatus = B_NO_MEMORY; + TRACE_ERROR("no memory available\n"); return; } @@ -142,6 +150,10 @@ RemoteView::RemoteView(BRect frame, uint16 listenPort) this); if (fDrawThread < 0) { fInitStatus = fDrawThread; + + TRACE_ERROR("failed to start _DrawThread()\n"); + TRACE_ERROR("status = %" B_PRIx32 "\n", fInitStatus); + return; } @@ -438,9 +450,14 @@ RemoteView::_DrawThread() while (!fStopThread) { uint16 code; status_t status = message.NextMessage(code); + if (status != B_OK) { - TRACE_ERROR("failed to read message from receiver\n"); - break; + if (status == B_TIMED_OUT || status == -1) { + TRACE_ERROR("could not connect to device\n"); + } else { + TRACE_ERROR("failed to read message from receiver\n"); + break; + } } TRACE("code %u with %ld bytes data\n", code, message.DataLeft()); diff --git a/src/servers/app/drawing/interface/remote/NetReceiver.cpp b/src/servers/app/drawing/interface/remote/NetReceiver.cpp index d88fcfae7c..2b5064d5d8 100644 --- a/src/servers/app/drawing/interface/remote/NetReceiver.cpp +++ b/src/servers/app/drawing/interface/remote/NetReceiver.cpp @@ -7,6 +7,7 @@ */ #include "NetReceiver.h" +#include "RemoteMessage.h" #include "StreamingRingBuffer.h" @@ -59,16 +60,21 @@ NetReceiver::_NetworkReceiverEntry(void *data) status_t NetReceiver::_NetworkReceiver() { + static const uint16_t shutdown_message[] = { RP_CLOSE_CONNECTION, 0, 0 }; + status_t result = fListener->Listen(); if (result != B_OK) { TRACE_ERROR("failed to listen on port: %s\n", strerror(result)); + fTarget->Write(shutdown_message, sizeof(shutdown_message)); return result; } while (!fStopThread) { - fEndpoint = fListener->Accept(1000); - if (fEndpoint == NULL) - continue; + fEndpoint = fListener->Accept(5000); + if (fEndpoint == NULL) { + fTarget->Write(shutdown_message, sizeof(shutdown_message)); + return B_ERROR; + } int32 errorCount = 0; TRACE("new endpoint connection: %p\n", fEndpoint); @@ -81,6 +87,7 @@ NetReceiver::_NetworkReceiver() BNetEndpoint *endpoint = fEndpoint; fEndpoint = NULL; delete endpoint; + fTarget->Write(shutdown_message, sizeof(shutdown_message)); return readSize; } @@ -101,6 +108,7 @@ NetReceiver::_NetworkReceiver() if (result != B_OK) { TRACE_ERROR("writing to ring buffer failed: %s\n", strerror(result)); + fTarget->Write(shutdown_message, sizeof(shutdown_message)); return result; } } From 6511a06111ec186ec56ae836590af3407b2a8b62 Mon Sep 17 00:00:00 2001 From: DarkmatterVale Date: Wed, 30 Dec 2015 09:47:12 +0000 Subject: [PATCH 040/242] Add help option to RemoteDesktop --- src/apps/remotedesktop/RemoteDesktop.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/apps/remotedesktop/RemoteDesktop.cpp b/src/apps/remotedesktop/RemoteDesktop.cpp index 2e48f26250..da08c4092b 100644 --- a/src/apps/remotedesktop/RemoteDesktop.cpp +++ b/src/apps/remotedesktop/RemoteDesktop.cpp @@ -28,13 +28,20 @@ print_usage(const char *app) printf("usage:\t%s --listenOnly [-p ]\n", app); printf("\t%s [-p ] [-s ] [-c ]\n", app); + printf("\t%s --help\n\n", app); + + printf("Connect to & run applications from a different computer\n\n"); + printf("Arguments available for use:\n\n"); + printf("\t-p\t\tspecify the port to communicate on\n"); + printf("\t-c\t\tsend a command to the other computer\n"); + printf("\t-s\t\tuse ssh & specify the ssh port to communicate on\n"); } int main(int argc, char *argv[]) { - if (argc < 2) { + if (argc < 2 || strcmp(argv[1], "--help") == 0) { print_usage(argv[0]); return 1; } From 733150c77a769615a2731c6dc919923e1fa3baa7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Revol?= Date: Fri, 1 Jan 2016 22:00:45 +0100 Subject: [PATCH 041/242] Add a Misc_Erlenmeyer icon Hmm, transparency! --- data/artwork/icons/Misc_Erlenmeyer | Bin 0 -> 13795 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 data/artwork/icons/Misc_Erlenmeyer diff --git a/data/artwork/icons/Misc_Erlenmeyer b/data/artwork/icons/Misc_Erlenmeyer new file mode 100644 index 0000000000000000000000000000000000000000..5a96414a634398c79cc2ca22a4e3cbc6c54cc3f2 GIT binary patch literal 13795 zcmeHNdyG`o9X_+`F0k@gDVCy$6E*2lO}f}>h@g9CiY{#zQFg6Op_XBHmK~X$+0G2F zh{>3MHB}T%#ciOVX%THxq_$~^f3#aP1zJminzk{f1=9rkNJ<)LjR~24-+A0Q_i_gh zOO{RSp6uB>_dDmFbMEi^e!ugW`TU~J_Jxb?nj?^6$dwwY^A;iMQQi=$gIoDrOf-u2 z_Rd9Y4Nsh;7 z4|yswpRE@Y0{EAK^9AZfQviPf*ku~;SiD%a!?yl`tlF6h2C2c5|iA7oJ8gN%meJ(SEnQl}fruP%v)A9)c^s+KC1B5H+(Qf5zOWDbc# z*`Ti-xHc!d^SNBQyOiz`v6%WJv+?e1zDTU4&W+(Nn9r5ri5M@F&G6;8CyP{=&9K4q zz-@*NegwG9FmdLaF`g)f+chp3rW9bqY$liX2_B*~Js}>$^|-$7P5kp-V)K*c`p`7i zTLx!><#)AD2ZEIic#1+ny+Jrc2B;VV=32VQ|Ke&)wlW9ZdanB6cpdGLYRz}`>% z?!Vtg8x!%l?7xB~6zD`I5esPLxtN<)UdMo4wW1?VKr7Ti3-ZU2ZLJu50dQL@244-_ z)(Uav-N;c|`KiXGRv4C6Ov22PFhUDA!diO{2LC;9n;PTBw_rR`)O=fe>S!4A}*Q66whw z`KS*Ql+u{c&9qJrDkC%Mo9l43Qcft3EGI%ypAGLrj?0c1^&wmcw8f7eZc)FSP*LA> zP>uR#=<4bc^-U0|M*ZU$)pGw8K3ppg$J|28%XnGW(1O*hOm=8tc!(okiEM`!gUrwiHdtLgeW`uW?}9bj-aaXxcx!@4vIWzH zMF_SIK}J6E3n9H|j`!uWX5~z~9DcLIdt&gkPt9-NoSEp`^0>Sw6D;?sF%N9md^&OE zo@c%G4JQ)jf&a8LB);>)4(kE>$a|#|5_#uarxUEPXx9$;#J(pUmo1ns&PUC{n47cE zBVC;(YR6iK=NZMqJ640!k>~_w$7*ocD&Q={nU^9*MXQw>m(Ic+Ya!j6O|P?dtjp2l z_@oe9a6M&*rd9x#p+E(hst2fu#>GDa)_Z}_69_!1n42v(V^|ksO9r7&Act*f@K%)B zwlw&?!0o`Jf*CgTz@uzg)_B;KH~V3~8Ah3g1^0o(o&)pnnMS(7UfZh*G&J|xh5H(k zGv?o9t>r}-RFr2{n#6hfJ%Rmhn;c%zGXhne!YT95E5+c~1M?i#s?%GQ%wdacOZ% zWJMP1c+9xjd;xc&!b#d?Kv$uj>wx&`Oi=@(%lZQvhZ}VOR2@-QC%SPN(E+?81!qje z(J}GW*@JB&GuuXuh`~kGpWvSY?nWciH6EBHmEl-@Wg*p*;R^S=sOvJ`pP@azFvrVe z#$6q6qokDYL2EOq@lFwUb|e?D9vv}`%sPf@+JLL5uStyfIMKDZ<1T}L9k_B*oHJU| z*a)18s27t1I3=q3ogO&4+o|zxxjAPfY&Rwd+>{EbT(LJ_=uee0`J7n2cj-4)9r|8d z=Y|P?yLIL(ZDQ-A_ivnk>=*xDU!4A<2M)HOo#lUhC+Xqpb-(n7Hf7u{9S5E^ln z72lglnJegdlQka0F{e3n-ifvuXIWp$iWSFfOrk@iY{>U`HXIf47FzPbqxJ zNS*s>&h9-uuT>5lI36i=Hs~HYmpBUQR~H~CbG8{Jb#t~E7St?^+80#lOj5n`;NY05 zU?g8i=bM=D*6Nk(8*2 zw%rx6-Ir8ZPL#vgI*j_JeQjT+l-9zb2Jds!_@N8X_=T?UxJ5o^g(pL&9%yrOb9IF` zwn_f*6`uIh`B!*izK1X(lbV)}9{qczqhn2F_3CZ*D(~o>)6vkdHpw`Q8NgXs4)dtX z4q__mK?eTbhGU~XO)_U;T!u{4b2H0iH{xkL>e9YH&_1Fg6zhQb17{^eLZ_0SkLJM#l)l<(P z{)DbCPXOaMK9-}C2fe&ul9PmW8Wyzy5PG36AF%(Oi}zs_mdULYqCb<1ugMfMD>B(k zX??udox;}%O#P{KQ3Yjh0d|BgqX6wq=e_ z_&wZBz?AWWWO47IP91_|HDH`kWKFJte^TRBve2RM$s*VOjIMX!!e zDzY;Bj!KWB%-E0h(5+0g9c^ga!*_?SU}y< z5^FO(_~D~U&0ardzCt{k!PUpq19r*mWl!xt({ie<*q1NhX9v0_zSs<&MJoJUf2oCE zgde$nL-_;rO*@ADh+JQ6aO2XnR&bl6`wRy+5~TDL3}WkR;Lm8h>MvB6?=O_KlmbuL z1HbMXJ!+oSE{YM!NF3#!#9l`ENKwP%k6P4x8f7Yk216NT9YxLB8u%8C*Pw<9lhiQ0 zSikNXJz}15B<4j7c%+CibB{7~aE{^J6GhA_;8DadVnyNR8#_SqL zkCm;Ctb8BC9w}Bh%hht1R+L4tk_R4T{dG0)r!`)K6?P$6p+Yn(@)t{^$IPYj7Y1=E zG-?4&+?=3=7tkZ;FC3BYFPv~FJjo87hd*Z;Jy!mI{e>j>toYLl{lz{~9X)0))tc;l n{=#)oEq@ugH5oVHJ~MP#0@7djLH(i$`~DH8rhG@uZRh_04dT8J literal 0 HcmV?d00001 From 7121057cb7b04dbcc123f93939bdb790479560d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Revol?= Date: Fri, 1 Jan 2016 22:39:20 +0100 Subject: [PATCH 042/242] Add an App_FLUID icon (FLTK's IDE) Based on Misc_Erlenmeyer --- data/artwork/icons/App_FLUID | Bin 0 -> 21425 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 data/artwork/icons/App_FLUID diff --git a/data/artwork/icons/App_FLUID b/data/artwork/icons/App_FLUID new file mode 100644 index 0000000000000000000000000000000000000000..7c250f2b6213d3c8767d7d3b08b58d7be12a30ae GIT binary patch literal 21425 zcmeHO4{%h)9o|a-fucmj0vhFtOa)~$Dk1}D-aXM!4Sy2>YpMy!g`8Y+X>vdqv2(Pb zsHn(PjnyhDs7MQlwK7gyBRYcCT2!ozwQY2qL9H{*bQBpZbN#;Ex9|2H@4|yL(9!I$ z?7eUI?e6=1-~RT`d-=iCvXUuNue?AYgb>p?!uQIA$VYzftTMQi_k~0sQBqPim33?$ zPE^$u5+}I$lS71f4taUVGx6t77oz$SRlcz*S=TH!qEwJxO-DJlsC%Vb)ejLu4tsSn zGOjXu#a6`Mac7W5`lDPQqY+llhS;!rl-^=idD-Q>K9Ly+G*v$CDxWsP?u*|R;vhuc zn=kr#@VUVG0QsW72Y(b;F9$E3K3&$sy8el%>KP!2vt7o64&G2zA4L;FG}l$tBo>D+ z5RHjgLlVGP8~-s{LQF!sKO#iRzO=tL6`~w@7GfP@k(2hdWi8=Y1Mdf@D%$?#nfSfd zx1x^@l-VC1h#|iQ5fx3m$!=Jd=Twwfm=rfJdjfZ=n$qcJl*;N#iY=uO*(G*msgsr> zEwHN-4Gq!iWVA+vLh2ux4Ohn#&BR9K1!K4z<_pU30Q8r^WcWL{CX1Ar$*{%~z)glV zz6-d?Fmc8U(H}pCOB`G>Oew&I@mNFDCAf{&w1ilRwB1R!L_VKMY?7_hn+CI73y2?Y z6W6J-{ubnsg?8)G{;EEMc-_DZ6iCSiwtv|gDLhA5|N6sdw}Ig+PIeopxVy^Jz}ETO z-3C@vzK!3)QVmcL*PXFRBIYCfaL{(oBe2Gco;@91&pg8D-sA0^*N+CaKl10V9zY!f z@H^!`f*};>L{;W7029Ut-*)C%BvdxR5<(Orwji>JQILkJ(L+!cHRt99qh<~$3`)&Fbc(^GMi0xu zz)fm2-UQsFM&s`QH>n}ccrp6pN6l3ZE~#O`c~#X5{D`s4VIV}$NQUe@Lh&8R-*~SN z6C|UU(Dk&=5!4r>iC(|2{oG$Kio7#;zsF_L%j?0dy}eHBwhXeTPWlS>((CtiMxjpAjKl2E;SGQZM z-ao~ynG=_v*PqgBygj<2$bR{zKK6N^?v}m7aB?5v@LIV!6wI}3K(#?#O99F zBE5r=GHTx~mwC+81v^kEWfU~|Q#raMdE}kC%8rP^14gW8+Py0jjDQzVXHWvTGGZ_Z zpm90vawaqh(0Dch8jqvANdR%ihuwO-i|}7NxFmo#W(g~q-h89fTGjf6OU<9&D2&vtzC&J< z3Ff=h=o^;a`94;weo$9tC4m@T=Og6)e9Lbvo=w!c$}Wnivn{4Yuu<4a zEu^&B45YLfuStt=^4l#{p6OTzXWE8q9x$y%I>ou3ft2-*HEBFt!^~&Hjk4i9xm)IS z`(YYpJ{wLUWy1xyf08*8<=Ty1WeY`iI(@#=(hQ`0WVXnb*yYY1xg9O=C~z%OKC*>a7&dG_weqi89+2SRK^KJVv~)FD+*obfRr zjuKRUCQFGOpy-CTF`Z3k6_RgVAyZb!@^O34PYUc;H_mac z%RNeA2@CNPqbs^5-NkZy_DLa>VU4w0oYTdKykMrE77A{9zd4=5jBn7ghnvP@ z$TLl^@z;TyrYFug2L16feZ;|C$6wFOJtWI9QD*_(Dje@4|mUI&>P! z1?>Cp~6BORbN5qrnLM`z2XiMUc`@aqwYQsw() zKK4K*rN(~@TzMIMPGU%7IdFQjd~94zoDx;- z4)J`U@rZ+0%XhF`7L;fccrKDnRSnIxiKhChWGvAj7H+xj)&;MvD=u5w@6&OGn~TML zx6D~S>FpQ)y`*`_GuQ7dMm?1ue_&fkt?H-#QmibzckkX62M-?Hg^v6tQCr&_O^OHO zTQ5T)gj8{INn=$0#HS(Arp82EwM7%f8tS4=v1B-_8==yGvT8#mL1o3~W>Dtxjy#?Q z5D#GmrN1qD1a?`RQsY za6etG0L}-`$H+3j{JG!3k5E^*3t>0);}hB(e1fGiCtFHaZ@!sM)5?yfRHmaRrJkUA z;yNe@JtI(#Cey>6CSbE{jlWGdbqX^Oi0k3aax}9?H+1XzO@R6|!ckCdZEJcenhVmi zmr!+3r3aZ~vX#y`j8EduJu!Um)Z|M2j~N%*BXzmWa{XzR?}8nLSo={9sdp&6O-r4x zO*y;Q)Vz@1v7_Br>Z~xh>zox(P_G_=pr~L5KdI|aSh59mrc+)Dii-^6(-ZZ~t*t$( zf?Zr8bv7}h+|j9O98|T)&w;YS;Hv75bskrj41TK8UoT{xwdk48 z-|a~6?Yg3l`!Uesx>z#mEEFlJYXVCAwIh)Dk?t9uMBRt%8RTT_bhMzLAhT!aId(bx zoyq>*i z09`qIPAwicJrq~EN+0-DI=xSrnmS57;kdXFr}fWbc@^Z0V-Cu}t+=Nz>?!@74*Im7 z8;6-(vLP@}HY4uAtwCB@kGsqxIMx7%DoCeh@wem@>Zi+@7Z+>Ri-I zR&VsvkF1k&;AcB{hAcFwK4#L)xqA-hj8M32;r#7(^n>;4RlK4rIPn;iNcS`I12iy{6_StyPO+0 z&$*o21;|t5)H_~CkkXCUi7m;2uW|6qc%iyn=SEpeDeyg@=g$m}A2s(nLlixdp4e}A z65D|M?xKbVw7IA`A9;S%P}Y9bEY5+icJLh3(3?nV=w6Jo-s4Bint;SSfev>UF?#M% zhW5@eoO}F;SpeLR7158|7;rcFBD&j^-6S^!{HW7!&%$#t9 Date: Sat, 4 Jan 2014 10:49:30 -0500 Subject: [PATCH 043/242] PPP: Port to the new stack. Signed-off-by: Augustin Cavalier This is a squash of the 42 commits by @mshlyn, as I couldn't find a way to break them into logical chunks. I did not include these in the build, as it appears that they only partially work anyway, and much more cleanup is still needed. However, this is a huge improvement on what was in the tree before, which looked horrendous and didn't even compile (as it was designed for the old stack). Mostly fixes #812. --- build/jam/images/definitions/minimum | 2 +- build/jam/packages/Haiku | 2 +- build/jam/packages/HaikuBootstrap | 2 +- src/add-ons/kernel/network/Jamfile | 1 + src/add-ons/kernel/network/ppp/Jamfile | 5 +- src/add-ons/kernel/network/ppp/ipcp/Jamfile | 42 +- .../kernel/network/ppp/ipcp/Protocol.cpp | 1130 ++++++++++------- .../kernel/network/ppp/ipcp/Protocol.h | 64 +- src/add-ons/kernel/network/ppp/ipcp/ipcp.cpp | 55 +- src/add-ons/kernel/network/ppp/pap/Jamfile | 12 +- .../kernel/network/ppp/pap/Protocol.cpp | 314 ++--- src/add-ons/kernel/network/ppp/pap/Protocol.h | 35 +- src/add-ons/kernel/network/ppp/pap/pap.cpp | 45 +- src/add-ons/kernel/network/ppp/ppp/Jamfile | 28 + src/add-ons/kernel/network/ppp/ppp/ppp.cpp | 388 ++++++ .../kernel/network/ppp/ppp_frame/Jamfile | 26 + .../network/ppp/ppp_frame/ppp_frame.cpp | 265 ++++ .../kernel/network/ppp/ppp_manager/Jamfile | 31 + .../network/ppp/ppp_manager/KPPPManager.cpp | 373 ++++++ .../network/ppp/pppoe/DiscoveryPacket.cpp | 61 +- .../network/ppp/pppoe/DiscoveryPacket.h | 9 +- src/add-ons/kernel/network/ppp/pppoe/Jamfile | 12 +- src/add-ons/kernel/network/ppp/pppoe/PPPoE.h | 11 +- .../kernel/network/ppp/pppoe/PPPoEDevice.cpp | 522 +++++--- .../kernel/network/ppp/pppoe/PPPoEDevice.h | 13 +- .../kernel/network/ppp/pppoe/pppoe.cpp | 347 +++-- .../network/ppp/shared/libkernelppp/Jamfile | 6 +- .../libkernelppp/KPPPConfigurePacket.cpp | 126 +- .../ppp/shared/libkernelppp/KPPPDevice.cpp | 28 +- .../ppp/shared/libkernelppp/KPPPInterface.cpp | 1072 ++++++++++------ .../ppp/shared/libkernelppp/KPPPLCP.cpp | 142 +-- .../shared/libkernelppp/KPPPLCPExtension.cpp | 1 + .../ppp/shared/libkernelppp/KPPPLayer.cpp | 18 +- .../shared/libkernelppp/KPPPOptionHandler.cpp | 1 + .../shared/libkernelppp/KPPPReportManager.cpp | 86 +- .../shared/libkernelppp/KPPPStateMachine.cpp | 964 +++++++------- .../headers/KPPPConfigurePacket.h | 9 +- .../shared/libkernelppp/headers/KPPPDevice.h | 6 +- .../libkernelppp/headers/KPPPInterface.h | 22 +- .../ppp/shared/libkernelppp/headers/KPPPLCP.h | 10 +- .../libkernelppp/headers/KPPPLCPExtension.h | 2 +- .../shared/libkernelppp/headers/KPPPLayer.h | 7 +- .../shared/libkernelppp/headers/KPPPManager.h | 13 +- .../libkernelppp/headers/KPPPProtocol.h | 4 +- .../libkernelppp/headers/KPPPReportManager.h | 7 +- .../libkernelppp/headers/KPPPStateMachine.h | 81 +- .../shared/libkernelppp/headers/PPPControl.h | 70 + .../ppp/shared/libkernelppp/headers/PPPDefs.h | 5 +- .../shared/libkernelppp/headers/ppp_device.h | 18 + .../kernel/network/ppp/shared/libppp/Jamfile | 9 +- .../ppp/shared/libppp/PPPInterface.cpp | 206 ++- .../network/ppp/shared/libppp/PPPManager.cpp | 199 ++- .../ppp/shared/libppp/_libppputils.cpp | 24 - .../network/ppp/shared/libppp/_libppputils.h | 15 - .../ppp/shared/libppp/headers/PPPInterface.h | 6 + .../ppp/shared/libppp/headers/PPPManager.h | 2 + src/add-ons/kernel/network/stack/stack.cpp | 3 + src/bin/network/Jamfile | 4 +- src/bin/network/ppp_up/Jamfile | 9 +- src/bin/network/ppp_up/PPPStatusView.h | 3 +- src/bin/network/pppconfig/Jamfile | 5 +- src/bin/network/pppconfig/pppconfig.cpp | 529 +++++++- 62 files changed, 5214 insertions(+), 2293 deletions(-) create mode 100644 src/add-ons/kernel/network/ppp/ppp/Jamfile create mode 100644 src/add-ons/kernel/network/ppp/ppp/ppp.cpp create mode 100644 src/add-ons/kernel/network/ppp/ppp_frame/Jamfile create mode 100644 src/add-ons/kernel/network/ppp/ppp_frame/ppp_frame.cpp create mode 100644 src/add-ons/kernel/network/ppp/ppp_manager/Jamfile create mode 100644 src/add-ons/kernel/network/ppp/ppp_manager/KPPPManager.cpp create mode 100644 src/add-ons/kernel/network/ppp/shared/libkernelppp/headers/ppp_device.h delete mode 100644 src/add-ons/kernel/network/ppp/shared/libppp/_libppputils.cpp delete mode 100644 src/add-ons/kernel/network/ppp/shared/libppp/_libppputils.h diff --git a/build/jam/images/definitions/minimum b/build/jam/images/definitions/minimum index eba4c4f797..0ba75d0aea 100644 --- a/build/jam/images/definitions/minimum +++ b/build/jam/images/definitions/minimum @@ -134,7 +134,7 @@ SYSTEM_NETWORK_DATALINK_PROTOCOLS = loopback_frame ; -#SYSTEM_NETWORK_PPP = ipcp modem pap pppoe ; +#SYSTEM_NETWORK_PPP = ipcp modem pap pppoe KPPPManager ; SYSTEM_NETWORK_PROTOCOLS = icmp icmp6 ipv4 ipv6 diff --git a/build/jam/packages/Haiku b/build/jam/packages/Haiku index 2f6a054541..4539aadd54 100644 --- a/build/jam/packages/Haiku +++ b/build/jam/packages/Haiku @@ -250,7 +250,7 @@ AddFilesToPackage add-ons kernel network : dns_resolver ; AddFilesToPackage add-ons kernel network devices : $(SYSTEM_NETWORK_DEVICES) ; AddFilesToPackage add-ons kernel network datalink_protocols : $(SYSTEM_NETWORK_DATALINK_PROTOCOLS) ; -AddFilesToPackage add-ons kernel network ppp: $(SYSTEM_NETWORK_PPP) ; +AddFilesToPackage add-ons kernel network ppp : $(SYSTEM_NETWORK_PPP) ; AddFilesToPackage add-ons kernel network protocols : $(SYSTEM_NETWORK_PROTOCOLS) ; diff --git a/build/jam/packages/HaikuBootstrap b/build/jam/packages/HaikuBootstrap index 8d910047c3..72e57ea9b6 100644 --- a/build/jam/packages/HaikuBootstrap +++ b/build/jam/packages/HaikuBootstrap @@ -209,7 +209,7 @@ AddFilesToPackage add-ons kernel network : dns_resolver ; AddFilesToPackage add-ons kernel network devices : $(SYSTEM_NETWORK_DEVICES) ; AddFilesToPackage add-ons kernel network datalink_protocols : $(SYSTEM_NETWORK_DATALINK_PROTOCOLS) ; -AddFilesToPackage add-ons kernel network ppp: $(SYSTEM_NETWORK_PPP) ; +AddFilesToPackage add-ons kernel network ppp : $(SYSTEM_NETWORK_PPP) ; AddFilesToPackage add-ons kernel network protocols : $(SYSTEM_NETWORK_PROTOCOLS) ; diff --git a/src/add-ons/kernel/network/Jamfile b/src/add-ons/kernel/network/Jamfile index 7667873344..5862dab5b7 100644 --- a/src/add-ons/kernel/network/Jamfile +++ b/src/add-ons/kernel/network/Jamfile @@ -6,3 +6,4 @@ SubInclude HAIKU_TOP src add-ons kernel network dns_resolver ; SubInclude HAIKU_TOP src add-ons kernel network notifications ; SubInclude HAIKU_TOP src add-ons kernel network protocols ; SubInclude HAIKU_TOP src add-ons kernel network stack ; +SubInclude HAIKU_TOP src add-ons kernel network ppp ; diff --git a/src/add-ons/kernel/network/ppp/Jamfile b/src/add-ons/kernel/network/ppp/Jamfile index 2a05e24e02..0124e016cc 100644 --- a/src/add-ons/kernel/network/ppp/Jamfile +++ b/src/add-ons/kernel/network/ppp/Jamfile @@ -1,7 +1,10 @@ SubDir HAIKU_TOP src add-ons kernel network ppp ; SubInclude HAIKU_TOP src add-ons kernel network ppp ipcp ; -SubInclude HAIKU_TOP src add-ons kernel network ppp modem ; +# SubInclude HAIKU_TOP src add-ons kernel network ppp modem ; SubInclude HAIKU_TOP src add-ons kernel network ppp pap ; SubInclude HAIKU_TOP src add-ons kernel network ppp pppoe ; SubInclude HAIKU_TOP src add-ons kernel network ppp shared ; +SubInclude HAIKU_TOP src add-ons kernel network ppp ppp ; +SubInclude HAIKU_TOP src add-ons kernel network ppp ppp_frame ; +SubInclude HAIKU_TOP src add-ons kernel network ppp ppp_manager ; diff --git a/src/add-ons/kernel/network/ppp/ipcp/Jamfile b/src/add-ons/kernel/network/ppp/ipcp/Jamfile index cb3a5e29e6..9a77ff1c78 100644 --- a/src/add-ons/kernel/network/ppp/ipcp/Jamfile +++ b/src/add-ons/kernel/network/ppp/ipcp/Jamfile @@ -1,41 +1,51 @@ SubDir HAIKU_TOP src add-ons kernel network ppp ipcp ; SetSubDirSupportedPlatformsBeOSCompatible ; +SubDirC++Flags -fno-rtti ; if $(TARGET_PLATFORM) != haiku { - UseHeaders [ FDirName $(HAIKU_TOP) headers posix ] : true ; - # We need the public network headers also when not compiling for Haiku. - # Unfortunately we get more than we want, namely all POSIX headers. + UseHeaders [ FStandardOSHeaders ] : true ; + # Needed for the atomic_add64() prototype. } -# for kernel_cpp.h and BLocker -UseHeaders [ FDirName $(HAIKU_TOP) headers cpp ] : true ; +UseHeaders [ FDirName $(HAIKU_TOP) headers posix ] : true ; + # We need the public network headers also when not compiling for Haiku. + # Unfortunately we get more than we want, namely all POSIX headers. + +UsePrivateKernelHeaders ; UsePrivateHeaders net ; + +UsePrivateHeaders libroot net ; UsePrivateHeaders [ FDirName kernel ] ; UsePrivateHeaders [ FDirName kernel util ] ; UseHeaders [ FDirName $(HAIKU_TOP) src add-ons kernel network ppp shared libkernelppp headers ] : true ; - - -{ - SubDirC++Flags -fno-rtti ; -} - +UseHeaders [ FDirName $(HAIKU_TOP) src add-ons kernel network ppp pppoe + ] : true ; KernelAddon ipcp : - # imported from libnet + atomic.S + kernel_cpp.cpp + + # imported from kernel util inet_addr.c - + ipcp.cpp Protocol.cpp ; + SEARCH on [ FGristFiles inet_addr.c ] - = [ FDirName $(HAIKU_TOP) src kits network compat libnet ] ; + = [ FDirName $(HAIKU_TOP) src system kernel util ] ; + +SEARCH on [ FGristFiles kernel_cpp.cpp ] + = [ FDirName $(HAIKU_TOP) src system kernel util ] ; +SEARCH on [ FGristFiles atomic.S ] + = [ FDirName $(HAIKU_TOP) src system libroot os arch $(TARGET_ARCH) ] ; LinkAgainst ipcp : libkernelppp.a ; -# Installation + HaikuInstall install-networking - : /boot/home/config/add-ons/kernel/obos_network/ppp + : /boot/home/config/add-ons/kernel/network/ppp : ipcp ; diff --git a/src/add-ons/kernel/network/ppp/ipcp/Protocol.cpp b/src/add-ons/kernel/network/ppp/ipcp/Protocol.cpp index 71054406e0..f6595afa90 100644 --- a/src/add-ons/kernel/network/ppp/ipcp/Protocol.cpp +++ b/src/add-ons/kernel/network/ppp/ipcp/Protocol.cpp @@ -13,11 +13,29 @@ #include #include +#include + #include -#include -#include + +#include +#include +#include +#include #include +// For updating resolv.conf +#include +#include +#include +#include +#include +#include + +#define RESOLV_CONF_FILE "/boot/system/settings/network/resolv.conf" + +extern net_buffer_module_info *gBufferModule; +static struct net_datalink_module_info *sDatalinkModule; +static struct net_stack_module_info *sStackModule; #if DEBUG #include @@ -26,23 +44,23 @@ static int sFD; // the file descriptor for debug output static char sDigits[] = "0123456789ABCDEF"; void -dump_packet(struct mbuf *packet, const char *direction) +dump_packet(net_buffer *packet, const char *direction) { - if(!packet) + if (!packet) return; - + uint8 *data = mtod(packet, uint8*); uint8 buffer[128]; uint8 bufferIndex = 0; - + sprintf((char*) buffer, "Dumping %s packet;len=%ld;pkthdr.len=%d\n", direction, packet->m_len, packet->m_flags & M_PKTHDR ? packet->m_pkthdr.len : -1); write(sFD, buffer, strlen((char*) buffer)); - - for(uint32 index = 0; index < packet->m_len; index++) { + + for (uint32 index = 0; index < packet->m_len; index++) { buffer[bufferIndex++] = sDigits[data[index] >> 4]; buffer[bufferIndex++] = sDigits[data[index] & 0x0F]; - if(bufferIndex == 32 || index == packet->m_len - 1) { + if (bufferIndex == 32 || index == packet->m_len - 1) { buffer[bufferIndex++] = '\n'; buffer[bufferIndex] = 0; write(sFD, buffer, strlen((char*) buffer)); @@ -75,18 +93,20 @@ IPCP::IPCP(KPPPInterface& interface, driver_parameter *settings) // reset configurations memset(&fLocalConfiguration, 0, sizeof(ipcp_configuration)); memset(&fPeerConfiguration, 0, sizeof(ipcp_configuration)); - + // reset requests memset(&fLocalRequests, 0, sizeof(ipcp_requests)); memset(&fPeerRequests, 0, sizeof(ipcp_requests)); - + // Parse settings: // "Local" and "Peer" describe each side's settings ParseSideRequests(get_parameter_with_name(IPCP_LOCAL_SIDE_KEY, Settings()), PPP_LOCAL_SIDE); ParseSideRequests(get_parameter_with_name(IPCP_PEER_SIDE_KEY, Settings()), PPP_PEER_SIDE); - + + get_module(NET_STACK_MODULE_NAME, (module_info **)&sStackModule); + get_module(NET_DATALINK_MODULE_NAME, (module_info **)&sDatalinkModule); #if DEBUG sFD = open("/boot/home/ipcpdebug", O_WRONLY | O_CREAT | O_TRUNC); #endif @@ -95,6 +115,9 @@ IPCP::IPCP(KPPPInterface& interface, driver_parameter *settings) IPCP::~IPCP() { + + put_module(NET_DATALINK_MODULE_NAME); + put_module(NET_STACK_MODULE_NAME); #if DEBUG close(sFD); #endif @@ -112,28 +135,28 @@ status_t IPCP::StackControl(uint32 op, void *data) { TRACE("IPCP: StackControl(op=%ld)\n", op); - + // TODO: // check values - - switch(op) { + + switch (op) { case SIOCSIFADDR: break; - + case SIOCSIFFLAGS: break; - + case SIOCSIFDSTADDR: break; - + case SIOCSIFNETMASK: break; - + default: ERROR("IPCP: Unknown ioctl: %ld\n", op); return KPPPProtocol::StackControl(op, data); } - + return B_OK; } @@ -142,23 +165,23 @@ bool IPCP::Up() { TRACE("IPCP: Up() state=%d\n", State()); - + // Servers do not send a configure-request when Up() is called. They wait until // the client requests this protocol. - if(Interface().Mode() == PPP_SERVER_MODE) + if (Interface().Mode() == PPP_SERVER_MODE) return true; - - switch(State()) { + + switch (State()) { case PPP_INITIAL_STATE: NewState(PPP_REQ_SENT_STATE); InitializeRestartCount(); SendConfigureRequest(); break; - + default: ; } - + return true; } @@ -167,49 +190,49 @@ bool IPCP::Down() { TRACE("IPCP: Down() state=%d\n", State()); - - switch(Interface().Phase()) { + + switch (Interface().Phase()) { case PPP_DOWN_PHASE: // interface finished terminating NewState(PPP_INITIAL_STATE); ReportDownEvent(); // this will also reset and update addresses break; - + /* case PPP_TERMINATION_PHASE: // interface is terminating break; - + case PPP_ESTABLISHMENT_PHASE: // interface is reconfiguring break; -*/ +*/ case PPP_ESTABLISHED_PHASE: // terminate this NCP individually (block until we finished terminating) - if(State() != PPP_INITIAL_STATE && State() != PPP_CLOSING_STATE) { + if (State() != PPP_INITIAL_STATE && State() != PPP_CLOSING_STATE) { NewState(PPP_CLOSING_STATE); InitializeRestartCount(); SendTerminateRequest(); } - - while(State() == PPP_CLOSING_STATE) + + while (State() == PPP_CLOSING_STATE) snooze(50000); break; - + default: ; } - + return true; } status_t -IPCP::Send(struct mbuf *packet, uint16 protocolNumber) +IPCP::Send(net_buffer *packet, uint16 protocolNumber) { TRACE("IPCP: Send(0x%X)\n", protocolNumber); - - if((protocolNumber == IP_PROTOCOL && State() == PPP_OPENED_STATE) + + if ((protocolNumber == IP_PROTOCOL && State() == PPP_OPENED_STATE) || protocolNumber == IPCP_PROTOCOL) { #if DEBUG dump_packet(packet, "outgoing"); @@ -217,96 +240,94 @@ IPCP::Send(struct mbuf *packet, uint16 protocolNumber) Interface().UpdateIdleSince(); return SendToNext(packet, protocolNumber); } - + ERROR("IPCP: Send() failed because of wrong state or protocol number!\n"); - - m_freem(packet); + + gBufferModule->free(packet); return B_ERROR; } status_t -IPCP::Receive(struct mbuf *packet, uint16 protocolNumber) +IPCP::Receive(net_buffer *packet, uint16 protocolNumber) { TRACE("IPCP: Receive(0x%X)\n", protocolNumber); - - if(!packet) + + if (!packet) return B_ERROR; - - if(protocolNumber == IP_PROTOCOL) + + if (protocolNumber == IP_PROTOCOL) return ReceiveIPPacket(packet, protocolNumber); - - if(protocolNumber != IPCP_PROTOCOL) + + if (protocolNumber != IPCP_PROTOCOL) return PPP_UNHANDLED; - - ppp_lcp_packet *data = mtod(packet, ppp_lcp_packet*); - - // remove padding - int32 length = packet->m_len; - if(packet->m_flags & M_PKTHDR) - length = packet->m_pkthdr.len; - length -= ntohs(data->length); - if(length) - m_adj(packet, -length); - - if(ntohs(data->length) < 4) + + NetBufferHeaderReader bufferheader(packet); + if (bufferheader.Status() != B_OK) return B_ERROR; - + ppp_lcp_packet &data = bufferheader.Data(); + + if (ntohs(data.length) < 4) + return B_ERROR; + // packet is freed by event methods - switch(data->code) { + switch (data.code) { case PPP_CONFIGURE_REQUEST: RCREvent(packet); break; - + case PPP_CONFIGURE_ACK: RCAEvent(packet); break; - + case PPP_CONFIGURE_NAK: case PPP_CONFIGURE_REJECT: RCNEvent(packet); break; - + case PPP_TERMINATE_REQUEST: RTREvent(packet); break; - + case PPP_TERMINATE_ACK: RTAEvent(packet); break; - + case PPP_CODE_REJECT: RXJBadEvent(packet); // we implemented the minimum requirements break; - + default: RUCEvent(packet); return PPP_REJECTED; } - + return B_OK; } status_t -IPCP::ReceiveIPPacket(struct mbuf *packet, uint16 protocolNumber) +IPCP::ReceiveIPPacket(net_buffer *packet, uint16 protocolNumber) { - if(protocolNumber != IP_PROTOCOL || State() != PPP_OPENED_STATE) + if (protocolNumber != IP_PROTOCOL || State() != PPP_OPENED_STATE) return PPP_UNHANDLED; - + // TODO: add VJC support (the packet would be decoded here) - - if (gProto[IPPROTO_IP] && gProto[IPPROTO_IP]->pr_input) { + + if (packet) + { #if DEBUG dump_packet(packet, "incoming"); #endif Interface().UpdateIdleSince(); - gProto[IPPROTO_IP]->pr_input(packet, 0); + + TRACE("We got 1 IP packet from %s::%s\n", __FILE__, __func__); + gBufferModule->free(packet); return B_OK; } else { ERROR("IPCP: Error: Could not find input function for IP!\n"); - m_freem(packet); + gBufferModule->free(packet); return B_ERROR; } } @@ -315,27 +336,27 @@ IPCP::ReceiveIPPacket(struct mbuf *packet, uint16 protocolNumber) void IPCP::Pulse() { - if(fNextTimeout == 0 || fNextTimeout > system_time()) + if (fNextTimeout == 0 || fNextTimeout > system_time()) return; fNextTimeout = 0; - - switch(State()) { + + switch (State()) { case PPP_CLOSING_STATE: - if(fTerminateCounter <= 0) + if (fTerminateCounter <= 0) TOBadEvent(); else TOGoodEvent(); break; - + case PPP_REQ_SENT_STATE: case PPP_ACK_RCVD_STATE: case PPP_ACK_SENT_STATE: - if(fRequestCounter <= 0) + if (fRequestCounter <= 0) TOBadEvent(); else TOGoodEvent(); break; - + default: ; } @@ -345,128 +366,209 @@ IPCP::Pulse() bool IPCP::ParseSideRequests(const driver_parameter *requests, ppp_side side) { - if(!requests) + if (!requests) return false; - + ipcp_requests *selectedRequests; - - if(side == PPP_LOCAL_SIDE) { + + if (side == PPP_LOCAL_SIDE) { selectedRequests = &fLocalRequests; fRequestPrimaryDNS = fRequestSecondaryDNS = false; } else selectedRequests = &fPeerRequests; - + memset(selectedRequests, 0, sizeof(ipcp_requests)); // reset current requests - + // The following values are allowed: // "Address" the ip address that will be suggested // "Netmask" the netmask that should be used // "PrimaryDNS" primary DNS server // "SecondaryDNS" secondary DNS server // Setting any value to 0.0.0.0 or "auto" means it should be chosen automatically. - + in_addr_t address = INADDR_ANY; - for(int32 index = 0; index < requests->parameter_count; index++) { - if(requests->parameters[index].value_count == 0) + for (int32 index = 0; index < requests->parameter_count; index++) { + if (requests->parameters[index].value_count == 0) continue; - + // all values are IP addresses, so parse the address here - if(strcasecmp(requests->parameters[index].values[0], "auto")) { + if (strcasecmp(requests->parameters[index].values[0], "auto")) { address = inet_addr(requests->parameters[index].values[0]); - if(address == INADDR_NONE) + // address = INADDR_ANY; + if (address == INADDR_NONE) continue; } - - if(!strcasecmp(requests->parameters[index].name, IPCP_IP_ADDRESS_KEY)) + + if (!strcasecmp(requests->parameters[index].name, IPCP_IP_ADDRESS_KEY)) selectedRequests->address = address; - else if(!strcasecmp(requests->parameters[index].name, IPCP_NETMASK_KEY)) + else if (!strcasecmp(requests->parameters[index].name, IPCP_NETMASK_KEY)) selectedRequests->netmask = address; - else if(!strcasecmp(requests->parameters[index].name, IPCP_PRIMARY_DNS_KEY)) { + else if (!strcasecmp(requests->parameters[index].name, IPCP_PRIMARY_DNS_KEY)) { selectedRequests->primaryDNS = address; - if(side == PPP_LOCAL_SIDE) + if (side == PPP_LOCAL_SIDE) fRequestPrimaryDNS = true; - } else if(!strcasecmp(requests->parameters[index].name, + } else if (!strcasecmp(requests->parameters[index].name, IPCP_SECONDARY_DNS_KEY)) { selectedRequests->secondaryDNS = address; - if(side == PPP_LOCAL_SIDE) + if (side == PPP_LOCAL_SIDE) fRequestSecondaryDNS = true; } } - + return true; } +net_interface * +get_interface_by_name(net_domain *domain, const char *name) +{ + ifreq request; + memset(&request, 0, sizeof(request)); + size_t size = sizeof(request); + + strlcpy(request.ifr_name, name, IF_NAMESIZE); + + if (sDatalinkModule->control(domain, SIOCGIFINDEX, &request, &size) != B_OK) { + TRACE("sDatalinkModule->control failure\n"); + return NULL; + } + return sDatalinkModule->get_interface(domain, request.ifr_index); +} + + +status_t +set_interface_address(net_domain* domain, struct ifaliasreq* inreq) +{ + size_t size = sizeof(struct ifaliasreq); + return sDatalinkModule->control(domain, B_SOCKET_SET_ALIAS, inreq, &size); +} + + void IPCP::UpdateAddresses() { + TRACE("%s::%s: entering UpdateAddresses\n", __FILE__, __func__); RemoveRoutes(); - - if(State() != PPP_OPENED_STATE && !Interface().DoesConnectOnDemand()) + + if (State() != PPP_OPENED_STATE && !Interface().DoesConnectOnDemand()) return; - - struct in_aliasreq inreq; - struct ifreq ifreqAddress, ifreqDestination; - memset(&inreq, 0, sizeof(struct in_aliasreq)); - memset(&ifreqAddress, 0, sizeof(struct ifreq)); - memset(&ifreqDestination, 0, sizeof(struct ifreq)); - memset(&fGateway, 0, sizeof(struct sockaddr_in)); - - // create local address - inreq.ifra_addr.sin_family = AF_INET; - if(fLocalRequests.address != INADDR_ANY) - inreq.ifra_addr.sin_addr.s_addr = fLocalRequests.address; - else if(fLocalConfiguration.address == INADDR_ANY) - inreq.ifra_addr.sin_addr.s_addr = 0x010F0F0F; // was: INADDR_BROADCAST - else - inreq.ifra_addr.sin_addr.s_addr = fLocalConfiguration.address; - inreq.ifra_addr.sin_len = sizeof(struct sockaddr_in); - memcpy(&ifreqAddress.ifr_addr, &inreq.ifra_addr, sizeof(struct sockaddr_in)); - - // create destination address - fGateway.sin_family = AF_INET; - if(fPeerRequests.address != INADDR_ANY) - fGateway.sin_addr.s_addr = fPeerRequests.address; - else if(fPeerConfiguration.address == INADDR_ANY) - fGateway.sin_addr.s_addr = 0x020F0F0F; // was: INADDR_BROADCAST - else - fGateway.sin_addr.s_addr = fPeerConfiguration.address; - fGateway.sin_len = sizeof(struct sockaddr_in); - memcpy(&inreq.ifra_dstaddr, &fGateway, - sizeof(struct sockaddr_in)); - memcpy(&ifreqDestination.ifr_dstaddr, &inreq.ifra_dstaddr, - sizeof(struct sockaddr_in)); - - // create netmask - inreq.ifra_mask.sin_family = AF_INET; - inreq.ifra_mask.sin_addr.s_addr = fLocalRequests.netmask; - inreq.ifra_mask.sin_len = sizeof(struct sockaddr_in); - - // tell stack to use these values - if(in_control(NULL, SIOCAIFADDR, (caddr_t) &inreq, - Interface().Ifnet()) != B_OK) - ERROR("IPCP: UpdateAddress(): SIOCAIFADDR returned error!\n"); - if(in_control(NULL, SIOCSIFADDR, (caddr_t) &ifreqAddress, - Interface().Ifnet()) != B_OK) - ERROR("IPCP: UpdateAddress(): SIOCSIFADDR returned error!\n"); - if(in_control(NULL, SIOCSIFDSTADDR, (caddr_t) &ifreqDestination, - Interface().Ifnet()) != B_OK) - ERROR("IPCP: UpdateAddress(): SIOCSIFDSTADDR returned error!\n"); - memcpy(&inreq.ifra_addr, &inreq.ifra_mask, sizeof(struct sockaddr_in)); - // SIOCISFNETMASK wants the netmask to be in ifra_addr - if(in_control(NULL, SIOCSIFNETMASK, (caddr_t) &inreq, - Interface().Ifnet()) != B_OK) - ERROR("IPCP: UpdateAddress(): SIOCSIFNETMASK returned error!\n"); - + + TRACE("%s::%s: entering ChangeAddress\n", __FILE__, __func__); + if (sDatalinkModule == NULL) { + TRACE("%s::%s: some module not found!\n", __FILE__, __func__); + return; + } + + + struct sockaddr newAddr = {6, AF_INET, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}; + struct sockaddr netmask = {6, AF_INET, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}; + struct sockaddr broadaddr = {6, AF_INET, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}; + + if (fLocalRequests.address != INADDR_ANY) + memcpy(newAddr.sa_data + 2, &fLocalRequests.address, sizeof(in_addr_t)); + else if (fLocalConfiguration.address == INADDR_ANY) { + in_addr_t inaddrBroadcast = 0x010F0F0F; // was: INADDR_BROADCAST + memcpy(newAddr.sa_data + 2, &inaddrBroadcast, sizeof(in_addr_t)); + } else + memcpy(newAddr.sa_data + 2, &fLocalConfiguration.address, sizeof(in_addr_t)); + + struct ifaliasreq inreq; + memset(&inreq, 0, sizeof(struct ifaliasreq)); + memcpy(inreq.ifra_name, Interface().Name(), IF_NAMESIZE); + memcpy(&inreq.ifra_addr, &newAddr, sizeof(struct sockaddr)); + memcpy(&inreq.ifra_mask, &netmask, sizeof(struct sockaddr)); + memcpy(&inreq.ifra_broadaddr, &broadaddr, sizeof(struct sockaddr)); + inreq.ifra_index = -1; + // create a new interface address + // Is it OK when we already have one? + // test case: ifconfig ppp up + // ifconfig ppp down + // ifconfig ppp up + // check if some weird things happen + + net_domain* domain = sStackModule->get_domain(AF_INET); + status_t status = set_interface_address(domain, &inreq); + + if (status != B_OK) { + TRACE("%s:%s: set_interface_address Fail!!!!\n", __FILE__, __func__); + return; + } + TRACE("%s:%s: set_interface_address fine\n", __FILE__, __func__); + + + net_interface* pppInterface = get_interface_by_name(domain, Interface().Name()); + if (pppInterface == NULL) { + TRACE("%s::%s: pppInterface not found!\n", __FILE__, __func__); + return; + } + + net_interface_address* pppInterfaceAddress = NULL; + while (sDatalinkModule->get_next_interface_address(pppInterface, + &pppInterfaceAddress)) { + if (pppInterfaceAddress->domain->family != AF_INET) + continue; + break; + } + // add default/subnet route - if(Side() == PPP_LOCAL_SIDE) { - if(rtrequest(RTM_ADD, (struct sockaddr*) &inreq.ifra_mask, - (struct sockaddr*) &fGateway, (struct sockaddr*) &inreq.ifra_mask, - RTF_UP | RTF_GATEWAY, &fDefaultRoute) != B_OK) - ERROR("IPCP: UpdateAddress(): could not add default/subnet route!\n"); - - --fDefaultRoute->rt_refcnt; + if (Side() == PPP_LOCAL_SIDE && pppInterfaceAddress != NULL) { + struct sockaddr addrGateway = {8, AF_INET, {0x00, 0x00, 0x00, 0x00, + 0x00, 0x00} }; + + // create destination address + if (fPeerRequests.address != INADDR_ANY) + memcpy(addrGateway.sa_data + 2, &fPeerRequests.address, + sizeof(in_addr_t)); + else if (fPeerConfiguration.address == INADDR_ANY) { + in_addr_t gateway = 0x020F0F0F; + memcpy(addrGateway.sa_data + 2, &gateway, sizeof(in_addr_t)); + // was: INADDR_BROADCAST + } else + memcpy(addrGateway.sa_data + 2, &fPeerConfiguration.address, + sizeof(in_addr_t)); + + net_route defaultRoute; + defaultRoute.destination = NULL; + defaultRoute.mask = NULL; + defaultRoute.gateway = &addrGateway; + defaultRoute.flags = RTF_DEFAULT | RTF_GATEWAY; + defaultRoute.interface_address = pppInterfaceAddress; + // route->interface_address; + + status_t status = sDatalinkModule->add_route(domain, &defaultRoute); + if (status == B_OK) + dprintf("%s::%s: add route default OK!\n", __FILE__, __func__); + else + dprintf("%s::%s: add route default Fail!\n", __FILE__, __func__); + + sDatalinkModule->put_interface_address(pppInterfaceAddress); + } + + if (Side() == PPP_LOCAL_SIDE) { + int file; + int primary_dns, secondary_dns; + char buf[256]; + + file = open(RESOLV_CONF_FILE, O_RDWR); + + primary_dns = ntohl(fLocalConfiguration.primaryDNS); + secondary_dns = ntohl(fLocalConfiguration.secondaryDNS); + + sprintf(buf, "%s\t%d.%d.%d.%d\n%s\t%d.%d.%d.%d\n", + "nameserver", + (primary_dns & 0xff000000) >> 24, + (primary_dns & 0x00ff0000) >> 16, + (primary_dns & 0x0000ff00) >> 8, + (primary_dns & 0x000000ff), + "nameserver", + (secondary_dns & 0xff000000) >> 24, + (secondary_dns & 0x00ff0000) >> 16, + (secondary_dns & 0x0000ff00) >> 8, + (secondary_dns & 0x000000ff)); + + write(file, buf, strlen(buf)); + close(file); } } @@ -474,21 +576,71 @@ IPCP::UpdateAddresses() void IPCP::RemoveRoutes() { - // note: netstack creates and deletes destination route automatically - - if(fDefaultRoute) { + // note: + // haiku supports multi default route. But for Desktop, ppp is generally + // the only default route. So is it necessary to remove other default + // route? + TRACE("%s::%s: entering RemoveRoutes!\n", __FILE__, __func__); + + char *ethernetName = NULL; + PPPoEDevice* pppoeDevice = (PPPoEDevice *)Interface().Device(); + if (pppoeDevice == NULL) + return; + ethernetName = pppoeDevice->EthernetIfnet()->name; + if (ethernetName == NULL) + return; + + net_domain* domain = sStackModule->get_domain(AF_INET); + net_interface* pppInterface = get_interface_by_name(domain, ethernetName); + + if (pppInterface == NULL) { + TRACE("%s::%s: pppInterface not found!\n", __FILE__, __func__); + return; + } + + net_interface_address* pppInterfaceAddress = NULL; + + while (sDatalinkModule->get_next_interface_address(pppInterface, + &pppInterfaceAddress)) { + if (pppInterfaceAddress->domain->family != AF_INET) + continue; + + net_route oldDefaultRoute; + oldDefaultRoute.destination = NULL; + oldDefaultRoute.mask = NULL; + oldDefaultRoute.gateway = NULL; + oldDefaultRoute.flags= RTF_DEFAULT; + oldDefaultRoute.interface_address = pppInterfaceAddress; + + status_t status = sDatalinkModule->remove_route(domain, &oldDefaultRoute); + // current: can not get the system default route so we fake + // one default route for delete + // Todo: save the oldDefaultRoute to fDefaultRoute + // restore the fDefaultRoute when ppp is down + + sDatalinkModule->put_interface_address(pppInterfaceAddress); + + if (status == B_OK) + dprintf("IPCP::RemoveRoutes: remove old default route OK!\n"); + else + dprintf("IPCP::RemoveRoutes: remove old default route Fail!\n"); + + break; + } + + if (fDefaultRoute) { struct sockaddr_in netmask; memset(&netmask, 0, sizeof(struct sockaddr_in)); - + netmask.sin_family = AF_INET; netmask.sin_addr.s_addr = fLocalRequests.netmask; netmask.sin_len = sizeof(struct sockaddr_in); - - if(rtrequest(RTM_DELETE, (struct sockaddr*) &netmask, - (struct sockaddr*) &fGateway, (struct sockaddr*) &netmask, - RTF_UP | RTF_GATEWAY, &fDefaultRoute) != B_OK) + + // if (rtrequest(RTM_DELETE, (struct sockaddr*) &netmask, + // (struct sockaddr*) &fGateway, (struct sockaddr*) &netmask, + // RTF_UP | RTF_GATEWAY, &fDefaultRoute) != B_OK) ERROR("IPCP: RemoveRoutes(): could not remove default/subnet route!\n"); - + fDefaultRoute = NULL; } } @@ -505,17 +657,17 @@ void IPCP::NewState(ppp_state next) { TRACE("IPCP: NewState(%d) state=%d\n", next, State()); - + // report state changes - if(State() == PPP_INITIAL_STATE && next != State()) + if (State() == PPP_INITIAL_STATE && next != State()) UpStarted(); - else if(State() == PPP_OPENED_STATE && next != State()) + else if (State() == PPP_OPENED_STATE && next != State()) DownStarted(); - + // maybe we do not need the timer anymore - if(next < PPP_CLOSING_STATE || next == PPP_OPENED_STATE) + if (next < PPP_CLOSING_STATE || next == PPP_OPENED_STATE) fNextTimeout = 0; - + fState = next; } @@ -524,22 +676,22 @@ void IPCP::TOGoodEvent() { #if DEBUG -printf("IPCP: TOGoodEvent() state=%d\n", State()); + printf("IPCP: TOGoodEvent() state=%d\n", State()); #endif - - switch(State()) { + + switch (State()) { case PPP_CLOSING_STATE: SendTerminateRequest(); break; - + case PPP_ACK_RCVD_STATE: NewState(PPP_REQ_SENT_STATE); - + case PPP_REQ_SENT_STATE: case PPP_ACK_SENT_STATE: SendConfigureRequest(); break; - + default: IllegalEvent(PPP_TO_GOOD_EVENT); } @@ -550,20 +702,20 @@ void IPCP::TOBadEvent() { TRACE("IPCP: TOBadEvent() state=%d\n", State()); - - switch(State()) { + + switch (State()) { case PPP_CLOSING_STATE: NewState(PPP_INITIAL_STATE); ReportDownEvent(); break; - + case PPP_REQ_SENT_STATE: case PPP_ACK_RCVD_STATE: case PPP_ACK_SENT_STATE: NewState(PPP_INITIAL_STATE); ReportUpFailedEvent(); break; - + default: IllegalEvent(PPP_TO_BAD_EVENT); } @@ -571,71 +723,76 @@ IPCP::TOBadEvent() void -IPCP::RCREvent(struct mbuf *packet) +IPCP::RCREvent(net_buffer *packet) { TRACE("IPCP: RCREvent() state=%d\n", State()); - + KPPPConfigurePacket request(packet); KPPPConfigurePacket nak(PPP_CONFIGURE_NAK); KPPPConfigurePacket reject(PPP_CONFIGURE_REJECT); - + + NetBufferHeaderReader bufferheader(packet); + if (bufferheader.Status() != B_OK) + return; + ppp_lcp_packet &lcpHeader = bufferheader.Data(); + // we should not use the same id as the peer - if(fID == mtod(packet, ppp_lcp_packet*)->id) + if (fID == lcpHeader.id) fID -= 128; - + nak.SetID(request.ID()); reject.SetID(request.ID()); - + // parse each item ppp_configure_item *item; in_addr_t *requestedAddress, *wishedAddress = NULL; - for(int32 index = 0; index < request.CountItems(); index++) { + for (int32 index = 0; index < request.CountItems(); index++) { item = request.ItemAt(index); - if(!item) + if (!item) continue; - + // addresses have special handling to reduce code size - switch(item->type) { + switch (item->type) { case IPCP_ADDRESSES: // abandoned by the standard case IPCP_ADDRESS: wishedAddress = &fPeerRequests.address; break; - + case IPCP_PRIMARY_DNS: wishedAddress = &fPeerRequests.primaryDNS; break; - + case IPCP_SECONDARY_DNS: wishedAddress = &fPeerRequests.secondaryDNS; break; } - + // now parse item - switch(item->type) { + switch (item->type) { case IPCP_ADDRESSES: // abandoned by the standard case IPCP_ADDRESS: case IPCP_PRIMARY_DNS: case IPCP_SECONDARY_DNS: - if(item->length != 6) { + if (item->length != 6) { // the packet is invalid - m_freem(packet); + gBufferModule->free(packet); NewState(PPP_INITIAL_STATE); ReportUpFailedEvent(); return; } - + requestedAddress = (in_addr_t*) item->data; - if(*wishedAddress == INADDR_ANY) { - if(*requestedAddress == INADDR_ANY) { + if (*wishedAddress == INADDR_ANY) { + if (*requestedAddress == INADDR_ANY) { // we do not have an address for you - m_freem(packet); + gBufferModule->free(packet); NewState(PPP_INITIAL_STATE); ReportUpFailedEvent(); return; } - } else if(*requestedAddress != *wishedAddress) { + } else if (*requestedAddress != *wishedAddress) { // we do not want this address ip_item ipItem; ipItem.type = item->type; @@ -644,18 +801,18 @@ IPCP::RCREvent(struct mbuf *packet) nak.AddItem((ppp_configure_item*) &ipItem); } break; - + // case IPCP_COMPRESSION_PROTOCOL: // TODO: implement me! // break; - + default: reject.AddItem(item); } } - + // append additional values to the nak - if(!request.ItemWithType(IPCP_ADDRESS) && fPeerRequests.address == INADDR_ANY) { + if (!request.ItemWithType(IPCP_ADDRESS) && fPeerRequests.address == INADDR_ANY) { // The peer did not provide us his address. Tell him to do so. ip_item ipItem; ipItem.type = IPCP_ADDRESS; @@ -663,430 +820,467 @@ IPCP::RCREvent(struct mbuf *packet) ipItem.address = INADDR_ANY; nak.AddItem((ppp_configure_item*) &ipItem); } - - if(nak.CountItems() > 0) { - RCRBadEvent(nak.ToMbuf(Interface().MRU(), Interface().PacketOverhead()), NULL); - m_freem(packet); - } else if(reject.CountItems() > 0) { - RCRBadEvent(NULL, reject.ToMbuf(Interface().MRU(), - Interface().PacketOverhead())); - m_freem(packet); + + if (nak.CountItems() > 0) { + RCRBadEvent(nak.ToNetBuffer(Interface().MRU()), NULL); + gBufferModule->free(packet); + } else if (reject.CountItems() > 0) { + RCRBadEvent(NULL, reject.ToNetBuffer(Interface().MRU())); + gBufferModule->free(packet); } else RCRGoodEvent(packet); } void -IPCP::RCRGoodEvent(struct mbuf *packet) +IPCP::RCRGoodEvent(net_buffer *packet) { TRACE("IPCP: RCRGoodEvent() state=%d\n", State()); - - switch(State()) { + + switch (State()) { case PPP_INITIAL_STATE: NewState(PPP_ACK_SENT_STATE); InitializeRestartCount(); SendConfigureRequest(); SendConfigureAck(packet); break; - + case PPP_REQ_SENT_STATE: NewState(PPP_ACK_SENT_STATE); - + case PPP_ACK_SENT_STATE: SendConfigureAck(packet); break; - + case PPP_ACK_RCVD_STATE: NewState(PPP_OPENED_STATE); SendConfigureAck(packet); ReportUpEvent(); break; - + case PPP_OPENED_STATE: NewState(PPP_ACK_SENT_STATE); SendConfigureRequest(); SendConfigureAck(packet); break; - + default: - m_freem(packet); + gBufferModule->free(packet); } } void -IPCP::RCRBadEvent(struct mbuf *nak, struct mbuf *reject) +IPCP::RCRBadEvent(net_buffer *nak, net_buffer *reject) { TRACE("IPCP: RCRBadEvent() state=%d\n", State()); - - switch(State()) { + + uint16 lcpHdrRejectLength = 0; + uint16 lcpHdrNakLength = 0; + + if (nak) { + NetBufferHeaderReader nakBufferHeaderReader(nak); + if (nakBufferHeaderReader.Status() != B_OK) + return; + ppp_lcp_packet &lcpNakPacket = nakBufferHeaderReader.Data(); + lcpHdrNakLength = lcpNakPacket.length; + } + + + if (reject) { + NetBufferHeaderReader rejectBufferHeaderReader(reject); + if (rejectBufferHeaderReader.Status() != B_OK) + return; + ppp_lcp_packet &lcpRejectPacket = rejectBufferHeaderReader.Data(); + lcpHdrRejectLength = lcpRejectPacket.length; + } + + switch (State()) { case PPP_OPENED_STATE: NewState(PPP_REQ_SENT_STATE); SendConfigureRequest(); - + case PPP_ACK_SENT_STATE: - if(State() == PPP_ACK_SENT_STATE) + if (State() == PPP_ACK_SENT_STATE) NewState(PPP_REQ_SENT_STATE); // OPENED_STATE might have set this already - + case PPP_INITIAL_STATE: case PPP_REQ_SENT_STATE: case PPP_ACK_RCVD_STATE: - if(nak && ntohs(mtod(nak, ppp_lcp_packet*)->length) > 3) + if (nak && ntohs(lcpHdrNakLength) > 3) SendConfigureNak(nak); - else if(reject && ntohs(mtod(reject, ppp_lcp_packet*)->length) > 3) + else if (reject && ntohs(lcpHdrRejectLength) > 3) SendConfigureNak(reject); return; // prevents the nak/reject from being m_freem()'d - + default: ; } - - if(nak) - m_freem(nak); - if(reject) - m_freem(reject); + + if (nak) + gBufferModule->free(nak); + if (reject) + gBufferModule->free(reject); } void -IPCP::RCAEvent(struct mbuf *packet) +IPCP::RCAEvent(net_buffer *packet) { - TRACE("IPCP: RCAEvent() state=%d\n", State()); - - if(fRequestID != mtod(packet, ppp_lcp_packet*)->id) { + ERROR("IPCP: RCAEvent() state=%d\n", State()); + + NetBufferHeaderReader bufferheader(packet); + if (bufferheader.Status() != B_OK) + return; + ppp_lcp_packet &lcpHeader = bufferheader.Data(); + if (fRequestID != lcpHeader.id) { // this packet is not a reply to our request - + // TODO: log this event - m_freem(packet); + gBufferModule->free(packet); return; } - + // parse this ack KPPPConfigurePacket ack(packet); ppp_configure_item *item; in_addr_t *requestedAddress, *wishedAddress = NULL, *configuredAddress = NULL; - for(int32 index = 0; index < ack.CountItems(); index++) { + for (int32 index = 0; index < ack.CountItems(); index++) { item = ack.ItemAt(index); - if(!item) + if (!item) continue; - + // addresses have special handling to reduce code size - switch(item->type) { + switch (item->type) { case IPCP_ADDRESSES: // abandoned by the standard case IPCP_ADDRESS: wishedAddress = &fLocalRequests.address; configuredAddress = &fLocalConfiguration.address; break; - + case IPCP_PRIMARY_DNS: wishedAddress = &fLocalRequests.primaryDNS; configuredAddress = &fLocalConfiguration.primaryDNS; break; - + case IPCP_SECONDARY_DNS: wishedAddress = &fLocalRequests.secondaryDNS; configuredAddress = &fLocalConfiguration.secondaryDNS; break; } - + // now parse item - switch(item->type) { + switch (item->type) { case IPCP_ADDRESSES: // abandoned by the standard case IPCP_ADDRESS: case IPCP_PRIMARY_DNS: case IPCP_SECONDARY_DNS: requestedAddress = (in_addr_t*) item->data; - if((*wishedAddress == INADDR_ANY && *requestedAddress != INADDR_ANY) + if ((*wishedAddress == INADDR_ANY && *requestedAddress != INADDR_ANY) || *wishedAddress == *requestedAddress) *configuredAddress = *requestedAddress; break; - + // case IPCP_COMPRESSION_PROTOCOL: // TODO: implement me // break; - + default: ; } } - + // if address was not specified we should select the given one - if(!ack.ItemWithType(IPCP_ADDRESS)) + if (!ack.ItemWithType(IPCP_ADDRESS)) fLocalConfiguration.address = fLocalRequests.address; - - - switch(State()) { + + + switch (State()) { case PPP_INITIAL_STATE: IllegalEvent(PPP_RCA_EVENT); break; - + case PPP_REQ_SENT_STATE: NewState(PPP_ACK_RCVD_STATE); InitializeRestartCount(); break; - + case PPP_ACK_RCVD_STATE: NewState(PPP_REQ_SENT_STATE); SendConfigureRequest(); break; - + case PPP_ACK_SENT_STATE: NewState(PPP_OPENED_STATE); InitializeRestartCount(); ReportUpEvent(); break; - + case PPP_OPENED_STATE: NewState(PPP_REQ_SENT_STATE); SendConfigureRequest(); break; - + default: ; } - - m_freem(packet); + + gBufferModule->free(packet); } void -IPCP::RCNEvent(struct mbuf *packet) +IPCP::RCNEvent(net_buffer *packet) { TRACE("IPCP: RCNEvent() state=%d\n", State()); - - if(fRequestID != mtod(packet, ppp_lcp_packet*)->id) { + + NetBufferHeaderReader bufferheader(packet); + if (bufferheader.Status() != B_OK) + return; + ppp_lcp_packet &lcpHeader = bufferheader.Data(); + + if (fRequestID != lcpHeader.id) { // this packet is not a reply to our request - + // TODO: log this event - m_freem(packet); + gBufferModule->free(packet); return; } - + // parse this nak/reject KPPPConfigurePacket nak_reject(packet); ppp_configure_item *item; in_addr_t *requestedAddress; - if(nak_reject.Code() == PPP_CONFIGURE_NAK) - for(int32 index = 0; index < nak_reject.CountItems(); index++) { + if (nak_reject.Code() == PPP_CONFIGURE_NAK) + for (int32 index = 0; index < nak_reject.CountItems(); index++) { item = nak_reject.ItemAt(index); - if(!item) + if (!item) continue; - - switch(item->type) { + + switch (item->type) { case IPCP_ADDRESSES: // abandoned by the standard case IPCP_ADDRESS: - if(item->length != 6) + if (item->length != 6) continue; - + requestedAddress = (in_addr_t*) item->data; - if(fLocalRequests.address == INADDR_ANY + if (fLocalRequests.address == INADDR_ANY && *requestedAddress != INADDR_ANY) fLocalConfiguration.address = *requestedAddress; // this will be used in our next request break; - + // case IPCP_COMPRESSION_PROTOCOL: // TODO: implement me! // break; - + case IPCP_PRIMARY_DNS: - if(item->length != 6) + if (item->length != 6) continue; - + requestedAddress = (in_addr_t*) item->data; - if(fRequestPrimaryDNS + if (fRequestPrimaryDNS && fLocalRequests.primaryDNS == INADDR_ANY && *requestedAddress != INADDR_ANY) fLocalConfiguration.primaryDNS = *requestedAddress; // this will be used in our next request break; - + case IPCP_SECONDARY_DNS: - if(item->length != 6) + if (item->length != 6) continue; - + requestedAddress = (in_addr_t*) item->data; - if(fRequestSecondaryDNS + if (fRequestSecondaryDNS && fLocalRequests.secondaryDNS == INADDR_ANY && *requestedAddress != INADDR_ANY) fLocalConfiguration.secondaryDNS = *requestedAddress; // this will be used in our next request break; - + default: ; } } - else if(nak_reject.Code() == PPP_CONFIGURE_REJECT) - for(int32 index = 0; index < nak_reject.CountItems(); index++) { + else if (nak_reject.Code() == PPP_CONFIGURE_REJECT) + for (int32 index = 0; index < nak_reject.CountItems(); index++) { item = nak_reject.ItemAt(index); - if(!item) + if (!item) continue; - - switch(item->type) { + + switch (item->type) { // case IPCP_COMPRESSION_PROTOCOL: // TODO: implement me! // break; - + default: // DNS and addresses must be supported if we set them to auto - m_freem(packet); + gBufferModule->free(packet); NewState(PPP_INITIAL_STATE); ReportUpFailedEvent(); return; } } - - switch(State()) { + + switch (State()) { case PPP_INITIAL_STATE: IllegalEvent(PPP_RCN_EVENT); break; - + case PPP_REQ_SENT_STATE: case PPP_ACK_SENT_STATE: InitializeRestartCount(); - + case PPP_ACK_RCVD_STATE: case PPP_OPENED_STATE: - if(State() == PPP_ACK_RCVD_STATE || State() == PPP_OPENED_STATE) + if (State() == PPP_ACK_RCVD_STATE || State() == PPP_OPENED_STATE) NewState(PPP_REQ_SENT_STATE); SendConfigureRequest(); break; - + default: ; } - - m_freem(packet); + + gBufferModule->free(packet); } void -IPCP::RTREvent(struct mbuf *packet) +IPCP::RTREvent(net_buffer *packet) { TRACE("IPCP: RTREvent() state=%d\n", State()); - + + NetBufferHeaderReader bufferheader(packet); + if (bufferheader.Status() != B_OK) + return; + ppp_lcp_packet &lcpHeader = bufferheader.Data(); + // we should not use the same ID as the peer - if(fID == mtod(packet, ppp_lcp_packet*)->id) + if (fID == lcpHeader.id) fID -= 128; - - switch(State()) { + + switch (State()) { case PPP_INITIAL_STATE: IllegalEvent(PPP_RTR_EVENT); break; - + case PPP_ACK_RCVD_STATE: case PPP_ACK_SENT_STATE: NewState(PPP_REQ_SENT_STATE); - + case PPP_CLOSING_STATE: case PPP_REQ_SENT_STATE: SendTerminateAck(packet); return; - // do not m_freem() packet - + // do not free packet + case PPP_OPENED_STATE: NewState(PPP_CLOSING_STATE); ResetRestartCount(); SendTerminateAck(packet); return; - // do not m_freem() packet - + // do not free packet + default: ; } - - m_freem(packet); + + gBufferModule->free(packet); } void -IPCP::RTAEvent(struct mbuf *packet) +IPCP::RTAEvent(net_buffer *packet) { TRACE("IPCP: RTAEvent() state=%d\n", State()); - - if(fTerminateID != mtod(packet, ppp_lcp_packet*)->id) { + + NetBufferHeaderReader bufferheader(packet); + if (bufferheader.Status() != B_OK) + return; + ppp_lcp_packet &lcpHeader = bufferheader.Data(); + if (fTerminateID != lcpHeader.id) { // this packet is not a reply to our request - + // TODO: log this event - m_freem(packet); + gBufferModule->free(packet); return; } - - switch(State()) { + + switch (State()) { case PPP_INITIAL_STATE: IllegalEvent(PPP_RTA_EVENT); break; - + case PPP_CLOSING_STATE: NewState(PPP_INITIAL_STATE); ReportDownEvent(); break; - + case PPP_ACK_RCVD_STATE: NewState(PPP_REQ_SENT_STATE); break; - + case PPP_OPENED_STATE: NewState(PPP_REQ_SENT_STATE); SendConfigureRequest(); break; - + default: ; } - - m_freem(packet); + + gBufferModule->free(packet); } void -IPCP::RUCEvent(struct mbuf *packet) +IPCP::RUCEvent(net_buffer *packet) { TRACE("IPCP: RUCEvent() state=%d\n", State()); - + SendCodeReject(packet); } void -IPCP::RXJBadEvent(struct mbuf *packet) +IPCP::RXJBadEvent(net_buffer *packet) { TRACE("IPCP: RXJBadEvent() state=%d\n", State()); - - switch(State()) { + + switch (State()) { case PPP_INITIAL_STATE: IllegalEvent(PPP_RXJ_BAD_EVENT); break; - + case PPP_CLOSING_STATE: NewState(PPP_INITIAL_STATE); ReportDownEvent(); break; - + case PPP_REQ_SENT_STATE: case PPP_ACK_RCVD_STATE: case PPP_ACK_SENT_STATE: NewState(PPP_INITIAL_STATE); ReportUpFailedEvent(); break; - + case PPP_OPENED_STATE: NewState(PPP_CLOSING_STATE); InitializeRestartCount(); SendTerminateRequest(); break; - + default: ; } - - m_freem(packet); + + gBufferModule->free(packet); } @@ -1105,9 +1299,9 @@ IPCP::ReportUpFailedEvent() // reset configurations memset(&fLocalConfiguration, 0, sizeof(ipcp_configuration)); memset(&fPeerConfiguration, 0, sizeof(ipcp_configuration)); - + UpdateAddresses(); - + UpFailedEvent(); } @@ -1116,7 +1310,7 @@ void IPCP::ReportUpEvent() { UpdateAddresses(); - + UpEvent(); } @@ -1127,9 +1321,11 @@ IPCP::ReportDownEvent() // reset configurations memset(&fLocalConfiguration, 0, sizeof(ipcp_configuration)); memset(&fPeerConfiguration, 0, sizeof(ipcp_configuration)); - - UpdateAddresses(); - + + // don't update address if connect on demand is enabled + dprintf("ppp down, and leaving old address and rotues\n"); + // UpdateAddresses(); + DownEvent(); } @@ -1156,137 +1352,150 @@ bool IPCP::SendConfigureRequest() { TRACE("IPCP: SendConfigureRequest() state=%d\n", State()); - + --fRequestCounter; fNextTimeout = system_time() + kIPCPStateMachineTimeout; - + KPPPConfigurePacket request(PPP_CONFIGURE_REQUEST); request.SetID(NextID()); fRequestID = request.ID(); ip_item ipItem; ipItem.length = 6; - + // add address ipItem.type = IPCP_ADDRESS; - if(fLocalRequests.address == INADDR_ANY) - ipItem.address = fLocalConfiguration.address; + if (fLocalRequests.address == INADDR_ANY) + ipItem.address = (fLocalConfiguration.address); else - ipItem.address = fLocalRequests.address; + ipItem.address =(fLocalRequests.address); request.AddItem((ppp_configure_item*) &ipItem); - - TRACE("IPCP: SCR: confaddr=%lX; reqaddr=%lX; addr=%lX\n", + + TRACE("IPCP: SCR: confaddr=%X; reqaddr=%X; addr=%X\n", fLocalConfiguration.address, fLocalRequests.address, ((ip_item*)request.ItemAt(0))->address); - + // add primary DNS (if needed) - if(fRequestPrimaryDNS && fLocalRequests.primaryDNS == INADDR_ANY) { + if (fRequestPrimaryDNS && fLocalRequests.primaryDNS == INADDR_ANY) { ipItem.type = IPCP_PRIMARY_DNS; ipItem.address = fLocalConfiguration.primaryDNS; // at first this is 0.0.0.0, but a nak might have set it to a correct value request.AddItem((ppp_configure_item*) &ipItem); } - + // add secondary DNS (if needed) - if(fRequestSecondaryDNS && fLocalRequests.primaryDNS == INADDR_ANY) { + if (fRequestSecondaryDNS && fLocalRequests.primaryDNS == INADDR_ANY) { ipItem.type = IPCP_SECONDARY_DNS; ipItem.address = fLocalConfiguration.secondaryDNS; // at first this is 0.0.0.0, but a nak might have set it to a correct value request.AddItem((ppp_configure_item*) &ipItem); } - + // TODO: add VJC support - - return Send(request.ToMbuf(Interface().MRU(), - Interface().PacketOverhead())) == B_OK; + + return Send(request.ToNetBuffer(Interface().MRU())) == B_OK; } bool -IPCP::SendConfigureAck(struct mbuf *packet) +IPCP::SendConfigureAck(net_buffer *packet) { TRACE("IPCP: SendConfigureAck() state=%d\n", State()); - - if(!packet) + + if (!packet) return false; - - mtod(packet, ppp_lcp_packet*)->code = PPP_CONFIGURE_ACK; + + NetBufferHeaderReader bufferheader(packet); + if (bufferheader.Status() != B_OK) + return false; + ppp_lcp_packet &lcpheader = bufferheader.Data(); + lcpheader.code = PPP_CONFIGURE_ACK; + + bufferheader.Sync(); + KPPPConfigurePacket ack(packet); - + // verify items ppp_configure_item *item; in_addr_t *requestedAddress, *wishedAddress = NULL, *configuredAddress = NULL; - for(int32 index = 0; index < ack.CountItems(); index++) { + for (int32 index = 0; index < ack.CountItems(); index++) { item = ack.ItemAt(index); - if(!item) + if (!item) continue; - + // addresses have special handling to reduce code size - switch(item->type) { + switch (item->type) { case IPCP_ADDRESSES: // abandoned by the standard case IPCP_ADDRESS: wishedAddress = &fPeerRequests.address; configuredAddress = &fPeerConfiguration.address; break; - + case IPCP_PRIMARY_DNS: wishedAddress = &fPeerRequests.primaryDNS; configuredAddress = &fPeerConfiguration.primaryDNS; break; - + case IPCP_SECONDARY_DNS: wishedAddress = &fPeerRequests.secondaryDNS; configuredAddress = &fPeerConfiguration.secondaryDNS; break; } - + // now parse item - switch(item->type) { + switch (item->type) { case IPCP_ADDRESSES: // abandoned by the standard case IPCP_ADDRESS: case IPCP_PRIMARY_DNS: case IPCP_SECONDARY_DNS: requestedAddress = (in_addr_t*) item->data; - if((*wishedAddress == INADDR_ANY && *requestedAddress != INADDR_ANY) + if ((*wishedAddress == INADDR_ANY && *requestedAddress != INADDR_ANY) || *wishedAddress == *requestedAddress) *configuredAddress = *requestedAddress; break; - + // case IPCP_COMPRESSION_PROTOCOL: // TODO: implement me! // break; - + default: ; } } - + // if address was not specified we should select the given one - if(!ack.ItemWithType(IPCP_ADDRESS)) + if (!ack.ItemWithType(IPCP_ADDRESS)) fPeerConfiguration.address = fPeerRequests.address; - + return Send(packet) == B_OK; } bool -IPCP::SendConfigureNak(struct mbuf *packet) +IPCP::SendConfigureNak(net_buffer *packet) { TRACE("IPCP: SendConfigureNak() state=%d\n", State()); - - if(!packet) + + if (!packet) return false; - - ppp_lcp_packet *nak = mtod(packet, ppp_lcp_packet*); - if(nak->code == PPP_CONFIGURE_NAK) { - if(fNakCounter == 0) { + + NetBufferHeaderReader bufferheader(packet); + if (bufferheader.Status() != B_OK) + return false; + + ppp_lcp_packet &nak = bufferheader.Data(); + + if (nak.code == PPP_CONFIGURE_NAK) { + if (fNakCounter == 0) { // We sent enough naks. Let's try a reject. - nak->code = PPP_CONFIGURE_REJECT; + nak.code = PPP_CONFIGURE_REJECT; } else --fNakCounter; } - + + bufferheader.Sync(); + return Send(packet) == B_OK; } @@ -1295,85 +1504,82 @@ bool IPCP::SendTerminateRequest() { TRACE("IPCP: SendTerminateRequest() state=%d\n", State()); - + --fTerminateCounter; fNextTimeout = system_time() + kIPCPStateMachineTimeout; - - struct mbuf *packet = m_gethdr(MT_DATA); - if(!packet) + + net_buffer *packet = gBufferModule->create(256); + if (!packet) return false; - - packet->m_pkthdr.len = packet->m_len = 4; - - // reserve some space for other protocols - packet->m_data += Interface().PacketOverhead(); - - ppp_lcp_packet *request = mtod(packet, ppp_lcp_packet*); + + ppp_lcp_packet *request; + status_t status = gBufferModule->append_size(packet, 1492, (void **)(&request)); + if (status != B_OK) + return false; + request->code = PPP_TERMINATE_REQUEST; request->id = fTerminateID = NextID(); request->length = htons(4); - + + status = gBufferModule->trim(packet, 4); + if (status != B_OK) + return false; + return Send(packet) == B_OK; } bool -IPCP::SendTerminateAck(struct mbuf *request) +IPCP::SendTerminateAck(net_buffer *request) { TRACE("IPCP: SendTerminateAck() state=%d\n", State()); - - struct mbuf *reply = request; - - ppp_lcp_packet *ack; - - if(!reply) { - reply = m_gethdr(MT_DATA); - if(!reply) + + net_buffer *reply = request; + + if (!reply) { + reply = gBufferModule->create(256); + ppp_lcp_packet *ack; + status_t status = gBufferModule->append_size(reply, 1492, (void **)(&ack)); + if (status != B_OK) { + gBufferModule->free(reply); return false; - - reply->m_data += Interface().PacketOverhead(); - reply->m_pkthdr.len = reply->m_len = 4; - - ack = mtod(reply, ppp_lcp_packet*); + } ack->id = NextID(); - } else - ack = mtod(reply, ppp_lcp_packet*); - - ack->code = PPP_TERMINATE_ACK; - ack->length = htons(4); - + ack->code = PPP_TERMINATE_ACK; + ack->length = htons(4); + gBufferModule->trim(reply, 4); + } else { + NetBufferHeaderReader bufferHeader(reply); + if (bufferHeader.Status() < B_OK) + return false; + ppp_lcp_packet &ack = bufferHeader.Data(); + ack.code = PPP_TERMINATE_ACK; + ack.length = htons(4); + } + return Send(reply) == B_OK; } bool -IPCP::SendCodeReject(struct mbuf *packet) +IPCP::SendCodeReject(net_buffer *packet) { TRACE("IPCP: SendCodeReject() state=%d\n", State()); - - if(!packet) + + if (!packet) return false; - - M_PREPEND(packet, 4); - // add some space for the header - - // adjust packet if too big - int32 adjust = Interface().MRU(); - if(packet->m_flags & M_PKTHDR) { - adjust -= packet->m_pkthdr.len; - } else - adjust -= packet->m_len; - - if(adjust < 0) - m_adj(packet, adjust); - - ppp_lcp_packet *reject = mtod(packet, ppp_lcp_packet*); - reject->code = PPP_CODE_REJECT; - reject->id = NextID(); - if(packet->m_flags & M_PKTHDR) - reject->length = htons(packet->m_pkthdr.len); - else - reject->length = htons(packet->m_len); - + + NetBufferPrepend bufferHeader(packet); + if (bufferHeader.Status() != B_OK) + return false; + + ppp_lcp_packet &reject = bufferHeader.Data(); + + reject.code = PPP_CODE_REJECT; + reject.id = NextID(); + reject.length = htons(packet->size); + + bufferHeader.Sync(); + return Send(packet) == B_OK; } diff --git a/src/add-ons/kernel/network/ppp/ipcp/Protocol.h b/src/add-ons/kernel/network/ppp/ipcp/Protocol.h index 626619b9a2..f8dd13f4a5 100644 --- a/src/add-ons/kernel/network/ppp/ipcp/Protocol.h +++ b/src/add-ons/kernel/network/ppp/ipcp/Protocol.h @@ -9,9 +9,11 @@ #include #include -#include #include +#include +#include +#include #define IPCP_PROTOCOL 0x8021 @@ -60,46 +62,46 @@ class IPCP : public KPPPProtocol { public: IPCP(KPPPInterface& interface, driver_parameter *settings); virtual ~IPCP(); - + virtual void Uninit(); - + ppp_state State() const { return fState; } - + virtual status_t StackControl(uint32 op, void *data); - + virtual bool Up(); virtual bool Down(); - - virtual status_t Send(struct mbuf *packet, + + virtual status_t Send(net_buffer *packet, uint16 protocolNumber = IPCP_PROTOCOL); - virtual status_t Receive(struct mbuf *packet, uint16 protocolNumber); - status_t ReceiveIPPacket(struct mbuf *packet, uint16 protocolNumber); + virtual status_t Receive(net_buffer *packet, uint16 protocolNumber); + status_t ReceiveIPPacket(net_buffer *packet, uint16 protocolNumber); virtual void Pulse(); private: bool ParseSideRequests(const driver_parameter *requests, ppp_side side); void UpdateAddresses(); void RemoveRoutes(); - + // for state machine void NewState(ppp_state next); uint8 NextID(); // return the next id for IPCP packets - + // events void TOGoodEvent(); void TOBadEvent(); - void RCREvent(struct mbuf *packet); - void RCRGoodEvent(struct mbuf *packet); - void RCRBadEvent(struct mbuf *nak, struct mbuf *reject); - void RCAEvent(struct mbuf *packet); - void RCNEvent(struct mbuf *packet); - void RTREvent(struct mbuf *packet); - void RTAEvent(struct mbuf *packet); - void RUCEvent(struct mbuf *packet); - void RXJBadEvent(struct mbuf *packet); - + void RCREvent(net_buffer *packet); + void RCRGoodEvent(net_buffer *packet); + void RCRBadEvent(net_buffer *nak, net_buffer *reject); + void RCAEvent(net_buffer *packet); + void RCNEvent(net_buffer *packet); + void RTREvent(net_buffer *packet); + void RTAEvent(net_buffer *packet); + void RUCEvent(net_buffer *packet); + void RXJBadEvent(net_buffer *packet); + // actions void IllegalEvent(ppp_event event); void ReportUpFailedEvent(); @@ -108,27 +110,27 @@ class IPCP : public KPPPProtocol { void InitializeRestartCount(); void ResetRestartCount(); bool SendConfigureRequest(); - bool SendConfigureAck(struct mbuf *packet); - bool SendConfigureNak(struct mbuf *packet); + bool SendConfigureAck(net_buffer *packet); + bool SendConfigureNak(net_buffer *packet); bool SendTerminateRequest(); - bool SendTerminateAck(struct mbuf *request = NULL); - bool SendCodeReject(struct mbuf *packet); + bool SendTerminateAck(net_buffer *request = NULL); + bool SendCodeReject(net_buffer *packet); private: ipcp_configuration fLocalConfiguration, fPeerConfiguration; ipcp_requests fLocalRequests, fPeerRequests; - + // default route struct sockaddr_in fGateway; - rtentry *fDefaultRoute; - + net_route *fDefaultRoute; + // used for local requests bool fRequestPrimaryDNS, fRequestSecondaryDNS; - + // for state machine ppp_state fState; - vint32 fID; - + int32 fID; + // counters and timers int32 fMaxRequest, fMaxTerminate, fMaxNak; int32 fRequestCounter, fTerminateCounter, fNakCounter; diff --git a/src/add-ons/kernel/network/ppp/ipcp/ipcp.cpp b/src/add-ons/kernel/network/ppp/ipcp/ipcp.cpp index fbf413787f..bfa2f4292d 100644 --- a/src/add-ons/kernel/network/ppp/ipcp/ipcp.cpp +++ b/src/add-ons/kernel/network/ppp/ipcp/ipcp.cpp @@ -5,21 +5,24 @@ #include #include -#include -#include +#include +#include +#include + +#include #include #include #include "Protocol.h" +#define IPCP_MODULE_NAME NETWORK_MODULES_ROOT "/ppp/ipcp" -#define IPCP_MODULE_NAME NETWORK_MODULES_ROOT "ppp/ipcp" - -struct protosw *gProto[IPPROTO_MAX]; -struct core_module_info *core = NULL; status_t std_ops(int32 op, ...); +net_stack_module_info *gStackModule = NULL; +net_buffer_module_info *gBufferModule = NULL; + // XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX // TODO: Remove isascii() (needed for inet_aton()) when our kernel is finished! @@ -28,7 +31,7 @@ extern "C" int isascii(char c) { - return c & ~0x7f == 0; // If c is a 7 bit value. + return ((c & (~0x7f)) == 0); // If c is a 7 bit value. } // XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX @@ -38,22 +41,22 @@ bool add_to(KPPPInterface& mainInterface, KPPPInterface *subInterface, driver_parameter *settings, ppp_module_key_type type) { - if(type != PPP_PROTOCOL_KEY_TYPE) + if (type != PPP_PROTOCOL_KEY_TYPE) return B_ERROR; - + IPCP *ipcp; bool success; - if(subInterface) { + if (subInterface) { ipcp = new IPCP(*subInterface, settings); success = subInterface->AddProtocol(ipcp); } else { ipcp = new IPCP(mainInterface, settings); success = mainInterface.AddProtocol(ipcp); } - + TRACE("IPCP: add_to(): %s\n", success && ipcp && ipcp->InitCheck() == B_OK ? "OK" : "ERROR"); - + return success && ipcp && ipcp->InitCheck() == B_OK; } @@ -71,24 +74,30 @@ static ppp_module_info ipcp_module = { _EXPORT status_t -std_ops(int32 op, ...) +std_ops(int32 op, ...) { - switch(op) { + switch (op) { case B_MODULE_INIT: - if(get_module(NET_CORE_MODULE_NAME, (module_info**) &core) != B_OK) + if (get_module(NET_STACK_MODULE_NAME, + (module_info**) &gStackModule) != B_OK) return B_ERROR; - memset(gProto, 0, sizeof(struct protosw*) * IPPROTO_MAX); - add_protosw(gProto, NET_LAYER1); - return B_OK; - + if (get_module(NET_BUFFER_MODULE_NAME, + (module_info **)&gBufferModule) != B_OK) { + put_module(NET_STACK_MODULE_NAME); + return B_ERROR; + } + return B_OK; + break; + case B_MODULE_UNINIT: - put_module(NET_CORE_MODULE_NAME); - break; - + put_module(NET_BUFFER_MODULE_NAME); + put_module(NET_STACK_MODULE_NAME); + break; + default: return B_ERROR; } - + return B_OK; } diff --git a/src/add-ons/kernel/network/ppp/pap/Jamfile b/src/add-ons/kernel/network/ppp/pap/Jamfile index f6781b512d..935a09020f 100644 --- a/src/add-ons/kernel/network/ppp/pap/Jamfile +++ b/src/add-ons/kernel/network/ppp/pap/Jamfile @@ -1,6 +1,7 @@ SubDir HAIKU_TOP src add-ons kernel network ppp pap ; SetSubDirSupportedPlatformsBeOSCompatible ; +SubDirC++Flags -fno-rtti ; if $(TARGET_PLATFORM) != haiku { UseHeaders [ FDirName $(HAIKU_TOP) headers posix ] : true ; @@ -8,20 +9,13 @@ if $(TARGET_PLATFORM) != haiku { # Unfortunately we get more than we want, namely all POSIX headers. } -# for kernel_cpp.h and BLocker -UseHeaders [ FDirName $(HAIKU_TOP) headers cpp ] : true ; +UsePrivateKernelHeaders ; UsePrivateHeaders net ; UsePrivateHeaders [ FDirName kernel ] ; UsePrivateHeaders [ FDirName kernel util ] ; UseHeaders [ FDirName $(HAIKU_TOP) src add-ons kernel network ppp shared libkernelppp headers ] : true ; - -{ - SubDirC++Flags -fno-rtti ; -} - - KernelAddon pap : pap.cpp Protocol.cpp @@ -31,5 +25,5 @@ LinkAgainst pap : libkernelppp.a ; # Installation HaikuInstall install-networking - : /boot/home/config/add-ons/kernel/obos_network/ppp + : /boot/home/config/add-ons/kernel/haiku_network/ppp : pap ; diff --git a/src/add-ons/kernel/network/ppp/pap/Protocol.cpp b/src/add-ons/kernel/network/ppp/pap/Protocol.cpp index 29d87606d9..904f49bf18 100644 --- a/src/add-ons/kernel/network/ppp/pap/Protocol.cpp +++ b/src/add-ons/kernel/network/ppp/pap/Protocol.cpp @@ -9,9 +9,9 @@ #include #include -#include -#include +#include +#include static const bigtime_t kPAPTimeout = 3000000; // 3 seconds @@ -34,20 +34,28 @@ PAPHandler::PAPHandler(PAP& owner, KPPPInterface& interface) } +status_t +PAPHandler::SendingAck(const KPPPConfigurePacket& ack) +{ + TRACE("%s::%s: We should activate PAP Protocol here\n", __FILE__, __func__); + return KPPPOptionHandler::SendingAck(ack); +} + + status_t PAPHandler::AddToRequest(KPPPConfigurePacket& request) { // only local authenticators send requests to peer - if(Owner().Side() != PPP_PEER_SIDE) + if (Owner().Side() != PPP_PEER_SIDE) return B_OK; - + authentication_item item; item.type = kAuthenticationType; item.length = sizeof(item); item.protocolNumber = htons(PAP_PROTOCOL); - + request.AddItem((ppp_configure_item*) &item); - + return B_OK; } @@ -57,15 +65,15 @@ PAPHandler::ParseRequest(const KPPPConfigurePacket& request, int32 index, KPPPConfigurePacket& nak, KPPPConfigurePacket& reject) { // only local authenticators handle requests from peer - if(Owner().Side() != PPP_LOCAL_SIDE) + if (Owner().Side() != PPP_LOCAL_SIDE) return B_OK; - + // we merely check if the values are correct authentication_item *item = (authentication_item*) request.ItemAt(index); - if(item->type != kAuthenticationType + if (item->type != kAuthenticationType || item->length != 4 || ntohs(item->protocolNumber) != PAP_PROTOCOL) return B_ERROR; - + return B_OK; } @@ -92,9 +100,9 @@ PAP::~PAP() status_t PAP::InitCheck() const { - if(Side() != PPP_LOCAL_SIDE && Side() != PPP_PEER_SIDE) + if (Side() != PPP_LOCAL_SIDE && Side() != PPP_PEER_SIDE) return B_ERROR; - + return KPPPProtocol::InitCheck(); } @@ -103,14 +111,14 @@ bool PAP::Up() { TRACE("PAP: Up() state=%d\n", State()); - - switch(State()) { + + switch (State()) { case INITIAL: - if(Side() == PPP_LOCAL_SIDE) { + if (Side() == PPP_LOCAL_SIDE) { NewState(REQ_SENT); InitializeRestartCount(); SendRequest(); - } else if(Side() == PPP_PEER_SIDE) { + } else if (Side() == PPP_PEER_SIDE) { NewState(WAITING_FOR_REQ); InitializeRestartCount(); fNextTimeout = system_time() + kPAPTimeout; @@ -119,11 +127,11 @@ PAP::Up() return false; } break; - + default: ; } - + return true; } @@ -132,8 +140,8 @@ bool PAP::Down() { TRACE("PAP: Down() state=%d\n", State()); - - switch(Interface().Phase()) { + + switch (Interface().Phase()) { case PPP_DOWN_PHASE: // interface finished terminating case PPP_ESTABLISHED_PHASE: @@ -141,82 +149,83 @@ PAP::Down() NewState(INITIAL); DownEvent(); break; - + /* case PPP_TERMINATION_PHASE: // interface is terminating break; - + case PPP_ESTABLISHMENT_PHASE: // interface is reconfiguring break; -*/ +*/ default: ; } - + return true; } status_t -PAP::Send(struct mbuf *packet, uint16 protocolNumber) +PAP::Send(net_buffer *packet, uint16 protocolNumber) { // we do not encapsulate PAP packets - m_freem(packet); + TRACE("PAP: we should not send packet!\n"); + if (packet != NULL) + gBufferModule->free(packet); return B_ERROR; } status_t -PAP::Receive(struct mbuf *packet, uint16 protocolNumber) +PAP::Receive(net_buffer *packet, uint16 protocolNumber) { - if(!packet) + if (!packet) return B_ERROR; - - if(protocolNumber != PAP_PROTOCOL) + + if (protocolNumber != PAP_PROTOCOL) return PPP_UNHANDLED; - - ppp_lcp_packet *data = mtod(packet, ppp_lcp_packet*); - + + NetBufferHeaderReader bufferheader(packet); + if (bufferheader.Status() != B_OK) + return B_ERROR; + ppp_lcp_packet &data = bufferheader.Data(); + // check if the packet is meant for us: // only peer authenticators handle requests - if(data->code == PPP_CONFIGURE_REQUEST && Side() != PPP_PEER_SIDE) + if (data.code == PPP_CONFIGURE_REQUEST && Side() != PPP_PEER_SIDE) return PPP_UNHANDLED; // only local authenticators handle acks and naks - if((data->code == PPP_CONFIGURE_ACK || data->code == PPP_CONFIGURE_NAK) + if ((data.code == PPP_CONFIGURE_ACK || data.code == PPP_CONFIGURE_NAK) && Side() != PPP_LOCAL_SIDE) return PPP_UNHANDLED; - + // remove padding - int32 length = packet->m_len; - if(packet->m_flags & M_PKTHDR) - length = packet->m_pkthdr.len; - length -= ntohs(data->length); - if(length) - m_adj(packet, -length); - - if(ntohs(data->length) < 4) + int32 length = packet->size; + length -= ntohs(data.length); + + if (ntohs(data.length) < 4) return B_ERROR; - + // packet is freed by event methods // code values are the same as for LCP (but very reduced) - switch(data->code) { + switch (data.code) { case PPP_CONFIGURE_REQUEST: RREvent(packet); break; - + case PPP_CONFIGURE_ACK: RAEvent(packet); break; - + case PPP_CONFIGURE_NAK: RNEvent(packet); break; - + default: return PPP_UNHANDLED; } - + return B_OK; } @@ -224,19 +233,19 @@ PAP::Receive(struct mbuf *packet, uint16 protocolNumber) void PAP::Pulse() { - if(fNextTimeout == 0 || fNextTimeout > system_time()) + if (fNextTimeout == 0 || fNextTimeout > system_time()) return; fNextTimeout = 0; - - switch(State()) { + + switch (State()) { case REQ_SENT: case WAITING_FOR_REQ: - if(fRequestCounter <= 0) + if (fRequestCounter <= 0) TOBadEvent(); else TOGoodEvent(); break; - + default: ; } @@ -254,22 +263,22 @@ void PAP::NewState(pap_state next) { TRACE("PAP: NewState(%d) state=%d\n", next, State()); - + // state changes - if(State() == INITIAL && next != State()) { - if(Side() == PPP_LOCAL_SIDE) + if (State() == INITIAL && next != State()) { + if (Side() == PPP_LOCAL_SIDE) Interface().StateMachine().LocalAuthenticationRequested(); - else if(Side() == PPP_PEER_SIDE) + else if (Side() == PPP_PEER_SIDE) Interface().StateMachine().PeerAuthenticationRequested(); - + UpStarted(); - } else if(State() == ACCEPTED && next != State()) + } else if (State() == ACCEPTED && next != State()) DownStarted(); - + // maybe we do not need the timer anymore - if(next == INITIAL || next == ACCEPTED) + if (next == INITIAL || next == ACCEPTED) fNextTimeout = 0; - + fState = next; } @@ -278,16 +287,16 @@ void PAP::TOGoodEvent() { TRACE("PAP: TOGoodEvent() state=%d\n", State()); - - switch(State()) { + + switch (State()) { case REQ_SENT: SendRequest(); break; - + case WAITING_FOR_REQ: fNextTimeout = system_time() + kPAPTimeout; break; - + default: ; } @@ -298,21 +307,21 @@ void PAP::TOBadEvent() { TRACE("PAP: TOBadEvent() state=%d\n", State()); - - switch(State()) { + + switch (State()) { case REQ_SENT: case WAITING_FOR_REQ: NewState(INITIAL); - if(State() == REQ_SENT) + if (State() == REQ_SENT) Interface().StateMachine().LocalAuthenticationDenied( Interface().Username()); else Interface().StateMachine().PeerAuthenticationDenied( Interface().Username()); - + UpFailedEvent(); break; - + default: ; } @@ -320,27 +329,30 @@ PAP::TOBadEvent() void -PAP::RREvent(struct mbuf *packet) +PAP::RREvent(net_buffer *packet) { TRACE("PAP: RREvent() state=%d\n", State()); - - ppp_lcp_packet *request = mtod(packet, ppp_lcp_packet*); - int32 length = ntohs(request->length); - uint8 *data = request->data; + + NetBufferHeaderReader bufferheader(packet); + if (bufferheader.Status() != B_OK) + return; + ppp_lcp_packet &request = bufferheader.Data(); + int32 length = ntohs(request.length); + uint8 *data = request.data; uint8 *userLength = data; uint8 *passwordLength = data + 1 + data[0]; - + // make sure the length values are all okay - if(6 + *userLength + *passwordLength > length) { - m_freem(packet); + if (6 + *userLength + *passwordLength > length) { + gBufferModule->free(packet); return; } - + char *peerUsername = (char*) userLength + 1, *peerPassword = (char*) passwordLength + 1; const char *username = Interface().Username(), *password = Interface().Password(); - - if(*userLength == strlen(username) && *passwordLength == strlen(password) + + if (*userLength == strlen(username) && *passwordLength == strlen(password) && !strncmp(peerUsername, username, *userLength) && !strncmp(peerPassword, password, *passwordLength)) { NewState(ACCEPTED); @@ -357,60 +369,68 @@ PAP::RREvent(struct mbuf *packet) void -PAP::RAEvent(struct mbuf *packet) +PAP::RAEvent(net_buffer *packet) { TRACE("PAP: RAEvent() state=%d\n", State()); - - if(fRequestID != mtod(packet, ppp_lcp_packet*)->id) { + + NetBufferHeaderReader bufferheader(packet); + if (bufferheader.Status() != B_OK) + return; + ppp_lcp_packet &lcp_hdr = bufferheader.Data(); + if (fRequestID != lcp_hdr.id) { // this packet is not a reply to our request - + // TODO: log this event - m_freem(packet); + gBufferModule->free(packet); return; } - - switch(State()) { + + switch (State()) { case REQ_SENT: NewState(ACCEPTED); Interface().StateMachine().LocalAuthenticationAccepted( Interface().Username()); UpEvent(); break; - + default: ; } - - m_freem(packet); + + gBufferModule->free(packet); } void -PAP::RNEvent(struct mbuf *packet) +PAP::RNEvent(net_buffer *packet) { TRACE("PAP: RNEvent() state=%d\n", State()); - - if(fRequestID != mtod(packet, ppp_lcp_packet*)->id) { + + NetBufferHeaderReader bufferheader(packet); + if (bufferheader.Status() != B_OK) + return; + ppp_lcp_packet &lcp_hdr = bufferheader.Data(); + if (fRequestID != lcp_hdr.id) { // this packet is not a reply to our request - + // TODO: log this event - m_freem(packet); + gBufferModule->free(packet); return; } - - switch(State()) { + + switch (State()) { case REQ_SENT: NewState(INITIAL); Interface().StateMachine().LocalAuthenticationDenied( Interface().Username()); UpFailedEvent(); break; - + default: ; } - - m_freem(packet); + + gBufferModule->free(packet); } @@ -425,72 +445,76 @@ bool PAP::SendRequest() { TRACE("PAP: SendRequest() state=%d\n", State()); - + --fRequestCounter; fNextTimeout = system_time() + kPAPTimeout; - - struct mbuf *packet = m_gethdr(MT_DATA); - if(!packet) + + net_buffer *packet = gBufferModule->create(256); + if (!packet) return false; - + + ppp_lcp_packet *request; + gBufferModule->append_size(packet, 1492, (void **)&request); + const char *username = Interface().Username(), *password = Interface().Password(); - - packet->m_pkthdr.len = packet->m_len = 6 + strlen(username) + strlen(password); - - // reserve some space for overhead (we are lazy and reserve too much) - packet->m_data += Interface().PacketOverhead(); - - ppp_lcp_packet *request = mtod(packet, ppp_lcp_packet*); + uint16 packcketLenth = 6 + strlen(username) + strlen(password); + // 6 : lcp header 4 byte + username length 1 byte + password length 1 byte + request->code = PPP_CONFIGURE_REQUEST; request->id = fRequestID = NextID(); - request->length = htons(packet->m_len); + request->length = htons(packcketLenth); uint8 *data = request->data; data[0] = strlen(username); memcpy(data + 1, username, strlen(username)); data[1 + data[0]] = strlen(password); memcpy(data + 2 + data[0], password, strlen(password)); - + + gBufferModule->trim(packet, packcketLenth); + return Interface().Send(packet, PAP_PROTOCOL) == B_OK; } bool -PAP::SendAck(struct mbuf *packet) +PAP::SendAck(net_buffer *packet) { TRACE("PAP: SendAck() state=%d\n", State()); - - if(!packet) + + if (!packet) return false; - - ppp_lcp_packet *ack = mtod(packet, ppp_lcp_packet*); - ack->code = PPP_CONFIGURE_ACK; - packet->m_len = 5; - if(packet->m_flags & M_PKTHDR) - packet->m_pkthdr.len = 5; - ack->length = htons(packet->m_len); - - ack->data[0] = 0; - + + NetBufferHeaderReader bufferheader(packet); + if (bufferheader.Status() != B_OK) + return false; + ppp_lcp_packet &ack = bufferheader.Data(); + + ack.code = PPP_CONFIGURE_ACK; + ack.length = htons(5); + ack.data[0] = 0; + gBufferModule->trim(packet, 5); + + bufferheader.Sync(); + return Interface().Send(packet, PAP_PROTOCOL) == B_OK; } bool -PAP::SendNak(struct mbuf *packet) +PAP::SendNak(net_buffer *packet) { - TRACE("PAP: SendNak() state=%d\n", State()); - - if(!packet) + ERROR("PAP: SendNak() state=%d\n", State()); + + if (!packet) return false; - - ppp_lcp_packet *nak = mtod(packet, ppp_lcp_packet*); - nak->code = PPP_CONFIGURE_NAK; - packet->m_len = 5; - if(packet->m_flags & M_PKTHDR) - packet->m_pkthdr.len = 5; - nak->length = htons(packet->m_len); - - nak->data[0] = 0; - + + NetBufferHeaderReader bufferheader(packet); + if (bufferheader.Status() != B_OK) + return false; + ppp_lcp_packet &nak = bufferheader.Data(); + nak.code = PPP_CONFIGURE_NAK; + nak.length = htons(5); + nak.data[0] = 0; + gBufferModule->trim(packet, 5); + return Interface().Send(packet, PAP_PROTOCOL) == B_OK; } diff --git a/src/add-ons/kernel/network/ppp/pap/Protocol.h b/src/add-ons/kernel/network/ppp/pap/Protocol.h index 43a1bc7dea..db715862bf 100644 --- a/src/add-ons/kernel/network/ppp/pap/Protocol.h +++ b/src/add-ons/kernel/network/ppp/pap/Protocol.h @@ -31,11 +31,12 @@ class PAP; class PAPHandler : public KPPPOptionHandler { public: PAPHandler(PAP& owner, KPPPInterface& interface); - + PAP& Owner() const { return fOwner; } - + virtual status_t AddToRequest(KPPPConfigurePacket& request); + virtual status_t SendingAck(const KPPPConfigurePacket&); virtual status_t ParseRequest(const KPPPConfigurePacket& request, int32 index, KPPPConfigurePacket& nak, KPPPConfigurePacket& reject); @@ -48,17 +49,17 @@ class PAP : public KPPPProtocol { public: PAP(KPPPInterface& interface, driver_parameter *settings); virtual ~PAP(); - + virtual status_t InitCheck() const; - + pap_state State() const { return fState; } - + virtual bool Up(); virtual bool Down(); - - virtual status_t Send(struct mbuf *packet, uint16 protocolNumber); - virtual status_t Receive(struct mbuf *packet, uint16 protocolNumber); + + virtual status_t Send(net_buffer *packet, uint16 protocolNumber); + virtual status_t Receive(net_buffer *packet, uint16 protocolNumber); virtual void Pulse(); private: @@ -66,28 +67,28 @@ class PAP : public KPPPProtocol { void NewState(pap_state next); uint8 NextID(); // return the next id for PAP packets - + // events void TOGoodEvent(); void TOBadEvent(); - void RREvent(struct mbuf *packet); - void RAEvent(struct mbuf *packet); - void RNEvent(struct mbuf *packet); - + void RREvent(net_buffer *packet); + void RAEvent(net_buffer *packet); + void RNEvent(net_buffer *packet); + // actions void ReportUpFailedEvent(); void ReportUpEvent(); void ReportDownEvent(); void InitializeRestartCount(); bool SendRequest(); - bool SendAck(struct mbuf *packet); - bool SendNak(struct mbuf *packet); + bool SendAck(net_buffer *packet); + bool SendNak(net_buffer *packet); private: // for state machine pap_state fState; - vint32 fID; - + int32 fID; + // counters and timers int32 fMaxRequest; int32 fRequestCounter; diff --git a/src/add-ons/kernel/network/ppp/pap/pap.cpp b/src/add-ons/kernel/network/ppp/pap/pap.cpp index 5805238bdb..714df952ab 100644 --- a/src/add-ons/kernel/network/ppp/pap/pap.cpp +++ b/src/add-ons/kernel/network/ppp/pap/pap.cpp @@ -5,42 +5,41 @@ #include #include -#include -#include + +#include +#include #include #include #include "Protocol.h" +#define PAP_MODULE_NAME NETWORK_MODULES_ROOT "/ppp/pap" -#define PAP_MODULE_NAME NETWORK_MODULES_ROOT "ppp/pap" - -struct core_module_info *core = NULL; +net_stack_module_info *gStackModule = NULL; +net_buffer_module_info *gBufferModule = NULL; status_t std_ops(int32 op, ...); - -static -bool +static bool add_to(KPPPInterface& mainInterface, KPPPInterface *subInterface, driver_parameter *settings, ppp_module_key_type type) { - if(type != PPP_AUTHENTICATOR_KEY_TYPE) + if (type != PPP_AUTHENTICATOR_KEY_TYPE) return B_ERROR; - + PAP *pap; bool success; - if(subInterface) { + if (subInterface) { pap = new PAP(*subInterface, settings); success = subInterface->AddProtocol(pap); } else { pap = new PAP(mainInterface, settings); success = mainInterface.AddProtocol(pap); } - + TRACE("PAP: add_to(): %s\n", success && pap && pap->InitCheck() == B_OK ? "OK" : "ERROR"); - + return success && pap && pap->InitCheck() == B_OK; } @@ -58,22 +57,28 @@ static ppp_module_info pap_module = { _EXPORT status_t -std_ops(int32 op, ...) +std_ops(int32 op, ...) { - switch(op) { + switch (op) { case B_MODULE_INIT: - if(get_module(NET_CORE_MODULE_NAME, (module_info**) &core) != B_OK) + if (get_module(NET_STACK_MODULE_NAME, (module_info**) &gStackModule) != B_OK) return B_ERROR; + if (get_module(NET_BUFFER_MODULE_NAME, + (module_info **)&gBufferModule) != B_OK) { + put_module(NET_STACK_MODULE_NAME); + return B_ERROR; + } return B_OK; - + case B_MODULE_UNINIT: - put_module(NET_CORE_MODULE_NAME); + put_module(NET_BUFFER_MODULE_NAME); + put_module(NET_STACK_MODULE_NAME); break; - + default: return B_ERROR; } - + return B_OK; } diff --git a/src/add-ons/kernel/network/ppp/ppp/Jamfile b/src/add-ons/kernel/network/ppp/ppp/Jamfile new file mode 100644 index 0000000000..fb2871010e --- /dev/null +++ b/src/add-ons/kernel/network/ppp/ppp/Jamfile @@ -0,0 +1,28 @@ +SubDir HAIKU_TOP src add-ons kernel network ppp ppp ; + +SetSubDirSupportedPlatformsBeOSCompatible ; +SubDirC++Flags -fno-rtti ; + +if $(TARGET_PLATFORM) != haiku { + UseHeaders [ FStandardOSHeaders ] : true ; + # Needed for and maybe other stuff. + UseHeaders [ FDirName $(HAIKU_TOP) headers posix ] : true ; + # We need the public network headers also when not compiling for Haiku. + # Unfortunately we get more than we want, namely all POSIX headers. +} + +UsePrivateKernelHeaders ; +UsePrivateHeaders net ; +UsePrivateHeaders [ FDirName kernel util ] ; + +UseHeaders [ FDirName $(HAIKU_TOP) src add-ons kernel network ppp shared + libkernelppp headers ] : true ; + +KernelAddon ppp : + ppp.cpp +; + +# Installation +HaikuInstall install-networking : + /boot/home/config/add-ons/kernel/network/ppp + : ppp ; diff --git a/src/add-ons/kernel/network/ppp/ppp/ppp.cpp b/src/add-ons/kernel/network/ppp/ppp/ppp.cpp new file mode 100644 index 0000000000..a596f22d11 --- /dev/null +++ b/src/add-ons/kernel/network/ppp/ppp/ppp.cpp @@ -0,0 +1,388 @@ +/* + * Copyright 2014, Haiku, Inc. All Rights Reserved. + * Distributed under the terms of the MIT License. + * + * Authors: + * Lin Longzhou, linlongzhou@163.com + */ + + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include +#include + +#include + +#include +#include + +#define PPP_HEADER_LENGTH (8 + ETHER_HEADER_LENGTH) + + +net_buffer* create_buffer_for_frame(uint8 *frame, uint16 frame_size); + +static const bigtime_t kLinkCheckInterval = 1000000; + // 1 second + +net_buffer_module_info *gBufferModule; +ppp_interface_module_info* gPPPInterfaceModule; +static net_stack_module_info *sStackModule; + +static mutex sListLock; +static DoublyLinkedList sCheckList; +static sem_id sLinkChangeSemaphore; +static thread_id sLinkCheckerThread; + + +// #pragma mark - +// + +status_t +ppp_init(const char *name, net_device **_device) +{ + // ppp device + dprintf("%s: entering!\n", __func__); + + if (strncmp(name, "ppp", 3)) { + dprintf("[%s] not ppp device\n", name); + return B_BAD_VALUE; + } + + dprintf("[%s] is ppp device\n", name); + + status_t status = get_module(NET_BUFFER_MODULE_NAME, (module_info **)&gBufferModule); + if (status < B_OK) + return status; + + // ppp_device *device = new (std::nothrow) ppp_device; + ppp_interface_id idInterface = gPPPInterfaceModule->CreateInterfaceWithName(name, 0); + KPPPInterface * pppInterface = gPPPInterfaceModule->GetInterface(idInterface); + + if (idInterface <= 0 || pppInterface == NULL) { + if (idInterface <= 0) + dprintf("%s: idInterface:%ld\n", __func__, idInterface); + else + dprintf("%s: pppInterface == NULL %ld\n", __func__, idInterface); + put_module(NET_BUFFER_MODULE_NAME); + return B_NO_MEMORY; + } + + // Ifnet available until interface up phase + ppp_device *device = (ppp_device *)pppInterface->Ifnet(); + if (device == NULL) { + dprintf("%s: can not get ppp_device\n", __func__); + put_module(NET_BUFFER_MODULE_NAME); + return B_NO_MEMORY; + } + + strcpy(device->name, name); + device->flags = (IFF_BROADCAST | IFF_LINK) & (~IFF_UP); + device->type = IFT_PPP; + device->mtu = 1492; + device->frame_size = 1500; + device->media = IFM_ACTIVE | IFM_ETHER; + device->header_length = PPP_HEADER_LENGTH; + + status =sStackModule->init_fifo(&(device->ppp_fifo), "ppp_fifo", 10 * 1500); + // 10 ppp packet at most + if (status < B_OK) + return(status); + + TRACE("[%s] finish\n", "allocate ppp_device"); + *_device = device; + + return B_OK; +} + + +status_t +ppp_uninit(net_device *device) +{ + dprintf("%s: uninit ppp\n", __func__); + ppp_device *ppp_dev=(ppp_device *)device; + + sStackModule->uninit_fifo(&(ppp_dev->ppp_fifo)); + put_module(NET_BUFFER_MODULE_NAME); + + // delete ppp_dev->KPPP_Interface; + delete ppp_dev; + + return B_OK; +} + + +status_t +ppp_up(net_device *_device) +{ + dprintf("ppp_up\n"); + ppp_device *device = (ppp_device *)_device; + + if (device->KPPP_Interface == NULL) { + dprintf("%s: warning! can not find pppinterface KPPP_Interface\n", __func__); + return B_ERROR; + } + + if (device->KPPP_Interface->Up() != true) { + dprintf("%s: warning! KPPP_Interface->Up() failure\n", __func__); + return B_ERROR; + } + + device->mtu = device->frame_size - device->header_length; + // s_pppoe_dev = device; + + dprintf("%s: congratulations! Find pppinterface (device->KPPP_Interface)\n", __func__); + + return B_OK; +} + + +void +ppp_down(net_device *_device) +{ + dprintf("%s\n", __func__); + ppp_device *device = (ppp_device *)_device; + device->KPPP_Interface->Down(); + + MutexLocker _(sListLock); + + // if the device is still part of the list, remove it + if (device->GetDoublyLinkedListLink()->next != NULL + || device->GetDoublyLinkedListLink()->previous != NULL + || device == sCheckList.Head()) + sCheckList.Remove(device); + + // device->KPPP_Interface = NULL; + + return; +} + + +status_t +ppp_control(net_device *_device, int32 op, void *argument, + size_t length) +{ + TRACE("%s %ld\n", __func__, op); + ppp_device *device = (ppp_device *)_device; + + if (device->KPPP_Interface == NULL) { + dprintf("%s: can not find KPPP_Interface for ppp\n", __func__); + return B_OK; + } + + return device->KPPP_Interface->Control(op, argument, length); + + return B_OK; +} + + +status_t +ppp_send_data(net_device *_device, net_buffer *buffer) +{ + TRACE("%s\n", __func__); + ppp_device *device = (ppp_device *)_device; + + if (buffer->size > device->frame_size || buffer->size < device->header_length) { + device->stats.send.errors++; + dprintf("sorry! fail send ppp packet, size wrong!\n"); + return B_BAD_VALUE; + } + + if (device->KPPP_Interface == NULL) { + device->stats.send.errors++; + dprintf("Fail send ppp packet, no eth for ppp!\n"); + return B_BAD_VALUE; + } + + size_t net_buffer_size = buffer->size; + // store buffer->size in case buffer freed in KPPP_Interface->Send + status_t status = device->KPPP_Interface->Send(buffer, 0x0021); // IP_PROTOCOL 0x0021 + + if (status != B_OK) { + device->stats.send.errors++; + dprintf("KPPP_Interface->Send(buffer, 0x0021 IP) fail\n"); + return B_BAD_VALUE; + } + + device->stats.send.packets++; + device->stats.send.bytes += net_buffer_size; + + return B_OK; +} + + +status_t +ppp_receive_data(net_device *_device, net_buffer **_buffer) +{ + TRACE("%s\n", __func__); + ppp_device *device = (ppp_device *)_device; + + if (device->KPPP_Interface == NULL) + return B_FILE_ERROR; + + TRACE("%s: trying fifo_dequeue_buffer\n", __func__); + status_t status = sStackModule->fifo_dequeue_buffer(&(device->ppp_fifo), 0, 10000000, _buffer); + + if (status < B_OK) { + TRACE("sorry! can not fifo_dequeue_buffer!\n"); + return status; + } + + // (*_buffer)->interface_address = NULL; // strange need to put here + device->stats.receive.bytes += (*_buffer)->size; + device->stats.receive.packets++; + + return B_OK; +} + + +status_t +ppp_set_mtu(net_device *_device, size_t mtu) +{ + ppp_device *device = (ppp_device *)_device; + + if (mtu > device->frame_size - ETHER_HEADER_LENGTH - 8 + || mtu <= ETHER_HEADER_LENGTH + 8 + 10) + return B_BAD_VALUE; + + device->mtu = mtu; + return B_OK; +} + + +status_t +ppp_set_promiscuous(net_device *_device, bool promiscuous) +{ + return B_NOT_SUPPORTED; +} + + +status_t +ppp_set_media(net_device *device, uint32 media) +{ + return B_NOT_SUPPORTED; +} + + +status_t +ppp_add_multicast(struct net_device *_device, const sockaddr *_address) +{ + // ppp_device *device = (ppp_device *)_device; + + if (_address->sa_family != AF_LINK) + return B_BAD_VALUE; + + const sockaddr_dl *address = (const sockaddr_dl *)_address; + if (address->sdl_type != IFT_ETHER) + return B_BAD_VALUE; + + return B_NOT_SUPPORTED; +} + + +status_t +ppp_remove_multicast(struct net_device *_device, const sockaddr *_address) +{ + // ppp_device *device = (ppp_device *)_device; + + if (_address->sa_family != AF_LINK) + return B_BAD_VALUE; + + const sockaddr_dl *address = (const sockaddr_dl *)_address; + if (address->sdl_type != IFT_ETHER) + return B_BAD_VALUE; + + return B_NOT_SUPPORTED; +} + + +static status_t +ppp_std_ops(int32 op, ...) +{ + switch (op) { + case B_MODULE_INIT: + { + status_t status = get_module(NET_STACK_MODULE_NAME, + (module_info **)&sStackModule); + if (status < B_OK) + return status; + + status = get_module(PPP_INTERFACE_MODULE_NAME, + (module_info**)&gPPPInterfaceModule); + if (status < B_OK) { + put_module(NET_STACK_MODULE_NAME); + return status; + } + + new (&sCheckList) DoublyLinkedList; + // static C++ objects are not initialized in the module startup + + sLinkCheckerThread = -1; + + sLinkChangeSemaphore = create_sem(0, "ppp link change"); + if (sLinkChangeSemaphore < B_OK) { + put_module(PPP_INTERFACE_MODULE_NAME); + put_module(NET_STACK_MODULE_NAME); + return sLinkChangeSemaphore; + } + + mutex_init(&sListLock, "ppp devices"); + + return B_OK; + } + + case B_MODULE_UNINIT: + { + delete_sem(sLinkChangeSemaphore); + + status_t status; + wait_for_thread(sLinkCheckerThread, &status); + + mutex_destroy(&sListLock); + + put_module(PPP_INTERFACE_MODULE_NAME); + put_module(NET_STACK_MODULE_NAME); + return B_OK; + } + + default: + return B_ERROR; + } +} + + +net_device_module_info spppModule = { + { + "network/devices/ppp/v1", + 0, + ppp_std_ops + }, + ppp_init, + ppp_uninit, + ppp_up, + ppp_down, + ppp_control, + ppp_send_data, + ppp_receive_data, + ppp_set_mtu, + ppp_set_promiscuous, + ppp_set_media, + ppp_add_multicast, + ppp_remove_multicast, +}; + + +module_info *modules[] = { + (module_info *)&spppModule, + NULL +}; diff --git a/src/add-ons/kernel/network/ppp/ppp_frame/Jamfile b/src/add-ons/kernel/network/ppp/ppp_frame/Jamfile new file mode 100644 index 0000000000..f983095ae0 --- /dev/null +++ b/src/add-ons/kernel/network/ppp/ppp_frame/Jamfile @@ -0,0 +1,26 @@ +SubDir HAIKU_TOP src add-ons kernel network ppp ppp_frame ; + +SetSubDirSupportedPlatformsBeOSCompatible ; +SubDirC++Flags -fno-rtti ; + +if $(TARGET_PLATFORM) != haiku { + UseHeaders [ FStandardOSHeaders ] : true ; + UseHeaders [ FDirName $(HAIKU_TOP) headers posix ] : true ; + # We need the public network headers also when not compiling for Haiku. + # Unfortunately we get more than we want, namely all POSIX headers. +} + +UsePrivateKernelHeaders ; +UsePrivateHeaders kernel net ; +UsePrivateHeaders [ FDirName kernel util ] ; + +UseHeaders [ FDirName $(HAIKU_TOP) src add-ons kernel network ppp shared + libkernelppp headers ] : true ; + +KernelAddon ppp_frame : + ppp_frame.cpp +; + +# Installation +HaikuInstall install-networking : /boot/home/config/add-ons/kernel/haiku_network/ppp + : ppp_frame ; diff --git a/src/add-ons/kernel/network/ppp/ppp_frame/ppp_frame.cpp b/src/add-ons/kernel/network/ppp/ppp_frame/ppp_frame.cpp new file mode 100644 index 0000000000..219b658a22 --- /dev/null +++ b/src/add-ons/kernel/network/ppp/ppp_frame/ppp_frame.cpp @@ -0,0 +1,265 @@ +/* + * Copyright 2014, Haiku, Inc. All Rights Reserved. + * Distributed under the terms of the MIT License. + * + * Authors: + * Lin Longzhou, linlongzhou@163.com + */ + + +#include +#include +#include +#include + +#include + +#include + +#include +#include + +struct ppp_frame_protocol : net_datalink_protocol { +}; + + +static net_stack_module_info *sStackModule; + +status_t +ppp_deframe(net_device* device, net_buffer* buffer) +{ + TRACE("%s: buffer type:%lx\n", __func__, buffer->type); + return B_OK; +} + + +// #pragma mark - + +status_t +ppp_frame_init(struct net_interface* interface, net_domain* domain, + net_datalink_protocol** _protocol) +{ + // We only support a single type! + dprintf("in function: %s::%s\n", __FILE__, __func__); + if (interface->device->type != IFT_PPP) + return B_BAD_TYPE; + + ppp_frame_protocol* protocol; + + status_t status = sStackModule->register_device_deframer(interface->device, + &ppp_deframe); + if (status != B_OK) + return status; + + status = sStackModule->register_domain_device_handler( + interface->device, B_NET_FRAME_TYPE(IFT_ETHER, ETHER_TYPE_PPPOE), domain); + if (status != B_OK) + return status; + + status = sStackModule->register_domain_device_handler( + interface->device, B_NET_FRAME_TYPE_IPV4, domain); + if (status != B_OK) + return status; + + // Locally received buffers don't need a domain device handler, as the + // buffer reception is handled internally. + + protocol = new(std::nothrow) ppp_frame_protocol; + if (protocol == NULL) { + sStackModule->unregister_device_deframer(interface->device); + return B_NO_MEMORY; + } + + *_protocol = protocol; + return B_OK; +} + + +status_t +ppp_frame_uninit(net_datalink_protocol* protocol) +{ + sStackModule->unregister_device_deframer(protocol->interface->device); + sStackModule->unregister_device_handler(protocol->interface->device, 0); + + delete protocol; + TRACE("%s\n", __func__); + return B_OK; +} + + +status_t +ppp_frame_send_data(net_datalink_protocol* protocol, net_buffer* buffer) +{ + TRACE("%s: next module is %s\n", __func__, protocol->next->module->info.name); + return protocol->next->module->send_data(protocol->next, buffer); +} + + +status_t +ppp_frame_up(net_datalink_protocol* protocol) +{ + dprintf("in function: %s\n", __func__); + + return protocol->next->module->interface_up(protocol->next); +} + + +void +ppp_frame_down(net_datalink_protocol* protocol) +{ + dprintf("%s::%s: entry\n", __FILE__, __func__); + protocol->next->module->interface_down(protocol->next); + return; +} + + +status_t +ppp_frame_change_address(net_datalink_protocol* protocol, + net_interface_address* address, int32 option, + const struct sockaddr* oldAddress, const struct sockaddr* newAddress) +{ + TRACE("in function: %s::%s\n", __FILE__, __func__); + return protocol->next->module->change_address(protocol->next, address, + option, oldAddress, newAddress); +} + + +static status_t +PPP_module_control(int32 option, void* argument, size_t length) +{ + // control_net_module_args* args=(control_net_module_args*)argument; + + if (option < PPPC_CONTROL_MODULE || option > PPP_CONTROL_OPS_END) + return B_ERROR; + + // if (args->name != PPP_INTERFACE_MODULE_NAME) + // return B_ERROR; + + switch(option) + { + case PPPC_CREATE_INTERFACE: + // process_CreateInterface(args->data, args->length); + case PPPC_CREATE_INTERFACE_WITH_NAME: + case PPPC_DELETE_INTERFACE: + case PPPC_BRING_INTERFACE_UP: + case PPPC_BRING_INTERFACE_DOWN: + case PPPC_CONTROL_INTERFACE: + case PPPC_GET_INTERFACES: + case PPPC_COUNT_INTERFACES: + case PPPC_FIND_INTERFACE_WITH_SETTINGS: + + // interface control + case PPPC_GET_INTERFACE_INFO: + case PPPC_SET_USERNAME: + case PPPC_SET_PASSWORD: + case PPPC_SET_ASK_BEFORE_CONNECTING: + // ppp_up uses this in order to finalize a connection request + case PPPC_SET_MRU: + case PPPC_SET_CONNECT_ON_DEMAND: + case PPPC_SET_AUTO_RECONNECT: + case PPPC_HAS_INTERFACE_SETTINGS: + case PPPC_GET_STATISTICS: + // handler access + case PPPC_CONTROL_DEVICE: + case PPPC_CONTROL_PROTOCOL: + case PPPC_CONTROL_OPTION_HANDLER: + case PPPC_CONTROL_LCP_EXTENSION: + case PPPC_CONTROL_CHILD: + // KPPPDevice + case PPPC_GET_DEVICE_INFO: + // KPPPProtocol + case PPPC_GET_PROTOCOL_INFO: + // Common/mixed ops + case PPPC_ENABLE: + case PPPC_GET_SIMPLE_HANDLER_INFO: + + // these two control ops use the ppp_report_request structure + case PPPC_ENABLE_REPORTS: + case PPPC_DISABLE_REPORTS: + + case PPP_CONTROL_OPS_END: + case PPPC_CONTROL_MODULE: + default: + return B_ERROR; + } +} + + +static status_t +ppp_frame_control(net_datalink_protocol* protocol, int32 option, + void* argument, size_t length) +{ + TRACE("%s: option:%ld\n", __func__, option); + + if (option >= PPPC_CONTROL_MODULE && option <=PPP_CONTROL_OPS_END) + { + status_t status =PPP_module_control(option, argument, length); + // gPPPInterfaceModule->ControlInterface(1, option, argument, length); + return status; + } + + return protocol->next->module->control(protocol->next, option, argument, + length); +} + + +static status_t +ppp_frame_join_multicast(net_datalink_protocol* protocol, + const sockaddr* address) +{ + TRACE("in function: %s\n", __func__); + return protocol->next->module->join_multicast(protocol->next, address); +} + + +static status_t +ppp_frame_leave_multicast(net_datalink_protocol* protocol, + const sockaddr* address) +{ + TRACE("in function: %s\n", __func__); + return protocol->next->module->leave_multicast(protocol->next, address); +} + + +static status_t +pppoe_frame_std_ops(int32 op, ...) +{ + switch (op) { + case B_MODULE_INIT: + if (get_module(NET_STACK_MODULE_NAME, + (module_info **)&sStackModule) != B_OK) + return B_ERROR; + return B_OK; + + case B_MODULE_UNINIT: + put_module(NET_STACK_MODULE_NAME); + return B_OK; + + default: + return B_ERROR; + } +} + + +static net_datalink_protocol_module_info sPPPFrameModule = { + { + "network/datalink_protocols/ppp_frame/v1", + 0, + pppoe_frame_std_ops + }, + ppp_frame_init, + ppp_frame_uninit, + ppp_frame_send_data, + ppp_frame_up, + ppp_frame_down, + ppp_frame_change_address, + ppp_frame_control, + ppp_frame_join_multicast, + ppp_frame_leave_multicast, +}; + + +module_info* modules[] = { + (module_info*)&sPPPFrameModule, + NULL +}; diff --git a/src/add-ons/kernel/network/ppp/ppp_manager/Jamfile b/src/add-ons/kernel/network/ppp/ppp_manager/Jamfile new file mode 100644 index 0000000000..8b6f9d1470 --- /dev/null +++ b/src/add-ons/kernel/network/ppp/ppp_manager/Jamfile @@ -0,0 +1,31 @@ +SubDir HAIKU_TOP src add-ons kernel network ppp ppp_manager ; + +SetSubDirSupportedPlatformsBeOSCompatible ; +SubDirC++Flags -fno-rtti ; + +if $(TARGET_PLATFORM) != haiku { + UseHeaders [ FStandardOSHeaders ] : true ; + UseHeaders [ FDirName $(HAIKU_TOP) headers posix ] : true ; + # We need the public network headers also when not compiling for Haiku. + # Unfortunately we get more than we want, namely all POSIX headers. +} + +UsePrivateKernelHeaders ; + # UsePrivateHeaders net ; + +UsePrivateHeaders kernel net ; +UsePrivateHeaders [ FDirName kernel ] ; +UsePrivateHeaders [ FDirName kernel util ] ; + +UseHeaders [ FDirName $(HAIKU_TOP) src add-ons kernel network ppp shared + libkernelppp headers ] : true ; + +KernelAddon KPPPManager : + KPPPManager.cpp +; + +LinkAgainst KPPPManager : libkernelppp.a ; + +# Installation +HaikuInstall install-networking : /boot/home/config/add-ons/kernel/haiku_network/ppp + : KPPPManager ; diff --git a/src/add-ons/kernel/network/ppp/ppp_manager/KPPPManager.cpp b/src/add-ons/kernel/network/ppp/ppp_manager/KPPPManager.cpp new file mode 100644 index 0000000000..ef0c19db04 --- /dev/null +++ b/src/add-ons/kernel/network/ppp/ppp_manager/KPPPManager.cpp @@ -0,0 +1,373 @@ +/* + * Copyright 2006-2014, Haiku, Inc. All Rights Reserved. + * Distributed under the terms of the MIT License. + * + * Authors: + * Axel Dörfler, axeld@pinc-software.de + * Lin Longzhou, linlongzhou@163.com + */ + +#include +#include + +#include + +#include +#include +#include + +#include + +#include +#include + + +struct entry_private : ppp_interface_entry, DoublyLinkedListLinkImpl { +}; + +static DoublyLinkedList sEntryList; + +net_buffer_module_info* gBufferModule = NULL; +net_stack_module_info* gStackModule = NULL; +// static struct net_interface* sinterface; +static mutex sListLock; +static uint32 ppp_interface_count; + + +// #pragma mark - +static KPPPInterface * GetInterface(ppp_interface_id ID); + +static ppp_interface_id +CreateInterface(const driver_settings *settings, ppp_interface_id parentID) +{ + MutexLocker _(sListLock); // auto_lock + + if (parentID > 0) { + TRACE("Not support Multi_Link yet!\n"); + return 0l; + } + + if (settings == NULL) { + TRACE("No driver_settings yet!\n"); + return 0l; + } + + ppp_interface_count++; + + if (GetInterface(ppp_interface_count) != NULL) + return 0l; + + entry_private* pentry = new (std::nothrow) entry_private; + memset(pentry, 0, sizeof(entry_private)); + pentry->accessing = ppp_interface_count; + sEntryList.Add(pentry); + + KPPPInterface *device = new (std::nothrow) KPPPInterface(NULL, + pentry, ppp_interface_count, NULL, NULL); + + if (device == NULL || pentry == NULL) { + TRACE("device or pentry is NULL\n"); + ppp_interface_count--; + return 0l; + } + + TRACE("setting ppp_interface_count %ld\n", ppp_interface_count); + + return ppp_interface_count; // only support 1 ppp connection right now +} + + +static ppp_interface_id +CreateInterfaceWithName(const char *name, ppp_interface_id parentID) +{ + MutexLocker _(sListLock); // auto_lock + + if (parentID > 0) { + dprintf("Not support Multi_Link yet!\n"); + return(0); + } + + if (strncmp(name, "ppp", 3)) { + dprintf("%s is not ppp device!\n", name); + return(0); + } + + ppp_interface_count++; + if (GetInterface(ppp_interface_count) != NULL) { + TRACE("PPP Interface already exist!\n"); + return 0l; + } + + entry_private* pentry = new (std::nothrow) entry_private; + memset(pentry, 0, sizeof(entry_private)); + pentry->accessing = ppp_interface_count; + sEntryList.Add(pentry); + + KPPPInterface* device = new (std::nothrow) KPPPInterface(name, + pentry, ppp_interface_count, NULL, NULL); + + + if (device == NULL || pentry == NULL) { + TRACE("can not create ppp interface!\n"); + ppp_interface_count--; + return 0l; + } + + TRACE("setting ppp_interface_count %ld\n", ppp_interface_count); + + return ppp_interface_count; +} + + +static bool +DeleteInterface(ppp_interface_id ID) +{ + MutexLocker _(sListLock); // auto_lock + + DoublyLinkedList::Iterator iterator + = sEntryList.GetIterator(); + while (iterator.HasNext()) { + entry_private* pentry = iterator.Next(); + if ((ppp_interface_id)pentry->accessing == ID) { + pentry->deleting = true; + return true; + } + } + + return false; +} + + +static bool +RemoveInterface(ppp_interface_id ID) +{ + MutexLocker _(sListLock); // auto_lock + if (ID <= 0 || ID > ppp_interface_count) + return false; + + DoublyLinkedList::Iterator iterator + = sEntryList.GetIterator(); + while (iterator.HasNext()) { + entry_private* pentry = iterator.Next(); + if ((ppp_interface_id)pentry->accessing == ID) { + pentry->deleting = true; + break; + } + } + + return false; +} + + +static net_device * +RegisterInterface(ppp_interface_id ID) +{ + // MutexLocker _(sListLock); // auto_lock + + entry_private* entry = NULL; + + DoublyLinkedList::Iterator iterator + = sEntryList.GetIterator(); + while (iterator.HasNext()) { + entry_private* pentry = iterator.Next(); + if ((ppp_interface_id)pentry->accessing == ID) { + entry = pentry; + break; + } + } + + if (entry == NULL) + return NULL; + + ppp_device *device = new (std::nothrow) ppp_device; + if (device == NULL) + return NULL; + + memset(device, 0, sizeof(ppp_device)); + device->KPPP_Interface = entry->interface; + + return device; +} + + +static KPPPInterface * +GetInterface(ppp_interface_id ID) +{ + // MutexLocker _(sListLock); // auto_lock + + DoublyLinkedList::Iterator iterator + = sEntryList.GetIterator(); + while (iterator.HasNext()) { + entry_private* pentry = iterator.Next(); + TRACE("testing interface id:%ld\n", pentry->accessing); + if ((ppp_interface_id)(pentry->accessing) == ID) { + TRACE("get interface id:%ld\n", ID); + return pentry->interface; + } + } + + TRACE("can not get interface id:%ld\n", ID); + + return NULL; +} + + +static bool +UnregisterInterface(ppp_interface_id ID) +{ + MutexLocker _(sListLock); // auto_lock + + if (ID <= 0 || ID > ppp_interface_count) + return false; + return true; +} + + +static status_t +ControlInterface(ppp_interface_id ID, uint32 op, void *data, size_t length) +{ + MutexLocker _(sListLock); // auto_lock + + if (ID <= 0 || ID > ppp_interface_count) + return B_ERROR; + + DoublyLinkedList::Iterator iterator + = sEntryList.GetIterator(); + while (iterator.HasNext()) { + entry_private* pentry = iterator.Next(); + if ((ppp_interface_id)pentry->accessing == ID) + return B_OK; + } + + return B_ERROR; +} + + +static int32 +GetInterfaces(ppp_interface_id *interfaces, int32 count, ppp_interface_filter filter) +{ + MutexLocker _(sListLock); + + if (count <= 0 || count > (int32)ppp_interface_count) + return(0); + + uint32 ppp_count = 0; + + DoublyLinkedList::Iterator iterator + = sEntryList.GetIterator(); + while (iterator.HasNext()) { + entry_private* pentry = iterator.Next(); + interfaces[ppp_count] = pentry->accessing; + ppp_count++; + } + + return ppp_count; +} + + +static int32 +CountInterfaces(ppp_interface_filter filter) +{ + MutexLocker _(sListLock); // auto_lock + + uint32 ppp_count = 0; + + DoublyLinkedList::Iterator iterator + = sEntryList.GetIterator(); + while (iterator.HasNext()) { + iterator.Next(); + ppp_count++; + } + + return ppp_count; +} + + +static void +EnableReports(ppp_report_type type, thread_id thread, int32 flags) +{ + MutexLocker _(sListLock); // auto_lock + + return; // need more portrait +} + + +static void +DisableReports(ppp_report_type type, thread_id thread) +{ + MutexLocker _(sListLock); // auto_lock + + return; // need more portrait +} + + +static bool +DoesReport(ppp_report_type type, thread_id thread) +{ + MutexLocker _(sListLock); // auto_lock + + return false; // need more portrait +} + + +static status_t +KPPPManager_std_ops(int32 op, ...) +{ + switch (op) { + case B_MODULE_INIT: + mutex_init(&sListLock, "KPPPManager"); + new (&sEntryList) DoublyLinkedList; + // static C++ objects are not initialized in the module startup + ppp_interface_count = 0; + + if (get_module(NET_STACK_MODULE_NAME, (module_info**)&gStackModule) + != B_OK) + return B_ERROR; + + if (get_module(NET_BUFFER_MODULE_NAME, (module_info**)&gBufferModule) + != B_OK) { + put_module(NET_STACK_MODULE_NAME); + return B_ERROR; + } + + return B_OK; + + case B_MODULE_UNINIT: + mutex_destroy(&sListLock); + + put_module(NET_BUFFER_MODULE_NAME); + put_module(NET_STACK_MODULE_NAME); + return B_OK; + + default: + return B_ERROR; + } +} + + +static ppp_interface_module_info sKPPPManagerModule = { + { + PPP_INTERFACE_MODULE_NAME, + 0, + KPPPManager_std_ops + }, + CreateInterface, + CreateInterfaceWithName, + DeleteInterface, + RemoveInterface, + RegisterInterface, + GetInterface, + UnregisterInterface, + ControlInterface, + GetInterfaces, + CountInterfaces, + EnableReports, + DisableReports, + DoesReport +}; + + +module_info* modules[] = { + (module_info*)&sKPPPManagerModule, + NULL +}; diff --git a/src/add-ons/kernel/network/ppp/pppoe/DiscoveryPacket.cpp b/src/add-ons/kernel/network/ppp/pppoe/DiscoveryPacket.cpp index 3f7a227986..74670c14b3 100644 --- a/src/add-ons/kernel/network/ppp/pppoe/DiscoveryPacket.cpp +++ b/src/add-ons/kernel/network/ppp/pppoe/DiscoveryPacket.cpp @@ -3,11 +3,12 @@ * Distributed under the terms of the MIT License. */ +#include +#include +#include + #include "DiscoveryPacket.h" -#include - - DiscoveryPacket::DiscoveryPacket(uint8 code, uint16 sessionID) : fCode(code), fSessionID(sessionID), @@ -16,18 +17,26 @@ DiscoveryPacket::DiscoveryPacket(uint8 code, uint16 sessionID) } -DiscoveryPacket::DiscoveryPacket(struct mbuf *packet, uint32 start) +DiscoveryPacket::DiscoveryPacket(net_buffer *packet, uint32 start) { // decode packet - uint8 *data = mtod(packet, uint8*); - data += start; - pppoe_header *header = (pppoe_header*) data; + NetBufferHeaderReader bufferheader(packet); + if (bufferheader.Status() != B_OK) { + dprintf("NetBufferHeaderReader create fail\n"); + fInitStatus = B_ERROR; + return; + } + pppoe_header &header = bufferheader.Data(); - SetCode(header->code); + SetCode(header.code); - uint16 length = ntohs(header->length); + uint16 length = ntohs(header.length); - if(length > packet->m_len - PPPoE_HEADER_SIZE - start) { + if(length > packet->size - PPPoE_HEADER_SIZE) { + dprintf("packet size less than pppoe payload\n"); + dprintf("pppoe payload:%d\n", length); + dprintf("PPPoE_HEADER_SIZE:%d\n", PPPoE_HEADER_SIZE); + dprintf("packet->size:%ld\n", packet->size); fInitStatus = B_ERROR; return; // there are no tags (or one corrupted tag) @@ -37,7 +46,7 @@ DiscoveryPacket::DiscoveryPacket(struct mbuf *packet, uint32 start) pppoe_tag *tag; while(position <= length - 4) { - tag = (pppoe_tag*) (header->data + position); + tag = (pppoe_tag*) (header.data + position); position += ntohs(tag->length) + 4; AddTag(ntohs(tag->type), tag->data, ntohs(tag->length)); @@ -116,13 +125,21 @@ DiscoveryPacket::TagWithType(uint16 type) const } -struct mbuf* -DiscoveryPacket::ToMbuf(uint32 MTU, uint32 reserve) +net_buffer* +DiscoveryPacket::ToNetBuffer(uint32 MTU) { - struct mbuf *packet = m_gethdr(MT_DATA); - packet->m_data += reserve; - - pppoe_header *header = mtod(packet, pppoe_header*); + net_buffer *packet = gBufferModule->create(256); + if (packet == NULL) { + dprintf("create buffer failure\n"); + return NULL; + } + + pppoe_header *header ; + status_t status = gBufferModule->append_size(packet, 1492, (void **)&header); + if (status != B_OK) { + dprintf("append size failure\n"); + return NULL; + } header->version = PPPoE_VERSION; header->type = PPPoE_TYPE; @@ -137,7 +154,7 @@ DiscoveryPacket::ToMbuf(uint32 MTU, uint32 reserve) // make sure we have enough space left if(MTU - length < tag->length) { - m_freem(packet); + gBufferModule->free(packet); return NULL; } @@ -150,7 +167,11 @@ DiscoveryPacket::ToMbuf(uint32 MTU, uint32 reserve) } header->length = htons(length); - packet->m_pkthdr.len = packet->m_len = length + PPPoE_HEADER_SIZE; - + status = gBufferModule->trim(packet, length + PPPoE_HEADER_SIZE); + if (status != B_OK) { + dprintf("trim buffer failure\n"); + return NULL; + } + return packet; } diff --git a/src/add-ons/kernel/network/ppp/pppoe/DiscoveryPacket.h b/src/add-ons/kernel/network/ppp/pppoe/DiscoveryPacket.h index 6c0416ffe0..1e1f650062 100644 --- a/src/add-ons/kernel/network/ppp/pppoe/DiscoveryPacket.h +++ b/src/add-ons/kernel/network/ppp/pppoe/DiscoveryPacket.h @@ -10,6 +10,7 @@ #include +#define ETHER_HDR_LEN 14 enum PPPoE_TAG_TYPE { END_OF_LIST = 0x0000, @@ -37,13 +38,13 @@ typedef struct pppoe_tag { uint16 type; uint16 length; uint8 data[0]; -}; +} pppoe_tag; class DiscoveryPacket { public: DiscoveryPacket(uint8 code, uint16 sessionID = 0x0000); - DiscoveryPacket(struct mbuf *packet, uint32 start = 0); + DiscoveryPacket(net_buffer *packet, uint32 start = 0); ~DiscoveryPacket(); status_t InitCheck() const @@ -66,8 +67,8 @@ class DiscoveryPacket { pppoe_tag *TagAt(int32 index) const; pppoe_tag *TagWithType(uint16 type) const; - struct mbuf *ToMbuf(uint32 MTU, uint32 reserve = ETHER_HDR_LEN); - // the user is responsible for freeing the mbuf + net_buffer *ToNetBuffer(uint32 MTU); + // the user is responsible for freeing the net_buffer private: uint8 fCode; diff --git a/src/add-ons/kernel/network/ppp/pppoe/Jamfile b/src/add-ons/kernel/network/ppp/pppoe/Jamfile index c4abfdae2d..13087b05ed 100644 --- a/src/add-ons/kernel/network/ppp/pppoe/Jamfile +++ b/src/add-ons/kernel/network/ppp/pppoe/Jamfile @@ -1,6 +1,7 @@ SubDir HAIKU_TOP src add-ons kernel network ppp pppoe ; SetSubDirSupportedPlatformsBeOSCompatible ; +SubDirC++Flags -fno-rtti ; if $(TARGET_PLATFORM) != haiku { UseHeaders [ FDirName $(HAIKU_TOP) headers posix ] : true ; @@ -8,20 +9,13 @@ if $(TARGET_PLATFORM) != haiku { # Unfortunately we get more than we want, namely all POSIX headers. } -# for kernel_cpp.h and BLocker -UseHeaders [ FDirName $(HAIKU_TOP) headers cpp ] : true ; +UsePrivateKernelHeaders ; UsePrivateHeaders net ; UsePrivateHeaders [ FDirName kernel ] ; UsePrivateHeaders [ FDirName kernel util ] ; UseHeaders [ FDirName $(HAIKU_TOP) src add-ons kernel network ppp shared libkernelppp headers ] : true ; - -{ - SubDirC++Flags -fno-rtti ; -} - - KernelAddon pppoe : pppoe.cpp PPPoEDevice.cpp @@ -32,5 +26,5 @@ LinkAgainst pppoe : libkernelppp.a ; # Installation HaikuInstall install-networking - : /boot/home/config/add-ons/kernel/obos_network/ppp + : /boot/home/config/add-ons/kernel/haiku/ppp : pppoe ; diff --git a/src/add-ons/kernel/network/ppp/pppoe/PPPoE.h b/src/add-ons/kernel/network/ppp/pppoe/PPPoE.h index 6bb9350532..4b14d15c21 100644 --- a/src/add-ons/kernel/network/ppp/pppoe/PPPoE.h +++ b/src/add-ons/kernel/network/ppp/pppoe/PPPoE.h @@ -8,10 +8,15 @@ #include #include -#include + +#include +#include +#include class PPPoEDevice; +#define B_NET_FRAME_TYPE_PPPOE B_NET_FRAME_TYPE(IFT_ETHER, ETHER_TYPE_PPPOE) +#define B_NET_FRAME_TYPE_PPPOE_DISCOVERY B_NET_FRAME_TYPE(IFT_ETHER, ETHER_TYPE_PPPOE_DISCOVERY) #define PPPoE_QUERY_REPORT_SIZE 2048 #define PPPoE_QUERY_REPORT 'PoEQ' @@ -60,14 +65,14 @@ typedef struct complete_pppoe_header { // defined in pppoe.cpp -extern ifnet *FindPPPoEInterface(const char *name); +extern net_device *FindPPPoEInterface(const char *name); extern uint32 NewHostUniq(); extern void add_device(PPPoEDevice *device); extern void remove_device(PPPoEDevice *device); #if DEBUG // defined in PPPoEDevice.cpp -extern void dump_packet(struct mbuf *packet); +extern void dump_packet(net_buffer *packet); #endif // DEBUG diff --git a/src/add-ons/kernel/network/ppp/pppoe/PPPoEDevice.cpp b/src/add-ons/kernel/network/ppp/pppoe/PPPoEDevice.cpp index 70c49ddd1d..e749483f0c 100644 --- a/src/add-ons/kernel/network/ppp/pppoe/PPPoEDevice.cpp +++ b/src/add-ons/kernel/network/ppp/pppoe/PPPoEDevice.cpp @@ -3,41 +3,57 @@ * Distributed under the terms of the MIT License. */ +#include + +#include +#include +#include + +#include +#include + #include "PPPoEDevice.h" #include "DiscoveryPacket.h" -#include -#include - // from libkernelppp #include +extern net_stack_module_info *gStackModule; +extern net_buffer_module_info *gBufferModule; +extern status_t +pppoe_input(void *cookie, net_device *_device, net_buffer *packet); #if DEBUG static char sDigits[] = "0123456789ABCDEF"; void -dump_packet(struct mbuf *packet) +dump_packet(net_buffer *packet) { - if(!packet) + if (!packet) return; - - uint8 *data = mtod(packet, uint8*); + + BufferHeaderReader bufferheader(packet); + if (bufferheader.Status() != B_OK) + return; + uint8 &buffer = bufferheader.Data(); + uint8 *data = &buffer; uint8 buffer[33]; uint8 bufferIndex = 0; - + TRACE("Dumping packet;len=%ld;pkthdr.len=%d\n", packet->m_len, packet->m_flags & M_PKTHDR ? packet->m_pkthdr.len : -1); - - for(uint32 index = 0; index < packet->m_len; index++) { + + for (uint32 index = 0; index < packet->m_len; index++) { buffer[bufferIndex++] = sDigits[data[index] >> 4]; buffer[bufferIndex++] = sDigits[data[index] & 0x0F]; - if(bufferIndex == 32 || index == packet->m_len - 1) { + if (bufferIndex == 32 || index == packet->m_len - 1) { buffer[bufferIndex] = 0; TRACE("%s\n", buffer); bufferIndex = 0; } } } + + #endif @@ -54,30 +70,39 @@ PPPoEDevice::PPPoEDevice(KPPPInterface& interface, driver_parameter *settings) { #if DEBUG TRACE("PPPoEDevice: Constructor\n"); - if(!settings || !settings->parameters) + if (!settings || !settings->parameters) TRACE("PPPoEDevice::ctor: No settings!\n"); #endif - + interface.SetPFCOptions(PPP_ALLOW_PFC); // we do not want to fail just because the other side requests PFC - + memset(fPeer, 0xFF, sizeof(fPeer)); + SetMTU(1494); // MTU size does not contain PPP header - + + if (!settings) + dprintf("%s::%s: settings is NULL\n", __FILE__, __func__); + // find ethernet device - const char *interfaceName = get_parameter_value(PPPoE_INTERFACE_KEY, settings); - if(!interfaceName) - return; - + finterfaceName = get_parameter_value(PPPoE_INTERFACE_KEY, settings); + TRACE("%s::%s: finterfaceName is %s\n", __FILE__, __func__, + finterfaceName ? finterfaceName : "NULL"); + fACName = get_parameter_value(PPPoE_AC_NAME_KEY, settings); + TRACE("fACName is %s\n", fACName ? fACName : "NULL"); + fServiceName = get_parameter_value(PPPoE_SERVICE_NAME_KEY, settings); - - fEthernetIfnet = FindPPPoEInterface(interfaceName); - + TRACE("fServiceName is %s\n", fServiceName ? fServiceName : "NULL"); + + // fEthernetIfnet = FindPPPoEInterface(interfaceName); + #if DEBUG - if(!fEthernetIfnet) + if (!fEthernetIfnet) TRACE("PPPoEDevice::ctor: could not find ethernet interface\n"); + else + TRACE("%s::%s: Find Ethernet device", __FILE__, __func__); #endif } @@ -85,8 +110,10 @@ PPPoEDevice::PPPoEDevice(KPPPInterface& interface, driver_parameter *settings) status_t PPPoEDevice::InitCheck() const { - return EthernetIfnet() && EthernetIfnet()->output - && KPPPDevice::InitCheck() == B_OK ? B_OK : B_ERROR; + if (KPPPDevice::InitCheck() != B_OK) + dprintf("%s::%s: KPPPDevice::InitCheck() has error\n", __FILE__, __func__); + + return KPPPDevice::InitCheck() == B_OK ? B_OK : B_ERROR; } @@ -94,72 +121,103 @@ bool PPPoEDevice::Up() { TRACE("PPPoEDevice: Up()\n"); - - if(InitCheck() != B_OK) + + if (InitCheck() != B_OK) return false; - - if(IsUp()) + + if (IsUp()) return true; - + + fEthernetIfnet = FindPPPoEInterface(finterfaceName); + + if (fEthernetIfnet == NULL) { + dprintf("%s::%s: fEthernetIfnet %s not found\n", __FILE__, __func__, finterfaceName); + return false; + } + + memcpy(fEtherAddr, fEthernetIfnet->address.data, ETHER_ADDRESS_LENGTH); + dprintf("ppp's corresponding addr is %02x:%02x:%02x:%02x:%02x:%02x\n", + fEtherAddr[0], fEtherAddr[1], fEtherAddr[2], fEtherAddr[3], + fEtherAddr[4], fEtherAddr[5]); + + if (fEthernetIfnet->module == NULL) { + dprintf("%s::%s: fEthernetIfnet->module not found\n", __FILE__, + __func__); + return false; + } + add_device(this); - + fState = INITIAL; // reset state - - if(fAttempts > PPPoE_MAX_ATTEMPTS) { + + if (fAttempts > PPPoE_MAX_ATTEMPTS) { fAttempts = 0; return false; } - + ++fAttempts; // reset connection settings memset(fPeer, 0xFF, sizeof(fPeer)); - + // create PADI DiscoveryPacket discovery(PADI); - if(ServiceName()) + if (ServiceName()) discovery.AddTag(SERVICE_NAME, ServiceName(), strlen(ServiceName())); else discovery.AddTag(SERVICE_NAME, NULL, 0); discovery.AddTag(HOST_UNIQ, &fHostUniq, sizeof(fHostUniq)); discovery.AddTag(END_OF_LIST, NULL, 0); - + // set up PPP header - struct mbuf *packet = discovery.ToMbuf(MTU()); - if(!packet) + net_buffer *packet = discovery.ToNetBuffer(MTU()); + if (!packet) return false; - - // create destination - struct ether_header *ethernetHeader; - struct sockaddr destination; - memset(&destination, 0, sizeof(destination)); - destination.sa_family = AF_UNSPEC; - // raw packet with ethernet header - ethernetHeader = (struct ether_header*) destination.sa_data; - ethernetHeader->ether_type = ETHERTYPE_PPPOEDISC; - memcpy(ethernetHeader->ether_dhost, fPeer, sizeof(fPeer)); - + + // create ether header + NetBufferPrepend ethernetHeader(packet); + if (ethernetHeader.Status() != B_OK) + return false; + ether_header &header = ethernetHeader.Data(); + + memset(header.destination, 0xff, ETHER_ADDRESS_LENGTH); + memcpy(header.source, fEtherAddr, ETHER_ADDRESS_LENGTH); + header.type = htons(ETHER_TYPE_PPPOE_DISCOVERY); + ethernetHeader.Sync(); + // raw packet with ethernet header + // check if we are allowed to go up now (user intervention might disallow that) - if(fAttempts > 0 && !UpStarted()) { + if (fAttempts > 0 && !UpStarted()) { fAttempts = 0; remove_device(this); DownEvent(); return true; // there was no error } - + fState = PADI_SENT; // needed before sending, otherwise we might not get all packets - - if(EthernetIfnet()->output(EthernetIfnet(), packet, &destination, NULL) != B_OK) { + + status_t status = gStackModule->register_device_handler(fEthernetIfnet, + B_NET_FRAME_TYPE_PPPOE_DISCOVERY, &pppoe_input, NULL); + if (status != B_OK) + return false; + + status = gStackModule->register_device_handler(fEthernetIfnet, + B_NET_FRAME_TYPE_PPPOE, &pppoe_input, NULL); + if (status != B_OK) + return false; + + if (EthernetIfnet()->module->send_data(EthernetIfnet(), packet) != B_OK) { fState = INITIAL; fAttempts = 0; ERROR("PPPoEDevice::Up(): EthernetIfnet()->output() failed!\n"); return false; } - + + dprintf("PPPoEDevice::Up(): EthernetIfnet()->output() success!\n"); fNextTimeout = system_time() + PPPoE_TIMEOUT; - + return true; } @@ -168,36 +226,41 @@ bool PPPoEDevice::Down() { TRACE("PPPoEDevice: Down()\n"); - + + gStackModule->unregister_device_handler(fEthernetIfnet, + B_NET_FRAME_TYPE_PPPOE_DISCOVERY); + gStackModule->unregister_device_handler(fEthernetIfnet, + B_NET_FRAME_TYPE_PPPOE); + remove_device(this); - - if(InitCheck() != B_OK) + + if (InitCheck() != B_OK) return false; - + fState = INITIAL; fAttempts = 0; fNextTimeout = 0; // disable timeouts - - if(!IsUp()) { + + if (!IsUp()) { DownEvent(); return true; } - + DownStarted(); // this tells StateMachine that DownEvent() does not mean we lost connection - + // create PADT DiscoveryPacket discovery(PADT, SessionID()); discovery.AddTag(END_OF_LIST, NULL, 0); - - struct mbuf *packet = discovery.ToMbuf(MTU()); - if(!packet) { - ERROR("PPPoEDevice::Down(): ToMbuf() failed; MTU=%ld\n", MTU()); + + net_buffer *packet = discovery.ToNetBuffer(MTU()); + if (!packet) { + ERROR("PPPoEDevice::Down(): ToNetBuffer() failed; MTU=%ld\n", MTU()); DownEvent(); return false; } - + // create destination struct ether_header *ethernetHeader; struct sockaddr destination; @@ -205,15 +268,15 @@ PPPoEDevice::Down() destination.sa_family = AF_UNSPEC; // raw packet with ethernet header ethernetHeader = (struct ether_header*) destination.sa_data; - ethernetHeader->ether_type = ETHERTYPE_PPPOEDISC; - memcpy(ethernetHeader->ether_dhost, fPeer, sizeof(fPeer)); - + ethernetHeader->type = ETHER_TYPE_PPPOE_DISCOVERY; + memcpy(ethernetHeader->destination, fPeer, sizeof(fPeer)); + // reset connection settings memset(fPeer, 0xFF, sizeof(fPeer)); - - EthernetIfnet()->output(EthernetIfnet(), packet, &destination, NULL); + + EthernetIfnet()->module->send_data(EthernetIfnet(), packet); DownEvent(); - + return true; } @@ -242,220 +305,261 @@ PPPoEDevice::CountOutputBytes() const status_t -PPPoEDevice::Send(struct mbuf *packet, uint16 protocolNumber) +PPPoEDevice::Send(net_buffer *packet, uint16 protocolNumber) { // Send() is only for PPP packets. PPPoE packets are sent directly to ethernet. - + TRACE("PPPoEDevice: Send()\n"); - - if(!packet) + + if (!packet) return B_ERROR; - else if(InitCheck() != B_OK || protocolNumber != 0) { + else if (InitCheck() != B_OK || protocolNumber != 0) { ERROR("PPPoEDevice::Send(): InitCheck() != B_OK!\n"); - m_freem(packet); + gBufferModule->free(packet); return B_ERROR; } - - if(!IsUp()) { + + if (!IsUp()) { ERROR("PPPoEDevice::Send(): no connection!\n"); - m_freem(packet); + gBufferModule->free(packet); return PPP_NO_CONNECTION; } - - uint16 length = packet->m_flags & M_PKTHDR ? packet->m_pkthdr.len : packet->m_len; - + + uint16 length = packet->size; + // encapsulate packet into pppoe header - M_PREPEND(packet, PPPoE_HEADER_SIZE); - pppoe_header *header = mtod(packet, pppoe_header*); - header->version = PPPoE_VERSION; - header->type = PPPoE_TYPE; - header->code = 0x00; - header->sessionID = SessionID(); - header->length = htons(length); - - // create destination - struct ether_header *ethernetHeader; - struct sockaddr destination; - memset(&destination, 0, sizeof(destination)); - destination.sa_family = AF_UNSPEC; - // raw packet with ethernet header - ethernetHeader = (struct ether_header*) destination.sa_data; - ethernetHeader->ether_type = ETHERTYPE_PPPOE; - memcpy(ethernetHeader->ether_dhost, fPeer, sizeof(fPeer)); - - if(!packet || !mtod(packet, pppoe_header*)) + NetBufferPrepend bufferheader(packet); + if (bufferheader.Status() != B_OK) + return B_ERROR; + pppoe_header &header = bufferheader.Data(); + header.version = PPPoE_VERSION; + header.type = PPPoE_TYPE; + header.code = 0x00; + header.sessionID = SessionID(); + header.length = htons(length); + bufferheader.Sync(); + + // create ether header + NetBufferPrepend ethernetHeader(packet); + if (ethernetHeader.Status() != B_OK) + return false; + ether_header ðheader = ethernetHeader.Data(); + + memcpy(ethheader.destination, fPeer, ETHER_ADDRESS_LENGTH); + memcpy(ethheader.source, fEtherAddr, ETHER_ADDRESS_LENGTH); + ethheader.type = htons(ETHER_TYPE_PPPOE); + ethernetHeader.Sync(); + // raw packet with ethernet header + + if (!packet) ERROR("PPPoEDevice::Send(): packet is NULL!\n"); - - if(EthernetIfnet()->output(EthernetIfnet(), packet, &destination, NULL) != B_OK) { + + if (EthernetIfnet()->module->send_data(EthernetIfnet(), packet) != B_OK) { ERROR("PPPoEDevice::Send(): EthernetIfnet()->output() failed!\n"); remove_device(this); DownEvent(); // DownEvent() without DownStarted() indicates connection lost return PPP_NO_CONNECTION; } - + return B_OK; } status_t -PPPoEDevice::Receive(struct mbuf *packet, uint16 protocolNumber) +PPPoEDevice::Receive(net_buffer *packet, uint16 protocolNumber) { - if(!packet) + TRACE("%s entering %s: protocolNumber:%x\n", __FILE__, __func__, protocolNumber); + if (!packet) return B_ERROR; - else if(InitCheck() != B_OK || IsDown()) { - m_freem(packet); + + if (InitCheck() != B_OK || IsDown()) { + dprintf("PPPoED InitCheck fail or IsDown\n"); + // gBufferModule->free(packet); + dprintf("PPPoEDevice::Receive fail\n"); return B_ERROR; } - - complete_pppoe_header *completeHeader = mtod(packet, complete_pppoe_header*); - if(!completeHeader) { - m_freem(packet); - return B_ERROR; - } - + uint8 ethernetSource[6]; - memcpy(ethernetSource, completeHeader->ethernetHeader.ether_shost, sizeof(fPeer)); - status_t result = B_OK; - - if(completeHeader->ethernetHeader.ether_type == ETHERTYPE_PPPOE) { - m_adj(packet, ETHER_HDR_LEN); - pppoe_header *header = mtod(packet, pppoe_header*); - - if(!IsUp() || header->version != PPPoE_VERSION || header->type != PPPoE_TYPE - || header->code != 0x0 || header->sessionID != SessionID()) { - m_freem(packet); + struct sockaddr_dl& source = *(struct sockaddr_dl*)packet->source; + memcpy(ethernetSource, source.sdl_data, sizeof(fPeer)); + + int32 PPP_Packet_Type = B_NET_FRAME_TYPE(source.sdl_type, + ntohs(source.sdl_e_type)); +// bufferheader.Remove(); +// bufferheader.Sync(); + + if (PPP_Packet_Type == B_NET_FRAME_TYPE_PPPOE) { + TRACE("ETHER_TYPE_PPPOE\n"); + NetBufferHeaderReader bufferheader(packet); + if (bufferheader.Status() != B_OK) { + TRACE("creat NetBufferHeaderReader fail\n"); return B_ERROR; } - - m_adj(packet, PPPoE_HEADER_SIZE); + pppoe_header &header = bufferheader.Data(); + uint16 ppppoe_payload = ntohs(header.length); + + if (!IsUp() || header.version != PPPoE_VERSION || header.type != PPPoE_TYPE + || header.code != 0x0 || header.sessionID != SessionID()) { + // gBufferModule->free(packet); + TRACE("basic pppoe header check fail\n"); + return B_ERROR; + } + + bufferheader.Remove(); + bufferheader.Sync(); + + // trim the packet according to actual pppoe_payload + gBufferModule->trim(packet, ppppoe_payload); + return Interface().ReceiveFromDevice(packet); - } else if(completeHeader->ethernetHeader.ether_type == ETHERTYPE_PPPOEDISC) { - m_adj(packet, ETHER_HDR_LEN); - pppoe_header *header = mtod(packet, pppoe_header*); - + } + + if (PPP_Packet_Type == B_NET_FRAME_TYPE_PPPOE_DISCOVERY) { + dprintf("ETHER_TYPE_PPPOE_DISCOVERY\n"); + NetBufferHeaderReader bufferheader(packet); + if (bufferheader.Status() != B_OK) { + dprintf("create NetBufferHeaderReader fail\n"); + return B_ERROR; + } + pppoe_header &header = bufferheader.Data(); + // we do not need to check HOST_UNIQ tag as this is done in pppoe.cpp - if(header->version != PPPoE_VERSION || header->type != PPPoE_TYPE) { - m_freem(packet); + if (header.version != PPPoE_VERSION || header.type != PPPoE_TYPE) { + // gBufferModule->free(packet); + dprintf("PPPoEDevice::Receive fail version type wrong\n"); return B_ERROR; } - - if(IsDown()) { - m_freem(packet); + + if (IsDown()) { + // gBufferModule->free(packet); + dprintf("PPPoEDevice::Receive fail PPPoEDev IsDown\n"); return B_ERROR; } - + DiscoveryPacket discovery(packet); switch(discovery.Code()) { case PADO: { - if(fState != PADI_SENT) { - m_freem(packet); + dprintf("processing PADO\n"); + if (fState != PADI_SENT) { + // gBufferModule->free(packet); + dprintf("PPPoEDevice::Receive faile not PADI_Sent \n"); return B_OK; } - + bool hasServiceName = false, hasACName = false; pppoe_tag *tag; DiscoveryPacket reply(PADR); - for(int32 index = 0; index < discovery.CountTags(); index++) { + for (int32 index = 0; index < discovery.CountTags(); index++) { tag = discovery.TagAt(index); - if(!tag) + if (!tag) continue; - - switch(tag->type) { + + switch (tag->type) { case SERVICE_NAME: - if(!hasServiceName && (!ServiceName() - || (strlen(ServiceName()) == tag->length) + if (!hasServiceName && (!ServiceName() + || ((strlen(ServiceName()) == tag->length) && !memcmp(tag->data, ServiceName(), - tag->length))) { + tag->length)))) { hasServiceName = true; reply.AddTag(tag->type, tag->data, tag->length); } break; - + case AC_NAME: - if(!hasACName && (!ACName() - || (strlen(ACName()) == tag->length) + if (!hasACName && (!ACName() + || ((strlen(ACName()) == tag->length) && !memcmp(tag->data, ACName(), - tag->length))) { + tag->length)))) { hasACName = true; reply.AddTag(tag->type, tag->data, tag->length); } break; - + case AC_COOKIE: case RELAY_SESSION_ID: reply.AddTag(tag->type, tag->data, tag->length); break; - + case SERVICE_NAME_ERROR: case AC_SYSTEM_ERROR: case GENERIC_ERROR: - m_freem(packet); + // gBufferModule->free(packet); + dprintf("PPPoEDevice::generic error faile\n"); return B_ERROR; break; - + default: ; } } - - if(!hasServiceName) { - m_freem(packet); + + if (!hasServiceName) { + // gBufferModule->free(packet); + dprintf("PPPoEDevice::Receive faile no svc name\n"); return B_ERROR; } - + + dprintf("reply.AddTag\n"); reply.AddTag(HOST_UNIQ, &fHostUniq, sizeof(fHostUniq)); reply.AddTag(END_OF_LIST, NULL, 0); - struct mbuf *replyPacket = reply.ToMbuf(MTU()); - if(!replyPacket) { - m_freem(packet); + net_buffer *replyPacket = reply.ToNetBuffer(MTU()); + if (!replyPacket) { + // gBufferModule->free(packet); + dprintf("PPPoEDevice::Receive fail no reply pack\n"); return B_ERROR; } - - memcpy(fPeer, ethernetSource, sizeof(fPeer)); - - // create destination - struct ether_header *ethernetHeader; - struct sockaddr destination; - memset(&destination, 0, sizeof(destination)); - destination.sa_family = AF_UNSPEC; - // raw packet with ethernet header - ethernetHeader = (struct ether_header*) destination.sa_data; - ethernetHeader->ether_type = ETHERTYPE_PPPOEDISC; - memcpy(ethernetHeader->ether_dhost, fPeer, sizeof(fPeer)); - + + memcpy(fPeer, ethernetSource, ETHER_ADDRESS_LENGTH); + + // create ether header + NetBufferPrepend ethernetHeader(replyPacket); + if (ethernetHeader.Status() != B_OK) + return false; + ether_header &header = ethernetHeader.Data(); + + memcpy(header.destination, fPeer, ETHER_ADDRESS_LENGTH); + memcpy(header.source, fEtherAddr, ETHER_ADDRESS_LENGTH); + header.type=htons(ETHER_TYPE_PPPOE_DISCOVERY); + ethernetHeader.Sync(); + // raw packet with ethernet header + fState = PADR_SENT; - - if(EthernetIfnet()->output(EthernetIfnet(), replyPacket, &destination, - NULL) != B_OK) { - m_freem(packet); + + if (EthernetIfnet()->module->send_data(EthernetIfnet(), replyPacket) != B_OK) { + gBufferModule->free(replyPacket); + dprintf("PPPoEDevice::Receive fail send PADR\n"); return B_ERROR; } - + fNextTimeout = system_time() + PPPoE_TIMEOUT; - } break; - + } + break; case PADS: - if(fState != PADR_SENT - || memcmp(ethernetSource, fPeer, sizeof(fPeer))) { - m_freem(packet); + dprintf("procesing PADS\n"); + if (fState != PADR_SENT + || memcmp(ethernetSource, fPeer, sizeof(fPeer))) { + // gBufferModule->free(packet); + dprintf("PPPoEDevice::Receive PADS but no PADR sent\n"); return B_ERROR; } - - fSessionID = header->sessionID; + + fSessionID = header.sessionID; fState = OPENED; fNextTimeout = 0; UpEvent(); break; - + case PADT: - if(!IsUp() + dprintf("procesing PADT\n"); + if (!IsUp() || memcmp(ethernetSource, fPeer, sizeof(fPeer)) - || header->sessionID != SessionID()) { - m_freem(packet); + || header.sessionID != SessionID()) { + // gBufferModule->free(packet); + dprintf("PPPoEDevice::Receive fail not up yet\n"); return B_ERROR; } - + fState = INITIAL; fAttempts = 0; fSessionID = 0; @@ -463,16 +567,17 @@ PPPoEDevice::Receive(struct mbuf *packet, uint16 protocolNumber) remove_device(this); DownEvent(); break; - + default: - m_freem(packet); + dprintf("PPPoEDevice::Receive fail unknown pppoed code\n"); + // gBufferModule->free(packet); return B_ERROR; } - } else - result = B_ERROR; - - m_freem(packet); - return result; + } + + dprintf("PPPoEDevice::Receive PADX fine!\n"); + // gBufferModule->free(packet); + return B_OK; } @@ -480,13 +585,12 @@ void PPPoEDevice::Pulse() { // We use Pulse() for timeout of connection establishment. - - if(fNextTimeout == 0 || IsUp() || IsDown()) + if (fNextTimeout == 0 || IsUp() || IsDown()) return; - + // check if timed out - if(system_time() >= fNextTimeout) { - if(!Up()) + if (system_time() >= fNextTimeout) { + if (!Up()) UpFailedEvent(); } } diff --git a/src/add-ons/kernel/network/ppp/pppoe/PPPoEDevice.h b/src/add-ons/kernel/network/ppp/pppoe/PPPoEDevice.h index 39550587a3..2357726daf 100644 --- a/src/add-ons/kernel/network/ppp/pppoe/PPPoEDevice.h +++ b/src/add-ons/kernel/network/ppp/pppoe/PPPoEDevice.h @@ -10,6 +10,9 @@ #include +#include +#include + enum pppoe_state { INITIAL, @@ -25,7 +28,7 @@ class PPPoEDevice : public KPPPDevice { public: PPPoEDevice(KPPPInterface& interface, driver_parameter *settings); - ifnet *EthernetIfnet() const + net_device *EthernetIfnet() const { return fEthernetIfnet; } const uint8 *Peer() const @@ -50,17 +53,19 @@ class PPPoEDevice : public KPPPDevice { virtual uint32 CountOutputBytes() const; - virtual status_t Send(struct mbuf *packet, uint16 protocolNumber = 0); - virtual status_t Receive(struct mbuf *packet, uint16 protocolNumber = 0); + virtual status_t Send(net_buffer *packet, uint16 protocolNumber = 0); + virtual status_t Receive(net_buffer *packet, uint16 protocolNumber = 0); virtual void Pulse(); private: - ifnet *fEthernetIfnet; + net_device *fEthernetIfnet; uint8 fPeer[6]; + uint8 fEtherAddr[6]; uint16 fSessionID; uint32 fHostUniq; const char *fACName, *fServiceName; + const char *finterfaceName; uint32 fAttempts; bigtime_t fNextTimeout; diff --git a/src/add-ons/kernel/network/ppp/pppoe/pppoe.cpp b/src/add-ons/kernel/network/ppp/pppoe/pppoe.cpp index 5d0884a020..88cf36b4f7 100644 --- a/src/add-ons/kernel/network/ppp/pppoe/pppoe.cpp +++ b/src/add-ons/kernel/network/ppp/pppoe/pppoe.cpp @@ -5,34 +5,46 @@ #include #include -#include -#include -#include +#include +#include +#include + +#include +#include +#include +#include + +#include +#include // for get_interface and control +#include +#include #include #include #include -#include #include "PPPoEDevice.h" #include "DiscoveryPacket.h" typedef struct pppoe_query { - ifnet *ethernetIfnet; + net_device *ethernetIfnet; uint32 hostUniq; thread_id receiver; } pppoe_query; -#define PPPoE_MODULE_NAME NETWORK_MODULES_ROOT "ppp/pppoe" +#define PPPoE_MODULE_NAME "network/ppp/pppoe" + +net_stack_module_info *gStackModule = NULL; +net_buffer_module_info *gBufferModule = NULL; +net_datalink_module_info *sDatalinkModule = NULL; -struct core_module_info *core = NULL; -static struct ethernet_module_info *sEthernet; static int32 sHostUniq = 0; status_t std_ops(int32 op, ...); -static BLocker sLock("PPPoEList"); +// static mutex sLock("PPPoEList"); + static TemplateList *sDevices; static TemplateList *sQueries; @@ -44,51 +56,75 @@ SendQueryPacket(pppoe_query *query, DiscoveryPacket& discovery) char data[PPPoE_QUERY_REPORT_SIZE]; uint32 position = sizeof(uint32); pppoe_tag *acName = discovery.TagWithType(AC_NAME); - - if(acName) { - if(acName->length >= PPPoE_QUERY_REPORT_SIZE) + + if (acName) { + if (acName->length >= PPPoE_QUERY_REPORT_SIZE) return; - + memcpy(data + position, acName->data, acName->length); position += acName->length; } - + data[position++] = 0; - + pppoe_tag *tag; - for(int32 index = 0; index < discovery.CountTags(); index++) { + for (int32 index = 0; index < discovery.CountTags(); index++) { tag = discovery.TagAt(index); - if(tag && tag->type == SERVICE_NAME) { - if(position + tag->length >= PPPoE_QUERY_REPORT_SIZE) + if (tag && tag->type == SERVICE_NAME) { + if (position + tag->length >= PPPoE_QUERY_REPORT_SIZE) return; - + memcpy(data + position, tag->data, tag->length); position += tag->length; data[position++] = 0; } } - + memcpy(data, &position, sizeof(uint32)); // add the total length - + send_data_with_timeout(query->receiver, PPPoE_QUERY_REPORT, data, PPPoE_QUERY_REPORT_SIZE, 700000); } -ifnet* +net_interface * +get_interface_by_name(net_domain *domain, const char *name) +{ + ifreq request; + memset(&request, 0, sizeof(request)); + size_t size = sizeof(request); + + strlcpy(request.ifr_name, name, IF_NAMESIZE); + + if (sDatalinkModule->control(domain, SIOCGIFINDEX, &request, &size) != B_OK) { + TRACE("sDatalinkModule->control failure\n"); + return NULL; + } + return sDatalinkModule->get_interface(domain, request.ifr_index); +} + + +net_device* FindPPPoEInterface(const char *name) { - if(!name) + if (!name) + return NULL; + + net_interface* ethernetInterfaceOfPPPOE = NULL; + net_domain* domain = NULL; + + domain = gStackModule->get_domain(AF_INET); + ethernetInterfaceOfPPPOE = get_interface_by_name(domain, name); + + if (ethernetInterfaceOfPPPOE == NULL) { + TRACE("get_interface_by_name can not find eth\n"); return NULL; - - ifnet *current = get_interfaces(); - for(; current; current = current->if_next) { - if(current->if_type == IFT_ETHER && current->if_name - && !strcmp(current->if_name, name)) - return current; } - + + if (ethernetInterfaceOfPPPOE->device) + return ethernetInterfaceOfPPPOE->device; + return NULL; } @@ -104,9 +140,9 @@ void add_device(PPPoEDevice *device) { TRACE("PPPoE: add_device()\n"); - - LockerHelper locker(sLock); - if(!sDevices->HasItem(device)) + + // MutexLocker locker(sLock); + if (!sDevices->HasItem(device)) sDevices->AddItem(device); } @@ -115,85 +151,125 @@ void remove_device(PPPoEDevice *device) { TRACE("PPPoE: remove_device()\n"); - - LockerHelper locker(sLock); + + // MutexLocker locker(sLock); sDevices->RemoveItem(device); } -static -void -pppoe_input(struct mbuf *packet) +status_t +pppoe_input(void *cookie, net_device *_device, net_buffer *packet) { - if(!packet) - return; - - ifnet *sourceIfnet = packet->m_pkthdr.rcvif; - complete_pppoe_header *header = mtod(packet, complete_pppoe_header*); + if (!packet) + return B_ERROR; + + NetBufferHeaderReader bufferheader(packet); + if (bufferheader.Status() != B_OK) + return B_ERROR; + + pppoe_header &header = bufferheader.Data(); + + // remove the following lines when pppoe server is enabled + if (header.code == PADI) { + TRACE("PADI packet received, ignoreing!\n"); + gBufferModule->free(packet); + return B_OK; + } + + if (header.code == PADO || header.code == PADR || header.code == PADS || header.code == PADT) + { + uint8 peerEtherAddr[ETHER_ADDRESS_LENGTH]; + struct sockaddr_dl& source = *(struct sockaddr_dl*)packet->source; + memcpy(peerEtherAddr, source.sdl_data, ETHER_ADDRESS_LENGTH); + const char *str = header.code == PADI ? "PADI" : + header.code == PADO ? "PADO" : + header.code == PADR ? "PADR" : + header.code == PADS ? "PADS" : + "PADT" ; + + dprintf("%s from:%02x:%02x:%02x:%02x:%02x:%02x code:%02x\n", str, + peerEtherAddr[0], peerEtherAddr[1], peerEtherAddr[2], + peerEtherAddr[3], peerEtherAddr[4], peerEtherAddr[5], + header.code); + } + PPPoEDevice *device; pppoe_query *query; - - LockerHelper locker(sLock); - - if(header->ethernetHeader.ether_type == ETHERTYPE_PPPOEDISC - && header->pppoeHeader.length <= PPPoE_QUERY_REPORT_SIZE) { - for(int32 index = 0; index < sDevices->CountItems(); index++) { + + sockaddr_dl& linkAddress = *(sockaddr_dl*)packet->source; + int32 specificType = B_NET_FRAME_TYPE(linkAddress.sdl_type, + ntohs(linkAddress.sdl_e_type)); + + // MutexLocker locker(sLock); + + if (specificType == B_NET_FRAME_TYPE_PPPOE_DISCOVERY + && ntohs(header.length) <= PPPoE_QUERY_REPORT_SIZE) { + for (int32 index = 0; index < sDevices->CountItems(); index++) { query = sQueries->ItemAt(index); - - if(query && query->ethernetIfnet == sourceIfnet) { - if(header->pppoeHeader.code == PADO) { + + if (query) {// && query->ethernetIfnet == sourceIfnet) { + if (header.code == PADO) { DiscoveryPacket discovery(packet, ETHER_HDR_LEN); - if(discovery.InitCheck() != B_OK) { + if (discovery.InitCheck() != B_OK) { ERROR("PPPoE: received corrupted discovery packet!\n"); - m_freem(packet); - return; + // gBufferModule->free(packet); + return B_ERROR; } - + pppoe_tag *hostTag = discovery.TagWithType(HOST_UNIQ); - if(hostTag && hostTag->length == 4 + if (hostTag && hostTag->length == 4 && *((uint32*)hostTag->data) == query->hostUniq) { SendQueryPacket(query, discovery); - m_freem(packet); - return; + // gBufferModule->free(packet); + return B_ERROR; } } } } } - - for(int32 index = 0; index < sDevices->CountItems(); index++) { + + TRACE("in pppoed processing sDevices->CountItems(): %ld\n", sDevices->CountItems()); + + for (int32 index = 0; index < sDevices->CountItems(); index++) { device = sDevices->ItemAt(index); - - if(device && device->EthernetIfnet() == sourceIfnet) { - if(header->ethernetHeader.ether_type == ETHERTYPE_PPPOE - && header->pppoeHeader.sessionID == device->SessionID()) { + + TRACE("device->SessionID() %d, header.sessionID: %d\n", device->SessionID(), + header.sessionID); + + if (device) { // && device->EthernetIfnet() == sourceIfnet) { + if (specificType == B_NET_FRAME_TYPE_PPPOE + && header.sessionID == device->SessionID()) { TRACE("PPPoE: session packet\n"); device->Receive(packet); - return; - } else if(header->ethernetHeader.ether_type == ETHERTYPE_PPPOEDISC - && header->pppoeHeader.code != PADI - && header->pppoeHeader.code != PADR + return B_OK; + } + + if (specificType == B_NET_FRAME_TYPE_PPPOE_DISCOVERY + && header.code != PADI + && header.code != PADR && !device->IsDown()) { TRACE("PPPoE: discovery packet\n"); + DiscoveryPacket discovery(packet, ETHER_HDR_LEN); - if(discovery.InitCheck() != B_OK) { + if (discovery.InitCheck() != B_OK) { ERROR("PPPoE: received corrupted discovery packet!\n"); - m_freem(packet); - return; + gBufferModule->free(packet); + return B_OK; } - + pppoe_tag *tag = discovery.TagWithType(HOST_UNIQ); - if(header->pppoeHeader.code == PADT || (tag && tag->length == 4 - && *((uint32*)tag->data) == device->HostUniq())) { + if (header.code == PADT || (tag && tag->length == 4 + && *((uint32*)tag->data) == device->HostUniq())) { device->Receive(packet); - return; + return B_OK; } } } } - - ERROR("PPPoE: No device found for packet from: %s\n", sourceIfnet->if_name); - m_freem(packet); + + ERROR("PPPoE: No device found for packet from: %s\n", "ethernet"); + // gBufferModule->free(packet); + return B_ERROR; } @@ -202,22 +278,22 @@ bool add_to(KPPPInterface& mainInterface, KPPPInterface *subInterface, driver_parameter *settings, ppp_module_key_type type) { - if(mainInterface.Mode() != PPP_CLIENT_MODE || type != PPP_DEVICE_KEY_TYPE) + if (mainInterface.Mode() != PPP_CLIENT_MODE || type != PPP_DEVICE_KEY_TYPE) return B_ERROR; - + PPPoEDevice *device; bool success; - if(subInterface) { + if (subInterface) { device = new PPPoEDevice(*subInterface, settings); success = subInterface->SetDevice(device); } else { device = new PPPoEDevice(mainInterface, settings); success = mainInterface.SetDevice(device); } - + TRACE("PPPoE: add_to(): %s\n", success && device && device->InitCheck() == B_OK ? "OK" : "ERROR"); - + return success && device && device->InitCheck() == B_OK; } @@ -226,59 +302,62 @@ static status_t control(uint32 op, void *data, size_t length) { - switch(op) { + switch (op) { case PPPoE_GET_INTERFACES: { int32 position = 0, count = 0; char *names = (char*) data; - - ifnet *current = get_interfaces(); - for(; current; current = current->if_next) { - if(current->if_type == IFT_ETHER && current->if_name) { - if(position + strlen(current->if_name) + 1 > length) + + net_device *current = NULL; // get_interfaces(); + for (; current; current = NULL) { + if (current->type == IFT_ETHER && current->name) { + if (position + strlen(current->name) + 1 > length) return B_NO_MEMORY; - - strcpy(names + position, current->if_name); - position += strlen(current->if_name); + + strcpy(names + position, current->name); + position += strlen(current->name); names[position++] = 0; ++count; } } - + return count; } - + case PPPoE_QUERY_SERVICES: { // XXX: as all modules are loaded on-demand we must wait for the results - - if(!data || length != sizeof(pppoe_query_request)) + + if (!data || length != sizeof(pppoe_query_request)) return B_ERROR; - + pppoe_query_request *request = (pppoe_query_request*) data; - + pppoe_query query; query.ethernetIfnet = FindPPPoEInterface(request->interfaceName); - if(!query.ethernetIfnet) + if (!query.ethernetIfnet) return B_BAD_VALUE; - + query.hostUniq = NewHostUniq(); query.receiver = request->receiver; - - sLock.Lock(); - sQueries->AddItem(&query); - sLock.Unlock(); - + + { + // MutexLocker tlocker(sLock); + TRACE("add query\n"); + sQueries->AddItem(&query); + } + snooze(2000000); // wait two seconds for results - - sLock.Lock(); - sQueries->RemoveItem(&query); - sLock.Unlock(); + { + // MutexLocker tlocker(sLock); + TRACE("remove query\n"); + sQueries->RemoveItem(&query); + } } break; - + default: return B_ERROR; } - + return B_OK; } @@ -296,40 +375,48 @@ static ppp_module_info pppoe_module = { _EXPORT status_t -std_ops(int32 op, ...) +std_ops(int32 op, ...) { switch(op) { case B_MODULE_INIT: - if(get_module(NET_CORE_MODULE_NAME, (module_info**)&core) != B_OK) + if (get_module(NET_STACK_MODULE_NAME, + (module_info**)&gStackModule) != B_OK) return B_ERROR; - - if(get_module(NET_ETHERNET_MODULE_NAME, - (module_info**) &sEthernet) != B_OK) { - put_module(NET_CORE_MODULE_NAME); + + if (get_module(NET_DATALINK_MODULE_NAME, + (module_info **)&sDatalinkModule) != B_OK) { + put_module(NET_STACK_MODULE_NAME); return B_ERROR; } - - set_max_linkhdr(2 + PPPoE_HEADER_SIZE + ETHER_HDR_LEN); + + if (get_module(NET_BUFFER_MODULE_NAME, + (module_info **)&gBufferModule) != B_OK) { + put_module(NET_DATALINK_MODULE_NAME); + put_module(NET_STACK_MODULE_NAME); + return B_ERROR; + } + + // set_max_linkhdr(2 + PPPoE_HEADER_SIZE + ETHER_HDR_LEN); // 2 bytes for PPP header sDevices = new TemplateList; sQueries = new TemplateList; - sEthernet->set_pppoe_receiver(pppoe_input); - + TRACE("PPPoE: Registered PPPoE receiver.\n"); - return B_OK; - + return B_OK; + case B_MODULE_UNINIT: + delete sQueries; delete sDevices; - sEthernet->unset_pppoe_receiver(); TRACE("PPPoE: Unregistered PPPoE receiver.\n"); - put_module(NET_CORE_MODULE_NAME); - put_module(NET_ETHERNET_MODULE_NAME); - break; - + put_module(NET_BUFFER_MODULE_NAME); + put_module(NET_DATALINK_MODULE_NAME); + put_module(NET_STACK_MODULE_NAME); + break; + default: return B_ERROR; } - + return B_OK; } diff --git a/src/add-ons/kernel/network/ppp/shared/libkernelppp/Jamfile b/src/add-ons/kernel/network/ppp/shared/libkernelppp/Jamfile index 3b701b50d7..fe4cd26321 100644 --- a/src/add-ons/kernel/network/ppp/shared/libkernelppp/Jamfile +++ b/src/add-ons/kernel/network/ppp/shared/libkernelppp/Jamfile @@ -10,6 +10,9 @@ if $(TARGET_PLATFORM) != haiku { # Unfortunately we get more than we want, namely all POSIX headers. } +UsePrivateKernelHeaders ; +UsePrivateHeaders net ; + UsePrivateHeaders libroot net ; UsePrivateHeaders [ FDirName kernel ] ; UsePrivateHeaders [ FDirName kernel util ] ; @@ -37,7 +40,6 @@ KernelStaticLibrary libkernelppp.a : KPPPReportManager.cpp KPPPStateMachine.cpp KPPPUtils.cpp - Locker.cpp settings_tools.cpp # integrated modules @@ -49,7 +51,5 @@ KernelStaticLibrary libkernelppp.a : SEARCH on [ FGristFiles kernel_cpp.cpp ] = [ FDirName $(HAIKU_TOP) src system kernel util ] ; -SEARCH on [ FGristFiles Locker.cpp ] - = [ FDirName $(HAIKU_TOP) src system kernel disk_device_manager ] ; SEARCH on [ FGristFiles atomic.S ] = [ FDirName $(HAIKU_TOP) src system libroot os arch $(TARGET_ARCH) ] ; diff --git a/src/add-ons/kernel/network/ppp/shared/libkernelppp/KPPPConfigurePacket.cpp b/src/add-ons/kernel/network/ppp/shared/libkernelppp/KPPPConfigurePacket.cpp index bbe5e39e6f..82207eb092 100644 --- a/src/add-ons/kernel/network/ppp/shared/libkernelppp/KPPPConfigurePacket.cpp +++ b/src/add-ons/kernel/network/ppp/shared/libkernelppp/KPPPConfigurePacket.cpp @@ -5,18 +5,20 @@ /*! \class KPPPConfigurePacket \brief Helper class for LCP configure packets. - + This class allows iterating over configure items and adding/removing items. */ +#include +#include +#include + #include #include -#include - /*! \brief Constructor. - + \param code The code value (e.g.: PPP_CONFIGURE_REQUEST) of this packet. */ KPPPConfigurePacket::KPPPConfigurePacket(uint8 code) @@ -27,30 +29,33 @@ KPPPConfigurePacket::KPPPConfigurePacket(uint8 code) //! Decodes a packet and adds its items to this object. -KPPPConfigurePacket::KPPPConfigurePacket(struct mbuf *packet) +KPPPConfigurePacket::KPPPConfigurePacket(net_buffer *packet) { // decode packet - ppp_lcp_packet *header = mtod(packet, ppp_lcp_packet*); - - SetID(header->id); - if (!SetCode(header->code)) + NetBufferHeaderReader bufferhead(packet); + if (bufferhead.Status() != B_OK) return; - - uint16 length = ntohs(header->length); - - if (length < 6 || length > packet->m_len) + ppp_lcp_packet &header = bufferhead.Data(); + + SetID(header.id); + if (!SetCode(header.code)) + return; + + uint16 length = ntohs(header.length); + + if (length < 6 || length > packet->size) return; // there are no items (or one corrupted item) - + int32 position = 0; ppp_configure_item *item; - + while (position < length - 4) { - item = (ppp_configure_item*) (header->data + position); + item = (ppp_configure_item*) (header.data + position); if (item->length < 2) return; // found a corrupted item - + position += item->length; AddItem(item); } @@ -72,23 +77,23 @@ KPPPConfigurePacket::SetCode(uint8 code) // only configure codes are allowed! if (code < PPP_CONFIGURE_REQUEST || code > PPP_CONFIGURE_REJECT) return false; - + fCode = code; - + return true; } /*! \brief Adds a new configure item to this packet. - + Make sure all values are correct because the item will be copied. If the item's length field is incorrect you will get bad results. - + \param item The item. \param index Item's index. Adds after the last item if not specified or negative. - + \return \c true if successful, \c false otherwise. - + \sa ppp_configure_item */ bool @@ -96,10 +101,10 @@ KPPPConfigurePacket::AddItem(const ppp_configure_item *item, int32 index) { if (!item || item->length < 2) return false; - + ppp_configure_item *add = (ppp_configure_item*) malloc(item->length); memcpy(add, item, item->length); - + bool status; if (index < 0) status = fItems.AddItem(add); @@ -109,7 +114,7 @@ KPPPConfigurePacket::AddItem(const ppp_configure_item *item, int32 index) free(add); return false; } - + return true; } @@ -120,10 +125,10 @@ KPPPConfigurePacket::RemoveItem(ppp_configure_item *item) { if (!fItems.HasItem(item)) return false; - + fItems.RemoveItem(item); free(item); - + return true; } @@ -133,10 +138,10 @@ ppp_configure_item* KPPPConfigurePacket::ItemAt(int32 index) const { ppp_configure_item *item = fItems.ItemAt(index); - + if (item == fItems.GetDefaultItem()) return NULL; - + return item; } @@ -146,56 +151,71 @@ ppp_configure_item* KPPPConfigurePacket::ItemWithType(uint8 type) const { ppp_configure_item *item; - + for (int32 index = 0; index < CountItems(); index++) { item = ItemAt(index); if (item && item->type == type) return item; } - + return NULL; } -/*! \brief Converts this packet into an mbuf structure. - +/*! \brief Converts this packet into an net_buffer structure. + ATTENTION: You are responsible for freeing this packet by calling \c m_freem()! - + \param MRU The interface's maximum receive unit (MRU). \param reserve Number of bytes to reserve at the beginning of the packet. - - \return The mbuf structure or \c NULL on error (e.g.: too big for given MRU). + + \return The net_buffer structure or \c NULL on error (e.g.: too big for given MRU). */ -struct mbuf* -KPPPConfigurePacket::ToMbuf(uint32 MRU, uint32 reserve) +net_buffer* +KPPPConfigurePacket::ToNetBuffer(uint32 MRU) { - struct mbuf *packet = m_gethdr(MT_DATA); - packet->m_data += reserve; - - ppp_lcp_packet *header = mtod(packet, ppp_lcp_packet*); - + net_buffer *buffer = gBufferModule->create(256); + if (buffer == NULL) { + TRACE("%s::%s: gBufferModule->create fail\n", __FILE__, __func__); + return(NULL); + } + + ppp_lcp_packet *header; + status_t status = gBufferModule->append_size(buffer, 1492, (void **)&header); + if (status != B_OK) { + TRACE("%s::%s: gBufferModule->append_size\n", __FILE__, __func__); + gBufferModule->free(buffer); + return(NULL); + } + header->code = Code(); header->id = ID(); - + uint16 length = 0; ppp_configure_item *item; - + for (int32 index = 0; index < CountItems(); index++) { item = ItemAt(index); - + // make sure we have enough space left if (MRU - length < item->length) { - m_freem(packet); + gBufferModule->free(buffer); return NULL; } - + memcpy(header->data + length, item, item->length); length += item->length; } - + length += 4; header->length = htons(length); - packet->m_pkthdr.len = packet->m_len = length; - - return packet; + + status = gBufferModule->trim(buffer, length); + if (status < B_OK) { + dprintf("%s::%s: gBufferModule->trim\n", __FILE__, __func__); + gBufferModule->free(buffer); + return(NULL); + } + + return buffer; } diff --git a/src/add-ons/kernel/network/ppp/shared/libkernelppp/KPPPDevice.cpp b/src/add-ons/kernel/network/ppp/shared/libkernelppp/KPPPDevice.cpp index 62c39454bf..e9fdc0dfd4 100644 --- a/src/add-ons/kernel/network/ppp/shared/libkernelppp/KPPPDevice.cpp +++ b/src/add-ons/kernel/network/ppp/shared/libkernelppp/KPPPDevice.cpp @@ -5,7 +5,7 @@ /*! \class KPPPDevice \brief Represents a device at the lowest level of the communcation stack. - + A device may be, for example: Modem, PPPoE, PPTP. \n It encapsulates the packet and sends it over a line to the other end. The device is the first layer that receives a packet. @@ -14,13 +14,12 @@ #include #include -#include #include /*! \brief Initializes the device. - + \param name The device's type name (e.g.: PPPoE). \param overhead Length of the header that is prepended to each packet. \param interface Owning interface. @@ -46,12 +45,13 @@ KPPPDevice::~KPPPDevice() /*! \brief Allows private extensions. - + If you override this method you must call the parent's method for unknown ops. */ status_t KPPPDevice::Control(uint32 op, void *data, size_t length) { + dprintf("KPPPDevice::Control\n"); switch (op) { case PPPC_GET_DEVICE_INFO: { @@ -89,7 +89,7 @@ KPPPDevice::IsAllowedToSend() const //! This method is never used. status_t -KPPPDevice::Receive(struct mbuf *packet, uint16 protocolNumber) +KPPPDevice::Receive(net_buffer *packet, uint16 protocolNumber) { // let the interface handle the packet if (protocolNumber == 0) @@ -100,10 +100,10 @@ KPPPDevice::Receive(struct mbuf *packet, uint16 protocolNumber) /*! \brief Report that device is going up. - + Called by Up(). \n From now on, the connection attempt can may be aborted by calling Down(). - + \return - \c true: You are allowed to connect. - \c false: You should abort immediately. Down() will \e not be called! @@ -112,15 +112,15 @@ bool KPPPDevice::UpStarted() { fConnectionPhase = PPP_ESTABLISHMENT_PHASE; - + return Interface().StateMachine().TLSNotify(); } /*! \brief Report that device is going down. - + Called by Down(). - + \return - \c true: You are allowed to disconnect. - \c false: You must not disconnect! @@ -129,7 +129,7 @@ bool KPPPDevice::DownStarted() { fConnectionPhase = PPP_TERMINATION_PHASE; - + return Interface().StateMachine().TLFNotify(); } @@ -139,7 +139,7 @@ void KPPPDevice::UpFailedEvent() { fConnectionPhase = PPP_DOWN_PHASE; - + Interface().StateMachine().UpFailedEvent(); } @@ -149,7 +149,7 @@ void KPPPDevice::UpEvent() { fConnectionPhase = PPP_ESTABLISHED_PHASE; - + Interface().StateMachine().UpEvent(); } @@ -159,6 +159,6 @@ void KPPPDevice::DownEvent() { fConnectionPhase = PPP_DOWN_PHASE; - + Interface().StateMachine().DownEvent(); } diff --git a/src/add-ons/kernel/network/ppp/shared/libkernelppp/KPPPInterface.cpp b/src/add-ons/kernel/network/ppp/shared/libkernelppp/KPPPInterface.cpp index db04a6358d..99a2516f47 100644 --- a/src/add-ons/kernel/network/ppp/shared/libkernelppp/KPPPInterface.cpp +++ b/src/add-ons/kernel/network/ppp/shared/libkernelppp/KPPPInterface.cpp @@ -5,7 +5,7 @@ /*! \class KPPPInterface \brief The kernel representation of a PPP interface. - + This class is never created by the programmer directly. Instead, the PPP manager kernel module should be used. \n KPPPInterface handles all interface-specific commands from userspace and it @@ -23,7 +23,11 @@ // void (KernelExport.h) and once with int (stdio.h). #include #include -#include + +#include +#include +#include +#include // now our headers... #include @@ -38,7 +42,8 @@ #include // general helper classes not only belonging to us -#include +// #include +// #include // tools only for us :) #include "settings_tools.h" @@ -62,6 +67,9 @@ typedef struct reconnect_info { uint32 delay; } reconnect_info; +extern net_buffer_module_info *gBufferModule; +extern net_stack_module_info *gStackModule; + status_t reconnect_thread(void *data); // other functions @@ -69,7 +77,7 @@ status_t interface_deleter_thread(void *data); /*! \brief Creates a new interface. - + \param name Name of the PPP interface description file. \param entry The PPP manager passes an internal structure to the constructor. \param ID The interface's ID. @@ -95,7 +103,7 @@ KPPPInterface::KPPPInterface(const char *name, ppp_interface_entry *entry, fParent(NULL), fIsMultilink(false), fAutoReconnect(false), - fConnectOnDemand(false), + fConnectOnDemand(true), fAskBeforeConnecting(false), fMode(PPP_CLIENT_MODE), fLocalPFCState(PPP_PFC_DISABLED), @@ -110,30 +118,30 @@ KPPPInterface::KPPPInterface(const char *name, ppp_interface_entry *entry, fDeleteCounter(0) { entry->interface = this; - + if (name) { // load settings from description file char path[B_PATH_NAME_LENGTH]; sprintf(path, "ptpnet/%s", name); // XXX: TODO: change base path to "/etc/ptpnet" - + void *handle = load_driver_settings(path); if (!handle) { fInitStatus = B_ERROR; return; } - + fSettings = dup_driver_settings(get_driver_settings(handle)); unload_driver_settings(handle); } else fSettings = dup_driver_settings(settings); // use the given settings - + if (!fSettings) { fInitStatus = B_ERROR; return; } - + // add internal modules // LCP if (!AddProtocol(&LCP())) { @@ -162,48 +170,48 @@ KPPPInterface::KPPPInterface(const char *name, ppp_interface_entry *entry, ERROR("KPPPInterface: Could not add PFC handler!\n"); delete pfcHandler; } - + // set up connect delays fConnectRetryDelay = 3000; // 3s delay between each new attempt to reconnect fReconnectDelay = 1000; // 1s delay between lost connection and reconnect - + if (get_module(PPP_INTERFACE_MODULE_NAME, (module_info**) &fManager) != B_OK) ERROR("KPPPInterface: Manager module not found!\n"); - + // are we a multilink subinterface? if (parent && parent->IsMultilink()) { fParent = parent; fParent->AddChild(this); fIsMultilink = true; } - + RegisterInterface(); - + if (!fSettings) { fInitStatus = B_ERROR; return; } - + const char *value; - + // get login value = get_settings_value(PPP_USERNAME_KEY, fSettings); fUsername = value ? strdup(value) : strdup(""); value = get_settings_value(PPP_PASSWORD_KEY, fSettings); fPassword = value ? strdup(value) : strdup(""); - + // get DisonnectAfterIdleSince settings value = get_settings_value(PPP_DISONNECT_AFTER_IDLE_SINCE_KEY, fSettings); if (!value) fDisconnectAfterIdleSince = 0; else fDisconnectAfterIdleSince = atoi(value) * 1000; - + if (fDisconnectAfterIdleSince < 0) fDisconnectAfterIdleSince = 0; - + // get mode settings value = get_settings_value(PPP_MODE_KEY, fSettings); if (value && !strcasecmp(value, PPP_SERVER_MODE_VALUE)) @@ -211,17 +219,17 @@ KPPPInterface::KPPPInterface(const char *name, ppp_interface_entry *entry, else fMode = PPP_CLIENT_MODE; // we are a client by default - + SetAutoReconnect( get_boolean_value( get_settings_value(PPP_AUTO_RECONNECT_KEY, fSettings), false) ); // auto reconnect is disabled by default - + fAskBeforeConnecting = get_boolean_value( get_settings_value(PPP_ASK_BEFORE_CONNECTING_KEY, fSettings), false); - + // load all protocols and the device if (!LoadModules(fSettings, 0, fSettings->parameter_count)) { ERROR("KPPPInterface: Error loading modules!\n"); @@ -234,41 +242,42 @@ KPPPInterface::KPPPInterface(const char *name, ppp_interface_entry *entry, KPPPInterface::~KPPPInterface() { TRACE("KPPPInterface: Destructor\n"); - + // tell protocols to uninit (remove routes, etc.) KPPPProtocol *protocol = FirstProtocol(); for (; protocol; protocol = protocol->NextProtocol()) protocol->Uninit(); - + // make sure we are not accessible by any thread before we continue UnregisterInterface(); - + if (fManager) fManager->RemoveInterface(ID()); - + // Call Down() until we get a lock on an interface that is down. // This lock is not released until we are actually deleted. while (true) { Down(); - fLock.Lock(); - if (State() == PPP_INITIAL_STATE && Phase() == PPP_DOWN_PHASE) - break; - fLock.Unlock(); + { + MutexLocker (fLock); + if (State() == PPP_INITIAL_STATE && Phase() == PPP_DOWN_PHASE) + break; + } } - + Report(PPP_DESTRUCTION_REPORT, 0, &fID, sizeof(ppp_interface_id)); // tell all listeners that we are being destroyed - + int32 tmp; send_data_with_timeout(fReconnectThread, 0, NULL, 0, 200); // tell thread that we are being destroyed (200ms timeout) wait_for_thread(fReconnectThread, &tmp); - + while (CountChildren()) delete ChildAt(0); - + delete Device(); - + while (FirstProtocol()) { if (FirstProtocol() == &LCP()) fFirstProtocol = fFirstProtocol->NextProtocol(); @@ -276,17 +285,17 @@ KPPPInterface::~KPPPInterface() delete FirstProtocol(); // destructor removes protocol from list } - + for (int32 index = 0; index < fModules.CountItems(); index++) { put_module(fModules.ItemAt(index)); delete[] fModules.ItemAt(index); } - + free_driver_settings(fSettings); - + if (Parent()) Parent()->RemoveChild(this); - + if (fManager) put_module(PPP_INTERFACE_MODULE_NAME); } @@ -296,14 +305,16 @@ KPPPInterface::~KPPPInterface() void KPPPInterface::Delete() { - LockerHelper locker(fLock); - + // MutexLocker locker(fLock); + // alreay locked in KPPPStatemachine::DownEvent + // uncomment this line will cause double lock + if (fDeleteCounter > 0) return; // only one thread should delete us! - + fDeleteCounter = 1; - + fManager->DeleteInterface(ID()); // This will mark us for deletion. // Any subsequent calls to delete_interface() will do nothing. @@ -316,17 +327,17 @@ KPPPInterface::InitCheck() const { if (fInitStatus != B_OK) return fInitStatus; - + if (!fSettings || !fManager) return B_ERROR; - + // sub-interfaces should have a device if (IsMultilink()) { if (Parent() && !fDevice) return B_ERROR; } else if (!fDevice) return B_ERROR; - + return B_OK; } @@ -338,7 +349,7 @@ KPPPInterface::Username() const // this data is not available before we authenticate if (Phase() < PPP_AUTHENTICATION_PHASE) return NULL; - + return fUsername; } @@ -350,7 +361,7 @@ KPPPInterface::Password() const // this data is not available before we authenticate if (Phase() < PPP_AUTHENTICATION_PHASE) return NULL; - + return fPassword; } @@ -360,16 +371,18 @@ bool KPPPInterface::SetMRU(uint32 MRU) { TRACE("KPPPInterface: SetMRU(%ld)\n", MRU); - + if (Device() && MRU > Device()->MTU() - 2) return false; - - LockerHelper locker(fLock); - + + // MutexLocker locker(fLock); + // uncomment this line will cause double lock + // alreay locked in ::Up and ::KPPPInterface + fMRU = MRU; - + CalculateInterfaceMTU(); - + return true; } @@ -379,22 +392,22 @@ uint32 KPPPInterface::PacketOverhead() const { uint32 overhead = fHeaderLength + 2; - + if (Device()) overhead += Device()->Overhead(); - + return overhead; } /*! \brief Allows accessing additional functions. - + This is normally called by userland apps to get information about the interface. - + \param op The op value (see ppp_control_ops enum). \param data (Optional): Additional data may be needed for this op. \param length Length of data. - + \return - \c B_OK: \c Control() was successful. - \c B_ERROR: Either \a length is too small or data is NULL. @@ -406,7 +419,298 @@ KPPPInterface::PacketOverhead() const status_t KPPPInterface::Control(uint32 op, void *data, size_t length) { - switch (op) { + TRACE("%s:%s\n", __FILE__, __func__); + + control_net_module_args* args = (control_net_module_args*)data; + if (op != NET_STACK_CONTROL_NET_MODULE) { + dprintf("unknow op!!\n"); + return B_BAD_VALUE; + } + + switch (args->op) { + case PPPC_COUNT_INTERFACES: + { + // should be implepented + dprintf("PPPC_COUNT_INTERFACES should be implepentd\n"); + + return B_OK; + } + + case PPPC_GET_INTERFACES: + { + dprintf("PPPC_GET_INTERFACES\n"); + ppp_get_interfaces_info* info = (ppp_get_interfaces_info*)args->data; + dprintf("info->interfaces: %p\n", info->interfaces); + *(info->interfaces) = 1; + info->resultCount = 1; + + return B_OK; + } + + case PPPC_CONTROL_INTERFACE: + { + dprintf("PPPC_CONTROL_INTERFACE\n"); + ppp_control_info* control = (ppp_control_info*)args->data; + + switch (control->op) { + case PPPC_GET_INTERFACE_INFO: + { + dprintf("PPPC_GET_INTERFACE_INFO\n"); + if (control->length < sizeof(ppp_interface_info_t) || !control->data) { + dprintf("size wrong!\n"); + return B_ERROR; + } + + ppp_interface_info *info = (ppp_interface_info*) control->data; + dprintf("info addr:%p\n", info); + memset(info, 0, sizeof(ppp_interface_info_t)); + if (Name()) + strncpy(info->name, Name(), PPP_HANDLER_NAME_LENGTH_LIMIT); + + if (Ifnet()) + info->if_unit = Ifnet()->index; + else + info->if_unit = -1; + info->mode = Mode(); + info->state = State(); + info->phase = Phase(); + info->localAuthenticationStatus = + StateMachine().LocalAuthenticationStatus(); + info->peerAuthenticationStatus = + StateMachine().PeerAuthenticationStatus(); + info->localPFCState = LocalPFCState(); + info->peerPFCState = PeerPFCState(); + info->pfcOptions = PFCOptions(); + info->protocolsCount = CountProtocols(); + info->optionHandlersCount = LCP().CountOptionHandlers(); + info->LCPExtensionsCount = 0; + info->childrenCount = CountChildren(); + info->MRU = MRU(); + info->interfaceMTU = InterfaceMTU(); + info->connectAttempt = fConnectAttempt; + info->connectRetriesLimit = fConnectRetriesLimit; + info->connectRetryDelay = ConnectRetryDelay(); + info->reconnectDelay = ReconnectDelay(); + info->connectedSince = ConnectedSince(); + info->idleSince = IdleSince(); + info->disconnectAfterIdleSince = DisconnectAfterIdleSince(); + info->doesConnectOnDemand = DoesConnectOnDemand(); + info->doesAutoReconnect = DoesAutoReconnect(); + info->hasDevice = Device(); + info->isMultilink = IsMultilink(); + info->hasParent = Parent(); + break; + } + + case PPPC_SET_USERNAME: + { + dprintf("PPPC_SET_USERNAME\n"); + if (control->length > PPP_HANDLER_NAME_LENGTH_LIMIT || !control->data) { + dprintf("size wrong!\n"); + return B_ERROR; + } + + MutexLocker locker(fLock); + // login information can only be changed before we authenticate + if (Phase() >= PPP_AUTHENTICATION_PHASE) + return B_NOT_ALLOWED; + + free(fUsername); + fUsername = control->data ? strdup((const char*) control->data) : strdup(""); + dprintf("set ppp user name to %s\n", fUsername); + + break; + } + + case PPPC_SET_PASSWORD: + { + dprintf("PPPC_SET_PASSWORD\n"); + if (control->length > PPP_HANDLER_NAME_LENGTH_LIMIT || !control->data) { + dprintf("size wrong!\n"); + return B_ERROR; + } + + MutexLocker locker(fLock); + // login information can only be changed before we authenticate + if (Phase() >= PPP_AUTHENTICATION_PHASE) + return B_NOT_ALLOWED; + + free(fPassword); + fPassword = control->data ? strdup((const char*) control->data) : strdup(""); + dprintf("set ppp password to %s!\n", fPassword); + break; + } + + case PPPC_SET_ASK_BEFORE_CONNECTING: + { + dprintf("PPPC_SET_ASK_BEFORE_CONNECTING\n"); + if (control->length < sizeof(uint32) || !control->data) { + dprintf("size wrong!\n"); + return B_ERROR; + } + + SetAskBeforeConnecting(*((uint32*)control->data)); + dprintf("goto PPPC_SET_ASK_BEFORE_CONNECTING here!\n"); + break; + } + + case PPPC_GET_STATISTICS: + { + dprintf("PPPC_GET_STATISTICS\n"); + if (control->length < sizeof(ppp_statistics) || !control->data) { + dprintf("size wrong!\n"); + return B_ERROR; + } + + dprintf("should PPPC_GET_STATISTICS here!\n"); + + memcpy(control->data, &fStatistics, sizeof(ppp_statistics)); + break; + } + + case PPPC_HAS_INTERFACE_SETTINGS: + { + dprintf("PPPC_HAS_INTERFACE_SETTINGS\n"); + if (control->length < sizeof(driver_settings) || !control->data) { + dprintf("size wrong!\n"); + return B_ERROR; + } + + dprintf("should PPPC_HAS_INTERFACE_SETTINGS here!\n"); + + if (equal_interface_settings(Settings(), (driver_settings*)control->data)) + return B_OK; + else + return B_ERROR; + break; + + } + + case PPPC_ENABLE_REPORTS: + { + dprintf("PPPC_ENABLE_REPORTS\n"); + if (control->length < sizeof(ppp_report_request) || !control->data) { + dprintf("size wrong!\n"); + return B_ERROR; + } + + dprintf("should PPPC_ENABLE_REPORTS here!\n"); + + MutexLocker locker(fLock); + ppp_report_request *request = (ppp_report_request*) control->data; + // first, we send an initial state report + if (request->type == PPP_CONNECTION_REPORT) { + ppp_report_packet report; + report.type = PPP_CONNECTION_REPORT; + report.code = StateMachine().fLastConnectionReportCode; + report.length = sizeof(fID); + KPPPReportManager::SendReport(request->thread, &report); + if (request->flags & PPP_REMOVE_AFTER_REPORT) + return B_OK; + } + ReportManager().EnableReports(request->type, request->thread, + request->flags); + break; + } + + case PPPC_DISABLE_REPORTS: + { + dprintf("PPPC_DISABLE_REPORTS\n"); + if (control->length < sizeof(ppp_report_request) || !control->data) { + dprintf("size wrong!\n"); + return B_ERROR; + } + + dprintf("should PPPC_DISABLE_REPORTS here!\n"); + + ppp_report_request *request = (ppp_report_request*) control->data; + ReportManager().DisableReports(request->type, request->thread); + break; + } + + case PPPC_CONTROL_DEVICE: + { + dprintf("PPPC_CONTROL_DEVICE\n"); + if (control->length < sizeof(ppp_control_info) || !control->data) + return B_ERROR; + + ppp_control_info *controlInfo = (ppp_control_info*) control->data; + if (controlInfo->index != 0 || !Device()) + { + dprintf("index is 0 or no Device\n"); + return B_BAD_INDEX; + } + + return Device()->Control(controlInfo->op, controlInfo->data, controlInfo->length); + } + + case PPPC_CONTROL_PROTOCOL: + { + dprintf("PPPC_CONTROL_PROTOCOL\n"); + if (control->length < sizeof(ppp_control_info) || !control->data) + return B_ERROR; + + ppp_control_info *controlInfo = (ppp_control_info*) control->data; + KPPPProtocol *protocol = ProtocolAt(controlInfo->index); + if (!protocol) + return B_BAD_INDEX; + + return protocol->Control(controlInfo->op, controlInfo->data, controlInfo->length); + } + + case PPPC_CONTROL_OPTION_HANDLER: + { + dprintf("PPPC_CONTROL_OPTION_HANDLER\n"); + if (control->length < sizeof(ppp_control_info) || !control->data) + return B_ERROR; + + ppp_control_info *controlInfo = (ppp_control_info*) control->data; + KPPPOptionHandler *optionHandler = LCP().OptionHandlerAt(controlInfo->index); + if (!optionHandler) { + dprintf("optionHandler no avail\n"); + return B_BAD_INDEX; + } + + return optionHandler->Control(controlInfo->op, controlInfo->data, + controlInfo->length); + } + + case PPPC_CONTROL_LCP_EXTENSION: + { + dprintf("PPPC_CONTROL_LCP_EXTENSION\n"); + if (control->length < sizeof(ppp_control_info) || !control->data) + return B_ERROR; + + ppp_control_info *controlInfo = (ppp_control_info*) control->data; + KPPPLCPExtension *lcpExtension = LCP().LCPExtensionAt(controlInfo->index); + if (!lcpExtension) + return B_BAD_INDEX; + + return lcpExtension->Control(controlInfo->op, controlInfo->data, + controlInfo->length); + } + + case PPPC_CONTROL_CHILD: + { + dprintf("PPPC_CONTROL_CHILD\n"); + if (control->length < sizeof(ppp_control_info) || !control->data) + return B_ERROR; + + ppp_control_info *controlInfo = (ppp_control_info*) control->data; + KPPPInterface *child = ChildAt(controlInfo->index); + if (!child) + return B_BAD_INDEX; + + return child->Control(controlInfo->op, controlInfo->data, controlInfo->length); + } + + default : + return B_ERROR; + } + + return B_OK; + } + case PPPC_GET_INTERFACE_INFO: { if (length < sizeof(ppp_interface_info_t) || !data) @@ -417,7 +721,7 @@ KPPPInterface::Control(uint32 op, void *data, size_t length) if (Name()) strncpy(info->name, Name(), PPP_HANDLER_NAME_LENGTH_LIMIT); if (Ifnet()) - info->if_unit = Ifnet()->if_unit; + info->if_unit = Ifnet()->index; else info->if_unit = -1; info->mode = Mode(); @@ -456,7 +760,7 @@ KPPPInterface::Control(uint32 op, void *data, size_t length) if (!data) return B_ERROR; - LockerHelper locker(fLock); + MutexLocker locker(fLock); // login information can only be changed before we authenticate if (Phase() >= PPP_AUTHENTICATION_PHASE) return B_NOT_ALLOWED; @@ -470,12 +774,12 @@ KPPPInterface::Control(uint32 op, void *data, size_t length) { if (!data) return B_ERROR; - - LockerHelper locker(fLock); + + MutexLocker locker(fLock); // login information can only be changed before we authenticate if (Phase() >= PPP_AUTHENTICATION_PHASE) return B_NOT_ALLOWED; - + free(fPassword); fPassword = data ? strdup((const char*) data) : strdup(""); break; @@ -505,7 +809,7 @@ KPPPInterface::Control(uint32 op, void *data, size_t length) case PPPC_SET_AUTO_RECONNECT: if (length < sizeof(uint32) || !data) return B_ERROR; - + SetAutoReconnect(*((uint32*)data)); break; @@ -524,7 +828,7 @@ KPPPInterface::Control(uint32 op, void *data, size_t length) if (length < sizeof(ppp_report_request) || !data) return B_ERROR; - LockerHelper locker(fLock); + MutexLocker locker(fLock); ppp_report_request *request = (ppp_report_request*) data; // first, we send an initial state report if (request->type == PPP_CONNECTION_REPORT) { @@ -562,7 +866,7 @@ KPPPInterface::Control(uint32 op, void *data, size_t length) { if (length < sizeof(ppp_control_info) || !data) return B_ERROR; - + ppp_control_info *control = (ppp_control_info*) data; if (control->index != 0 || !Device()) return B_BAD_INDEX; @@ -574,12 +878,12 @@ KPPPInterface::Control(uint32 op, void *data, size_t length) { if (length < sizeof(ppp_control_info) || !data) return B_ERROR; - + ppp_control_info *control = (ppp_control_info*) data; KPPPProtocol *protocol = ProtocolAt(control->index); if (!protocol) return B_BAD_INDEX; - + return protocol->Control(control->op, control->data, control->length); } @@ -597,7 +901,7 @@ KPPPInterface::Control(uint32 op, void *data, size_t length) control->length); } - case PPPC_CONTROL_LCP_EXTENSION: + case PPPC_CONTROL_LCP_EXTENSION: { if (length < sizeof(ppp_control_info) || !data) return B_ERROR; @@ -625,22 +929,23 @@ KPPPInterface::Control(uint32 op, void *data, size_t length) } default: + dprintf("bad ppp_interface_control!\n"); return B_BAD_VALUE; } - + return B_OK; } /*! \brief Sets a new device for this interface. - + A device add-on should call this method to register itself. The best place to do this is in your module's \c add_to() function. - + \param device The device object. - + \return \c true if successful or \c false otherwise. - + \sa KPPPDevice \sa kppp_module_info */ @@ -648,46 +953,46 @@ bool KPPPInterface::SetDevice(KPPPDevice *device) { TRACE("KPPPInterface: SetDevice(%p)\n", device); - + if (device && &device->Interface() != this) return false; - + if (IsMultilink() && !Parent()) return false; // main interfaces do not have devices - - LockerHelper locker(fLock); - + + MutexLocker locker(fLock); + if (Phase() != PPP_DOWN_PHASE) return false; // a running connection may not change - + if (fDevice && (IsUp() || fDevice->IsUp())) Down(); - + fDevice = device; SetNext(device); - + if (fDevice) fMRU = fDevice->MTU() - 2; - + CalculateInterfaceMTU(); CalculateBaudRate(); - + return true; } /*! \brief Adds a new protocol to this interface. - + NOTE: You can only add protocols in \c PPP_DOWN_PHASE. \n A protocol add-on should call this method to register itself. The best place to do this is in your module's \c add_to() function. - + \param protocol The protocol object. - + \return \c true if successful or \c false otherwise. - + \sa KPPPProtocol \sa kppp_module_info */ @@ -696,36 +1001,36 @@ KPPPInterface::AddProtocol(KPPPProtocol *protocol) { // Find insert position after the last protocol // with the same level. - + TRACE("KPPPInterface: AddProtocol(%X)\n", protocol ? protocol->ProtocolNumber() : 0); - + if (!protocol || &protocol->Interface() != this || protocol->Level() == PPP_INTERFACE_LEVEL) return false; - - LockerHelper locker(fLock); - + + MutexLocker locker(fLock); + if (Phase() != PPP_DOWN_PHASE) return false; // a running connection may not change - + KPPPProtocol *current = fFirstProtocol, *previous = NULL; - + while (current) { if (current->Level() < protocol->Level()) break; - + previous = current; current = current->NextProtocol(); } - + if (!current) { if (!previous) fFirstProtocol = protocol; else previous->SetNextProtocol(protocol); - + // set up the last protocol in the chain protocol->SetNextProtocol(NULL); // this also sets next to NULL @@ -733,33 +1038,33 @@ KPPPInterface::AddProtocol(KPPPProtocol *protocol) // we need to set us as the next layer for the last protocol } else { protocol->SetNextProtocol(current); - + if (!previous) fFirstProtocol = protocol; else previous->SetNextProtocol(protocol); } - + if (protocol->Level() < PPP_PROTOCOL_LEVEL) CalculateInterfaceMTU(); - + if (IsUp() || Phase() >= protocol->ActivationPhase()) protocol->Up(); - + return true; } /*! \brief Removes a protocol from this interface. - + NOTE: You can only remove protocols in \c PPP_DOWN_PHASE. \n A protocol add-on should call this method to remove itself explicitly from the interface. \n Normally, this method is called in KPPPProtocol's destructor. Do not call it yourself unless you know what you do! - + \param protocol The protocol object. - + \return \c true if successful or \c false otherwise. */ bool @@ -767,40 +1072,40 @@ KPPPInterface::RemoveProtocol(KPPPProtocol *protocol) { TRACE("KPPPInterface: RemoveProtocol(%X)\n", protocol ? protocol->ProtocolNumber() : 0); - - LockerHelper locker(fLock); - + + MutexLocker locker(fLock); + if (Phase() != PPP_DOWN_PHASE) return false; // a running connection may not change - + KPPPProtocol *current = fFirstProtocol, *previous = NULL; - + while (current) { if (current == protocol) { if (!protocol->IsDown()) protocol->Down(); - + if (previous) { previous->SetNextProtocol(current->NextProtocol()); - + // set us as next layer if needed if (!previous->Next()) previous->SetNext(this); } else fFirstProtocol = current->NextProtocol(); - + current->SetNextProtocol(NULL); - + CalculateInterfaceMTU(); - + return true; } - + previous = current; current = current->NextProtocol(); } - + return false; } @@ -809,14 +1114,14 @@ KPPPInterface::RemoveProtocol(KPPPProtocol *protocol) int32 KPPPInterface::CountProtocols() const { - LockerHelper locker(fLock); - + MutexLocker locker(fLock); + KPPPProtocol *protocol = FirstProtocol(); - + int32 count = 0; for (; protocol; protocol = protocol->NextProtocol()) ++count; - + return count; } @@ -825,34 +1130,35 @@ KPPPInterface::CountProtocols() const KPPPProtocol* KPPPInterface::ProtocolAt(int32 index) const { - LockerHelper locker(fLock); - + MutexLocker locker(fLock); + KPPPProtocol *protocol = FirstProtocol(); - + int32 currentIndex = 0; for (; protocol && currentIndex != index; protocol = protocol->NextProtocol()) ++currentIndex; - + return protocol; } /*! \brief Returns the protocol object responsible for a given protocol number. - + \param protocolNumber The protocol number that the object should handle. \param start (Optional): Start with this protocol. Can be used for iteration. - + \return Either the object that was found or \c NULL. */ KPPPProtocol* KPPPInterface::ProtocolFor(uint16 protocolNumber, KPPPProtocol *start) const { TRACE("KPPPInterface: ProtocolFor(%X)\n", protocolNumber); - - LockerHelper locker(fLock); - + + // MutexLocker locker(fLock); + // already locked in ::Receive, uncomment this line will cause double lock + KPPPProtocol *current = start ? start : FirstProtocol(); - + for (; current; current = current->NextProtocol()) { if (current->ProtocolNumber() == protocolNumber || (current->Flags() & PPP_INCLUDES_NCP @@ -860,7 +1166,7 @@ KPPPInterface::ProtocolFor(uint16 protocolNumber, KPPPProtocol *start) const == (protocolNumber & 0x7FFF))) return current; } - + return NULL; } @@ -870,17 +1176,17 @@ bool KPPPInterface::AddChild(KPPPInterface *child) { TRACE("KPPPInterface: AddChild(%lX)\n", child ? child->ID() : 0); - + if (!child) return false; - - LockerHelper locker(fLock); - + + MutexLocker locker(fLock); + if (fChildren.HasItem(child) || !fChildren.AddItem(child)) return false; - + child->SetParent(this); - + return true; } @@ -890,18 +1196,18 @@ bool KPPPInterface::RemoveChild(KPPPInterface *child) { TRACE("KPPPInterface: RemoveChild(%lX)\n", child ? child->ID() : 0); - - LockerHelper locker(fLock); - + + MutexLocker locker(fLock); + if (!fChildren.RemoveItem(child)) return false; - + child->SetParent(NULL); - + // parents cannot exist without their children if (CountChildren() == 0 && fManager && Ifnet()) Delete(); - + return true; } @@ -911,14 +1217,14 @@ KPPPInterface* KPPPInterface::ChildAt(int32 index) const { TRACE("KPPPInterface: ChildAt(%ld)\n", index); - - LockerHelper locker(fLock); - + + MutexLocker locker(fLock); + KPPPInterface *child = fChildren.ItemAt(index); - + if (child == fChildren.GetDefaultItem()) return NULL; - + return child; } @@ -928,10 +1234,10 @@ void KPPPInterface::SetAutoReconnect(bool autoReconnect) { TRACE("KPPPInterface: SetAutoReconnect(%s)\n", autoReconnect ? "true" : "false"); - + if (Mode() != PPP_CLIENT_MODE) return; - + fAutoReconnect = autoReconnect; } @@ -942,11 +1248,11 @@ KPPPInterface::SetConnectOnDemand(bool connectOnDemand) { // All protocols must check if ConnectOnDemand was enabled/disabled after this // interface went down. This is the only situation where a change is relevant. - + TRACE("KPPPInterface: SetConnectOnDemand(%s)\n", connectOnDemand ? "true" : "false"); - - LockerHelper locker(fLock); - + + MutexLocker locker(fLock); + // Only clients support ConnectOnDemand. if (Mode() != PPP_CLIENT_MODE) { TRACE("KPPPInterface::SetConnectOnDemand(): Wrong mode!\n"); @@ -954,9 +1260,9 @@ KPPPInterface::SetConnectOnDemand(bool connectOnDemand) return; } else if (DoesConnectOnDemand() == connectOnDemand) return; - + fConnectOnDemand = connectOnDemand; - + // Do not allow changes when we are disconnected (only main interfaces). // This would make no sense because // - enabling: this cannot happen because hidden interfaces are deleted if they @@ -966,17 +1272,17 @@ KPPPInterface::SetConnectOnDemand(bool connectOnDemand) if (!connectOnDemand) Delete(); // as long as the protocols were not configured we can just delete us - + return; } - + // check if we need to set/unset flags if (connectOnDemand) { if (Ifnet()) - Ifnet()->if_flags |= IFF_UP; + Ifnet()->flags |= IFF_UP; } else if (!connectOnDemand && Phase() < PPP_ESTABLISHED_PHASE) { if (Ifnet()) - Ifnet()->if_flags &= ~IFF_UP; + Ifnet()->flags &= ~IFF_UP; } } @@ -985,14 +1291,14 @@ KPPPInterface::SetConnectOnDemand(bool connectOnDemand) void KPPPInterface::SetAskBeforeConnecting(bool ask) { - LockerHelper locker(fLock); - + MutexLocker locker(fLock); + bool old = fAskBeforeConnecting; fAskBeforeConnecting = ask; - + if (old && fAskBeforeConnecting == false && State() == PPP_STARTING_STATE && Phase() == PPP_DOWN_PHASE) { - locker.UnlockNow(); + // locker.Unlock(); StateMachine().ContinueOpenEvent(); } } @@ -1003,65 +1309,65 @@ bool KPPPInterface::SetPFCOptions(uint8 pfcOptions) { TRACE("KPPPInterface: SetPFCOptions(0x%X)\n", pfcOptions); - - LockerHelper locker(fLock); - + + MutexLocker locker(fLock); + if (PFCOptions() & PPP_FREEZE_PFC_OPTIONS) return false; - + fPFCOptions = pfcOptions; return true; } /*! \brief Brings this interface up. - + \c Down() overrides all \c Up() requests. \n This method runs an asynchronous process (it returns immediately). - + \return \c false on error. */ bool KPPPInterface::Up() { TRACE("KPPPInterface: Up()\n"); - + if (InitCheck() != B_OK || Phase() == PPP_TERMINATION_PHASE) return false; - + if (IsUp()) return true; - - LockerHelper locker(fLock); + + MutexLocker locker(fLock); StateMachine().OpenEvent(); - + return true; } /*! \brief Brings this interface down. - + \c Down() overrides all \c Up() requests. \n This method runs an asynchronous process (it returns immediately). - + \return \c false on error. */ bool KPPPInterface::Down() { TRACE("KPPPInterface: Down()\n"); - + if (InitCheck() != B_OK) return false; else if (State() == PPP_INITIAL_STATE && Phase() == PPP_DOWN_PHASE) return true; - + send_data_with_timeout(fReconnectThread, 0, NULL, 0, 200); // tell the reconnect thread to abort its attempt (if it's still waiting) - - LockerHelper locker(fLock); + + MutexLocker locker(fLock); StateMachine().CloseEvent(); - + return true; } @@ -1071,58 +1377,65 @@ bool KPPPInterface::WaitForConnection() { TRACE("KPPPInterface: WaitForConnection()\n"); - + if (InitCheck() != B_OK) return false; - + + // just delay ~3 seconds to wait for ppp go up + for (uint32 i = 0; i < 10000; i++) + for (uint32 j = 0; j < 3000000; j++) + + return true; // for temporary + ReportManager().EnableReports(PPP_CONNECTION_REPORT, find_thread(NULL)); - + ppp_report_packet report; thread_id sender; bool successful = false; while (true) { if (receive_data(&sender, &report, sizeof(report)) != PPP_REPORT_CODE) continue; - + if (report.type == PPP_DESTRUCTION_REPORT) break; else if (report.type != PPP_CONNECTION_REPORT) continue; - + if (report.code == PPP_REPORT_UP_SUCCESSFUL) { successful = true; break; } else if (report.code == PPP_REPORT_DOWN_SUCCESSFUL) break; } - + ReportManager().DisableReports(PPP_CONNECTION_REPORT, find_thread(NULL)); + dprintf("KPPPInterface: WaitForConnection():%s\n", successful ? "True" : "False"); return successful; } /*! \brief Loads modules specified in the settings structure. - + \param settings PPP interface description file format settings. \param start Index of driver_parameter to start with. \param count Number of driver_parameters to look at. - + \return \c true if successful or \c false otherwise. */ bool KPPPInterface::LoadModules(driver_settings *settings, int32 start, int32 count) { TRACE("KPPPInterface: LoadModules()\n"); - + if (Phase() != PPP_DOWN_PHASE) return false; // a running connection may not change - + ppp_module_key_type type; // which type key was used for loading this module? - + const char *name = NULL; - + // multilink handling for (int32 index = start; index < settings->parameter_count && index < (start + count); index++) { @@ -1134,7 +1447,7 @@ KPPPInterface::LoadModules(driver_settings *settings, int32 start, int32 count) break; } } - + // are we a multilink main interface? if (IsMultilink() && !Parent()) { // main interfaces only load the multilink module @@ -1142,13 +1455,13 @@ KPPPInterface::LoadModules(driver_settings *settings, int32 start, int32 count) fManager->CreateInterface(settings, ID()); return true; } - + for (int32 index = start; index < settings->parameter_count && index < start + count; index++) { type = PPP_UNDEFINED_KEY_TYPE; - + name = settings->parameters[index].name; - + if (!strcasecmp(name, PPP_LOAD_MODULE_KEY)) type = PPP_LOAD_MODULE_KEY_TYPE; else if (!strcasecmp(name, PPP_DEVICE_KEY)) @@ -1157,7 +1470,7 @@ KPPPInterface::LoadModules(driver_settings *settings, int32 start, int32 count) type = PPP_PROTOCOL_KEY_TYPE; else if (!strcasecmp(name, PPP_AUTHENTICATOR_KEY)) type = PPP_AUTHENTICATOR_KEY_TYPE; - + if (type >= 0) for (int32 value_id = 0; value_id < settings->parameters[index].value_count; value_id++) @@ -1165,17 +1478,17 @@ KPPPInterface::LoadModules(driver_settings *settings, int32 start, int32 count) &settings->parameters[index], type)) return false; } - + return true; } /*! \brief Loads a specific module. - + \param name Name of the module. \param parameter Module settings. \param type Type of module. - + \return \c true if successful or \c false otherwise. */ bool @@ -1183,28 +1496,28 @@ KPPPInterface::LoadModule(const char *name, driver_parameter *parameter, ppp_module_key_type type) { TRACE("KPPPInterface: LoadModule(%s)\n", name ? name : "XXX: NO NAME"); - + if (Phase() != PPP_DOWN_PHASE) return false; // a running connection may not change - + if (!name || strlen(name) > B_FILE_NAME_LENGTH) return false; - + char *moduleName = new char[B_PATH_NAME_LENGTH]; - + sprintf(moduleName, "%s/%s", PPP_MODULES_PATH, name); - + ppp_module_info *module; if (get_module(moduleName, (module_info**) &module) != B_OK) { delete[] moduleName; return false; } - + // add the module to the list of loaded modules // for putting them on our destruction fModules.AddItem(moduleName); - + return module->add_to(Parent() ? *Parent() : *this, this, parameter, type); } @@ -1218,53 +1531,56 @@ KPPPInterface::IsAllowedToSend() const /*! \brief Sends a packet to the device. - + This brings the interface up if connect-on-demand is enabled and we are not connected. \n PFC encoding is handled here. \n NOTE: In order to prevent interface destruction while sending you must either hold a refcount for this interface or make sure it is locked. - + \param packet The packet. \param protocolNumber The packet's protocol number. - + \return - \c B_OK: Sending was successful. - \c B_ERROR: Some error occured. */ status_t -KPPPInterface::Send(struct mbuf *packet, uint16 protocolNumber) +KPPPInterface::Send(net_buffer *packet, uint16 protocolNumber) { TRACE("KPPPInterface: Send(0x%X)\n", protocolNumber); - + if (!packet) return B_ERROR; - + // we must pass the basic tests like: // do we have a device? // did we load all modules? if (InitCheck() != B_OK) { - m_freem(packet); + ERROR("InitCheck() fail\n"); + gBufferModule->free(packet); return B_ERROR; } - + + // go up if ConnectOnDemand is enabled and we are disconnected // TODO: our new netstack will simplify ConnectOnDemand handling, so // we do not have to handle it here if ((protocolNumber != PPP_LCP_PROTOCOL && DoesConnectOnDemand() && (Phase() == PPP_DOWN_PHASE || Phase() == PPP_ESTABLISHMENT_PHASE) - && !Up()) || !WaitForConnection()) { - m_freem(packet); + && !Up()) && !WaitForConnection()) { + dprintf("DoesConnectOnDemand fail!\n"); + // gBufferModule->free(packet); return B_ERROR; } - + // find the protocol handler for the current protocol number KPPPProtocol *protocol = ProtocolFor(protocolNumber); while (protocol && !protocol->IsEnabled()) protocol = protocol->NextProtocol() ? ProtocolFor(protocolNumber, protocol->NextProtocol()) : NULL; - + #if DEBUG if (!protocol) TRACE("KPPPInterface::Send(): no protocol found!\n"); @@ -1277,70 +1593,79 @@ KPPPInterface::Send(struct mbuf *packet, uint16 protocolNumber) else TRACE("KPPPInterface::Send(): protocol allowed\n"); #endif - + // make sure that protocol is allowed to send and everything is up - if (!Device()->IsUp() || !protocol || !protocol->IsEnabled() + if (Device()->IsUp() && protocolNumber == 0x0021) { + // IP_PROTOCOL 0x0021 + TRACE("send IP packet!\n"); + } else if (!Device()->IsUp() || !protocol || !protocol->IsEnabled() || !IsProtocolAllowed(*protocol)) { - ERROR("KPPPInterface::Send(): cannot send!\n"); - m_freem(packet); + ERROR("KPPPInterface::Send(): Device is down, throw packet away!!\n"); + // gBufferModule->free(packet); return B_ERROR; } - + // encode in ppp frame and consider using PFC - if (UseLocalPFC() && protocolNumber & 0xFF00 == 0) { - M_PREPEND(packet, 1); - - if (packet == NULL) - return B_ERROR; - - uint8 *header = mtod(packet, uint8*); - *header = protocolNumber & 0xFF; + if (UseLocalPFC() && (protocolNumber & 0xFF00) == 0) { + TRACE("%s::%s should not go here\n", __FILE__, __func__); + NetBufferPrepend bufferHeader(packet); + if (bufferHeader.Status() != B_OK) + return bufferHeader.Status(); + + uint8 &header = bufferHeader.Data(); + + // memcpy(header.destination, ether_pppoe_ppp_header, 1); + header = (protocolNumber & 0x00FF); + // bufferHeader.Sync(); + } else { - M_PREPEND(packet, 2); - - if (packet == NULL) - return B_ERROR; - + NetBufferPrepend bufferHeader(packet); + if (bufferHeader.Status() != B_OK) + return bufferHeader.Status(); + + uint16 &header = bufferHeader.Data(); + // set protocol (the only header field) - protocolNumber = htons(protocolNumber); - uint16 *header = mtod(packet, uint16*); - *header = protocolNumber; + header = htons(protocolNumber); + // bufferHeader.Sync(); } - + // pass to device if we're either not a multilink interface or a child interface if (!IsMultilink() || Parent()) { // check if packet is too big for device - uint32 length = packet->m_flags & M_PKTHDR ? (uint32) packet->m_pkthdr.len : - packet->m_len; - + uint32 length = packet->size; + if (length > MRU()) { - m_freem(packet); + dprintf("packet too large!\n"); + gBufferModule->free(packet); return B_ERROR; } - + atomic_add64(&fStatistics.bytesSent, length); atomic_add64(&fStatistics.packetsSent, 1); + TRACE("%s::%s SendToNext\n", __FILE__, __func__); return SendToNext(packet, 0); // this is normally the device, but there can be something inbetween } else { // the multilink protocol should have sent it to some child interface - m_freem(packet); + TRACE("It is weird to go here!\n"); + gBufferModule->free(packet); return B_ERROR; } } /*! \brief Receives a packet. - + Encapsulation protocols may use this method to pass encapsulated packets to the PPP interface. Packets will be handled as if they were raw packets that came directly from the device via \c ReceiveFromDevice(). \n If no handler could be found in this interface the parent's \c Receive() method is called. - + \param packet The packet. \param protocolNumber The packet's protocol number. - + \return - \c B_OK: Receiving was successful. - \c B_ERROR: Some error occured. @@ -1348,26 +1673,38 @@ KPPPInterface::Send(struct mbuf *packet, uint16 protocolNumber) - \c PPP_DISCARDED: The protocol handler(s) did not handle this packet. */ status_t -KPPPInterface::Receive(struct mbuf *packet, uint16 protocolNumber) +KPPPInterface::Receive(net_buffer *packet, uint16 protocolNumber) { TRACE("KPPPInterface: Receive(0x%X)\n", protocolNumber); - + if (!packet) return B_ERROR; - - LockerHelper locker(fLock); - + + MutexLocker locker(fLock); + int32 result = PPP_REJECTED; // assume we have no handler - - // Set our interface as the receiver. - // The real netstack protocols (IP, IPX, etc.) might get confused if our - // interface is a main interface and at the same time not registered - // because then there is no receiver interface. - // PPP NCPs should be aware of that! - if (packet->m_flags & M_PKTHDR && Ifnet() != NULL) - packet->m_pkthdr.rcvif = Ifnet(); - + + if (protocolNumber == 0x0021 && Device() && Device()->IsUp()) { + // IP_PROTOCOL 0x0021 + TRACE("%s::%s: receiving IP packet\n", __FILE__, __func__); + ppp_device* dev=(ppp_device*)Ifnet(); + + if (dev) + return gStackModule->fifo_enqueue_buffer(&(dev->ppp_fifo), packet); + else { + dprintf("%s::%s: no ppp_device\n", __FILE__, __func__); + return B_ERROR; + } + } + // // Set our interface as the receiver. + // // The real netstack protocols (IP, IPX, etc.) might get confused if our + // // interface is a main interface and at the same time not registered + // // because then there is no receiver interface. + // // PPP NCPs should be aware of that! + // if (packet->m_flags & M_PKTHDR && Ifnet() != NULL) + // packet->m_pkthdr.rcvif = Ifnet(); + // Find handler and let it parse the packet. // The handler does need not be up because if we are a server // the handler might be upped by this packet. @@ -1377,26 +1714,26 @@ KPPPInterface::Receive(struct mbuf *packet, uint16 protocolNumber) protocol = protocol->NextProtocol() ? ProtocolFor(protocolNumber, protocol->NextProtocol()) : NULL) { TRACE("KPPPInterface::Receive(): trying protocol\n"); - + if (!protocol->IsEnabled() || !IsProtocolAllowed(*protocol)) continue; // skip handler if disabled or not allowed - + result = protocol->Receive(packet, protocolNumber); if (result == PPP_UNHANDLED) continue; - + return result; } - + TRACE("KPPPInterface::Receive(): trying parent\n"); - + // maybe the parent interface can handle the packet if (Parent()) return Parent()->Receive(packet, protocolNumber); - + if (result == PPP_UNHANDLED) { - m_freem(packet); + gBufferModule->free(packet); return PPP_DISCARDED; } else { StateMachine().RUCEvent(packet, protocolNumber); @@ -1406,12 +1743,12 @@ KPPPInterface::Receive(struct mbuf *packet, uint16 protocolNumber) /*! \brief Receives a base PPP packet from the device. - + KPPPDevice should call this method when it receives a packet. \n PFC decoding is handled here. - + \param packet The packet. - + \return - \c B_OK: Receiving was successful. - \c B_ERROR: Some error occured. @@ -1419,30 +1756,47 @@ KPPPInterface::Receive(struct mbuf *packet, uint16 protocolNumber) - \c PPP_DISCARDED: The protocol handler(s) did not handle this packet. */ status_t -KPPPInterface::ReceiveFromDevice(struct mbuf *packet) +KPPPInterface::ReceiveFromDevice(net_buffer *packet) { TRACE("KPPPInterface: ReceiveFromDevice()\n"); - + if (!packet) return B_ERROR; - + if (InitCheck() != B_OK) { - m_freem(packet); + gBufferModule->free(packet); return B_ERROR; } - - uint32 length = packet->m_flags & M_PKTHDR ? (uint32) packet->m_pkthdr.len : - packet->m_len; - + + uint32 length = packet->size; // decode ppp frame and recognize PFC - uint16 protocolNumber = *mtod(packet, uint8*); - if (protocolNumber & 1) { - m_adj(packet, 1); + NetBufferHeaderReader bufferHeader(packet); + if (bufferHeader.Status() < B_OK) + return bufferHeader.Status(); + + uint16 &header = bufferHeader.Data(); + uint16 protocolNumber = ntohs(header); // copy the protocol number + TRACE("%s::%s: ppp protocol number:%x\n", __FILE__, __func__, protocolNumber); + + bufferHeader.Remove(); + bufferHeader.Sync(); + + // PFC only use 1 byte for protocol, the next byte is in first byte of message + if (protocolNumber & (1UL<<8)) { + NetBufferPrepend bufferprepend(packet); + if (bufferprepend.Status() < B_OK) { + gBufferModule->free(packet); + return bufferprepend.Status(); + } + + uint8 &prepend = bufferprepend.Data(); + prepend = (uint8)(protocolNumber & 0x00FF); + // bufferprepend.Sync(); + TRACE("%s::%s:PFC protocol:%x\n", __FILE__, __func__, protocolNumber>>8); } else { - protocolNumber = ntohs(*mtod(packet, uint16*)); - m_adj(packet, 2); + TRACE("%s::%s:Non-PFC protocol:%x\n", __FILE__, __func__, protocolNumber); } - + atomic_add64(&fStatistics.bytesReceived, length); atomic_add64(&fStatistics.packetsReceived, 1); return Receive(packet, protocolNumber); @@ -1453,21 +1807,21 @@ KPPPInterface::ReceiveFromDevice(struct mbuf *packet) void KPPPInterface::Pulse() { - LockerHelper locker(fLock); - + MutexLocker locker(fLock); + if (Device()) Device()->Pulse(); - + KPPPProtocol *protocol = FirstProtocol(); for (; protocol; protocol = protocol->NextProtocol()) protocol->Pulse(); - + uint32 currentTime = real_time_clock(); if (fUpdateIdleSince) { fIdleSince = currentTime; fUpdateIdleSince = false; } - + // check our idle time and disconnect if needed if (fDisconnectAfterIdleSince > 0 && fIdleSince != 0 && fIdleSince - currentTime >= fDisconnectAfterIdleSince) @@ -1480,31 +1834,33 @@ bool KPPPInterface::RegisterInterface() { TRACE("KPPPInterface: RegisterInterface()\n"); - + if (fIfnet) return true; // we are already registered - - LockerHelper locker(fLock); - + + MutexLocker locker(fLock); + // only MainInterfaces get an ifnet if (IsMultilink() && Parent() && Parent()->RegisterInterface()) return true; - + if (!fManager) return false; - + fIfnet = fManager->RegisterInterface(ID()); - - if (!fIfnet) + + if (!fIfnet) { + dprintf("%s:%s: damn it no fIfnet device\n", __FILE__, __func__); return false; - + } + if (DoesConnectOnDemand()) - fIfnet->if_flags |= IFF_UP; - + fIfnet->flags |= IFF_UP; + CalculateInterfaceMTU(); CalculateBaudRate(); - + return true; } @@ -1514,24 +1870,24 @@ bool KPPPInterface::UnregisterInterface() { TRACE("KPPPInterface: UnregisterInterface()\n"); - + if (!fIfnet) return true; // we are already unregistered - - LockerHelper locker(fLock); - + + MutexLocker locker(fLock); + // only MainInterfaces get an ifnet if (IsMultilink() && Parent()) return true; - + if (!fManager) return false; - + fManager->UnregisterInterface(ID()); // this will delete fIfnet, so do not access it anymore! fIfnet = NULL; - + return true; } @@ -1541,12 +1897,12 @@ status_t KPPPInterface::StackControl(uint32 op, void *data) { TRACE("KPPPInterface: StackControl(0x%lX)\n", op); - + switch (op) { default: return StackControlEachHandler(op, data); } - + return B_OK; } @@ -1574,7 +1930,7 @@ class CallStackControl { }; /*! \brief This calls Control() with the given parameters for each add-on. - + \return - \c B_OK: All handlers returned B_OK. - \c B_BAD_VALUE: No handler was found. @@ -1584,11 +1940,11 @@ status_t KPPPInterface::StackControlEachHandler(uint32 op, void *data) { TRACE("KPPPInterface: StackControlEachHandler(0x%lX)\n", op); - + status_t result = B_BAD_VALUE, tmp; - - LockerHelper locker(fLock); - + + MutexLocker locker(fLock); + KPPPProtocol *protocol = FirstProtocol(); for (; protocol; protocol = protocol->NextProtocol()) { tmp = protocol->StackControl(op, data); @@ -1597,12 +1953,12 @@ KPPPInterface::StackControlEachHandler(uint32 op, void *data) else if (tmp != B_BAD_VALUE) result = tmp; } - + ForEachItem(LCP().fLCPExtensions, CallStackControl(op, data, result)); ForEachItem(LCP().fOptionHandlers, CallStackControl(op, data, result)); - + return result; } @@ -1612,26 +1968,29 @@ void KPPPInterface::CalculateInterfaceMTU() { TRACE("KPPPInterface: CalculateInterfaceMTU()\n"); - - LockerHelper locker(fLock); - + + // MutexLocker locker(fLock); + // uncomment this line will cause double lock + // alreay locked in ::KPPPInterface + fInterfaceMTU = fMRU; fHeaderLength = 2; - + // sum all headers (the protocol field is not counted) KPPPProtocol *protocol = FirstProtocol(); for (; protocol; protocol = protocol->NextProtocol()) { if (protocol->Level() < PPP_PROTOCOL_LEVEL) fHeaderLength += protocol->Overhead(); } - + fInterfaceMTU -= fHeaderLength; - + if (Ifnet()) { - Ifnet()->if_mtu = fInterfaceMTU; - Ifnet()->if_hdrlen = fHeaderLength; + Ifnet()->mtu = fInterfaceMTU; + Ifnet()->header_length = fHeaderLength; + return; } - + if (Parent()) Parent()->CalculateInterfaceMTU(); } @@ -1642,20 +2001,21 @@ void KPPPInterface::CalculateBaudRate() { TRACE("KPPPInterface: CalculateBaudRate()\n"); - - LockerHelper locker(fLock); - + + // MutexLocker locker(fLock); // uncomment this will cause double lock + if (!Ifnet()) return; - + if (Device()) - fIfnet->if_baudrate = max_c(Device()->InputTransferRate(), - Device()->OutputTransferRate()); + fIfnet->link_speed = max_c(Device()->InputTransferRate(), + Device()->OutputTransferRate()); else { - fIfnet->if_baudrate = 0; + fIfnet->link_speed = 0; for (int32 index = 0; index < CountChildren(); index++) if (ChildAt(index)->Ifnet()) - fIfnet->if_baudrate += ChildAt(index)->Ifnet()->if_baudrate; + fIfnet->link_speed += ChildAt(index)->Ifnet()->link_speed; + return; } } @@ -1665,25 +2025,25 @@ void KPPPInterface::Reconnect(uint32 delay) { TRACE("KPPPInterface: Reconnect(%ld)\n", delay); - - LockerHelper locker(fLock); - + + MutexLocker locker(fLock); + if (fReconnectThread != -1) return; - + ++fConnectAttempt; - + // start a new thread that calls our Up() method reconnect_info info; info.interface = this; info.thread = &fReconnectThread; info.delay = delay; - + fReconnectThread = spawn_kernel_thread(reconnect_thread, "KPPPInterface: reconnect_thread", B_NORMAL_PRIORITY, NULL); - + resume_thread(fReconnectThread); - + send_data(fReconnectThread, 0, &info, sizeof(reconnect_info)); } @@ -1694,17 +2054,17 @@ reconnect_thread(void *data) reconnect_info info; thread_id sender; int32 code; - + receive_data(&sender, &info, sizeof(reconnect_info)); - + // we try to receive data instead of snooze, so we can quit on destruction if (receive_data_with_timeout(&sender, &code, NULL, 0, info.delay) == B_OK) { *info.thread = -1; return B_OK; } - + info.interface->Up(); *info.thread = -1; - + return B_OK; } diff --git a/src/add-ons/kernel/network/ppp/shared/libkernelppp/KPPPLCP.cpp b/src/add-ons/kernel/network/ppp/shared/libkernelppp/KPPPLCP.cpp index d84a0728cb..0191a90266 100644 --- a/src/add-ons/kernel/network/ppp/shared/libkernelppp/KPPPLCP.cpp +++ b/src/add-ons/kernel/network/ppp/shared/libkernelppp/KPPPLCP.cpp @@ -5,7 +5,7 @@ /*! \class KPPPLCP \brief The LCP protocol. - + Every PPP interface \e must have an LCP protocol. It is used for establishing and terminating connections. \n When establishing a connecition the LCP protocol determines connection-specific @@ -20,9 +20,12 @@ #include #include -#include + +#include #include +extern net_buffer_module_info *gBufferModule; + //! Creates a new LCP protocol for the given interface. KPPPLCP::KPPPLCP(KPPPInterface& interface) @@ -48,7 +51,7 @@ KPPPLCP::~KPPPLCP() /*! \brief Adds a new option handler. - + NOTE: You can only add option handlers in \c PPP_DOWN_PHASE. \n There may only be one handler per option type! */ @@ -57,19 +60,19 @@ KPPPLCP::AddOptionHandler(KPPPOptionHandler *optionHandler) { if (!optionHandler || &optionHandler->Interface() != &Interface()) return false; - + if (Interface().Phase() != PPP_DOWN_PHASE || OptionHandlerFor(optionHandler->Type())) return false; // a running connection may not change and there may only be // one handler per option type - + return fOptionHandlers.AddItem(optionHandler); } /*! \brief Removes an option handler, but does not delete it. - + NOTE: You can only remove option handlers in \c PPP_DOWN_PHASE. */ bool @@ -78,7 +81,7 @@ KPPPLCP::RemoveOptionHandler(KPPPOptionHandler *optionHandler) if (Interface().Phase() != PPP_DOWN_PHASE) return false; // a running connection may not change - + return fOptionHandlers.RemoveItem(optionHandler); } @@ -87,11 +90,12 @@ KPPPLCP::RemoveOptionHandler(KPPPOptionHandler *optionHandler) KPPPOptionHandler* KPPPLCP::OptionHandlerAt(int32 index) const { + dprintf("total optionhandler count %ld\n", CountOptionHandlers()); KPPPOptionHandler *optionHandler = fOptionHandlers.ItemAt(index); - + if (optionHandler == fOptionHandlers.GetDefaultItem()) return NULL; - + return optionHandler; } @@ -103,14 +107,14 @@ KPPPLCP::OptionHandlerFor(uint8 type, int32 *start) const // The iteration style in this method is strange C/C++. // Explanation: I use this style because it makes extending all XXXFor // methods simpler as that they look very similar, now. - + int32 index = start ? *start : 0; - + if (index < 0) return NULL; - + KPPPOptionHandler *current = OptionHandlerAt(index); - + for (; current; current = OptionHandlerAt(++index)) { if (current->Type() == type) { if (start) @@ -118,13 +122,13 @@ KPPPLCP::OptionHandlerFor(uint8 type, int32 *start) const return current; } } - + return NULL; } /*! \brief Adds a new LCP extension. - + NOTE: You can only add LCP extensions in \c PPP_DOWN_PHASE. */ bool @@ -132,17 +136,17 @@ KPPPLCP::AddLCPExtension(KPPPLCPExtension *lcpExtension) { if (!lcpExtension || &lcpExtension->Interface() != &Interface()) return false; - + if (Interface().Phase() != PPP_DOWN_PHASE) return false; // a running connection may not change - + return fLCPExtensions.AddItem(lcpExtension); } /*! \brief Removes an LCP extension, but does not delete it. - + NOTE: You can only remove LCP extensions in \c PPP_DOWN_PHASE. */ bool @@ -151,7 +155,7 @@ KPPPLCP::RemoveLCPExtension(KPPPLCPExtension *lcpExtension) if (Interface().Phase() != PPP_DOWN_PHASE) return false; // a running connection may not change - + return fLCPExtensions.RemoveItem(lcpExtension); } @@ -160,11 +164,12 @@ KPPPLCP::RemoveLCPExtension(KPPPLCPExtension *lcpExtension) KPPPLCPExtension* KPPPLCP::LCPExtensionAt(int32 index) const { + dprintf("LCPExtension count %ld\n", CountLCPExtensions()); KPPPLCPExtension *lcpExtension = fLCPExtensions.ItemAt(index); - + if (lcpExtension == fLCPExtensions.GetDefaultItem()) return NULL; - + return lcpExtension; } @@ -176,14 +181,14 @@ KPPPLCP::LCPExtensionFor(uint8 code, int32 *start) const // The iteration style in this method is strange C/C++. // Explanation: I use this style because it makes extending all XXXFor // methods simpler as that they look very similar, now. - + int32 index = start ? *start : 0; - + if (index < 0) return NULL; - + KPPPLCPExtension *current = LCPExtensionAt(index); - + for (; current; current = LCPExtensionAt(++index)) { if (current->Code() == code) { if (start) @@ -191,27 +196,11 @@ KPPPLCP::LCPExtensionFor(uint8 code, int32 *start) const return current; } } - + return NULL; } -//! Returns the interface, target, and device overhead. -uint32 -KPPPLCP::AdditionalOverhead() const -{ - uint32 overhead = Interface().Overhead(); - - if (Target()) - overhead += Target()->Overhead(); - - if (Interface().Device()) - overhead += Interface().Device()->Overhead(); - - return overhead; -} - - //! Always returns \c true. bool KPPPLCP::Up() @@ -230,7 +219,7 @@ KPPPLCP::Down() //! Sends a packet to the target (if there is one) or to the interface. status_t -KPPPLCP::Send(struct mbuf *packet, uint16 protocolNumber) +KPPPLCP::Send(net_buffer *packet, uint16 protocolNumber) { if (Target()) return Target()->Send(packet, PPP_LCP_PROTOCOL); @@ -241,39 +230,32 @@ KPPPLCP::Send(struct mbuf *packet, uint16 protocolNumber) //! Decodes the LCP packet and passes it to the KPPPStateMachine or an LCP extension. status_t -KPPPLCP::Receive(struct mbuf *packet, uint16 protocolNumber) +KPPPLCP::Receive(net_buffer *packet, uint16 protocolNumber) { if (!packet) return B_ERROR; - + if (protocolNumber != PPP_LCP_PROTOCOL) { ERROR("KPPPLCP::Receive(): wrong protocol number!\n"); return PPP_UNHANDLED; } - - ppp_lcp_packet *data = mtod(packet, ppp_lcp_packet*); - + + NetBufferHeaderReader bufferHeader(packet); + if (bufferHeader.Status() < B_OK) + return bufferHeader.Status(); + + ppp_lcp_packet &data = bufferHeader.Data(); + // remove padding - int32 length = packet->m_len; - if (packet->m_flags & M_PKTHDR) - length = packet->m_pkthdr.len; - length -= ntohs(data->length); - if (length) - m_adj(packet, -length); - - struct mbuf *copy = m_gethdr(MT_DATA); - if (copy) { - copy->m_data += AdditionalOverhead(); - copy->m_pkthdr.len = copy->m_len = packet->m_len; - memcpy(copy->m_data, packet->m_data, copy->m_len); - } - - if (ntohs(data->length) < 4) + + net_buffer *copy = gBufferModule->duplicate(packet); + + if (ntohs(data.length) < 4) return B_ERROR; bool handled = true; - switch (data->code) { + switch (data.code) { case PPP_CONFIGURE_REQUEST: StateMachine().RCREvent(packet); break; @@ -310,43 +292,43 @@ KPPPLCP::Receive(struct mbuf *packet, uint16 protocolNumber) break; default: - m_freem(packet); + // gBufferModule->free(packet); handled = false; } - + packet = copy; - + if (!packet) return handled ? B_OK : B_ERROR; - + status_t result = B_OK; - + // Try to find LCP extensions that can handle this code. // We must duplicate the packet in order to ask all handlers. int32 index = 0; - KPPPLCPExtension *lcpExtension = LCPExtensionFor(data->code, &index); - for (; lcpExtension; lcpExtension = LCPExtensionFor(data->code, &(++index))) { + KPPPLCPExtension *lcpExtension = LCPExtensionFor(data.code, &index); + for (; lcpExtension; lcpExtension = LCPExtensionFor(data.code, &(++index))) { if (!lcpExtension->IsEnabled()) continue; - - result = lcpExtension->Receive(packet, data->code); - + + result = lcpExtension->Receive(packet, data.code); + // check return value and return it on error if (result == B_OK) handled = true; else if (result != PPP_UNHANDLED) { - m_freem(packet); + gBufferModule->free(packet); return result; } } - + if (!handled) { StateMachine().RUCEvent(packet, PPP_LCP_PROTOCOL, PPP_CODE_REJECT); return PPP_REJECTED; } - - m_freem(packet); - + + gBufferModule->free(packet); + return result; } @@ -356,7 +338,7 @@ void KPPPLCP::Pulse() { StateMachine().TimerEvent(); - + for (int32 index = 0; index < CountLCPExtensions(); index++) LCPExtensionAt(index)->Pulse(); } diff --git a/src/add-ons/kernel/network/ppp/shared/libkernelppp/KPPPLCPExtension.cpp b/src/add-ons/kernel/network/ppp/shared/libkernelppp/KPPPLCPExtension.cpp index e3165459a4..61f978ea47 100644 --- a/src/add-ons/kernel/network/ppp/shared/libkernelppp/KPPPLCPExtension.cpp +++ b/src/add-ons/kernel/network/ppp/shared/libkernelppp/KPPPLCPExtension.cpp @@ -58,6 +58,7 @@ KPPPLCPExtension::InitCheck() const status_t KPPPLCPExtension::Control(uint32 op, void *data, size_t length) { + dprintf("KPPPLCPExtension::Control\n"); switch (op) { case PPPC_GET_SIMPLE_HANDLER_INFO: { diff --git a/src/add-ons/kernel/network/ppp/shared/libkernelppp/KPPPLayer.cpp b/src/add-ons/kernel/network/ppp/shared/libkernelppp/KPPPLayer.cpp index b967e220d7..11894c2b90 100644 --- a/src/add-ons/kernel/network/ppp/shared/libkernelppp/KPPPLayer.cpp +++ b/src/add-ons/kernel/network/ppp/shared/libkernelppp/KPPPLayer.cpp @@ -5,7 +5,7 @@ /*! \class KPPPLayer \brief An abstract layer that can encapsulate/send and receive packets. - + All packet handlers should derive from this class. It does not define a protocol number like KPPPProtocol does. It only has a header overhead and an encapsulation level that is used to determine the order at which the packets get encapsulated @@ -19,13 +19,15 @@ #include +#include + #include #include -#include +extern net_buffer_module_info *gBufferModule; /*! \brief Creates a new layer. - + If an error occurs in the constructor you should set \c fInitStatus. */ KPPPLayer::KPPPLayer(const char *name, ppp_level level, uint32 overhead) @@ -56,11 +58,11 @@ KPPPLayer::InitCheck() const //! Sends a packet to the next layer in the chain. status_t -KPPPLayer::SendToNext(struct mbuf *packet, uint16 protocolNumber) const +KPPPLayer::SendToNext(net_buffer *packet, uint16 protocolNumber) const { if (!packet) return B_ERROR; - + // Find the next possible handler for this packet. // Normal protocols (Level() >= PPP_PROTOCOL_LEVEL) do not encapsulate anything. if (Next()) { @@ -70,14 +72,14 @@ KPPPLayer::SendToNext(struct mbuf *packet, uint16 protocolNumber) const return Next()->SendToNext(packet, protocolNumber); } else { ERROR("KPPPLayer: SendToNext() failed because there is no next handler!\n"); - m_freem(packet); + gBufferModule->free(packet); return B_ERROR; } } /*! \brief You may override this for periodic tasks. - + This method gets called every \c PPP_PULSE_RATE microseconds. */ void @@ -92,7 +94,7 @@ void KPPPLayer::SetName(const char *name) { free(fName); - + if (name) fName = strdup(name); else diff --git a/src/add-ons/kernel/network/ppp/shared/libkernelppp/KPPPOptionHandler.cpp b/src/add-ons/kernel/network/ppp/shared/libkernelppp/KPPPOptionHandler.cpp index 19522cf320..3325eaa179 100644 --- a/src/add-ons/kernel/network/ppp/shared/libkernelppp/KPPPOptionHandler.cpp +++ b/src/add-ons/kernel/network/ppp/shared/libkernelppp/KPPPOptionHandler.cpp @@ -60,6 +60,7 @@ KPPPOptionHandler::InitCheck() const status_t KPPPOptionHandler::Control(uint32 op, void *data, size_t length) { + dprintf("KPPPOptionHandler::Control\n"); switch (op) { case PPPC_GET_SIMPLE_HANDLER_INFO: { diff --git a/src/add-ons/kernel/network/ppp/shared/libkernelppp/KPPPReportManager.cpp b/src/add-ons/kernel/network/ppp/shared/libkernelppp/KPPPReportManager.cpp index 17acd2bf35..98892c795b 100644 --- a/src/add-ons/kernel/network/ppp/shared/libkernelppp/KPPPReportManager.cpp +++ b/src/add-ons/kernel/network/ppp/shared/libkernelppp/KPPPReportManager.cpp @@ -9,7 +9,9 @@ #include -#include +#include +#include + #include @@ -30,10 +32,10 @@ report_sender_thread(void *data) /*! \brief Constructor. - + \param lock The BLocker that should be used by this report manager. */ -KPPPReportManager::KPPPReportManager(BLocker& lock) +KPPPReportManager::KPPPReportManager(mutex& lock) : fLock(lock) { } @@ -48,10 +50,10 @@ KPPPReportManager::~KPPPReportManager() /*! \brief Send the given report message to the given thread. - + \param thread The report receiver. \param report The report message. - + \return \c false on error. */ bool @@ -59,7 +61,7 @@ KPPPReportManager::SendReport(thread_id thread, const ppp_report_packet *report) { if (!report) return false; - + if (thread == find_thread(NULL)) { report_sender_info *info = new report_sender_info; info->thread = thread; @@ -68,7 +70,7 @@ KPPPReportManager::SendReport(thread_id thread, const ppp_report_packet *report) B_NORMAL_PRIORITY, info)); return true; } - + send_data_with_timeout(thread, PPP_REPORT_CODE, &report, sizeof(report), PPP_REPORT_TIMEOUT); return true; @@ -76,7 +78,7 @@ KPPPReportManager::SendReport(thread_id thread, const ppp_report_packet *report) /*! \brief Requests report messages of a given \a type. - + \param type The type of report. \param thread The receiver thread. \param flags Optional report flags. See \c ppp_report_flags for more information. @@ -87,14 +89,14 @@ KPPPReportManager::EnableReports(ppp_report_type type, thread_id thread, { if (thread < 0 || type == PPP_ALL_REPORTS) return; - - LockerHelper locker(fLock); - + + MutexLocker locker(fLock); + ppp_report_request *request = new ppp_report_request; request->type = type; request->thread = thread; request->flags = flags; - + fReportRequests.AddItem(request); } @@ -105,21 +107,21 @@ KPPPReportManager::DisableReports(ppp_report_type type, thread_id thread) { if (thread < 0) return; - - LockerHelper locker(fLock); - + + MutexLocker locker(fLock); + ppp_report_request *request; - + for (int32 i = 0; i < fReportRequests.CountItems(); i++) { request = fReportRequests.ItemAt(i); - + if (request->thread != thread) continue; - + if (request->type == type || type == PPP_ALL_REPORTS) fReportRequests.RemoveItem(request); } - + // empty message queue while (has_data(thread)) { thread_id sender; @@ -134,32 +136,32 @@ KPPPReportManager::DoesReport(ppp_report_type type, thread_id thread) { if (thread < 0) return false; - - LockerHelper locker(fLock); - + + MutexLocker locker(fLock); + ppp_report_request *request; - + for (int32 i = 0; i < fReportRequests.CountItems(); i++) { request = fReportRequests.ItemAt(i); - + if (request->thread == thread && request->type == type) return true; } - + return false; } /*! \brief Send out report messages to all requestors. - + You may append additional data to the report messages. The data length may not be greater than \c PPP_REPORT_DATA_LIMIT. - + \param type The report type. \param code The report code belonging to the report type. \param data Additional data. \param length Length of the data. - + \return \c false on error. */ bool @@ -167,44 +169,44 @@ KPPPReportManager::Report(ppp_report_type type, int32 code, void *data, int32 le { TRACE("KPPPReportManager: Report(type=%d code=%ld length=%ld) to %ld receivers\n", type, code, length, fReportRequests.CountItems()); - + if (length > PPP_REPORT_DATA_LIMIT) return false; - + if (fReportRequests.CountItems() == 0) return true; - + if (!data) length = 0; - - LockerHelper locker(fLock); - + + MutexLocker locker(fLock); + status_t result; thread_id me = find_thread(NULL); - + ppp_report_packet report; report.type = type; report.code = code; report.length = length; memcpy(report.data, data, length); - + ppp_report_request *request; - + for (int32 index = 0; index < fReportRequests.CountItems(); index++) { request = fReportRequests.ItemAt(index); - + // do not send to yourself if (request->thread == me) continue; - + result = send_data_with_timeout(request->thread, PPP_REPORT_CODE, &report, sizeof(report), PPP_REPORT_TIMEOUT); - + #if DEBUG if (result == B_TIMED_OUT) TRACE("KPPPReportManager::Report(): timed out sending\n"); #endif - + if (result == B_BAD_THREAD_ID || result == B_NO_MEMORY || request->flags & PPP_REMOVE_AFTER_REPORT) { fReportRequests.RemoveItem(request); @@ -212,6 +214,6 @@ KPPPReportManager::Report(ppp_report_type type, int32 code, void *data, int32 le continue; } } - + return true; } diff --git a/src/add-ons/kernel/network/ppp/shared/libkernelppp/KPPPStateMachine.cpp b/src/add-ons/kernel/network/ppp/shared/libkernelppp/KPPPStateMachine.cpp index 06f30baf9d..181110ce58 100644 --- a/src/add-ons/kernel/network/ppp/shared/libkernelppp/KPPPStateMachine.cpp +++ b/src/add-ons/kernel/network/ppp/shared/libkernelppp/KPPPStateMachine.cpp @@ -5,9 +5,9 @@ /*! \class KPPPStateMachine \brief PPP state machine belonging to the LCP protocol - + The state machine is responsible for handling events and state changes. - + \sa KPPPLCP */ @@ -22,8 +22,12 @@ #include #include -#include +#include +#include +#include + +extern net_buffer_module_info *gBufferModule; static const bigtime_t kPPPStateMachineTimeout = 3000000; // 3 seconds @@ -49,8 +53,9 @@ KPPPStateMachine::KPPPStateMachine(KPPPInterface& interface) fTerminateID(0), fEchoID(0), fNextTimeout(0), - fLock("KPPPStateMachine") + fLock(mutex()) { + mutex_init(&fLock, "KPPPStateMachine"); } @@ -71,7 +76,7 @@ KPPPStateMachine::NextID() /*! \brief Changes the current state. - + Remember: NewState() must always be called \e after IllegalEvent() because IllegalEvent() also looks at the current state. */ @@ -79,20 +84,20 @@ void KPPPStateMachine::NewState(ppp_state next) { TRACE("KPPPSM: NewState(%d) state=%d\n", next, State()); - + // maybe we do not need the timer anymore if (next < PPP_CLOSING_STATE || next == PPP_OPENED_STATE) fNextTimeout = 0; - + if (State() == PPP_OPENED_STATE && next != State()) ResetLCPHandlers(); - + fState = next; } /*! \brief Changes the current phase. - + This method is responsible for setting the \c if_flags and sending the \c PPP_REPORT_UP_SUCCESSFUL report message. */ @@ -103,33 +108,33 @@ KPPPStateMachine::NewPhase(ppp_phase next) if (next <= PPP_ESTABLISHMENT_PHASE || next == PPP_ESTABLISHED_PHASE) TRACE("KPPPSM: NewPhase(%d) phase=%d\n", next, Phase()); #endif - + // there is nothing after established phase and nothing before down phase if (next > PPP_ESTABLISHED_PHASE) next = PPP_ESTABLISHED_PHASE; else if (next < PPP_DOWN_PHASE) next = PPP_DOWN_PHASE; - + // Report a down event to parent if we are not usable anymore. // The report threads get their notification later. if (Phase() == PPP_ESTABLISHED_PHASE && next != Phase()) { if (Interface().Ifnet()) { - Interface().Ifnet()->if_flags &= ~IFF_RUNNING; - Interface().Ifnet()->if_flags &= ~IFF_UP; + // Interface().Ifnet()->flags &= ~IFF_RUNNING; + Interface().Ifnet()->flags &= ~IFF_UP; } - + if (Interface().Parent()) Interface().Parent()->StateMachine().DownEvent(Interface()); } - + fPhase = next; - + if (Phase() == PPP_ESTABLISHED_PHASE) { Interface().fConnectedSince = system_time(); - + if (Interface().Ifnet()) - Interface().Ifnet()->if_flags |= IFF_UP | IFF_RUNNING; - + Interface().Ifnet()->flags |= IFF_UP;// | IFF_RUNNING; + Interface().fConnectAttempt = 0; // when we Reconnect() this becomes 1 (the first connection attempt) send_data_with_timeout(Interface().fReconnectThread, 0, NULL, 0, 200); @@ -148,17 +153,17 @@ bool KPPPStateMachine::Reconfigure() { TRACE("KPPPSM: Reconfigure() state=%d phase=%d\n", State(), Phase()); - + if (State() < PPP_REQ_SENT_STATE) return false; - + NewState(PPP_REQ_SENT_STATE); NewPhase(PPP_ESTABLISHMENT_PHASE); // indicates to handlers that we are reconfiguring - + DownProtocols(); ResetLCPHandlers(); - + return SendConfigureRequest(); } @@ -168,25 +173,37 @@ bool KPPPStateMachine::SendEchoRequest() { TRACE("KPPPSM: SendEchoRequest() state=%d phase=%d\n", State(), Phase()); - + if (State() != PPP_OPENED_STATE) return false; - - struct mbuf *packet = m_gethdr(MT_DATA); - if (!packet) + + net_buffer *packet = gBufferModule->create(256); + if (packet == NULL) return false; - - packet->m_data += LCP().AdditionalOverhead(); - packet->m_pkthdr.len = packet->m_len = 8; - // echo requests are at least eight bytes long - - ppp_lcp_packet *request = mtod(packet, ppp_lcp_packet*); - request->code = PPP_ECHO_REQUEST; - request->id = NextID(); - fEchoID = request->id; - request->length = htons(packet->m_len); - memcpy(request->data, &fMagicNumber, sizeof(fMagicNumber)); - + + void *data; + status_t status = gBufferModule->append_size(packet, 1492, &data); + if (status == B_OK && data == NULL) { + gBufferModule->free(packet); + return false; + } + + // echo requests are at least eight bytes long + ppp_lcp_packet request; + request.code = PPP_ECHO_REQUEST; + request.id = NextID(); + request.length = htons(8); + fEchoID = request.id; + + memcpy(data, &request, sizeof(request)); + memcpy(request.data, &fMagicNumber, sizeof(fMagicNumber)); + + status = gBufferModule->trim(packet, sizeof(request) + sizeof(fMagicNumber)); + if (status < B_OK) { + gBufferModule->free(packet); + return false; + } + return LCP().Send(packet) == B_OK; } @@ -196,24 +213,35 @@ bool KPPPStateMachine::SendDiscardRequest() { TRACE("KPPPSM: SendDiscardRequest() state=%d phase=%d\n", State(), Phase()); - - if (State() != PPP_OPENED_STATE) + + net_buffer *packet = gBufferModule->create(256); + if (packet == NULL) return false; - - struct mbuf *packet = m_gethdr(MT_DATA); - if (!packet) + + void *data; + status_t status = gBufferModule->append_size(packet, 1492, &data); + if (status == B_OK && data == NULL) { + gBufferModule->free(packet); return false; - - packet->m_data += LCP().AdditionalOverhead(); - packet->m_pkthdr.len = packet->m_len = 8; + } + // discard requests are at least eight bytes long - - ppp_lcp_packet *request = mtod(packet, ppp_lcp_packet*); - request->code = PPP_DISCARD_REQUEST; - request->id = NextID(); - request->length = htons(packet->m_len); - memcpy(request->data, &fMagicNumber, sizeof(fMagicNumber)); - + // echo requests are at least eight bytes long + ppp_lcp_packet request; + request.code = PPP_DISCARD_REQUEST; + request.id = NextID(); + request.length = htons(8); + fEchoID = request.id; + + memcpy(data, &request, sizeof(request)); + memcpy(request.data, &fMagicNumber, sizeof(fMagicNumber)); + + status = gBufferModule->trim(packet, sizeof(request) + sizeof(fMagicNumber)); + if (status < B_OK) { + gBufferModule->free(packet); + return false; + } + return LCP().Send(packet) == B_OK; } @@ -221,7 +249,7 @@ KPPPStateMachine::SendDiscardRequest() // authentication events /*! Notification that local authentication is requested. - + NOTE: This must be called \e after \c KPPPProtocol::Up(). */ void @@ -229,12 +257,12 @@ KPPPStateMachine::LocalAuthenticationRequested() { TRACE("KPPPSM: LocalAuthenticationRequested() state=%d phase=%d\n", State(), Phase()); - + fLastConnectionReportCode = PPP_REPORT_AUTHENTICATION_REQUESTED; Interface().Report(PPP_CONNECTION_REPORT, PPP_REPORT_AUTHENTICATION_REQUESTED, &fInterface.fID, sizeof(ppp_interface_id)); - + fLocalAuthenticationStatus = PPP_AUTHENTICATING; free(fLocalAuthenticationName); fLocalAuthenticationName = NULL; @@ -242,9 +270,9 @@ KPPPStateMachine::LocalAuthenticationRequested() /*! \brief Notification that local authentication was accepted. - + NOTE: This must be called \e before \c UpEvent(). - + \param name The username/login that was accepted. */ void @@ -252,7 +280,7 @@ KPPPStateMachine::LocalAuthenticationAccepted(const char *name) { TRACE("KPPPSM: LocalAuthenticationAccepted() state=%d phase=%d\n", State(), Phase()); - + fLocalAuthenticationStatus = PPP_AUTHENTICATION_SUCCESSFUL; free(fLocalAuthenticationName); if (name) @@ -263,23 +291,23 @@ KPPPStateMachine::LocalAuthenticationAccepted(const char *name) /*! \brief Notification that local authentication was denied. - + NOTE: This must be called \e before \c UpFailedEvent(). - + \param name The username/login that was denied. */ void KPPPStateMachine::LocalAuthenticationDenied(const char *name) { TRACE("KPPPSM: LocalAuthenticationDenied() state=%d phase=%d\n", State(), Phase()); - + fLocalAuthenticationStatus = PPP_AUTHENTICATION_FAILED; free(fLocalAuthenticationName); if (name) fLocalAuthenticationName = strdup(name); else fLocalAuthenticationName = NULL; - + // the report will be sent in DownEvent() } @@ -290,12 +318,12 @@ KPPPStateMachine::PeerAuthenticationRequested() { TRACE("KPPPSM: PeerAuthenticationRequested() state=%d phase=%d\n", State(), Phase()); - + fLastConnectionReportCode = PPP_REPORT_AUTHENTICATION_REQUESTED; Interface().Report(PPP_CONNECTION_REPORT, PPP_REPORT_AUTHENTICATION_REQUESTED, &fInterface.fID, sizeof(ppp_interface_id)); - + fPeerAuthenticationStatus = PPP_AUTHENTICATING; free(fPeerAuthenticationName); fPeerAuthenticationName = NULL; @@ -303,9 +331,9 @@ KPPPStateMachine::PeerAuthenticationRequested() /*! \brief Notification that peer authentication was accepted. - + NOTE: This must be called \e before \c UpEvent(). - + \param name The username/login that was accepted. */ void @@ -313,7 +341,7 @@ KPPPStateMachine::PeerAuthenticationAccepted(const char *name) { TRACE("KPPPSM: PeerAuthenticationAccepted() state=%d phase=%d\n", State(), Phase()); - + fPeerAuthenticationStatus = PPP_AUTHENTICATION_SUCCESSFUL; free(fPeerAuthenticationName); if (name) @@ -324,25 +352,25 @@ KPPPStateMachine::PeerAuthenticationAccepted(const char *name) /*! \brief Notification that peer authentication was denied. - + NOTE: This must be called \e before \c UpFailedEvent(). - + \param name The username/login that was denied. */ void KPPPStateMachine::PeerAuthenticationDenied(const char *name) { TRACE("KPPPSM: PeerAuthenticationDenied() state=%d phase=%d\n", State(), Phase()); - + fPeerAuthenticationStatus = PPP_AUTHENTICATION_FAILED; free(fPeerAuthenticationName); if (name) fPeerAuthenticationName = strdup(name); else fPeerAuthenticationName = NULL; - + CloseEvent(); - + // the report will be sent in DownEvent() } @@ -352,7 +380,7 @@ void KPPPStateMachine::UpFailedEvent(KPPPInterface& interface) { TRACE("KPPPSM: UpFailedEvent(interface) state=%d phase=%d\n", State(), Phase()); - + // TODO: // log that an interface did not go up } @@ -363,14 +391,14 @@ void KPPPStateMachine::UpEvent(KPPPInterface& interface) { TRACE("KPPPSM: UpEvent(interface) state=%d phase=%d\n", State(), Phase()); - + if (Phase() <= PPP_TERMINATION_PHASE) { interface.StateMachine().CloseEvent(); return; } - + Interface().CalculateBaudRate(); - + if (Phase() == PPP_ESTABLISHMENT_PHASE) { // this is the first interface that went up Interface().SetMRU(interface.MRU()); @@ -378,7 +406,7 @@ KPPPStateMachine::UpEvent(KPPPInterface& interface) } else if (Interface().MRU() > interface.MRU()) Interface().SetMRU(interface.MRU()); // MRU should always be the smallest value of all children - + NewState(PPP_OPENED_STATE); } @@ -388,35 +416,35 @@ void KPPPStateMachine::DownEvent(KPPPInterface& interface) { TRACE("KPPPSM: DownEvent(interface) state=%d phase=%d\n", State(), Phase()); - + uint32 MRU = 0; // the new MRU - + Interface().CalculateBaudRate(); - + // when all children are down we should not be running if (Interface().IsMultilink() && !Interface().Parent()) { uint32 count = 0; KPPPInterface *child; for (int32 index = 0; index < Interface().CountChildren(); index++) { child = Interface().ChildAt(index); - + if (child && child->IsUp()) { // set MRU to the smallest value of all children if (MRU == 0) MRU = child->MRU(); else if (MRU > child->MRU()) MRU = child->MRU(); - + ++count; } } - + if (MRU == 0) Interface().SetMRU(1500); else Interface().SetMRU(MRU); - + if (count == 0) DownEvent(); } @@ -424,7 +452,7 @@ KPPPStateMachine::DownEvent(KPPPInterface& interface) /*! \brief Notification that a protocol failed to go up. - + NOTE FOR AUTHENTICATORS: This \e must be called \e after an authentication notification method like \c LocalAuthenticationFailed(). */ @@ -432,7 +460,7 @@ void KPPPStateMachine::UpFailedEvent(KPPPProtocol *protocol) { TRACE("KPPPSM: UpFailedEvent(protocol) state=%d phase=%d\n", State(), Phase()); - + if ((protocol->Flags() & PPP_NOT_IMPORTANT) == 0) { if (Interface().Mode() == PPP_CLIENT_MODE) { // pretend we lost connection @@ -451,7 +479,7 @@ KPPPStateMachine::UpFailedEvent(KPPPProtocol *protocol) /*! \brief Notification that a protocol went up successfully. - + NOTE FOR AUTHENTICATORS: This \e must be called \e after an authentication notification method like \c LocalAuthenticationSuccessful(). */ @@ -459,14 +487,14 @@ void KPPPStateMachine::UpEvent(KPPPProtocol *protocol) { TRACE("KPPPSM: UpEvent(protocol) state=%d phase=%d\n", State(), Phase()); - + if (Phase() >= PPP_ESTABLISHMENT_PHASE) BringProtocolsUp(); } /*! \brief Notification that a protocol went down. - + NOTE FOR AUTHENTICATORS: This \e must be called \e after an authentication notification method like \c LocalAuthenticationFailed(). */ @@ -478,9 +506,9 @@ KPPPStateMachine::DownEvent(KPPPProtocol *protocol) /*! \brief Notification that the device entered establishment phase. - + We can use \c Device::Down() to abort establishment until \c UpEvent() is called. - + \return - \c true: We are waiting for an \c UpEvent() - \c false: The device should immediately abort its attempt to connect. @@ -489,22 +517,22 @@ bool KPPPStateMachine::TLSNotify() { TRACE("KPPPSM: TLSNotify() state=%d phase=%d\n", State(), Phase()); - + if (State() == PPP_STARTING_STATE) { if (Phase() == PPP_DOWN_PHASE) NewPhase(PPP_ESTABLISHMENT_PHASE); // this says that the device is going up return true; } - + return false; } /*! \brief Notification that the device entered termination phase. - + A \c Device::Up() should wait until the device went down. - + \return - \c true: Continue terminating. - \c false: We want to stay connected, though we called \c Device::Down(). @@ -513,10 +541,10 @@ bool KPPPStateMachine::TLFNotify() { TRACE("KPPPSM: TLFNotify() state=%d phase=%d\n", State(), Phase()); - + NewPhase(PPP_TERMINATION_PHASE); // tell DownEvent() that it may create a connection-lost-report - + return true; } @@ -526,7 +554,7 @@ void KPPPStateMachine::UpFailedEvent() { TRACE("KPPPSM: UpFailedEvent() state=%d phase=%d\n", State(), Phase()); - + switch (State()) { case PPP_STARTING_STATE: fLastConnectionReportCode = PPP_REPORT_DEVICE_UP_FAILED; @@ -534,12 +562,12 @@ KPPPStateMachine::UpFailedEvent() &fInterface.fID, sizeof(ppp_interface_id)); if (Interface().Parent()) Interface().Parent()->StateMachine().UpFailedEvent(Interface()); - + NewPhase(PPP_DOWN_PHASE); // tell DownEvent() that it should not create a connection-lost-report DownEvent(); break; - + default: IllegalEvent(PPP_UP_FAILED_EVENT); } @@ -551,16 +579,16 @@ void KPPPStateMachine::UpEvent() { TRACE("KPPPSM: UpEvent() state=%d phase=%d\n", State(), Phase()); - + // This call is public, thus, it might not only be called by the device. // We must recognize these attempts to fool us and handle them correctly. - + if (!Interface().Device() || !Interface().Device()->IsUp()) return; // it is not our device that went up... - + Interface().CalculateBaudRate(); - + switch (State()) { case PPP_INITIAL_STATE: if (Interface().Mode() != PPP_SERVER_MODE @@ -570,16 +598,16 @@ KPPPStateMachine::UpEvent() IllegalEvent(PPP_UP_EVENT); NewState(PPP_CLOSED_STATE); ThisLayerFinished(); - + return; } - + // TODO: handle server-up! (maybe already done correctly) NewState(PPP_REQ_SENT_STATE); InitializeRestartCount(); SendConfigureRequest(); break; - + case PPP_STARTING_STATE: // we must have called TLS() which sets establishment phase if (Phase() != PPP_ESTABLISHMENT_PHASE) { @@ -591,12 +619,12 @@ KPPPStateMachine::UpEvent() ThisLayerFinished(); break; } - + NewState(PPP_REQ_SENT_STATE); InitializeRestartCount(); SendConfigureRequest(); break; - + default: IllegalEvent(PPP_UP_EVENT); } @@ -604,7 +632,7 @@ KPPPStateMachine::UpEvent() /*! \brief Notification that the device went down. - + If this is called without a prior \c TLFNotify() the state machine will assume that we lost our connection. */ @@ -612,33 +640,33 @@ void KPPPStateMachine::DownEvent() { TRACE("KPPPSM: DownEvent() state=%d phase=%d\n", State(), Phase()); - + if (Interface().Device() && Interface().Device()->IsUp()) return; // it is not our device that went down... - + Interface().CalculateBaudRate(); - + // reset IdleSince Interface().fIdleSince = 0; - + switch (State()) { // XXX: this does not belong to the standard, but may happen in our // implementation case PPP_STARTING_STATE: break; - + case PPP_CLOSED_STATE: case PPP_CLOSING_STATE: NewState(PPP_INITIAL_STATE); break; - + case PPP_STOPPED_STATE: // The RFC says we should reconnect, but our implementation // will only do this if auto-reconnect is enabled (only clients). NewState(PPP_STARTING_STATE); break; - + case PPP_STOPPING_STATE: case PPP_REQ_SENT_STATE: case PPP_ACK_RCVD_STATE: @@ -646,20 +674,20 @@ KPPPStateMachine::DownEvent() case PPP_OPENED_STATE: NewState(PPP_STARTING_STATE); break; - + default: IllegalEvent(PPP_DOWN_EVENT); } - + ppp_phase oldPhase = Phase(); NewPhase(PPP_DOWN_PHASE); - + DownProtocols(); - + // maybe we need to reconnect if (State() == PPP_STARTING_STATE) { bool deleteInterface = false, retry = false; - + // we do not try to reconnect if authentication failed if (fLocalAuthenticationStatus == PPP_AUTHENTICATION_FAILED || fLocalAuthenticationStatus == PPP_AUTHENTICATING @@ -673,7 +701,7 @@ KPPPStateMachine::DownEvent() } else { if (Interface().fConnectAttempt > (Interface().fConnectRetriesLimit + 1)) deleteInterface = true; - + if (oldPhase == PPP_DOWN_PHASE) { // failed to bring device up (UpFailedEvent() was called) retry = true; @@ -685,12 +713,12 @@ KPPPStateMachine::DownEvent() &fInterface.fID, sizeof(ppp_interface_id)); } } - + if (Interface().Parent()) Interface().Parent()->StateMachine().UpFailedEvent(Interface()); - + NewState(PPP_INITIAL_STATE); - + if (!deleteInterface && (retry || Interface().DoesAutoReconnect())) Interface().Reconnect(Interface().ReconnectDelay()); else @@ -701,7 +729,7 @@ KPPPStateMachine::DownEvent() &fInterface.fID, sizeof(ppp_interface_id)); Interface().Delete(); } - + fLocalAuthenticationStatus = PPP_NOT_AUTHENTICATED; fPeerAuthenticationStatus = PPP_NOT_AUTHENTICATED; } @@ -712,49 +740,49 @@ void KPPPStateMachine::OpenEvent() { TRACE("KPPPSM: OpenEvent() state=%d phase=%d\n", State(), Phase()); - + // reset all handlers if (Phase() != PPP_ESTABLISHED_PHASE) { DownProtocols(); ResetLCPHandlers(); } - + switch (State()) { case PPP_INITIAL_STATE: fLastConnectionReportCode = PPP_REPORT_GOING_UP; Interface().Report(PPP_CONNECTION_REPORT, PPP_REPORT_GOING_UP, &fInterface.fID, sizeof(ppp_interface_id)); - + if (Interface().Mode() == PPP_SERVER_MODE) { NewPhase(PPP_ESTABLISHMENT_PHASE); - + if (Interface().Device() && !Interface().Device()->Up()) { Interface().Device()->UpFailedEvent(); return; } } else NewState(PPP_STARTING_STATE); - + if (Interface().fAskBeforeConnecting == false) ContinueOpenEvent(); break; - + case PPP_CLOSED_STATE: if (Phase() == PPP_DOWN_PHASE) { // the device is already going down return; } - + NewState(PPP_REQ_SENT_STATE); NewPhase(PPP_ESTABLISHMENT_PHASE); InitializeRestartCount(); SendConfigureRequest(); break; - + case PPP_CLOSING_STATE: NewState(PPP_STOPPING_STATE); break; - + default: ; } @@ -765,7 +793,7 @@ void KPPPStateMachine::ContinueOpenEvent() { TRACE("KPPPSM: ContinueOpenEvent() state=%d phase=%d\n", State(), Phase()); - + if (Interface().IsMultilink() && !Interface().Parent()) { NewPhase(PPP_ESTABLISHMENT_PHASE); for (int32 index = 0; index < Interface().CountChildren(); index++) @@ -780,21 +808,21 @@ void KPPPStateMachine::CloseEvent() { TRACE("KPPPSM: CloseEvent() state=%d phase=%d\n", State(), Phase()); - + if (Interface().IsMultilink() && !Interface().Parent()) { NewState(PPP_INITIAL_STATE); - + if (Phase() != PPP_DOWN_PHASE) NewPhase(PPP_TERMINATION_PHASE); - + ThisLayerDown(); - + for (int32 index = 0; index < Interface().CountChildren(); index++) Interface().ChildAt(index)->StateMachine().CloseEvent(); - + return; } - + switch (State()) { case PPP_OPENED_STATE: case PPP_REQ_SENT_STATE: @@ -808,10 +836,10 @@ KPPPStateMachine::CloseEvent() ThisLayerDown(); SendTerminateRequest(); break; - + case PPP_STARTING_STATE: NewState(PPP_INITIAL_STATE); - + // TLSNotify() will know that we were faster because we // are in PPP_INITIAL_STATE now if (Phase() == PPP_ESTABLISHMENT_PHASE) { @@ -822,15 +850,15 @@ KPPPStateMachine::CloseEvent() ThisLayerFinished(); } break; - + case PPP_STOPPING_STATE: NewState(PPP_CLOSING_STATE); break; - + case PPP_STOPPED_STATE: NewState(PPP_STOPPED_STATE); break; - + default: ; } @@ -842,21 +870,21 @@ void KPPPStateMachine::TOGoodEvent() { TRACE("KPPPSM: TOGoodEvent() state=%d phase=%d\n", State(), Phase()); - + switch (State()) { case PPP_CLOSING_STATE: case PPP_STOPPING_STATE: SendTerminateRequest(); break; - + case PPP_ACK_RCVD_STATE: NewState(PPP_REQ_SENT_STATE); - + case PPP_REQ_SENT_STATE: case PPP_ACK_SENT_STATE: SendConfigureRequest(); break; - + default: IllegalEvent(PPP_TO_GOOD_EVENT); } @@ -868,14 +896,14 @@ void KPPPStateMachine::TOBadEvent() { TRACE("KPPPSM: TOBadEvent() state=%d phase=%d\n", State(), Phase()); - + switch (State()) { case PPP_CLOSING_STATE: NewState(PPP_CLOSED_STATE); NewPhase(PPP_TERMINATION_PHASE); ThisLayerFinished(); break; - + case PPP_STOPPING_STATE: case PPP_REQ_SENT_STATE: case PPP_ACK_RCVD_STATE: @@ -884,7 +912,7 @@ KPPPStateMachine::TOBadEvent() NewPhase(PPP_TERMINATION_PHASE); ThisLayerFinished(); break; - + default: IllegalEvent(PPP_TO_BAD_EVENT); } @@ -893,42 +921,49 @@ KPPPStateMachine::TOBadEvent() // receive configure request (acceptable request) void -KPPPStateMachine::RCRGoodEvent(struct mbuf *packet) +KPPPStateMachine::RCRGoodEvent(net_buffer *packet) { TRACE("KPPPSM: RCRGoodEvent() state=%d phase=%d\n", State(), Phase()); - + switch (State()) { case PPP_INITIAL_STATE: case PPP_STARTING_STATE: + TRACE("%s::%s: PPP_STARTING_STATE\n", __FILE__, __func__); IllegalEvent(PPP_RCR_GOOD_EVENT); - m_freem(packet); + gBufferModule->free(packet); break; - + case PPP_CLOSED_STATE: + TRACE("%s::%s: PPP_CLOSED_STATE\n", __FILE__, __func__); SendTerminateAck(); - m_freem(packet); + gBufferModule->free(packet); break; - + case PPP_STOPPED_STATE: + TRACE("%s::%s: PPP_STOPPED_STATE\n", __FILE__, __func__); // irc,scr,sca/8 // XXX: should we do nothing and wait for DownEvent()? - m_freem(packet); + gBufferModule->free(packet); break; - + case PPP_REQ_SENT_STATE: NewState(PPP_ACK_SENT_STATE); - + case PPP_ACK_SENT_STATE: + TRACE("%s::%s: PPP_ACK_SENT_STATE size %ld\n", __FILE__, __func__, + packet->size); SendConfigureAck(packet); break; - + case PPP_ACK_RCVD_STATE: + TRACE("%s::%s: PPP_ACK_RCVD_STATE\n", __FILE__, __func__); NewState(PPP_OPENED_STATE); SendConfigureAck(packet); ThisLayerUp(); break; - + case PPP_OPENED_STATE: + TRACE("%s::%s: PPP_OPENED_STATE\n", __FILE__, __func__); NewState(PPP_ACK_SENT_STATE); NewPhase(PPP_ESTABLISHMENT_PHASE); // indicates to handlers that we are reconfiguring @@ -936,120 +971,145 @@ KPPPStateMachine::RCRGoodEvent(struct mbuf *packet) SendConfigureRequest(); SendConfigureAck(packet); break; - + default: - m_freem(packet); + TRACE("free peer's ppp request packet\n"); + gBufferModule->free(packet); } } // receive configure request (unacceptable request) void -KPPPStateMachine::RCRBadEvent(struct mbuf *nak, struct mbuf *reject) +KPPPStateMachine::RCRBadEvent(net_buffer *nak, net_buffer *reject) { TRACE("KPPPSM: RCRBadEvent() state=%d phase=%d\n", State(), Phase()); - + + uint16 lenNak = 0; + uint16 lenReject = 0; + switch (State()) { case PPP_INITIAL_STATE: case PPP_STARTING_STATE: IllegalEvent(PPP_RCR_BAD_EVENT); break; - + case PPP_CLOSED_STATE: SendTerminateAck(); break; - + case PPP_STOPPED_STATE: // irc,scr,scn/6 // XXX: should we do nothing and wait for DownEvent()? break; - + case PPP_OPENED_STATE: NewState(PPP_REQ_SENT_STATE); NewPhase(PPP_ESTABLISHMENT_PHASE); // indicates to handlers that we are reconfiguring ThisLayerDown(); SendConfigureRequest(); - + case PPP_ACK_SENT_STATE: if (State() == PPP_ACK_SENT_STATE) NewState(PPP_REQ_SENT_STATE); // OPENED_STATE might have set this already - + case PPP_REQ_SENT_STATE: case PPP_ACK_RCVD_STATE: - if (nak && ntohs(mtod(nak, ppp_lcp_packet*)->length) > 3) + if (nak) { + NetBufferHeaderReader nakBufferHeader(nak); + if (nakBufferHeader.Status() < B_OK) + break; + ppp_lcp_packet &nakHeader = nakBufferHeader.Data(); + lenNak = nakHeader.length; + } + + if (reject) { + NetBufferHeaderReader rejectBufferHeader(reject); + if (rejectBufferHeader.Status() < B_OK) + break; + ppp_lcp_packet &rejectHeader = rejectBufferHeader.Data(); + lenReject = rejectHeader.length; + } + + if (nak && lenNak > 3) SendConfigureNak(nak); - else if (reject && ntohs(mtod(reject, ppp_lcp_packet*)->length) > 3) + else if (reject && lenReject > 3) SendConfigureNak(reject); return; // prevents the nak/reject from being m_freem()'d - + default: ; } - + if (nak) - m_freem(nak); + gBufferModule->free(nak); if (reject) - m_freem(reject); + gBufferModule->free(reject); } // receive configure ack void -KPPPStateMachine::RCAEvent(struct mbuf *packet) +KPPPStateMachine::RCAEvent(net_buffer *packet) { TRACE("KPPPSM: RCAEvent() state=%d phase=%d\n", State(), Phase()); - - if (fRequestID != mtod(packet, ppp_lcp_packet*)->id) { + + NetBufferHeaderReader bufferHeader(packet); + if (bufferHeader.Status() < B_OK) + return; + ppp_lcp_packet &header = bufferHeader.Data(); + + if (fRequestID != header.id) { // this packet is not a reply to our request - + // TODO: // log this event - m_freem(packet); + gBufferModule->free(packet); return; } - + // let the option handlers parse this ack KPPPConfigurePacket ack(packet); KPPPOptionHandler *optionHandler; for (int32 index = 0; index < LCP().CountOptionHandlers(); index++) { optionHandler = LCP().OptionHandlerAt(index); if (optionHandler->ParseAck(ack) != B_OK) { - m_freem(packet); + gBufferModule->free(packet); CloseEvent(); return; } } - + switch (State()) { case PPP_INITIAL_STATE: case PPP_STARTING_STATE: IllegalEvent(PPP_RCA_EVENT); break; - + case PPP_CLOSED_STATE: case PPP_STOPPED_STATE: SendTerminateAck(); break; - + case PPP_REQ_SENT_STATE: NewState(PPP_ACK_RCVD_STATE); InitializeRestartCount(); break; - + case PPP_ACK_RCVD_STATE: NewState(PPP_REQ_SENT_STATE); SendConfigureRequest(); break; - + case PPP_ACK_SENT_STATE: NewState(PPP_OPENED_STATE); InitializeRestartCount(); ThisLayerUp(); break; - + case PPP_OPENED_STATE: NewState(PPP_REQ_SENT_STATE); NewPhase(PPP_ESTABLISHMENT_PHASE); @@ -1057,72 +1117,77 @@ KPPPStateMachine::RCAEvent(struct mbuf *packet) ThisLayerDown(); SendConfigureRequest(); break; - + default: ; } - - m_freem(packet); + + gBufferModule->free(packet); } // receive configure nak/reject void -KPPPStateMachine::RCNEvent(struct mbuf *packet) +KPPPStateMachine::RCNEvent(net_buffer *packet) { TRACE("KPPPSM: RCNEvent() state=%d phase=%d\n", State(), Phase()); - - if (fRequestID != mtod(packet, ppp_lcp_packet*)->id) { + + NetBufferHeaderReader bufferHeader(packet); + if (bufferHeader.Status() < B_OK) + return; + ppp_lcp_packet &header = bufferHeader.Data(); + + if (fRequestID != header.id) { // this packet is not a reply to our request - + // TODO: // log this event - m_freem(packet); + gBufferModule->free(packet); return; } - + // let the option handlers parse this nak/reject KPPPConfigurePacket nak_reject(packet); KPPPOptionHandler *optionHandler; for (int32 index = 0; index < LCP().CountOptionHandlers(); index++) { optionHandler = LCP().OptionHandlerAt(index); - + if (nak_reject.Code() == PPP_CONFIGURE_NAK) { if (optionHandler->ParseNak(nak_reject) != B_OK) { - m_freem(packet); + gBufferModule->free(packet); CloseEvent(); return; } } else if (nak_reject.Code() == PPP_CONFIGURE_REJECT) { if (optionHandler->ParseReject(nak_reject) != B_OK) { - m_freem(packet); + gBufferModule->free(packet); CloseEvent(); return; } } } - + switch (State()) { case PPP_INITIAL_STATE: case PPP_STARTING_STATE: IllegalEvent(PPP_RCN_EVENT); break; - + case PPP_CLOSED_STATE: case PPP_STOPPED_STATE: SendTerminateAck(); break; - + case PPP_REQ_SENT_STATE: case PPP_ACK_SENT_STATE: InitializeRestartCount(); - + case PPP_ACK_RCVD_STATE: if (State() == PPP_ACK_RCVD_STATE) NewState(PPP_REQ_SENT_STATE); SendConfigureRequest(); break; - + case PPP_OPENED_STATE: NewState(PPP_REQ_SENT_STATE); NewPhase(PPP_ESTABLISHMENT_PHASE); @@ -1130,35 +1195,40 @@ KPPPStateMachine::RCNEvent(struct mbuf *packet) ThisLayerDown(); SendConfigureRequest(); break; - + default: ; } - - m_freem(packet); + + gBufferModule->free(packet); } // receive terminate request void -KPPPStateMachine::RTREvent(struct mbuf *packet) +KPPPStateMachine::RTREvent(net_buffer *packet) { TRACE("KPPPSM: RTREvent() state=%d phase=%d\n", State(), Phase()); - + + NetBufferHeaderReader bufferHeader(packet); + if (bufferHeader.Status() < B_OK) + return; + ppp_lcp_packet &header = bufferHeader.Data(); + // we should not use the same ID as the peer - if (fID == mtod(packet, ppp_lcp_packet*)->id) + if (fID == header.id) fID -= 128; - + fLocalAuthenticationStatus = PPP_NOT_AUTHENTICATED; fPeerAuthenticationStatus = PPP_NOT_AUTHENTICATED; - + switch (State()) { case PPP_INITIAL_STATE: case PPP_STARTING_STATE: IllegalEvent(PPP_RTR_EVENT); - m_freem(packet); + gBufferModule->free(packet); break; - + case PPP_ACK_RCVD_STATE: case PPP_ACK_SENT_STATE: NewState(PPP_REQ_SENT_STATE); @@ -1166,7 +1236,7 @@ KPPPStateMachine::RTREvent(struct mbuf *packet) // indicates to handlers that we are terminating SendTerminateAck(packet); break; - + case PPP_OPENED_STATE: NewState(PPP_STOPPING_STATE); NewPhase(PPP_TERMINATION_PHASE); @@ -1175,7 +1245,7 @@ KPPPStateMachine::RTREvent(struct mbuf *packet) ThisLayerDown(); SendTerminateAck(packet); break; - + default: NewPhase(PPP_TERMINATION_PHASE); // indicates to handlers that we are terminating @@ -1186,39 +1256,44 @@ KPPPStateMachine::RTREvent(struct mbuf *packet) // receive terminate ack void -KPPPStateMachine::RTAEvent(struct mbuf *packet) +KPPPStateMachine::RTAEvent(net_buffer *packet) { TRACE("KPPPSM: RTAEvent() state=%d phase=%d\n", State(), Phase()); - - if (fTerminateID != mtod(packet, ppp_lcp_packet*)->id) { + + NetBufferHeaderReader bufferHeader(packet); + if (bufferHeader.Status() < B_OK) + return; + ppp_lcp_packet &header = bufferHeader.Data(); + + if (fTerminateID != header.id) { // this packet is not a reply to our request - + // TODO: // log this event - m_freem(packet); + gBufferModule->free(packet); return; } - + switch (State()) { case PPP_INITIAL_STATE: case PPP_STARTING_STATE: IllegalEvent(PPP_RTA_EVENT); break; - + case PPP_CLOSING_STATE: NewState(PPP_CLOSED_STATE); ThisLayerFinished(); break; - + case PPP_STOPPING_STATE: NewState(PPP_STOPPED_STATE); ThisLayerFinished(); break; - + case PPP_ACK_RCVD_STATE: NewState(PPP_REQ_SENT_STATE); break; - + case PPP_OPENED_STATE: NewState(PPP_REQ_SENT_STATE); NewPhase(PPP_ESTABLISHMENT_PHASE); @@ -1226,29 +1301,29 @@ KPPPStateMachine::RTAEvent(struct mbuf *packet) ThisLayerDown(); SendConfigureRequest(); break; - + default: ; } - - m_freem(packet); + + gBufferModule->free(packet); } // receive unknown code void -KPPPStateMachine::RUCEvent(struct mbuf *packet, uint16 protocolNumber, +KPPPStateMachine::RUCEvent(net_buffer *packet, uint16 protocolNumber, uint8 code) { TRACE("KPPPSM: RUCEvent() state=%d phase=%d\n", State(), Phase()); - + switch (State()) { case PPP_INITIAL_STATE: case PPP_STARTING_STATE: IllegalEvent(PPP_RUC_EVENT); - m_freem(packet); + gBufferModule->free(packet); break; - + default: SendCodeReject(packet, protocolNumber, code); } @@ -1257,23 +1332,23 @@ KPPPStateMachine::RUCEvent(struct mbuf *packet, uint16 protocolNumber, // receive code/protocol reject (acceptable such as IPX reject) void -KPPPStateMachine::RXJGoodEvent(struct mbuf *packet) +KPPPStateMachine::RXJGoodEvent(net_buffer *packet) { TRACE("KPPPSM: RXJGoodEvent() state=%d phase=%d\n", State(), Phase()); - + // This method does not m_freem(packet) because the acceptable rejects are // also passed to the parent. RXJEvent() will m_freem(packet) when needed. - + switch (State()) { case PPP_INITIAL_STATE: case PPP_STARTING_STATE: IllegalEvent(PPP_RXJ_GOOD_EVENT); break; - + case PPP_ACK_RCVD_STATE: NewState(PPP_REQ_SENT_STATE); break; - + default: ; } @@ -1282,35 +1357,35 @@ KPPPStateMachine::RXJGoodEvent(struct mbuf *packet) // receive code/protocol reject (catastrophic such as LCP reject) void -KPPPStateMachine::RXJBadEvent(struct mbuf *packet) +KPPPStateMachine::RXJBadEvent(net_buffer *packet) { TRACE("KPPPSM: RXJBadEvent() state=%d phase=%d\n", State(), Phase()); - + switch (State()) { case PPP_INITIAL_STATE: case PPP_STARTING_STATE: IllegalEvent(PPP_RXJ_BAD_EVENT); break; - + case PPP_CLOSING_STATE: NewState(PPP_CLOSED_STATE); - + case PPP_CLOSED_STATE: ThisLayerFinished(); break; - + case PPP_REQ_SENT_STATE: case PPP_ACK_RCVD_STATE: case PPP_ACK_SENT_STATE: NewState(PPP_STOPPED_STATE); - + case PPP_STOPPING_STATE: NewPhase(PPP_TERMINATION_PHASE); - + case PPP_STOPPED_STATE: ThisLayerFinished(); break; - + case PPP_OPENED_STATE: NewState(PPP_STOPPING_STATE); NewPhase(PPP_TERMINATION_PHASE); @@ -1320,41 +1395,44 @@ KPPPStateMachine::RXJBadEvent(struct mbuf *packet) SendTerminateRequest(); break; } - - m_freem(packet); + + gBufferModule->free(packet); } // receive echo request/reply, discard request void -KPPPStateMachine::RXREvent(struct mbuf *packet) +KPPPStateMachine::RXREvent(net_buffer *packet) { TRACE("KPPPSM: RXREvent() state=%d phase=%d\n", State(), Phase()); - - ppp_lcp_packet *echo = mtod(packet, ppp_lcp_packet*); - - if (echo->code == PPP_ECHO_REPLY && echo->id != fEchoID) { + + NetBufferHeaderReader bufferHeader(packet); + if (bufferHeader.Status() < B_OK) + return; + ppp_lcp_packet &echo = bufferHeader.Data(); + + if (echo.code == PPP_ECHO_REPLY && echo.id != fEchoID) { // TODO: // log that we got a reply, but no request was sent } - + switch (State()) { case PPP_INITIAL_STATE: case PPP_STARTING_STATE: IllegalEvent(PPP_RXR_EVENT); break; - + case PPP_OPENED_STATE: - if (echo->code == PPP_ECHO_REQUEST) + if (echo.code == PPP_ECHO_REQUEST) SendEchoReply(packet); return; // this prevents the packet from being freed - + default: ; } - - m_freem(packet); + + gBufferModule->free(packet); } @@ -1366,12 +1444,12 @@ KPPPStateMachine::TimerEvent() if (fNextTimeout != 0) TRACE("KPPPSM: TimerEvent()\n"); #endif - + if (fNextTimeout == 0 || fNextTimeout > system_time()) return; - + fNextTimeout = 0; - + switch (State()) { case PPP_CLOSING_STATE: case PPP_STOPPING_STATE: @@ -1380,7 +1458,7 @@ KPPPStateMachine::TimerEvent() else TOGoodEvent(); break; - + case PPP_REQ_SENT_STATE: case PPP_ACK_RCVD_STATE: case PPP_ACK_SENT_STATE: @@ -1389,7 +1467,7 @@ KPPPStateMachine::TimerEvent() else TOGoodEvent(); break; - + default: ; } @@ -1397,56 +1475,76 @@ KPPPStateMachine::TimerEvent() // ReceiveConfigureRequest -// Here we get a configure-request packet from LCP and aks all OptionHandlers +// Here we get a configure-request packet from LCP and ask all OptionHandlers // if its values are acceptable. From here we call our Good/Bad counterparts. void -KPPPStateMachine::RCREvent(struct mbuf *packet) +KPPPStateMachine::RCREvent(net_buffer *packet) { - TRACE("KPPPSM: RCREvent() state=%d phase=%d\n", State(), Phase()); - + TRACE("KPPPSM: RCREvent() state=%d phase=%d lcppacket size=%ld\n", State(), Phase(), + packet->size); + KPPPConfigurePacket request(packet); KPPPConfigurePacket nak(PPP_CONFIGURE_NAK); KPPPConfigurePacket reject(PPP_CONFIGURE_REJECT); - + + NetBufferHeaderReader bufferHeader(packet); + if (bufferHeader.Status() < B_OK) + return; + ppp_lcp_packet &header = bufferHeader.Data(); + // we should not use the same id as the peer - if (fID == mtod(packet, ppp_lcp_packet*)->id) + if (fID == header.id) fID -= 128; - + // or maybe we should use peer's ID plus 1 ? + nak.SetID(request.ID()); reject.SetID(request.ID()); - + // each handler should add unacceptable values for each item status_t result; // the return value of ParseRequest() KPPPOptionHandler *optionHandler; for (int32 index = 0; index < request.CountItems(); index++) { optionHandler = LCP().OptionHandlerFor(request.ItemAt(index)->type); - + if (!optionHandler || !optionHandler->IsEnabled()) { - ERROR("KPPPSM::RCREvent():unknown type:%d\n", request.ItemAt(index)->type); - // unhandled items should be added to the reject - reject.AddItem(request.ItemAt(index)); - continue; + TRACE("KPPPSM::RCREvent():unknown type:%d\n", request.ItemAt(index)->type); + if (request.ItemAt(index)->type == 0x5) + { + // type 0x5 is Magic Number, Need no processing. + TRACE("Peer Magic Number:%02x %02x %02x %02x\n", + (request.ItemAt(index)->data)[0], + (request.ItemAt(index)->data)[1], + (request.ItemAt(index)->data)[2], + (request.ItemAt(index)->data)[3]); + continue; + } else { + // unhandled items should be added to the reject + TRACE("why come here %ld\n", index); + reject.AddItem(request.ItemAt(index)); + continue; + } } - + TRACE("KPPPSM::RCREvent(): OH=%s\n", optionHandler->Name() ? optionHandler->Name() : "Unknown"); result = optionHandler->ParseRequest(request, index, nak, reject); - + if (result == PPP_UNHANDLED) { // unhandled items should be added to the reject + TRACE("PPP_UNHANDLED %ld\n", index); reject.AddItem(request.ItemAt(index)); continue; } else if (result != B_OK) { // the request contains a value that has been sent more than // once or the value is corrupted ERROR("KPPPSM::RCREvent(): OptionHandler returned parse error!\n"); - m_freem(packet); + gBufferModule->free(packet); CloseEvent(); return; } } - + // Additional values may be appended. // If we sent too many naks we should not append additional values. if (fNakCounter > 0) { @@ -1455,25 +1553,27 @@ KPPPStateMachine::RCREvent(struct mbuf *packet) if (optionHandler && optionHandler->IsEnabled()) { result = optionHandler->ParseRequest(request, request.CountItems(), nak, reject); - + if (result != B_OK) { // the request contains a value that has been sent more than // once or the value is corrupted ERROR("KPPPSM::RCREvent():OptionHandler returned append error!\n"); - m_freem(packet); + gBufferModule->free(packet); CloseEvent(); return; } } } } - + if (reject.CountItems() > 0) { - RCRBadEvent(NULL, reject.ToMbuf(Interface().MRU(), LCP().AdditionalOverhead())); - m_freem(packet); + TRACE("%s:reject number more than 0\n", __func__); + RCRBadEvent(NULL, reject.ToNetBuffer(Interface().MRU())); + gBufferModule->free(packet); } else if (nak.CountItems() > 0) { - RCRBadEvent(nak.ToMbuf(Interface().MRU(), LCP().AdditionalOverhead()), NULL); - m_freem(packet); + TRACE("%s:nak number more than 0\n", __func__); + RCRBadEvent(nak.ToNetBuffer(Interface().MRU()), NULL); + gBufferModule->free(packet); } else RCRGoodEvent(packet); } @@ -1483,49 +1583,52 @@ KPPPStateMachine::RCREvent(struct mbuf *packet) // LCP received a code/protocol-reject packet and we look if it is acceptable. // From here we call our Good/Bad counterparts. void -KPPPStateMachine::RXJEvent(struct mbuf *packet) +KPPPStateMachine::RXJEvent(net_buffer *packet) { TRACE("KPPPSM: RXJEvent() state=%d phase=%d\n", State(), Phase()); - - ppp_lcp_packet *reject = mtod(packet, ppp_lcp_packet*); - - if (reject->code == PPP_CODE_REJECT) { - uint8 rejectedCode = reject->data[0]; - + + NetBufferHeaderReader bufferHeader(packet); + if (bufferHeader.Status() < B_OK) + return; + ppp_lcp_packet &reject = bufferHeader.Data(); + + if (reject.code == PPP_CODE_REJECT) { + uint8 rejectedCode = reject.data[0]; + // test if the rejected code belongs to the minimum LCP requirements if (rejectedCode >= PPP_MIN_LCP_CODE && rejectedCode <= PPP_MAX_LCP_CODE) { if (Interface().IsMultilink() && !Interface().Parent()) { // Main interfaces do not have states between STARTING and OPENED. // An RXJBadEvent() would enter one of those states which is bad. - m_freem(packet); + gBufferModule->free(packet); CloseEvent(); } else RXJBadEvent(packet); - + return; } - + // find the LCP extension and disable it KPPPLCPExtension *lcpExtension; for (int32 index = 0; index < LCP().CountLCPExtensions(); index++) { lcpExtension = LCP().LCPExtensionAt(index); - + if (lcpExtension->Code() == rejectedCode) lcpExtension->SetEnabled(false); } - - m_freem(packet); - } else if (reject->code == PPP_PROTOCOL_REJECT) { + + gBufferModule->free(packet); + } else if (reject.code == PPP_PROTOCOL_REJECT) { // disable all handlers for rejected protocol type - uint16 rejected = *((uint16*) reject->data); + uint16 rejected = *((uint16*) reject.data); // rejected protocol number - + if (rejected == PPP_LCP_PROTOCOL) { // LCP must not be rejected! RXJBadEvent(packet); return; } - + // disable protocols with the rejected protocol number KPPPProtocol *protocol = Interface().FirstProtocol(); for (; protocol; protocol = protocol->NextProtocol()) { @@ -1533,15 +1636,15 @@ KPPPStateMachine::RXJEvent(struct mbuf *packet) protocol->SetEnabled(false); // disable protocol } - + RXJGoodEvent(packet); // this event handler does not m_freem(packet)!!! - + // notify parent, too if (Interface().Parent()) Interface().Parent()->StateMachine().RXJEvent(packet); else - m_freem(packet); + gBufferModule->free(packet); } } @@ -1552,7 +1655,7 @@ KPPPStateMachine::IllegalEvent(ppp_event event) { // TODO: // update error statistics - ERROR("KPPPSM: IllegalEvent(event=%d) state=%d phase=%d\n", + TRACE("KPPPSM: IllegalEvent(event=%d) state=%d phase=%d\n", event, State(), Phase()); } @@ -1561,16 +1664,16 @@ void KPPPStateMachine::ThisLayerUp() { TRACE("KPPPSM: ThisLayerUp() state=%d phase=%d\n", State(), Phase()); - + // We begin with authentication phase and wait until each phase is done. // We stop when we reach established phase. - + // Do not forget to check if we are going down. if (Phase() != PPP_ESTABLISHMENT_PHASE) return; - + NewPhase(PPP_AUTHENTICATION_PHASE); - + BringProtocolsUp(); } @@ -1579,7 +1682,7 @@ void KPPPStateMachine::ThisLayerDown() { TRACE("KPPPSM: ThisLayerDown() state=%d phase=%d\n", State(), Phase()); - + // KPPPProtocol::Down() should block if needed. DownProtocols(); } @@ -1589,7 +1692,7 @@ void KPPPStateMachine::ThisLayerStarted() { TRACE("KPPPSM: ThisLayerStarted() state=%d phase=%d\n", State(), Phase()); - + if (Interface().Device() && !Interface().Device()->Up()) Interface().Device()->UpFailedEvent(); } @@ -1599,7 +1702,7 @@ void KPPPStateMachine::ThisLayerFinished() { TRACE("KPPPSM: ThisLayerFinished() state=%d phase=%d\n", State(), Phase()); - + if (Interface().Device()) Interface().Device()->Down(); } @@ -1627,14 +1730,14 @@ bool KPPPStateMachine::SendConfigureRequest() { TRACE("KPPPSM: SendConfigureRequest() state=%d phase=%d\n", State(), Phase()); - + --fRequestCounter; fNextTimeout = system_time() + kPPPStateMachineTimeout; - + KPPPConfigurePacket request(PPP_CONFIGURE_REQUEST); request.SetID(NextID()); fRequestID = request.ID(); - + for (int32 index = 0; index < LCP().CountOptionHandlers(); index++) { // add all items if (LCP().OptionHandlerAt(index)->AddToRequest(request) != B_OK) { @@ -1642,53 +1745,65 @@ KPPPStateMachine::SendConfigureRequest() return false; } } - - return LCP().Send(request.ToMbuf(Interface().MRU(), - LCP().AdditionalOverhead())) == B_OK; + + return LCP().Send(request.ToNetBuffer(Interface().MRU())) == B_OK; } bool -KPPPStateMachine::SendConfigureAck(struct mbuf *packet) +KPPPStateMachine::SendConfigureAck(net_buffer *packet) { TRACE("KPPPSM: SendConfigureAck() state=%d phase=%d\n", State(), Phase()); - + if (!packet) return false; - - mtod(packet, ppp_lcp_packet*)->code = PPP_CONFIGURE_ACK; + + NetBufferHeaderReader bufferHeader(packet); + if (bufferHeader.Status() < B_OK) + return false; + ppp_lcp_packet &header = bufferHeader.Data(); + + header.code = PPP_CONFIGURE_ACK; + bufferHeader.Sync(); + KPPPConfigurePacket ack(packet); - + // notify all option handlers that we are sending an ack for each value for (int32 index = 0; index < LCP().CountOptionHandlers(); index++) { if (LCP().OptionHandlerAt(index)->SendingAck(ack) != B_OK) { - m_freem(packet); + TRACE("%s::%s: SendingAck %ld fail\n", __FILE__, __func__, index); + gBufferModule->free(packet); CloseEvent(); return false; } } - + + TRACE("%s::%s: LCP().Send\n", __FILE__, __func__); return LCP().Send(packet) == B_OK; } bool -KPPPStateMachine::SendConfigureNak(struct mbuf *packet) +KPPPStateMachine::SendConfigureNak(net_buffer *packet) { TRACE("KPPPSM: SendConfigureNak() state=%d phase=%d\n", State(), Phase()); - + if (!packet) return false; - - ppp_lcp_packet *nak = mtod(packet, ppp_lcp_packet*); - if (nak->code == PPP_CONFIGURE_NAK) { + + NetBufferHeaderReader bufferHeader(packet); + if (bufferHeader.Status() < B_OK) + return false; + ppp_lcp_packet &nak = bufferHeader.Data(); + + if (nak.code == PPP_CONFIGURE_NAK) { if (fNakCounter == 0) { // We sent enough naks. Let's try a reject. - nak->code = PPP_CONFIGURE_REJECT; + nak.code = PPP_CONFIGURE_REJECT; } else --fNakCounter; } - + return LCP().Send(packet) == B_OK; } @@ -1697,120 +1812,113 @@ bool KPPPStateMachine::SendTerminateRequest() { TRACE("KPPPSM: SendTerminateRequest() state=%d phase=%d\n", State(), Phase()); - + --fTerminateCounter; fNextTimeout = system_time() + kPPPStateMachineTimeout; - - struct mbuf *packet = m_gethdr(MT_DATA); + + net_buffer *buffer = gBufferModule->create(256); + if (buffer == NULL) + return false; + + ppp_lcp_packet *packet; + status_t status = gBufferModule->append_size(buffer, 1492, (void **)&packet); + if (status == B_OK && packet == NULL) { + gBufferModule->free(buffer); + return false; + } + if (!packet) return false; - - packet->m_pkthdr.len = packet->m_len = 4; - - // reserve some space for other protocols - packet->m_data += LCP().AdditionalOverhead(); - - ppp_lcp_packet *request = mtod(packet, ppp_lcp_packet*); - request->code = PPP_TERMINATE_REQUEST; - request->id = fTerminateID = NextID(); - request->length = htons(4); - - return LCP().Send(packet) == B_OK; + + packet->code = PPP_TERMINATE_REQUEST; + packet->id = fTerminateID = NextID(); + packet->length = htons(4); + + status = gBufferModule->trim(buffer, 4); + if (status < B_OK) { + gBufferModule->free(buffer); + return false; + } + + return LCP().Send(buffer) == B_OK; } bool -KPPPStateMachine::SendTerminateAck(struct mbuf *request) +KPPPStateMachine::SendTerminateAck(net_buffer *request) { TRACE("KPPPSM: SendTerminateAck() state=%d phase=%d\n", State(), Phase()); - - struct mbuf *reply = request; - - ppp_lcp_packet *ack; - + + net_buffer *reply = request; + + NetBufferHeaderReader bufferHeader(request); + if (bufferHeader.Status() < B_OK) + return false; + ppp_lcp_packet &ack = bufferHeader.Data(); + if (!reply) { - reply = m_gethdr(MT_DATA); - if (!reply) - return false; - - reply->m_data += LCP().AdditionalOverhead(); - reply->m_pkthdr.len = reply->m_len = 4; - - ack = mtod(reply, ppp_lcp_packet*); - ack->id = NextID(); - } else - ack = mtod(reply, ppp_lcp_packet*); - - ack->code = PPP_TERMINATE_ACK; - ack->length = htons(4); - + ack.length = htons(4); + ack.id = NextID(); + } + + ack.code = PPP_TERMINATE_ACK; + ack.length = htons(4); + return LCP().Send(reply) == B_OK; } bool -KPPPStateMachine::SendCodeReject(struct mbuf *packet, uint16 protocolNumber, uint8 code) +KPPPStateMachine::SendCodeReject(net_buffer *packet, uint16 protocolNumber, uint8 code) { TRACE("KPPPSM: SendCodeReject(protocolNumber=%X;code=%d) state=%d phase=%d\n", protocolNumber, code, State(), Phase()); - + if (!packet) return false; - + int32 length; // additional space needed for this reject if (code == PPP_PROTOCOL_REJECT) length = 6; else length = 4; - - M_PREPEND(packet, length); - // add some space for the header - - // adjust packet if too big - int32 adjust = Interface().MRU(); - if (packet->m_flags & M_PKTHDR) { - adjust -= packet->m_pkthdr.len; - } else - adjust -= packet->m_len; - - if (adjust < 0) - m_adj(packet, adjust); - - ppp_lcp_packet *reject = mtod(packet, ppp_lcp_packet*); - reject->code = code; - reject->id = NextID(); - if (packet->m_flags & M_PKTHDR) - reject->length = htons(packet->m_pkthdr.len); - else - reject->length = htons(packet->m_len); - + + NetBufferHeaderReader bufferHeader(packet); + if (bufferHeader.Status() < B_OK) + return false; + ppp_lcp_packet &reject = bufferHeader.Data(); + + reject.code = code; + reject.id = NextID(); + reject.length = htons(length); + protocolNumber = htons(protocolNumber); if (code == PPP_PROTOCOL_REJECT) - memcpy(&reject->data, &protocolNumber, sizeof(protocolNumber)); - + memcpy(&reject.data, &protocolNumber, sizeof(protocolNumber)); + return LCP().Send(packet) == B_OK; } bool -KPPPStateMachine::SendEchoReply(struct mbuf *request) +KPPPStateMachine::SendEchoReply(net_buffer *request) { TRACE("KPPPSM: SendEchoReply() state=%d phase=%d\n", State(), Phase()); - + if (!request) return false; - - ppp_lcp_packet *reply = mtod(request, ppp_lcp_packet*); - reply->code = PPP_ECHO_REPLY; + + NetBufferHeaderReader bufferHeader(request); + if (bufferHeader.Status() < B_OK) + return false; + ppp_lcp_packet &reply = bufferHeader.Data(); + + reply.code = PPP_ECHO_REPLY; // the request becomes a reply - - if (request->m_flags & M_PKTHDR) - request->m_pkthdr.len = 8; - request->m_len = 8; - - memcpy(reply->data, &fMagicNumber, sizeof(fMagicNumber)); - + + memcpy(reply.data, &fMagicNumber, sizeof(fMagicNumber)); + return LCP().Send(request) == B_OK; } @@ -1823,7 +1931,7 @@ KPPPStateMachine::BringProtocolsUp() while (Phase() <= PPP_ESTABLISHED_PHASE && Phase() >= PPP_AUTHENTICATION_PHASE) { if (BringPhaseUp() > 0) break; - + if (Phase() < PPP_AUTHENTICATION_PHASE) return; // phase was changed by another event @@ -1843,11 +1951,11 @@ KPPPStateMachine::BringPhaseUp() { // Servers do not need to bring all protocols up. // The client specifies which protocols he wants to go up. - + // check for phase change if (Phase() < PPP_AUTHENTICATION_PHASE) return 0; - + uint32 count = 0; KPPPProtocol *protocol = Interface().FirstProtocol(); for (; protocol; protocol = protocol->NextProtocol()) { @@ -1857,18 +1965,18 @@ KPPPStateMachine::BringPhaseUp() else if (protocol->IsDown() && protocol->IsUpRequested()) { if (Interface().Mode() == PPP_CLIENT_MODE) ++count; - + protocol->Up(); } } } - + // We only wait until authentication is complete. if (Interface().Mode() == PPP_SERVER_MODE && (LocalAuthenticationStatus() == PPP_AUTHENTICATING || PeerAuthenticationStatus() == PPP_AUTHENTICATING)) ++count; - + return count; } @@ -1877,7 +1985,7 @@ void KPPPStateMachine::DownProtocols() { KPPPProtocol *protocol = Interface().FirstProtocol(); - + for (; protocol; protocol = protocol->NextProtocol()) if (protocol->IsEnabled()) protocol->Down(); @@ -1889,7 +1997,7 @@ KPPPStateMachine::ResetLCPHandlers() { for (int32 index = 0; index < LCP().CountOptionHandlers(); index++) LCP().OptionHandlerAt(index)->Reset(); - + for (int32 index = 0; index < LCP().CountLCPExtensions(); index++) LCP().LCPExtensionAt(index)->Reset(); } diff --git a/src/add-ons/kernel/network/ppp/shared/libkernelppp/headers/KPPPConfigurePacket.h b/src/add-ons/kernel/network/ppp/shared/libkernelppp/headers/KPPPConfigurePacket.h index 408dabc15d..61a78897bd 100644 --- a/src/add-ons/kernel/network/ppp/shared/libkernelppp/headers/KPPPConfigurePacket.h +++ b/src/add-ons/kernel/network/ppp/shared/libkernelppp/headers/KPPPConfigurePacket.h @@ -7,8 +7,7 @@ #define _K_PPP_CONFIGURE_PACKET__H #include - -struct mbuf; +#include //! An abstract configure item. typedef struct ppp_configure_item { @@ -29,7 +28,7 @@ class KPPPConfigurePacket { public: KPPPConfigurePacket(uint8 code); - KPPPConfigurePacket(struct mbuf *packet); + KPPPConfigurePacket(net_buffer *packet); ~KPPPConfigurePacket(); bool SetCode(uint8 code); @@ -52,8 +51,8 @@ class KPPPConfigurePacket { ppp_configure_item *ItemAt(int32 index) const; ppp_configure_item *ItemWithType(uint8 type) const; - struct mbuf *ToMbuf(uint32 MRU, uint32 reserve = 0); - // the user is responsible for freeing the mbuf + net_buffer *ToNetBuffer(uint32 MRU); + // the user is responsible for freeing the net_buffer private: uint8 fCode, fID; diff --git a/src/add-ons/kernel/network/ppp/shared/libkernelppp/headers/KPPPDevice.h b/src/add-ons/kernel/network/ppp/shared/libkernelppp/headers/KPPPDevice.h index e2cd97170e..a6917345d8 100644 --- a/src/add-ons/kernel/network/ppp/shared/libkernelppp/headers/KPPPDevice.h +++ b/src/add-ons/kernel/network/ppp/shared/libkernelppp/headers/KPPPDevice.h @@ -9,6 +9,8 @@ #include #include +#include + #ifndef _K_PPP_INTERFACE__H #include #endif @@ -96,8 +98,8 @@ class KPPPDevice : public KPPPLayer { This should enqueue the packet and return immediately (never block). The device is responsible for freeing the packet by calling \c m_freem(). */ - virtual status_t Send(struct mbuf *packet, uint16 protocolNumber) = 0; - virtual status_t Receive(struct mbuf *packet, uint16 protocolNumber); + virtual status_t Send(net_buffer *packet, uint16 protocolNumber) = 0; + virtual status_t Receive(net_buffer *packet, uint16 protocolNumber); protected: //! Use this to set the device's maximum transfer unit (in bytes). diff --git a/src/add-ons/kernel/network/ppp/shared/libkernelppp/headers/KPPPInterface.h b/src/add-ons/kernel/network/ppp/shared/libkernelppp/headers/KPPPInterface.h index a2c22e50d7..a1c92d82ab 100644 --- a/src/add-ons/kernel/network/ppp/shared/libkernelppp/headers/KPPPInterface.h +++ b/src/add-ons/kernel/network/ppp/shared/libkernelppp/headers/KPPPInterface.h @@ -30,6 +30,12 @@ #include +#include +#include + +#include +#include + class KPPPDevice; class KPPPProtocol; class KPPPOptionHandler; @@ -48,6 +54,8 @@ class KPPPInterface : public KPPPLayer { KPPPInterface(const KPPPInterface& copy); KPPPInterface& operator= (const KPPPInterface& copy); + public: + // we should set to private after finishing test // only PPPManager may construct us! KPPPInterface(const char *name, ppp_interface_entry *entry, ppp_interface_id ID, const driver_settings *settings, @@ -75,8 +83,8 @@ class KPPPInterface : public KPPPLayer { { return fLCP; } //! Returns the interfac's ifnet structure that is exported to the netstack. - struct ifnet *Ifnet() const - { return fIfnet; } + net_device *Ifnet() const + { return fIfnet; } const char *Username() const; const char *Password() const; @@ -220,11 +228,11 @@ class KPPPInterface : public KPPPLayer { virtual bool IsAllowedToSend() const; // always returns true - virtual status_t Send(struct mbuf *packet, uint16 protocolNumber); + virtual status_t Send(net_buffer *packet, uint16 protocolNumber); // sends the packet to the next handler (normally the device) - virtual status_t Receive(struct mbuf *packet, uint16 protocolNumber); + virtual status_t Receive(net_buffer *packet, uint16 protocolNumber); - status_t ReceiveFromDevice(struct mbuf *packet); + status_t ReceiveFromDevice(net_buffer *packet); // This must not block KPPPDevice::Send()! void Pulse(); @@ -255,7 +263,7 @@ class KPPPInterface : public KPPPLayer { ppp_interface_id fID; // the manager assigns an ID to every interface driver_settings *fSettings; - struct ifnet *fIfnet; + net_device *fIfnet; char *fUsername, *fPassword; @@ -288,7 +296,7 @@ class KPPPInterface : public KPPPLayer { KPPPStateMachine fStateMachine; KPPPLCP fLCP; KPPPReportManager fReportManager; - BLocker& fLock; + mutex& fLock; int32 fDeleteCounter; }; diff --git a/src/add-ons/kernel/network/ppp/shared/libkernelppp/headers/KPPPLCP.h b/src/add-ons/kernel/network/ppp/shared/libkernelppp/headers/KPPPLCP.h index 5919911ddd..04f966c454 100644 --- a/src/add-ons/kernel/network/ppp/shared/libkernelppp/headers/KPPPLCP.h +++ b/src/add-ons/kernel/network/ppp/shared/libkernelppp/headers/KPPPLCP.h @@ -20,6 +20,9 @@ #include #endif +#include +#include + class KPPPLCPExtension; class KPPPOptionHandler; @@ -79,15 +82,12 @@ class KPPPLCP : public KPPPProtocol { KPPPProtocol *Target() const { return fTarget; } - uint32 AdditionalOverhead() const; - // the overhead caused by the target, the device, and the interface - virtual bool Up(); virtual bool Down(); - virtual status_t Send(struct mbuf *packet, + virtual status_t Send(net_buffer *packet, uint16 protocolNumber = PPP_LCP_PROTOCOL); - virtual status_t Receive(struct mbuf *packet, uint16 protocolNumber); + virtual status_t Receive(net_buffer *packet, uint16 protocolNumber); virtual void Pulse(); diff --git a/src/add-ons/kernel/network/ppp/shared/libkernelppp/headers/KPPPLCPExtension.h b/src/add-ons/kernel/network/ppp/shared/libkernelppp/headers/KPPPLCPExtension.h index 8d21c7b180..828a0a1b82 100644 --- a/src/add-ons/kernel/network/ppp/shared/libkernelppp/headers/KPPPLCPExtension.h +++ b/src/add-ons/kernel/network/ppp/shared/libkernelppp/headers/KPPPLCPExtension.h @@ -51,7 +51,7 @@ class KPPPLCPExtension { // called by netstack (forwarded by KPPPInterface) //! Must be overridden. Called when an LCP packet with your code is received. - virtual status_t Receive(struct mbuf *packet, uint8 code) = 0; + virtual status_t Receive(net_buffer *packet, uint8 code) = 0; virtual void Reset(); virtual void Pulse(); diff --git a/src/add-ons/kernel/network/ppp/shared/libkernelppp/headers/KPPPLayer.h b/src/add-ons/kernel/network/ppp/shared/libkernelppp/headers/KPPPLayer.h index 4aba95d118..98731b8e99 100644 --- a/src/add-ons/kernel/network/ppp/shared/libkernelppp/headers/KPPPLayer.h +++ b/src/add-ons/kernel/network/ppp/shared/libkernelppp/headers/KPPPLayer.h @@ -8,6 +8,7 @@ #include +#include class KPPPLayer { protected: @@ -48,11 +49,11 @@ class KPPPLayer { virtual bool IsAllowedToSend() const = 0; //! Send a packet with the given protocol number. - virtual status_t Send(struct mbuf *packet, uint16 protocolNumber) = 0; + virtual status_t Send(net_buffer *packet, uint16 protocolNumber) = 0; //! Receive a packet with the given protocol number. - virtual status_t Receive(struct mbuf *packet, uint16 protocolNumber) = 0; + virtual status_t Receive(net_buffer *packet, uint16 protocolNumber) = 0; - status_t SendToNext(struct mbuf *packet, uint16 protocolNumber) const; + status_t SendToNext(net_buffer *packet, uint16 protocolNumber) const; // send the packet to the next layer virtual void Pulse(); diff --git a/src/add-ons/kernel/network/ppp/shared/libkernelppp/headers/KPPPManager.h b/src/add-ons/kernel/network/ppp/shared/libkernelppp/headers/KPPPManager.h index dd92c8fda2..347e0aa474 100644 --- a/src/add-ons/kernel/network/ppp/shared/libkernelppp/headers/KPPPManager.h +++ b/src/add-ons/kernel/network/ppp/shared/libkernelppp/headers/KPPPManager.h @@ -6,12 +6,12 @@ #ifndef _K_PPP_MANAGER__H #define _K_PPP_MANAGER__H -#include "net_module.h" +#include +#include #include #include - -#define PPP_INTERFACE_MODULE_NAME NETWORK_MODULES_ROOT "interfaces/ppp" +#define PPP_INTERFACE_MODULE_NAME NETWORK_MODULES_ROOT "/ppp/KPPPManager/v1" #define PPP_UNDEFINED_INTERFACE_ID 0 // CreateInterface() returns this value on failure @@ -34,8 +34,7 @@ typedef struct ppp_interface_entry { deletes them when they are not needed anymore. */ typedef struct ppp_interface_module_info { - kernel_net_module_info knminfo; - //!< Exports needed network module functions. + struct module_info info; ppp_interface_id (*CreateInterface)(const driver_settings *settings, ppp_interface_id parentID); @@ -46,7 +45,9 @@ typedef struct ppp_interface_module_info { bool (*RemoveInterface)(ppp_interface_id ID); // remove the interface from database (make sure you can delete it yourself!) - ifnet *(*RegisterInterface)(ppp_interface_id ID); + net_device *(*RegisterInterface)(ppp_interface_id ID); + KPPPInterface *(*GetInterface)(ppp_interface_id ID); + // for accessing KPPPInterface directly bool (*UnregisterInterface)(ppp_interface_id ID); status_t (*ControlInterface)(ppp_interface_id ID, uint32 op, void *data, diff --git a/src/add-ons/kernel/network/ppp/shared/libkernelppp/headers/KPPPProtocol.h b/src/add-ons/kernel/network/ppp/shared/libkernelppp/headers/KPPPProtocol.h index 824fd91d1b..bc1a8a085d 100644 --- a/src/add-ons/kernel/network/ppp/shared/libkernelppp/headers/KPPPProtocol.h +++ b/src/add-ons/kernel/network/ppp/shared/libkernelppp/headers/KPPPProtocol.h @@ -105,9 +105,9 @@ class KPPPProtocol : public KPPPLayer { virtual bool IsAllowedToSend() const; //! Encapsulate the packet with the given protocol number. - virtual status_t Send(struct mbuf *packet, uint16 protocolNumber) = 0; + virtual status_t Send(net_buffer *packet, uint16 protocolNumber) = 0; //! Receive a packet with the given protocol number. - virtual status_t Receive(struct mbuf *packet, uint16 protocolNumber) = 0; + virtual status_t Receive(net_buffer *packet, uint16 protocolNumber) = 0; protected: //! \brief Requests Up() to be called. diff --git a/src/add-ons/kernel/network/ppp/shared/libkernelppp/headers/KPPPReportManager.h b/src/add-ons/kernel/network/ppp/shared/libkernelppp/headers/KPPPReportManager.h index 1d5f1eac63..91bf6370ce 100644 --- a/src/add-ons/kernel/network/ppp/shared/libkernelppp/headers/KPPPReportManager.h +++ b/src/add-ons/kernel/network/ppp/shared/libkernelppp/headers/KPPPReportManager.h @@ -13,10 +13,13 @@ #include +#include +#include + class KPPPReportManager { public: - KPPPReportManager(BLocker& lock); + KPPPReportManager(mutex& lock); ~KPPPReportManager(); static bool SendReport(thread_id thread, const ppp_report_packet *report); @@ -30,7 +33,7 @@ class KPPPReportManager { // returns false if reply was bad (or an error occured) private: - BLocker& fLock; + mutex& fLock; TemplateList fReportRequests; }; diff --git a/src/add-ons/kernel/network/ppp/shared/libkernelppp/headers/KPPPStateMachine.h b/src/add-ons/kernel/network/ppp/shared/libkernelppp/headers/KPPPStateMachine.h index d281e0de73..a0cac1bd43 100644 --- a/src/add-ons/kernel/network/ppp/shared/libkernelppp/headers/KPPPStateMachine.h +++ b/src/add-ons/kernel/network/ppp/shared/libkernelppp/headers/KPPPStateMachine.h @@ -14,7 +14,8 @@ class KPPPProtocol; #include #endif -#include +#include +#include class PPPManager; class KPPPInterface; @@ -30,7 +31,7 @@ class KPPPStateMachine { // may only be constructed/destructed by KPPPInterface KPPPStateMachine(KPPPInterface& interface); ~KPPPStateMachine(); - + // copies are not allowed! KPPPStateMachine(const KPPPStateMachine& copy); KPPPStateMachine& operator= (const KPPPStateMachine& copy); @@ -42,28 +43,28 @@ class KPPPStateMachine { //! Returns the LCP protocol object belonging to this state machine. KPPPLCP& LCP() const { return fLCP; } - + //! Returns the current state as defined in RFC 1661. ppp_state State() const { return fState; } //! Returns the internal phase. ppp_phase Phase() const { return fPhase; } - + uint8 NextID(); - + //! Sets our packets' magic number. Used by Link-Quality-Monitoring. void SetMagicNumber(uint32 magicNumber) { fMagicNumber = magicNumber; } //! Returns our packets' magic number. uint32 MagicNumber() const { return fMagicNumber; } - + // public actions bool Reconfigure(); bool SendEchoRequest(); bool SendDiscardRequest(); - + // public events: // NOTE: Local/PeerAuthenticationAccepted/Denied MUST be called before // Up(Failed)/DownEvent in order to allow changing the configuration of @@ -77,7 +78,7 @@ class KPPPStateMachine { //! Returns our local authentication status. ppp_authentication_status LocalAuthenticationStatus() const { return fLocalAuthenticationStatus; } - + void PeerAuthenticationRequested(); void PeerAuthenticationAccepted(const char *name); void PeerAuthenticationDenied(const char *name); @@ -87,17 +88,17 @@ class KPPPStateMachine { //! Returns the peer's authentication status. ppp_authentication_status PeerAuthenticationStatus() const { return fPeerAuthenticationStatus; } - + // sub-interface events void UpFailedEvent(KPPPInterface& interface); void UpEvent(KPPPInterface& interface); void DownEvent(KPPPInterface& interface); - + // protocol events void UpFailedEvent(KPPPProtocol *protocol); void UpEvent(KPPPProtocol *protocol); void DownEvent(KPPPProtocol *protocol); - + // device events bool TLSNotify(); bool TLFNotify(); @@ -109,30 +110,30 @@ class KPPPStateMachine { // private StateMachine methods void NewState(ppp_state next); void NewPhase(ppp_phase next); - + // private events void OpenEvent(); void ContinueOpenEvent(); void CloseEvent(); void TOGoodEvent(); void TOBadEvent(); - void RCRGoodEvent(struct mbuf *packet); - void RCRBadEvent(struct mbuf *nak, struct mbuf *reject); - void RCAEvent(struct mbuf *packet); - void RCNEvent(struct mbuf *packet); - void RTREvent(struct mbuf *packet); - void RTAEvent(struct mbuf *packet); - void RUCEvent(struct mbuf *packet, uint16 protocolNumber, + void RCRGoodEvent(net_buffer *packet); + void RCRBadEvent(net_buffer *nak, net_buffer *reject); + void RCAEvent(net_buffer *packet); + void RCNEvent(net_buffer *packet); + void RTREvent(net_buffer *packet); + void RTAEvent(net_buffer *packet); + void RUCEvent(net_buffer *packet, uint16 protocolNumber, uint8 code = PPP_PROTOCOL_REJECT); - void RXJGoodEvent(struct mbuf *packet); - void RXJBadEvent(struct mbuf *packet); - void RXREvent(struct mbuf *packet); - + void RXJGoodEvent(net_buffer *packet); + void RXJBadEvent(net_buffer *packet); + void RXREvent(net_buffer *packet); + // general events (for Good/Bad events) void TimerEvent(); - void RCREvent(struct mbuf *packet); - void RXJEvent(struct mbuf *packet); - + void RCREvent(net_buffer *packet); + void RXJEvent(net_buffer *packet); + // actions void IllegalEvent(ppp_event event); void ThisLayerUp(); @@ -142,42 +143,42 @@ class KPPPStateMachine { void InitializeRestartCount(); void ZeroRestartCount(); bool SendConfigureRequest(); - bool SendConfigureAck(struct mbuf *packet); - bool SendConfigureNak(struct mbuf *packet); + bool SendConfigureAck(net_buffer *packet); + bool SendConfigureNak(net_buffer *packet); bool SendTerminateRequest(); - bool SendTerminateAck(struct mbuf *request = NULL); - bool SendCodeReject(struct mbuf *packet, uint16 protocolNumber, uint8 code); - bool SendEchoReply(struct mbuf *request); - + bool SendTerminateAck(net_buffer *request = NULL); + bool SendCodeReject(net_buffer *packet, uint16 protocolNumber, uint8 code); + bool SendEchoReply(net_buffer *request); + void BringProtocolsUp(); uint32 BringPhaseUp(); - + void DownProtocols(); void ResetLCPHandlers(); private: KPPPInterface& fInterface; KPPPLCP& fLCP; - + ppp_state fState; ppp_phase fPhase; - - vint32 fID; + + int32 fID; uint32 fMagicNumber; int32 fLastConnectionReportCode; - + ppp_authentication_status fLocalAuthenticationStatus, fPeerAuthenticationStatus; char *fLocalAuthenticationName, *fPeerAuthenticationName; - + // counters and timers int32 fMaxRequest, fMaxTerminate, fMaxNak; int32 fRequestCounter, fTerminateCounter, fNakCounter; uint8 fRequestID, fTerminateID, fEchoID; // the ID we used for the last configure/terminate/echo request bigtime_t fNextTimeout; - - BLocker fLock; + + mutex fLock; }; diff --git a/src/add-ons/kernel/network/ppp/shared/libkernelppp/headers/PPPControl.h b/src/add-ons/kernel/network/ppp/shared/libkernelppp/headers/PPPControl.h index cb731571c7..ca5c536d8c 100644 --- a/src/add-ons/kernel/network/ppp/shared/libkernelppp/headers/PPPControl.h +++ b/src/add-ons/kernel/network/ppp/shared/libkernelppp/headers/PPPControl.h @@ -11,6 +11,76 @@ #include +#define IF_NAMESIZE 32 + // copied from if.h + +struct control_net_module_args { + char ifr_name[IF_NAMESIZE]; + const char* name; + uint32 op; + void* data; + size_t length; +// union { +// struct sockaddr ifr_addr; +// struct sockaddr ifr_dstaddr; +// struct sockaddr ifr_broadaddr; +// struct sockaddr ifr_mask; +// struct ifreq_stats ifr_stats; +// struct route_entry ifr_route; +// int ifr_flags; +// int ifr_index; +// int ifr_metric; +// int ifr_mtu; +// int ifr_media; +// int ifr_type; +// int ifr_reqcap; +// int ifr_count; +// uint8_t* ifr_data; +// }; +}; + // copied from libppp + + +enum { + // Paranoia mode: be far away of B_DEVICE_OP_CODES_END opcodes!!! + // You never know what another device driver ioctl() will do + // if think our NET_STACK_* is in fact his DO_RISKY_BUSINESS opcode, or whatever... + NET_IOCTL_BASE = 0xbe230000, + NET_STACK_IOCTL_BASE = NET_IOCTL_BASE + 0x200 +}; + +enum { + NET_STACK_SOCKET = NET_STACK_IOCTL_BASE, // socket_args * + NET_STACK_BIND, // sockaddr_args * + NET_STACK_RECVFROM, // struct msghdr * + NET_STACK_RECV, // transfer_args * + NET_STACK_SENDTO, // struct msghdr * + NET_STACK_SEND, // transfer_args * + NET_STACK_LISTEN, // int_args * (value = backlog) + NET_STACK_ACCEPT, // sockaddr_args * + NET_STACK_CONNECT, // sockaddr_args * + NET_STACK_SHUTDOWN, // int_args * (value = how) + NET_STACK_GETSOCKOPT, // sockopt_args * + NET_STACK_SETSOCKOPT, // sockopt_args * + NET_STACK_GETSOCKNAME, // sockaddr_args * + NET_STACK_GETPEERNAME, // sockaddr_args * + + NET_STACK_SYSCTL, // sysctl_args * + NET_STACK_SELECT, // select_args * + NET_STACK_DESELECT, // select_args * + + NET_STACK_GET_COOKIE, // void ** + + NET_STACK_STOP, + + NET_STACK_NOTIFY_SOCKET_EVENT, // notify_socket_event_args * (userland stack only) + + NET_STACK_CONTROL_NET_MODULE, + + NET_STACK_IOCTL_MAX +}; + + // various constants #define PPP_HANDLER_NAME_LENGTH_LIMIT 63 // if the name is longer than this value it will be truncated to fit the structure diff --git a/src/add-ons/kernel/network/ppp/shared/libkernelppp/headers/PPPDefs.h b/src/add-ons/kernel/network/ppp/shared/libkernelppp/headers/PPPDefs.h index afa85d1a43..58be01fae7 100644 --- a/src/add-ons/kernel/network/ppp/shared/libkernelppp/headers/PPPDefs.h +++ b/src/add-ons/kernel/network/ppp/shared/libkernelppp/headers/PPPDefs.h @@ -10,8 +10,6 @@ #include -#include "net_module.h" - typedef uint32 ppp_interface_id; @@ -37,7 +35,8 @@ typedef uint32 ppp_interface_id; #define PPP_SERVER_MODE_VALUE "Server" // path defines -#define PPP_MODULES_PATH NETWORK_MODULES_ROOT "ppp" +#define NETWORK_MODULES_ROOT "network" +#define PPP_MODULES_PATH NETWORK_MODULES_ROOT "/ppp" #define PTP_INTERFACE_SETTINGS_PATH \ kUserSettingsDirectory "/kernel/drivers/ptpnet" // TODO: should be: /etc/ptpnet diff --git a/src/add-ons/kernel/network/ppp/shared/libkernelppp/headers/ppp_device.h b/src/add-ons/kernel/network/ppp/shared/libkernelppp/headers/ppp_device.h new file mode 100644 index 0000000000..7e70e0c08b --- /dev/null +++ b/src/add-ons/kernel/network/ppp/shared/libkernelppp/headers/ppp_device.h @@ -0,0 +1,18 @@ +#ifndef __PPP_DEV_H +#define __PPP_DEV_H +#include +#include + +#include + +#include +#include +#include + +struct ppp_device : net_device, DoublyLinkedListLinkImpl { + KPPPInterface * KPPP_Interface; + uint32 frame_size; + net_fifo ppp_fifo; +}; + +#endif diff --git a/src/add-ons/kernel/network/ppp/shared/libppp/Jamfile b/src/add-ons/kernel/network/ppp/shared/libppp/Jamfile index 4d658b0afd..1f720cdc88 100644 --- a/src/add-ons/kernel/network/ppp/shared/libppp/Jamfile +++ b/src/add-ons/kernel/network/ppp/shared/libppp/Jamfile @@ -10,6 +10,7 @@ if $(TARGET_PLATFORM) != haiku { # Unfortunately we get more than we want, namely all POSIX headers. } +UsePrivateKernelHeaders ; UsePrivateHeaders net ; UseHeaders [ FDirName $(HAIKU_TOP) src add-ons kernel network ppp shared libppp headers ] : true ; @@ -19,18 +20,18 @@ UseHeaders [ FDirName $(HAIKU_TOP) src add-ons kernel network ppp shared StaticLibrary libppp.a : strlcat.c - driver_settings.c + driver_settings.cpp settings_tools.cpp KPPPUtils.cpp - - _libppputils.cpp + PPPInterface.cpp PPPInterfaceListener.cpp PPPManager.cpp MessageDriverSettingsUtils.cpp + : libnetwork.so libbnetapi.so ; SEARCH on [ FGristFiles strlcat.c ] = [ FDirName $(HAIKU_TOP) src system libroot posix string ] ; -SEARCH on [ FGristFiles driver_settings.c ] = [ FDirName $(HAIKU_TOP) src system libroot os ] ; +SEARCH on [ FGristFiles driver_settings.cpp ] = [ FDirName $(HAIKU_TOP) src system libroot os ] ; SEARCH on [ FGristFiles settings_tools.cpp ] = [ FDirName $(HAIKU_TOP) src add-ons kernel network ppp shared libkernelppp ] ; SEARCH on [ FGristFiles KPPPUtils.cpp ] = [ FDirName $(HAIKU_TOP) src add-ons kernel network ppp shared libkernelppp ] ; diff --git a/src/add-ons/kernel/network/ppp/shared/libppp/PPPInterface.cpp b/src/add-ons/kernel/network/ppp/shared/libppp/PPPInterface.cpp index 5a4118c1c3..2977bd2a8d 100644 --- a/src/add-ons/kernel/network/ppp/shared/libppp/PPPInterface.cpp +++ b/src/add-ons/kernel/network/ppp/shared/libppp/PPPInterface.cpp @@ -13,13 +13,20 @@ #include "PPPInterface.h" #include +#include +#include +#include #include -#include "_libppputils.h" #include #include #include +#include + +#include +#include + /*! \brief Sets the interface to \a ID. @@ -27,7 +34,9 @@ */ PPPInterface::PPPInterface(ppp_interface_id ID) { - fFD = open(get_stack_driver_path(), O_RDWR); + // printf("direct constructor\n"); + int family = AF_INET; + fFD = socket(family, SOCK_DGRAM, 0); SetTo(ID); } @@ -36,7 +45,10 @@ PPPInterface::PPPInterface(ppp_interface_id ID) //! Copy constructor. PPPInterface::PPPInterface(const PPPInterface& copy) { - fFD = open(get_stack_driver_path(), O_RDWR); + // printf("Copy constructor\n"); + // fFD = open(get_stack_driver_path(), O_RDWR); + int family = AF_INET; + fFD = socket(family, SOCK_DGRAM, 0); SetTo(copy.ID()); } @@ -45,6 +57,7 @@ PPPInterface::PPPInterface(const PPPInterface& copy) //! Destructor. PPPInterface::~PPPInterface() { + // printf("Destructor\n"); if (fFD >= 0) close(fFD); } @@ -64,6 +77,7 @@ PPPInterface::InitCheck() const { if (fFD < 0) return B_ERROR; + if (fID == PPP_UNDEFINED_INTERFACE_ID) return B_BAD_INDEX; @@ -87,19 +101,29 @@ PPPInterface::InitCheck() const status_t PPPInterface::SetTo(ppp_interface_id ID) { - if (fFD < 0) + // printf("Set To %ld begin=============================\n", ID); + if (fFD < 0) { + printf("No fFD\n"); return B_ERROR; + } + + fID = ID; ppp_interface_info_t info; + // printf("SetTo info:%p\n", &info); if (GetInterfaceInfo(&info)) { fName = info.info.name; fID = ID; + // printf("%s fine: name:%s, fID:%ld\n", __func__, info.info.name, fID); } else { fName = ""; fID = PPP_UNDEFINED_INTERFACE_ID; + // printf("%s fail: name:%s, fID:%ld\n", __func__, "", fID); return B_ERROR; } + // printf("Set To %ld end =============================\n", ID); + return B_OK; } @@ -119,23 +143,32 @@ PPPInterface::SetTo(ppp_interface_id ID) status_t PPPInterface::Control(uint32 op, void *data, size_t length) const { - if (InitCheck() != B_OK) + if (InitCheck() != B_OK) { + printf("%s:InitCheck fail\n", __func__); return InitCheck(); - - ppp_control_info control; + } + + ppp_control_info info; control_net_module_args args; - + + sprintf(args.ifr_name, "%s", "ppp1"); args.name = PPP_INTERFACE_MODULE_NAME; args.op = PPPC_CONTROL_INTERFACE; - args.data = &control; - args.length = sizeof(control); - - control.index = ID(); - control.op = op; - control.data = data; - control.length = length; - - return ioctl(fFD, NET_STACK_CONTROL_NET_MODULE, &args); + args.data = &info; + args.length = sizeof(ppp_control_info); + + info.index = ID(); + info.op = op; + info.data = data; + info.length = length; + + printf("PPPInterface::Control: ppp_control_info %p control_net_module_args %p data %p \n", &info, &args, data); + + status_t status = ioctl(fFD, NET_STACK_CONTROL_NET_MODULE, &args); + if (status != B_OK) + printf("%s:%s: fail\n", __FILE__, __func__); + + return status; } @@ -143,6 +176,7 @@ PPPInterface::Control(uint32 op, void *data, size_t length) const bool PPPInterface::SetUsername(const char *username) const { + printf("PPPInterface::SetUsername\n"); if (InitCheck() != B_OK || !username) return false; @@ -155,6 +189,7 @@ PPPInterface::SetUsername(const char *username) const bool PPPInterface::SetPassword(const char *password) const { + printf("PPPInterface::SetPassword\n"); if (InitCheck() != B_OK || !password) return false; @@ -167,6 +202,7 @@ PPPInterface::SetPassword(const char *password) const bool PPPInterface::SetAskBeforeConnecting(bool askBeforeConnecting) const { + printf("PPPInterface::SetAskBeforeConnecting\n"); if (InitCheck() != B_OK) return false; @@ -188,6 +224,7 @@ PPPInterface::SetAskBeforeConnecting(bool askBeforeConnecting) const status_t PPPInterface::GetSettingsEntry(BEntry *entry) const { + printf("PPPInterface::GetSettingsEntry\n"); if (InitCheck() != B_OK) return InitCheck(); else if (!entry || strlen(Name()) == 0) @@ -205,10 +242,103 @@ PPPInterface::GetSettingsEntry(BEntry *entry) const bool PPPInterface::GetInterfaceInfo(ppp_interface_info_t *info) const { + // printf("%s info at:%p", __func__, info); + if (InitCheck() != B_OK || !info) { + // printf("InitCheck fail %s info at:%p", __func__, info); + return false; + } + + return Control(PPPC_GET_INTERFACE_INFO, info, sizeof(ppp_interface_info_t)) + == B_OK; +} + + +bool +PPPInterface::ControlDevice(ppp_device_info_t *info) const +{ + // printf("%s info at:%p", __func__, info); if (InitCheck() != B_OK || !info) return false; - - return Control(PPPC_GET_INTERFACE_INFO, &info, sizeof(ppp_interface_info_t)) + + ppp_control_info controlInfo; + controlInfo.op = PPPC_GET_DEVICE_INFO; + controlInfo.index = 0; + controlInfo.data = info; + controlInfo.length = sizeof(ppp_device_info_t); + + return Control(PPPC_CONTROL_DEVICE, &controlInfo, sizeof(ppp_control_info)) + == B_OK; +} + + +bool +PPPInterface::ControlOptionHandler(ppp_simple_handler_info_t *info, uint32 handlerindex, uint32 handlerOP) const +{ + // printf("%s info at:%p", __func__, info); + if (InitCheck() != B_OK || !info) + return false; + + ppp_control_info controlInfo; + controlInfo.index = handlerindex; + controlInfo.op = handlerOP; + controlInfo.data = info; + controlInfo.length = sizeof(ppp_simple_handler_info_t); + + return Control(PPPC_CONTROL_OPTION_HANDLER, &controlInfo, sizeof(ppp_control_info)) + == B_OK; +} + + +bool +PPPInterface::ControlChild(void *info, uint32 childindex, uint32 childOP) const +{ + // printf("%s info at:%p", __func__, info); + if (InitCheck() != B_OK || !info) + return false; + + ppp_control_info controlInfo; + controlInfo.index = childindex; + controlInfo.op = childOP; + controlInfo.data = info; + // controlInfo.length = sizeof(ppp_simple_handler_info_t); + + return Control(PPPC_CONTROL_CHILD, &controlInfo, sizeof(ppp_control_info)) + == B_OK; +} + + +bool +PPPInterface::ControlLCPExtension(ppp_simple_handler_info_t *info, uint32 LCPExtensionindex, uint32 LCPExtensionOP) const +{ + // printf("%s info at:%p", __func__, info); + if (InitCheck() != B_OK || !info) + return false; + + ppp_control_info controlInfo; + controlInfo.index = LCPExtensionindex; + controlInfo.op = LCPExtensionOP; + controlInfo.data = info; + controlInfo.length = sizeof(ppp_simple_handler_info_t); + + return Control(PPPC_CONTROL_LCP_EXTENSION, &controlInfo, sizeof(ppp_control_info)) + == B_OK; +} + + +bool +PPPInterface::ControlProtocol(ppp_protocol_info_t *info, uint32 protocolindex, uint32 protocolOP) const +{ + // printf("%s info at:%p", __func__, info); + if (InitCheck() != B_OK || !info) + return false; + + ppp_control_info controlInfo; + controlInfo.index = protocolindex; + controlInfo.op = protocolOP; + controlInfo.data = info; + controlInfo.length = sizeof(ppp_protocol_info_t); + + return Control(PPPC_CONTROL_PROTOCOL, &controlInfo, sizeof(ppp_control_info)) == B_OK; } @@ -222,6 +352,7 @@ PPPInterface::GetInterfaceInfo(ppp_interface_info_t *info) const bool PPPInterface::GetStatistics(ppp_statistics *statistics) const { + printf("PPPInterface::GetStatistics\n"); if (!statistics) return false; @@ -233,6 +364,7 @@ PPPInterface::GetStatistics(ppp_statistics *statistics) const bool PPPInterface::HasSettings(const driver_settings *settings) const { + printf("PPPInterface::HasSettings\n"); if (InitCheck() != B_OK || !settings) return false; @@ -250,9 +382,24 @@ PPPInterface::Up() const { if (InitCheck() != B_OK) return false; - + + BNetworkInterface interface(Name()); + if (!interface.Exists()) + return false; + + int32 currentFlags = interface.Flags(); + currentFlags |= IFF_UP; + + status_t status = interface.SetFlags(currentFlags); + + if (status != B_OK) + return false; + + return true; + int32 id = ID(); control_net_module_args args; + sprintf(args.ifr_name, "%s", "ppp1"); args.name = PPP_INTERFACE_MODULE_NAME; args.op = PPPC_BRING_INTERFACE_UP; args.data = &id; @@ -268,9 +415,24 @@ PPPInterface::Down() const { if (InitCheck() != B_OK) return false; - + + BNetworkInterface interface(Name()); + if (!interface.Exists()) + return false; + + int32 currentFlags = interface.Flags(); + currentFlags &= ~IFF_UP; + + status_t status = interface.SetFlags(currentFlags); + + if (status != B_OK) + return false; + + return true; + int32 id = ID(); control_net_module_args args; + sprintf(args.ifr_name, "%s", "ppp1"); args.name = PPP_INTERFACE_MODULE_NAME; args.op = PPPC_BRING_INTERFACE_DOWN; args.data = &id; @@ -292,6 +454,7 @@ bool PPPInterface::EnableReports(ppp_report_type type, thread_id thread, int32 flags) const { + printf("PPPInterface::EnableReports\n"); ppp_report_request request; request.type = type; request.thread = thread; @@ -311,6 +474,7 @@ PPPInterface::EnableReports(ppp_report_type type, thread_id thread, bool PPPInterface::DisableReports(ppp_report_type type, thread_id thread) const { + printf("PPPInterface::DisableReports\n"); ppp_report_request request; request.type = type; request.thread = thread; diff --git a/src/add-ons/kernel/network/ppp/shared/libppp/PPPManager.cpp b/src/add-ons/kernel/network/ppp/shared/libppp/PPPManager.cpp index 3ca8c5a453..7ccc4c61a7 100644 --- a/src/add-ons/kernel/network/ppp/shared/libppp/PPPManager.cpp +++ b/src/add-ons/kernel/network/ppp/shared/libppp/PPPManager.cpp @@ -20,16 +20,49 @@ #include #include +#include #include #include #include -#include "_libppputils.h" +#include + +#include +#include + +#include +#include +#include +#include +#include + +#include //! Constructor. Does nothing special. PPPManager::PPPManager() { - fFD = open(get_stack_driver_path(), O_RDWR); + // fFD = open(get_stack_driver_path(), O_RDWR); + int family = AF_INET; + + fFD = socket(family, SOCK_DGRAM, 0); + + // FileDescriptorCloser closer(socket); + + // ifaliasreq request; + // strlcpy(request.ifra_name, name, IF_NAMESIZE); + // request.ifra_index = address.Index(); + // request.ifra_flags = address.Flags(); + + // memcpy(&request.ifra_addr, &address.Address().SockAddr(), + // address.Address().Length()); + // memcpy(&request.ifra_mask, &address.Mask().SockAddr(), + // address.Mask().Length()); + // memcpy(&request.ifra_broadaddr, &address.Broadcast().SockAddr(), + // address.Broadcast().Length()); + + // if (ioctl(socket, option, &request, sizeof(struct ifaliasreq)) < 0) + // return errno; + } @@ -133,6 +166,7 @@ PPPManager::Control(uint32 op, void *data, size_t length) const return B_ERROR; control_net_module_args args; + sprintf(args.ifr_name, "%s", "ppp1"); args.name = PPP_INTERFACE_MODULE_NAME; args.op = op; args.data = data; @@ -169,6 +203,7 @@ PPPManager::ControlModule(const char *name, uint32 op, void *data, return B_ERROR; control_net_module_args args; + sprintf(args.ifr_name, "%s", "ppp1"); args.name = name; args.op = op; args.data = data; @@ -207,13 +242,72 @@ PPPManager::CreateInterface(const driver_settings *settings) const ppp_interface_id PPPManager::CreateInterfaceWithName(const char *name) const { - ppp_interface_description_info info; - info.u.name = name; + ppp_interface_id ID = InterfaceWithName(name); + + if (ID != PPP_UNDEFINED_INTERFACE_ID) + return ID; + + BNetworkInterface interface(name); + if (!interface.Exists()) { + // the interface does not exist yet, we have to add it first + BNetworkRoster& roster = BNetworkRoster::Default(); + + status_t status = roster.AddInterface(interface); + if (status != B_OK) { + fprintf(stderr, "PPPManager::CreateInterfaceWithName: Could not add interface: %s\n", + strerror(status)); + return PPP_UNDEFINED_INTERFACE_ID; + } + + return InterfaceWithName(name); + } + + return PPP_UNDEFINED_INTERFACE_ID; + +// ppp_interface_description_info info; +// info.u.name = name; +// +// if (Control(PPPC_CREATE_INTERFACE_WITH_NAME, &info, sizeof(info)) != B_OK) +// return PPP_UNDEFINED_INTERFACE_ID; +// else +// return info.interface; + +} + + +/*! It will remove the complete interface with all + of its addresses. +*/ +bool +delete_interface(const char* name) +{ + BNetworkInterface interface(name); + + // Delete interface + BNetworkRoster& roster = BNetworkRoster::Default(); + + status_t status = roster.RemoveInterface(interface); + if (status != B_OK) { + fprintf(stderr, "delete_interface: Could not delete interface %s\n", + name); + return false; + } + + return true; +} + + +//! Deletes the interface with the given \a name. +bool +PPPManager::DeleteInterface(const char* name) const +{ + ppp_interface_id ID = InterfaceWithName(name); + + if (ID == PPP_UNDEFINED_INTERFACE_ID) + return false; + + return delete_interface(name); - if (Control(PPPC_CREATE_INTERFACE_WITH_NAME, &info, sizeof(info)) != B_OK) - return PPP_UNDEFINED_INTERFACE_ID; - else - return info.interface; } @@ -253,18 +347,22 @@ PPPManager::Interfaces(int32 *count, // loop until we get all interfaces while (true) { requestCount = *count = CountInterfaces(filter); - if (*count == -1) + if (*count <= 0) { + printf("No interface, count, first round:%ld\n", *count); return NULL; + } requestCount += 10; // request some more interfaces in case some are added in the mean time interfaces = new ppp_interface_id[requestCount]; + // printf("interfaces addr: %p\n, requestCount: %ld", interfaces, requestCount); *count = GetInterfaces(interfaces, requestCount, filter); - if (*count == -1) { + if (*count <= 0) { + printf("No interface, count second round:%ld\n", *count); delete interfaces; return NULL; } - + if (*count < requestCount) break; @@ -345,12 +443,17 @@ PPPManager::InterfaceWithName(const char *name) const int32 count; ppp_interface_id *interfaces = Interfaces(&count, PPP_REGISTERED_INTERFACES); - if (!interfaces) + if (!interfaces || count <= 0) { + printf("ERROR: Could not get ppp name:%s\n", name); return PPP_UNDEFINED_INTERFACE_ID; - + } + + // printf("first ID:%ld count:%ld\n", interfaces[0], count); + ppp_interface_id id = PPP_UNDEFINED_INTERFACE_ID; PPPInterface interface; ppp_interface_info_t info; + // printf("internal info is at: %p\n", &info); for (int32 index = 0; index < count; index++) { interface.SetTo(interfaces[index]); @@ -374,11 +477,79 @@ PPPManager::InterfaceWithName(const char *name) const } +//! Returns the number of existing interfaces or a negative value on error. +bool +is_ppp_interface(const char* name) +{ + // size_t length = strlen(name); + // if (length < 8) + // putchar('\t'); + // else + // printf("\n\t"); + + // get link level interface for this interface + + BNetworkInterface interface(name); + BNetworkAddress linkAddress; + status_t status = interface.GetHardwareAddress(linkAddress); + if (status == B_OK) { + // const char *type = "unknown"; + switch (linkAddress.LinkLevelType()) { + case IFT_ETHER: + // type = "Ethernet"; + // printf("%s\n", type); + break; + case IFT_LOOP: + // type = "Local Loopback"; + // printf("%s\n", type); + break; + case IFT_MODEM: + // type = "Modem"; + // printf("%s\n", type); + break; + case IFT_PPP: + // type = "PPP"; + // printf("%s\n", type); + return true; + break; + default: + // printf("%s\n", type); + ; + + } + + } + return false; +} + + +//! Returns the number of ppp interfaces +int32 +count_ppp_interface(void) +{ + int32 count = 0; + + // get a list of all ppp interfaces + BNetworkRoster& roster = BNetworkRoster::Default(); + + BNetworkInterface interface; + uint32 cookie = 0; + + while (roster.GetNextInterface(&cookie, interface) == B_OK) { + if (is_ppp_interface(interface.Name())) + count++; + } + + return count; +} + + //! Returns the number of existing interfaces or a negative value on error. int32 PPPManager::CountInterfaces(ppp_interface_filter filter) const { - return Control(PPPC_COUNT_INTERFACES, &filter, sizeof(filter)); + // return Control(PPPC_COUNT_INTERFACES, &filter, sizeof(filter)); + return count_ppp_interface(); } diff --git a/src/add-ons/kernel/network/ppp/shared/libppp/_libppputils.cpp b/src/add-ons/kernel/network/ppp/shared/libppp/_libppputils.cpp deleted file mode 100644 index b81c10fde2..0000000000 --- a/src/add-ons/kernel/network/ppp/shared/libppp/_libppputils.cpp +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright 2003-2007, Waldemar Kornewald - * Distributed under the terms of the MIT License. - */ - -#include -#include "_libppputils.h" -#include -#include - - -char* -get_stack_driver_path() -{ - char *path; - - // user-defined stack driver path? - path = getenv("NET_STACK_DRIVER_PATH"); - if (path) - return path; - - // use the default stack driver path - return NET_STACK_DRIVER_PATH; -} diff --git a/src/add-ons/kernel/network/ppp/shared/libppp/_libppputils.h b/src/add-ons/kernel/network/ppp/shared/libppp/_libppputils.h deleted file mode 100644 index db72c1aaca..0000000000 --- a/src/add-ons/kernel/network/ppp/shared/libppp/_libppputils.h +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Copyright 2003-2007, Waldemar Kornewald - * Distributed under the terms of the MIT License. - */ - -#ifndef __libppputils__h -#define __libppputils__h - -#include - - -char *get_stack_driver_path(); - - -#endif diff --git a/src/add-ons/kernel/network/ppp/shared/libppp/headers/PPPInterface.h b/src/add-ons/kernel/network/ppp/shared/libppp/headers/PPPInterface.h index 5ab2261dfd..7d2c3c9bb1 100644 --- a/src/add-ons/kernel/network/ppp/shared/libppp/headers/PPPInterface.h +++ b/src/add-ons/kernel/network/ppp/shared/libppp/headers/PPPInterface.h @@ -39,6 +39,12 @@ class PPPInterface { bool GetInterfaceInfo(ppp_interface_info_t *info) const; bool GetStatistics(ppp_statistics *statistics) const; bool HasSettings(const driver_settings *settings) const; + + bool ControlDevice(ppp_device_info_t *info) const; + bool ControlProtocol(ppp_protocol_info_t *info, uint32 protocolindex, uint32 procotolOP) const; + bool ControlOptionHandler(ppp_simple_handler_info_t *info, uint32 handlerindex, uint32 handlerOP) const; + bool ControlLCPExtension(ppp_simple_handler_info_t *info, uint32 LCPExtensionindex, uint32 LCPExtensionOP) const; + bool ControlChild(void *info, uint32 childindex, uint32 childOP) const; bool Up() const; bool Down() const; diff --git a/src/add-ons/kernel/network/ppp/shared/libppp/headers/PPPManager.h b/src/add-ons/kernel/network/ppp/shared/libppp/headers/PPPManager.h index b3ae547202..9cb7664aeb 100644 --- a/src/add-ons/kernel/network/ppp/shared/libppp/headers/PPPManager.h +++ b/src/add-ons/kernel/network/ppp/shared/libppp/headers/PPPManager.h @@ -6,6 +6,7 @@ #ifndef _PPP_MANAGER__H #define _PPP_MANAGER__H +#include #include #include @@ -33,6 +34,7 @@ class PPPManager { ppp_interface_id CreateInterface(const driver_settings *settings) const; ppp_interface_id CreateInterfaceWithName(const char *name) const; bool DeleteInterface(ppp_interface_id ID) const; + bool DeleteInterface(const char* name) const; ppp_interface_id *Interfaces(int32 *count, ppp_interface_filter filter = PPP_REGISTERED_INTERFACES) const; diff --git a/src/add-ons/kernel/network/stack/stack.cpp b/src/add-ons/kernel/network/stack/stack.cpp index 7151ace2ba..d70f0d2677 100644 --- a/src/add-ons/kernel/network/stack/stack.cpp +++ b/src/add-ons/kernel/network/stack/stack.cpp @@ -833,6 +833,9 @@ init_stack() // TODO: for now! register_domain_datalink_protocols(AF_INET, IFT_LOOP, "network/datalink_protocols/loopback_frame/v1", NULL); + // add ppp datalink protocol + register_domain_datalink_protocols(AF_INET, IFT_PPP, + "network/datalink_protocols/ppp_frame/v1", NULL); register_domain_datalink_protocols(AF_INET6, IFT_LOOP, "network/datalink_protocols/loopback_frame/v1", NULL); register_domain_datalink_protocols(AF_INET, IFT_ETHER, diff --git a/src/bin/network/Jamfile b/src/bin/network/Jamfile index ea4fffd975..06e6a79b9d 100644 --- a/src/bin/network/Jamfile +++ b/src/bin/network/Jamfile @@ -10,8 +10,8 @@ SubInclude HAIKU_TOP src bin network ftpd ; SubInclude HAIKU_TOP src bin network ifconfig ; SubInclude HAIKU_TOP src bin network mount_nfs ; SubInclude HAIKU_TOP src bin network netstat ; -#SubInclude HAIKU_TOP src bin network pppconfig ; -#SubInclude HAIKU_TOP src bin network ppp_up ; +SubInclude HAIKU_TOP src bin network pppconfig ; +SubInclude HAIKU_TOP src bin network ppp_up ; SubInclude HAIKU_TOP src bin network ping ; SubInclude HAIKU_TOP src bin network ping6 ; SubInclude HAIKU_TOP src bin network route ; diff --git a/src/bin/network/ppp_up/Jamfile b/src/bin/network/ppp_up/Jamfile index 69a6dc5b34..b028a65185 100644 --- a/src/bin/network/ppp_up/Jamfile +++ b/src/bin/network/ppp_up/Jamfile @@ -1,4 +1,4 @@ -SubDir HAIKU_TOP src bin ppp_up ; +SubDir HAIKU_TOP src bin network ppp_up ; SetSubDirSupportedPlatforms $(HAIKU_BONE_COMPATIBLE_PLATFORMS) ; @@ -8,7 +8,10 @@ if ! $(TARGET_PLATFORM_HAIKU_COMPATIBLE) { # Unfortunately we get more than we want, namely all POSIX headers. } -UsePrivateHeaders net ; +UsePrivateKernelHeaders ; +UsePrivateHeaders net app libroot shared interface libbe be root tracker textencoding + root ; + UseHeaders [ FDirName $(HAIKU_TOP) src add-ons kernel network ppp shared libppp headers ] : true ; UseHeaders [ FDirName $(HAIKU_TOP) src add-ons kernel network ppp shared @@ -24,7 +27,7 @@ BinCommand ppp_up : PPPStatusWindow.cpp PPPUpApplication.cpp : - libppp.a be + libppp.a be $(TARGET_LIBSUPC++) translation $(HAIKU_LOCALE_LIBS) root $(TARGET_NETWORK_LIBS) ; # Installation diff --git a/src/bin/network/ppp_up/PPPStatusView.h b/src/bin/network/ppp_up/PPPStatusView.h index 8463f5c244..f103724b81 100644 --- a/src/bin/network/ppp_up/PPPStatusView.h +++ b/src/bin/network/ppp_up/PPPStatusView.h @@ -6,8 +6,9 @@ #ifndef STATUS_VIEW__H #define STATUS_VIEW__H -#include +#include #include +#include class PPPStatusView : public BView { diff --git a/src/bin/network/pppconfig/Jamfile b/src/bin/network/pppconfig/Jamfile index e51f5d0041..b0dec8cde0 100644 --- a/src/bin/network/pppconfig/Jamfile +++ b/src/bin/network/pppconfig/Jamfile @@ -1,4 +1,4 @@ -SubDir HAIKU_TOP src bin pppconfig ; +SubDir HAIKU_TOP src bin network pppconfig ; SetSubDirSupportedPlatforms $(HAIKU_BONE_COMPATIBLE_PLATFORMS) ; @@ -8,6 +8,7 @@ if ! $(TARGET_PLATFORM_HAIKU_COMPATIBLE) { # Unfortunately we get more than we want, namely all POSIX headers. } +UsePrivateKernelHeaders ; UsePrivateHeaders net ; UseHeaders [ FDirName $(HAIKU_TOP) src add-ons kernel network ppp shared libppp headers ] : true ; @@ -17,7 +18,7 @@ UseHeaders [ FDirName $(HAIKU_TOP) src add-ons kernel network ppp shared BinCommand pppconfig : pppconfig.cpp : - be libppp.a + be libppp.a $(TARGET_LIBSUPC++) $(TARGET_NETWORK_LIBS) ; # Installation -- in the test directory for the time being diff --git a/src/bin/network/pppconfig/pppconfig.cpp b/src/bin/network/pppconfig/pppconfig.cpp index db35b97a05..1df352561d 100644 --- a/src/bin/network/pppconfig/pppconfig.cpp +++ b/src/bin/network/pppconfig/pppconfig.cpp @@ -40,33 +40,35 @@ status_t show(ppp_interface_filter filter = PPP_REGISTERED_INTERFACES) { PPPManager manager; - if(manager.InitCheck() != B_OK) { + if (manager.InitCheck() != B_OK) { fprintf(stderr, "Error: Could not load interface manager!\n"); return -1; } - int32 count; + int32 count = 0; ppp_interface_id *interfaces = manager.Interfaces(&count, filter); - if(!interfaces) { + if (!interfaces || count <= 0) { fprintf(stderr, "Error: Could not get interfaces information!\n"); return -1; } - + + fprintf(stderr, "Get %ld ppp interfaces, first is %ld!\n", count, interfaces[0]); + ppp_interface_info_t info; PPPInterface interface; printf("Listing PPP interfaces:\n"); // print out information for each interface - for(int32 index = 0; index < count; index++) { + for (int32 index = 0; index < count; index++) { interface.SetTo(interfaces[index]); - if(interface.InitCheck() == B_OK) { + if (interface.InitCheck() == B_OK) { interface.GetInterfaceInfo(&info); printf("\n"); // type and unit (if it has one) - if(info.info.if_unit >= 0) { + if (info.info.if_unit >= 0) { printf("Type: Visible\n"); printf("\tInterface: ppp%ld\n", info.info.if_unit); } else @@ -79,9 +81,9 @@ show(ppp_interface_filter filter = PPP_REGISTERED_INTERFACES) // mode printf("\tMode: "); - if(info.info.mode == PPP_CLIENT_MODE) + if (info.info.mode == PPP_CLIENT_MODE) printf("Client\n"); - else if(info.info.mode == PPP_SERVER_MODE) + else if (info.info.mode == PPP_SERVER_MODE) printf("Server\n"); else printf("Unknown\n"); @@ -118,13 +120,13 @@ status_t create(const char *name, bool bringUp = true) { PPPManager manager; - if(manager.InitCheck() != B_OK) { + if (manager.InitCheck() != B_OK) { fprintf(stderr, "Error: Could not load interface manager!\n"); return -1; } PPPInterface interface(manager.CreateInterfaceWithName(name)); - if(interface.InitCheck() != B_OK) { + if (interface.InitCheck() != B_OK) { fprintf(stderr, "Error: Could not create interface: %s!\n", name); return -1; } @@ -134,13 +136,13 @@ create(const char *name, bool bringUp = true) ppp_interface_info_t info; interface.GetInterfaceInfo(&info); - if(info.info.if_unit >= 0) + if (info.info.if_unit >= 0) printf("Interface: ppp%ld\n", info.info.if_unit); else printf("This interface is hidden! You can delete it by typing:\n" "pppconfig delete %ld\n", interface.ID()); - if(bringUp) { + if (bringUp) { interface.Up(); printf("Connecting in background...\n"); } @@ -153,22 +155,22 @@ static status_t connect(const char *name) { - if(!name || strlen(name) == 0) + if (!name || strlen(name) == 0) return -1; PPPManager manager; - if(manager.InitCheck() != B_OK) { + if (manager.InitCheck() != B_OK) { fprintf(stderr, "Error: Could not load interface manager!\n"); return -1; } PPPInterface interface(manager.InterfaceWithName(name)); - if(interface.InitCheck() != B_OK) { + if (interface.InitCheck() != B_OK) { fprintf(stderr, "Error: Could not find interface: %s!\n", name); return -1; } - if(!interface.Up()) { + if (!interface.Up()) { fprintf(stderr, "Error: Could not connect!\n"); return -1; } @@ -181,24 +183,435 @@ connect(const char *name) static status_t -disconnect(const char *name) +setuser(const char *name, const char* user) { - if(!name || strlen(name) == 0) + if (!name || strlen(name) == 0) return -1; + if (!user || strlen(user) == 0) + return -1; + PPPManager manager; - if(manager.InitCheck() != B_OK) { + if (manager.InitCheck() != B_OK) { fprintf(stderr, "Error: Could not load interface manager!\n"); return -1; } PPPInterface interface(manager.InterfaceWithName(name)); - if(interface.InitCheck() != B_OK) { + if (interface.InitCheck() != B_OK) { fprintf(stderr, "Error: Could not find interface: %s!\n", name); return -1; } - if(!interface.Down()) { + if (!interface.SetUsername(user)) { + fprintf(stderr, "Error: Could not SetUsername %s!\n", user); + return -1; + } + + return 0; +} + + +static +status_t +setpass(const char *name, const char* pass) +{ + if (!name || strlen(name) == 0) + return -1; + + if (!pass || strlen(pass) == 0) + return -1; + + PPPManager manager; + if (manager.InitCheck() != B_OK) { + fprintf(stderr, "Error: Could not load interface manager!\n"); + return -1; + } + + PPPInterface interface(manager.InterfaceWithName(name)); + if (interface.InitCheck() != B_OK) { + fprintf(stderr, "Error: Could not find interface: %s!\n", name); + return -1; + } + + if (!interface.SetPassword(pass)) { + fprintf(stderr, "Error: Could not SetUsername %s!\n", pass); + return -1; + } + + return 0; +} + + +static +status_t +setaskbeforeconnect(const char *name, const char* connect) +{ + if (!name || strlen(name) == 0) + return -1; + + bool askBeforeConnecting = false; + if (connect || !strcmp(connect, "true") || !strcmp(connect, "ask") || + !strcmp(connect, "yes") || !strcmp(connect, "y")) + askBeforeConnecting = true; + + + PPPManager manager; + if (manager.InitCheck() != B_OK) { + fprintf(stderr, "Error: Could not load interface manager!\n"); + return -1; + } + + PPPInterface interface(manager.InterfaceWithName(name)); + if (interface.InitCheck() != B_OK) { + fprintf(stderr, "Error: Could not find interface: %s!\n", name); + return -1; + } + + if (!interface.SetAskBeforeConnecting(askBeforeConnecting)) { + fprintf(stderr, "Error: Could not connect %s!\n", connect); + return -1; + } + + return 0; +} + + +static +status_t +getstatistics(const char *name) +{ + if (!name || strlen(name) == 0) + return -1; + + PPPManager manager; + if (manager.InitCheck() != B_OK) { + fprintf(stderr, "Error: Could not load interface manager!\n"); + return -1; + } + + PPPInterface interface(manager.InterfaceWithName(name)); + if (interface.InitCheck() != B_OK) { + fprintf(stderr, "Error: Could not find interface: %s!\n", name); + return -1; + } + + ppp_statistics pppStatistics; + if (interface.GetStatistics(&pppStatistics) != B_OK) { + fprintf(stderr, "Error: Could not getstatistics: %s!\n", name); + return -1; + } + + return 0; +} + + +static +status_t +hassettings(const char *name) +{ + if (!name || strlen(name) == 0) + return -1; + + PPPManager manager; + if (manager.InitCheck() != B_OK) { + fprintf(stderr, "Error: Could not load interface manager!\n"); + return -1; + } + + PPPInterface interface(manager.InterfaceWithName(name)); + if (interface.InitCheck() != B_OK) { + fprintf(stderr, "Error: Could not find interface: %s!\n", name); + return -1; + } + + driver_settings settings; + if (interface.HasSettings(&settings) != B_OK) { + fprintf(stderr, "Error: Could not getstatistics: %s!\n", name); + return -1; + } + + return 0; +} + + +static +status_t +enablereports(const char *name) +{ + if (!name || strlen(name) == 0) + return -1; + + PPPManager manager; + if (manager.InitCheck() != B_OK) { + fprintf(stderr, "Error: Could not load interface manager!\n"); + return -1; + } + + PPPInterface interface(manager.InterfaceWithName(name)); + if (interface.InitCheck() != B_OK) { + fprintf(stderr, "Error: Could not find interface: %s!\n", name); + return -1; + } + + ppp_report_type type = PPP_ALL_REPORTS; + thread_id thread = 0; + int32 flags = 0; + + if (interface.EnableReports(type, thread, flags) != true) { + fprintf(stderr, "Error: Could not EnableReports: %s!\n", name); + return -1; + } + + return 0; +} + + +static +status_t +disablereports(const char *name) +{ + if (!name || strlen(name) == 0) + return -1; + + PPPManager manager; + if (manager.InitCheck() != B_OK) { + fprintf(stderr, "Error: Could not load interface manager!\n"); + return -1; + } + + PPPInterface interface(manager.InterfaceWithName(name)); + if (interface.InitCheck() != B_OK) { + fprintf(stderr, "Error: Could not find interface: %s!\n", name); + return -1; + } + + ppp_report_type type = PPP_ALL_REPORTS; + thread_id thread = 0; + + if (interface.DisableReports(type, thread) != true) { + fprintf(stderr, "Error: Could not EnableReports: %s!\n", name); + return -1; + } + + return 0; +} + + +static +status_t +controlchild(const char *name) +{ + if (!name || strlen(name) == 0) + return -1; + + PPPManager manager; + if (manager.InitCheck() != B_OK) { + fprintf(stderr, "Error: Could not load interface manager!\n"); + return -1; + } + + PPPInterface interface(manager.InterfaceWithName(name)); + if (interface.InitCheck() != B_OK) { + fprintf(stderr, "Error: Could not find interface: %s!\n", name); + return -1; + } + + ppp_simple_handler_info_t info; + + if (interface.ControlChild(&info, 0, PPPC_GET_SIMPLE_HANDLER_INFO) != true) { + fprintf(stderr, "Error: Could not PPPC_GET_SIMPLE_HANDLER_INFO: %s!\n", name); + return -1; + } + + printf("LCPExtensionHandler: %s\n", info.info.name); + printf("isEnabled: %d\n", info.info.isEnabled); + + if (interface.ControlChild(&info, 0, PPPC_ENABLE) != true) { + fprintf(stderr, "Error: Could not PPPC_ENABLE: %s!\n", name); + return -1; + } + return 0; +} + + +static +status_t +controllcpextension(const char *name) +{ + if (!name || strlen(name) == 0) + return -1; + + PPPManager manager; + if (manager.InitCheck() != B_OK) { + fprintf(stderr, "Error: Could not load interface manager!\n"); + return -1; + } + + PPPInterface interface(manager.InterfaceWithName(name)); + if (interface.InitCheck() != B_OK) { + fprintf(stderr, "Error: Could not find interface: %s!\n", name); + return -1; + } + + ppp_simple_handler_info_t info; + + if (interface.ControlLCPExtension(&info, 1, PPPC_GET_SIMPLE_HANDLER_INFO) != true) { + fprintf(stderr, "Error: Could not PPPC_GET_SIMPLE_HANDLER_INFO: %s!\n", name); + return -1; + } + + printf("LCPExtensionHandler: %s\n", info.info.name); + printf("isEnabled: %d\n", info.info.isEnabled); + + if (interface.ControlLCPExtension(&info, 1, PPPC_ENABLE) != true) { + fprintf(stderr, "Error: Could not PPPC_ENABLE: %s!\n", name); + return -1; + } + return 0; +} + + +static +status_t +controloptionhandler(const char *name) +{ + if (!name || strlen(name) == 0) + return -1; + + PPPManager manager; + if (manager.InitCheck() != B_OK) { + fprintf(stderr, "Error: Could not load interface manager!\n"); + return -1; + } + + PPPInterface interface(manager.InterfaceWithName(name)); + if (interface.InitCheck() != B_OK) { + fprintf(stderr, "Error: Could not find interface: %s!\n", name); + return -1; + } + + ppp_simple_handler_info_t info; + + if (interface.ControlOptionHandler(&info, 0, PPPC_GET_SIMPLE_HANDLER_INFO) != true) { + fprintf(stderr, "Error: Could not PPPC_GET_SIMPLE_HANDLER_INFO: %s!\n", name); + return -1; + } + + printf("protocol: %s\n", info.info.name); + printf("isEnabled: %d\n", info.info.isEnabled); + + if (interface.ControlOptionHandler(&info, 0, PPPC_ENABLE) != true) { + fprintf(stderr, "Error: Could not PPPC_ENABLE: %s!\n", name); + return -1; + } + return 0; +} + + +static +status_t +controlprotocol(const char *name) +{ + if (!name || strlen(name) == 0) + return -1; + + PPPManager manager; + if (manager.InitCheck() != B_OK) { + fprintf(stderr, "Error: Could not load interface manager!\n"); + return -1; + } + + PPPInterface interface(manager.InterfaceWithName(name)); + if (interface.InitCheck() != B_OK) { + fprintf(stderr, "Error: Could not find interface: %s!\n", name); + return -1; + } + + ppp_protocol_info_t info; + + if (interface.ControlProtocol(&info, 0, PPPC_GET_PROTOCOL_INFO) != true) { + fprintf(stderr, "Error: Could not PPPC_GET_PROTOCOL_INFO: %s!\n", name); + return -1; + } + + printf("protocol: %s\n", info.info.name); + printf("type: %s\n", info.info.type); + printf("activationPhase: %d\n", info.info.activationPhase); + printf("addressFamily: %ld\n", info.info.addressFamily); + printf("flags: %ld\n", info.info.flags); + printf("side: %d\n", info.info.side); + printf("level: %d\n", info.info.level); + printf("connectionPhase: %d\n", info.info.connectionPhase); + printf("protocolNumber: %d\n", info.info.protocolNumber); + printf("isEnabled: %d\n", info.info.isEnabled); + printf("isUpRequested: %d\n", info.info.isUpRequested); + + if (interface.ControlProtocol(&info, 0, PPPC_ENABLE) != true) { + fprintf(stderr, "Error: Could not PPPC_ENABLE: %s!\n", name); + return -1; + } + return 0; +} + + +static +status_t +controldevice(const char *name) +{ + if (!name || strlen(name) == 0) + return -1; + + PPPManager manager; + if (manager.InitCheck() != B_OK) { + fprintf(stderr, "Error: Could not load interface manager!\n"); + return -1; + } + + PPPInterface interface(manager.InterfaceWithName(name)); + if (interface.InitCheck() != B_OK) { + fprintf(stderr, "Error: Could not find interface: %s!\n", name); + return -1; + } + + ppp_device_info_t info; + + if (interface.ControlDevice(&info) != true) { + fprintf(stderr, "Error: Could not ControlDevice: %s!\n", name); + return -1; + } + + printf("name: %s\n", info.info.name); + printf("MTU: %ld\n", info.info.MTU); + printf("inputTransferRate: %ld\n", info.info.inputTransferRate); + printf("outputTransferRate: %ld\n", info.info.outputTransferRate); + printf("outputBytesCount: %ld\n", info.info.outputBytesCount); + printf("isUp: %d\n", info.info.isUp); + + return 0; +} + + +static +status_t +disconnect(const char *name) +{ + if (!name || strlen(name) == 0) + return -1; + + PPPManager manager; + if (manager.InitCheck() != B_OK) { + fprintf(stderr, "Error: Could not load interface manager!\n"); + return -1; + } + + PPPInterface interface(manager.InterfaceWithName(name)); + if (interface.InitCheck() != B_OK) { + fprintf(stderr, "Error: Could not find interface: %s!\n", name); + return -1; + } + + if (!interface.Down()) { fprintf(stderr, "Error: Could not disconnect!\n"); return -1; } @@ -211,16 +624,16 @@ static status_t delete_interface(const char *name) { - if(!name || strlen(name) == 0) + if (!name || strlen(name) == 0) return -1; PPPManager manager; - if(manager.InitCheck() != B_OK) { + if (manager.InitCheck() != B_OK) { fprintf(stderr, "Error: Could not load interface manager!\n"); return -1; } - if(!manager.DeleteInterface(manager.InterfaceWithName(name))) { + if (!manager.DeleteInterface(name)) { fprintf(stderr, "Error: Could not delete interface!\n"); return -1; } @@ -233,26 +646,33 @@ static status_t show_details(const char *name) { - if(!name || strlen(name) == 0) + if (!name || strlen(name) == 0) return -1; PPPManager manager; - if(manager.InitCheck() != B_OK) { + if (manager.InitCheck() != B_OK) { fprintf(stderr, "Error: Could not load interface manager!\n"); return -1; } - PPPInterface interface(manager.InterfaceWithName(name)); - if(interface.InitCheck() != B_OK) { + ppp_interface_id ID = manager.InterfaceWithName(name); + if (ID <= 0) { fprintf(stderr, "Error: Could not find interface: %s!\n", name); return -1; } + + PPPInterface interface(ID); + if (interface.InitCheck() != B_OK) { + fprintf(stderr, "Error: Could not find interface ID: %ld!\n", ID); + return -1; + } ppp_interface_info_t info; + // printf("ppp_interface_info_t addr:%p\n", &info); interface.GetInterfaceInfo(&info); // type and name (if it has one) - if(info.info.if_unit >= 0) { + if (info.info.if_unit >= 0) { printf("Type: Visible\n"); printf("Interface: ppp%ld\n", info.info.if_unit); } else @@ -277,9 +697,9 @@ show_details(const char *name) // mode printf("Mode: "); - if(info.info.mode == PPP_CLIENT_MODE) + if (info.info.mode == PPP_CLIENT_MODE) printf("Client\n"); - else if(info.info.mode == PPP_SERVER_MODE) + else if (info.info.mode == PPP_SERVER_MODE) printf("Server\n"); else printf("Unknown\n"); @@ -310,24 +730,51 @@ show_details(const char *name) int main(int argc, char *argv[]) { - if(argc == 2) { - if(!strcmp(argv[1], "show") || !strcmp(argv[1], "-a")) + if (argc == 2) { + if (!strcmp(argv[1], "show") || !strcmp(argv[1], "-a")) return show(PPP_ALL_INTERFACES); else return print_help(); - }if(argc == 3) { - if(!strcmp(argv[1], "init")) + }if (argc == 3) { + if (!strcmp(argv[1], "init")) return create(argv[2], false); - else if(!strcmp(argv[1], "create")) + else if (!strcmp(argv[1], "create")) return create(argv[2], true); - else if(!strcmp(argv[1], "connect")) + else if (!strcmp(argv[1], "connect")) return connect(argv[2]); - else if(!strcmp(argv[1], "disconnect")) + else if (!strcmp(argv[1], "disconnect")) return disconnect(argv[2]); - else if(!strcmp(argv[1], "delete")) + else if (!strcmp(argv[1], "delete")) return delete_interface(argv[2]); - else if(!strcmp(argv[1], "details")) + else if (!strcmp(argv[1], "details")) return show_details(argv[2]); + else if (!strcmp(argv[1], "getstatistics")) + return getstatistics(argv[2]); + else if (!strcmp(argv[1], "hassettings")) + return hassettings(argv[2]); + else if (!strcmp(argv[1], "enablereports")) + return enablereports(argv[2]); + else if (!strcmp(argv[1], "disablereports")) + return disablereports(argv[2]); + else if (!strcmp(argv[1], "controldevice")) + return controldevice(argv[2]); + else if (!strcmp(argv[1], "controlprotocol")) + return controlprotocol(argv[2]); + else if (!strcmp(argv[1], "controloptionhandler")) + return controloptionhandler(argv[2]); + else if (!strcmp(argv[1], "controllcpextension")) + return controllcpextension(argv[2]); + else if (!strcmp(argv[1], "controlchild")) + return controlchild(argv[2]); + else + return print_help(); + } if (argc == 4) { + if (!strcmp(argv[1], "setuser")) + return setuser(argv[2], argv[3]); + else if (!strcmp(argv[1], "setpass")) + return setpass(argv[2], argv[3]); + else if (!strcmp(argv[1], "setaskbeforeconnect")) + return setaskbeforeconnect(argv[2], argv[3]); else return print_help(); } else From 4dfbf1d04c9a1a1fa39c44e7151824d23bfefdeb Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Sat, 2 Jan 2016 12:28:00 -0500 Subject: [PATCH 044/242] network/stack: #if 0 out ppp_frame datalink protocol. Forgot to do this in previous push. --- src/add-ons/kernel/network/stack/stack.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/add-ons/kernel/network/stack/stack.cpp b/src/add-ons/kernel/network/stack/stack.cpp index d70f0d2677..0e7a22c28d 100644 --- a/src/add-ons/kernel/network/stack/stack.cpp +++ b/src/add-ons/kernel/network/stack/stack.cpp @@ -833,9 +833,10 @@ init_stack() // TODO: for now! register_domain_datalink_protocols(AF_INET, IFT_LOOP, "network/datalink_protocols/loopback_frame/v1", NULL); - // add ppp datalink protocol +#if 0 // PPP is not (currently) included in the build register_domain_datalink_protocols(AF_INET, IFT_PPP, "network/datalink_protocols/ppp_frame/v1", NULL); +#endif register_domain_datalink_protocols(AF_INET6, IFT_LOOP, "network/datalink_protocols/loopback_frame/v1", NULL); register_domain_datalink_protocols(AF_INET, IFT_ETHER, From 6f5c753d125c244757b096570d36f4ca5319dc87 Mon Sep 17 00:00:00 2001 From: Dario Casalinuovo Date: Sat, 2 Jan 2016 19:21:37 +0100 Subject: [PATCH 045/242] MediaPlayer: Show tip with current time when seeking. * Rework of the patch from dburkart, Thanks! * Fixes #8567. --- .../interface/TransportControlGroup.cpp | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/apps/mediaplayer/interface/TransportControlGroup.cpp b/src/apps/mediaplayer/interface/TransportControlGroup.cpp index 1aa4c60324..3a4c06c8d7 100644 --- a/src/apps/mediaplayer/interface/TransportControlGroup.cpp +++ b/src/apps/mediaplayer/interface/TransportControlGroup.cpp @@ -17,6 +17,8 @@ #include #include #include +#include +#include #include "DurationView.h" #include "PeakView.h" @@ -37,6 +39,7 @@ enum { MSG_SKIP_FORWARD = 'skpf', MSG_SET_VOLUME = 'stvl', MSG_SET_MUTE = 'stmt', + MSG_DURATION_TOOLTIP = 'msdt' }; // the range of the volume sliders (in dB) @@ -272,6 +275,15 @@ TransportControlGroup::MessageReceived(BMessage* message) _UpdatePosition(); break; + case MSG_DURATION_TOOLTIP: + { + BToolTipManager* manager = BToolTipManager::Manager(); + BPoint tipPoint; + GetMouse(&tipPoint, NULL, false); + manager->ShowTip(fPositionToolTip, tipPoint, this); + break; + } + default: BView::MessageReceived(message); break; @@ -624,6 +636,9 @@ void TransportControlGroup::_UpdatePosition() { PositionChanged(fSeekSlider->Value() / (float)kPositionFactor); + + BMessage msg(MSG_DURATION_TOOLTIP); + Window()->PostMessage(&msg, this); } @@ -845,4 +860,3 @@ TransportControlGroup::_CreateSpeakerShape(float height) const return shape; } - From e532264bcbd58884ae3686004eeeaeab53ebf2f8 Mon Sep 17 00:00:00 2001 From: Julian Harnath Date: Sun, 3 Jan 2016 16:18:31 +0100 Subject: [PATCH 046/242] app_server: attach correct rendering buffer to cloned mask * When cloning a cached mask, we have to attach the AGG rendering buffer of the new instance to the AGG clipped mask object. Before, it was using the buffer description from the clone source.. which can later disappear at any time. * Fixes bug #12478 --- src/servers/app/drawing/AlphaMask.cpp | 2 ++ src/servers/app/drawing/Painter/agg_clipped_alpha_mask.h | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/src/servers/app/drawing/AlphaMask.cpp b/src/servers/app/drawing/AlphaMask.cpp index 9ed68dc6e0..d9c94dc557 100644 --- a/src/servers/app/drawing/AlphaMask.cpp +++ b/src/servers/app/drawing/AlphaMask.cpp @@ -67,6 +67,8 @@ AlphaMask::AlphaMask(AlphaMask* previousMask, AlphaMask* other) fMask(other->fMask), fScanline(fMask) { + fMask.attach(fBuffer); + if (previousMask != NULL) atomic_add(&previousMask->fNextMaskCount, 1); fBits->AcquireReference(); diff --git a/src/servers/app/drawing/Painter/agg_clipped_alpha_mask.h b/src/servers/app/drawing/Painter/agg_clipped_alpha_mask.h index 08e34a251c..570807bc27 100644 --- a/src/servers/app/drawing/Painter/agg_clipped_alpha_mask.h +++ b/src/servers/app/drawing/Painter/agg_clipped_alpha_mask.h @@ -34,6 +34,11 @@ namespace agg clipped_alpha_mask(rendering_buffer& rbuf) : m_xOffset(0), m_yOffset(0), m_rbuf(&rbuf), m_outside(0) {} + void attach(rendering_buffer& rbuf) + { + m_rbuf = &rbuf; + } + void attach(rendering_buffer& rbuf, int x, int y, int8u outside) { m_rbuf = &rbuf; From 85e034e479fdb4215a629ba4b00b15586bab95be Mon Sep 17 00:00:00 2001 From: Julian Harnath Date: Sun, 3 Jan 2016 16:22:34 +0100 Subject: [PATCH 047/242] app_server: lock previous alpha mask when generating mask * Also, regenerate masks from bottom to top to make sure all of the lower mask is generated before masks higher in the stack are rendered. --- src/servers/app/drawing/AlphaMask.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/servers/app/drawing/AlphaMask.cpp b/src/servers/app/drawing/AlphaMask.cpp index d9c94dc557..4393444ee3 100644 --- a/src/servers/app/drawing/AlphaMask.cpp +++ b/src/servers/app/drawing/AlphaMask.cpp @@ -118,6 +118,9 @@ AlphaMask::SetCanvasGeometry(IntPoint origin, IntRect bounds) IntRect oldBounds = fCanvasBounds; fCanvasBounds = IntRect(0, 0, bounds.Width(), bounds.Height()); + if (fPreviousMask != NULL) + fPreviousMask->SetCanvasGeometry(origin, bounds); + if (fClippedToCanvas && (fCanvasBounds.Width() > oldBounds.Width() || fCanvasBounds.Height() > oldBounds.Height())) { // The canvas is now larger than before and we previously @@ -129,9 +132,6 @@ AlphaMask::SetCanvasGeometry(IntPoint origin, IntRect bounds) _AttachMaskToBuffer(); - if (fPreviousMask != NULL) - fPreviousMask->SetCanvasGeometry(origin, bounds); - return oldOrigin; } @@ -166,6 +166,9 @@ void AlphaMask::_Generate() { AutoLocker locker(fLock); + AutoLocker previousLocker; + if (fPreviousMask != NULL) + previousLocker.SetTo(fPreviousMask->fLock, false); ServerBitmap* const bitmap = _RenderSource(fCanvasBounds); BReference bitmapRef(bitmap, true); From 59405aa6be68e99a71c7d85c9df6a0142afaec43 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Revol?= Date: Sat, 2 Jan 2016 12:02:07 +0100 Subject: [PATCH 048/242] App_FLUID: Set MinLOD of reflexes back to 0 It makes the icon look less flat in 16x16. --- data/artwork/icons/App_FLUID | Bin 21425 -> 21425 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/data/artwork/icons/App_FLUID b/data/artwork/icons/App_FLUID index 7c250f2b6213d3c8767d7d3b08b58d7be12a30ae..7a2a58f7357cc814cd174c5083627c7cbdb40f09 100644 GIT binary patch delta 18 acmdnEoN?oF#tl{hljr+MZw?KJVFmz9d Date: Sun, 3 Jan 2016 11:58:43 +0000 Subject: [PATCH 049/242] BSnow: Remove from tree. Signed-off-by: Augustin Cavalier It now lives at HaikuArchives. --- src/apps/Jamfile | 1 - src/apps/bsnow/BSnow.rdef | 49 --- src/apps/bsnow/Flakes.cpp | 40 --- src/apps/bsnow/Flakes.h | 12 - src/apps/bsnow/Jamfile | 18 - src/apps/bsnow/README.html | 38 --- src/apps/bsnow/SnowApp.cpp | 27 -- src/apps/bsnow/SnowView.cpp | 636 ------------------------------------ src/apps/bsnow/SnowView.h | 83 ----- 9 files changed, 904 deletions(-) delete mode 100644 src/apps/bsnow/BSnow.rdef delete mode 100644 src/apps/bsnow/Flakes.cpp delete mode 100644 src/apps/bsnow/Flakes.h delete mode 100644 src/apps/bsnow/Jamfile delete mode 100644 src/apps/bsnow/README.html delete mode 100644 src/apps/bsnow/SnowApp.cpp delete mode 100644 src/apps/bsnow/SnowView.cpp delete mode 100644 src/apps/bsnow/SnowView.h diff --git a/src/apps/Jamfile b/src/apps/Jamfile index b643ddd705..e9366de5f7 100644 --- a/src/apps/Jamfile +++ b/src/apps/Jamfile @@ -4,7 +4,6 @@ HaikuSubInclude 3dmov ; HaikuSubInclude aboutsystem ; HaikuSubInclude activitymonitor ; HaikuSubInclude autoraise ; -HaikuSubInclude bsnow ; HaikuSubInclude bootmanager ; HaikuSubInclude charactermap ; HaikuSubInclude clock ; diff --git a/src/apps/bsnow/BSnow.rdef b/src/apps/bsnow/BSnow.rdef deleted file mode 100644 index bcac9ab7bf..0000000000 --- a/src/apps/bsnow/BSnow.rdef +++ /dev/null @@ -1,49 +0,0 @@ - -resource app_signature "application/x-vnd.mmu_man.BSnow"; - -resource app_name_catalog_entry "x-vnd.mmu_man.BSnow:System name:BSnow"; - -resource app_flags B_SINGLE_LAUNCH; - -resource app_version { - major = 1, - middle = 0, - minor = 0, - - variety = B_APPV_DEVELOPMENT, - internal = 0, - - short_info = "BSnow", - long_info = "BSnow ©2007-2009 Haiku" -}; - -resource vector_icon { - $"6E6369660A010100007503010000020106023D80000000000000003D80004900" - $"004A1000AAFFFFFFFF95BCDD020106023D00000000000000003D000048E00049" - $"2000AAFFFFFFFF95BCDD020106023C40000000000000003C4000492000474000" - $"AAFFFFFFFF95BCDD0387AFD1020106033772203457DEB6B0FC39F52B48F3ED48" - $"7E9B00FFDE069BFFAA00FFF67D06020106043D00000000000000003D000048C0" - $"0048C0005DFF000080C00505AAFF0000FFC00505020116023B00000000000000" - $"003B00004A2000450000005CFF00020106023A40000000000000003A40004480" - $"00448000AAFFFFFFFF95BCDD0C02043E36BA7D36C36A36524A52BF4552C8323E" - $"5EC36A5EBA7D5E2A4A2AC8322ABF4502043E30BB6230C285304E404EBC2E4EC3" - $"513E50C28550BB62502E402EC3512EBC2E02043E26BC4626C1A1264A324AB77E" - $"4ABCD93E3EC1A13EBC463E323232BCD932B77E02033C363C363C3438343A3238" - $"34343A3836383A020244364634423840343E3642320609BABB0349415346524E" - $"5149534856485C4D59495A49C967C2D85D475847594556464B3F4B3F493F060D" - $"F6EFFA023A41423646374436463747374738453A443A443A473B4B3B4B3E4B40" - $"4C404840483C463C423E40483A473D403E3337373C343A393F02024228442840" - $"28482C482E482A06041E3C3E4A3C44405038343C06042E3E50504A4C5054444E" - $"3E3E06042E3E5E5B585162654E524C3E02042822B4D922B786222E282EB4D92E" - $"B786282EB7862EB4D92E222822B78622B4D9160A00010A1001158200040A0101" - $"001001178400040A020100000A01010502BFFFFB30DC88B0DC88BFFFFB4C0172" - $"4B6C250A030109000A010101123FAC9D3D297FBCEE693F67F547B66BC686A701" - $"178400040A030101000A040108000A010104023FD07C3C6897BC68973FD07CC4" - $"8CCB45DE750A010104023FEC8F3B1A4DBB1A4D3FEC8FC5A41F4467140A070106" - $"000A010102123FBBBE3CDF30BC9B533F6386460747C668CA01178400040A0401" - $"02000A05010302C000000000000000004000004B40000000000A060103000A01" - $"0104023FDB50BC1F483C1F483FDB50C52D234631630A010104023C62D23EDA76" - $"BECEB13CF6DB49653CC7C4CB0A010105000A010107301E1E01178C00040A0801" - $"07301E1E01158800040A01010B1001178400040A09010B00" -}; - diff --git a/src/apps/bsnow/Flakes.cpp b/src/apps/bsnow/Flakes.cpp deleted file mode 100644 index c9eeb79fdd..0000000000 --- a/src/apps/bsnow/Flakes.cpp +++ /dev/null @@ -1,40 +0,0 @@ -#include "Flakes.h" - -#define TRAN 0xFF -#define WHIT 0x3F - -const uchar gFlakeBits[NUM_PATTERNS][64] = { -{ -TRAN, TRAN, TRAN, TRAN, TRAN, TRAN, TRAN, TRAN, -TRAN, TRAN, WHIT, TRAN, WHIT, TRAN, TRAN, TRAN, -TRAN, TRAN, TRAN, WHIT, TRAN, TRAN, TRAN, TRAN, -TRAN, TRAN, WHIT, TRAN, WHIT, TRAN, TRAN, TRAN, -TRAN, TRAN, TRAN, TRAN, TRAN, TRAN, TRAN, TRAN, -TRAN, TRAN, TRAN, TRAN, TRAN, TRAN, TRAN, TRAN, -TRAN, TRAN, TRAN, TRAN, TRAN, TRAN, TRAN, TRAN, -TRAN, TRAN, TRAN, TRAN, TRAN, TRAN, TRAN, TRAN -}, -{ -TRAN, TRAN, TRAN, TRAN, TRAN, TRAN, TRAN, TRAN, -TRAN, TRAN, TRAN, WHIT, TRAN, TRAN, TRAN, TRAN, -TRAN, WHIT, TRAN, WHIT, TRAN, WHIT, TRAN, TRAN, -TRAN, TRAN, WHIT, WHIT, WHIT, TRAN, TRAN, TRAN, -TRAN, WHIT, TRAN, WHIT, TRAN, WHIT, TRAN, TRAN, -TRAN, TRAN, TRAN, WHIT, TRAN, TRAN, TRAN, TRAN, -TRAN, TRAN, TRAN, TRAN, TRAN, TRAN, TRAN, TRAN, -TRAN, TRAN, TRAN, TRAN, TRAN, TRAN, TRAN, TRAN -} -/* -{ -TRAN, TRAN, TRAN, TRAN, TRAN, TRAN, TRAN, TRAN, -TRAN, WHIT, TRAN, TRAN, TRAN, WHIT, TRAN, TRAN, -TRAN, TRAN, WHIT, TRAN, WHIT, TRAN, TRAN, TRAN, -TRAN, WHIT, WHIT, WHIT, WHIT, WHIT, TRAN, TRAN, -TRAN, TRAN, WHIT, TRAN, WHIT, TRAN, TRAN, TRAN, -TRAN, WHIT, TRAN, TRAN, TRAN, WHIT, TRAN, TRAN, -TRAN, TRAN, TRAN, TRAN, TRAN, TRAN, TRAN, TRAN, -TRAN, TRAN, TRAN, TRAN, TRAN, TRAN, TRAN, TRAN -} -*/ -}; - diff --git a/src/apps/bsnow/Flakes.h b/src/apps/bsnow/Flakes.h deleted file mode 100644 index 3ba4088224..0000000000 --- a/src/apps/bsnow/Flakes.h +++ /dev/null @@ -1,12 +0,0 @@ -#ifndef _FLAKES_H -#define _FLAKES_H -#include - -#define NUM_PATTERNS 2 - -#define PAT_HOTSPOT 3,3 - -extern const uchar gFlakeBits[NUM_PATTERNS][64]; - - -#endif diff --git a/src/apps/bsnow/Jamfile b/src/apps/bsnow/Jamfile deleted file mode 100644 index 604c4011f3..0000000000 --- a/src/apps/bsnow/Jamfile +++ /dev/null @@ -1,18 +0,0 @@ -SubDir HAIKU_TOP src apps bsnow ; - -SetSubDirSupportedPlatformsBeOSCompatible ; - -Application BSnow : - Flakes.cpp - SnowView.cpp - SnowApp.cpp - : be [ TargetLibsupc++ ] localestub - : BSnow.rdef - ; - -DoCatalogs BSnow : - x-vnd.mmu_man.BSnow - : - SnowApp.cpp - SnowView.cpp - ; diff --git a/src/apps/bsnow/README.html b/src/apps/bsnow/README.html deleted file mode 100644 index 22423561d1..0000000000 --- a/src/apps/bsnow/README.html +++ /dev/null @@ -1,38 +0,0 @@ - - - -BSnow - winter weather for BeOS - - - -              *        .                .            .
-  .                         *                             .        *                 -BSnow - winter weather for BeOS,                         *                 .
-              *     .              *               .
- -
-
-
-
-
- -© 2003 François Revol. -
-
-Features: -
    -
  • adapts the number of snow flakes to the CPU frequency to avoid hogging it, -
  • random wind change, -
  • the fallen snow accumulates on the windows and bottom of the screen, -
-
-
-Limitations: -
    -
  • lot of flicker, -
  • it needs to set the desktop view flags to B_DRAW_ON_CHILDREN, which might gives weird drawing with some replicants afterwards, -
-
-Sources released under the MIT licence. - - diff --git a/src/apps/bsnow/SnowApp.cpp b/src/apps/bsnow/SnowApp.cpp deleted file mode 100644 index 1b409d96dd..0000000000 --- a/src/apps/bsnow/SnowApp.cpp +++ /dev/null @@ -1,27 +0,0 @@ -#include -#include -#include -#include - -#include "SnowView.h" - - -int main(int argc, char **argv) -{ - BApplication app(APP_SIG); - BWindow* win; - bool draggersShown = BDragger::AreDraggersDrawn(); - win = new BWindow(BRect(SNOW_VIEW_RECT), B_TRANSLATE_SYSTEM_NAME("BSnow"), - B_TITLED_WINDOW, B_QUIT_ON_WINDOW_CLOSE | B_NOT_RESIZABLE); - SnowView* view = new SnowView(); - win->AddChild(view); - win->MoveTo(50, 50); - win->Show(); - win->SetPulseRate(500000); - BDragger::ShowAllDraggers(); - app.Run(); - if (!draggersShown) - BDragger::HideAllDraggers(); - return 0; -} - diff --git a/src/apps/bsnow/SnowView.cpp b/src/apps/bsnow/SnowView.cpp deleted file mode 100644 index 7fdbc6fc31..0000000000 --- a/src/apps/bsnow/SnowView.cpp +++ /dev/null @@ -1,636 +0,0 @@ -#include "SnowView.h" - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "Flakes.h" - - -#define FORWARD_TO_PARENT -#undef B_TRANSLATION_CONTEXT -#define B_TRANSLATION_CONTEXT "BSnow" - - -SnowView::SnowView() - : - BView(BRect(SNOW_VIEW_RECT), "BSnow", B_FOLLOW_NONE, - B_WILL_DRAW | B_PULSE_NEEDED) -{ - fAttached = false; - fMsgRunner = NULL; - fCachedParent = NULL; - fFallenBmp = NULL; - fFallenView = NULL; - fFallenReg = NULL; - fInvalidator = -1; - fShowClickMe = false; - for (int i = 0; i < WORKSPACES_COUNT; i++) - fFlakes[i] = NULL; - for (int i = 0; i < NUM_PATTERNS; i++) - fFlakeBitmaps[i] = NULL; - BRect r(Frame()); - r.left = r.right - 7; - r.top = r.bottom - 7; - fDragger = new BDragger(r, this); - AddChild(fDragger); - SetHighColor(255,255,255); -} - -#ifdef DEBUG -filter_result msgfilter(BMessage *message, BHandler **target, BMessageFilter *filter) -{ - switch (message->what) { - case B_MOUSE_DOWN: - case B_MOUSE_UP: - case B_MOUSE_MOVED: - case '_EVP': - case '_UPD': - case '_PUL': - case 'NTCH': - case 'NMDN': - break; - default: - printf("For: %p: %s\n", *target, (*target)->Name()); - message->PrintToStream(); - } - return B_DISPATCH_MESSAGE; -} -#endif - -SnowView::SnowView(BMessage *archive) - : BView(archive) -{ - system_info si; - PRINT(("SnowView()\n")); -#ifdef DEBUG - archive->PrintToStream(); -#endif - fDragger = NULL; - fAttached = false; - fMsgRunner = NULL; - fFallenBmp = NULL; - fFallenView = NULL; - fFallenReg = NULL; - fCachedParent = NULL; - fShowClickMe = false; - SetFlags(Flags() & ~B_PULSE_NEEDED); /* it's only used when in the app */ - get_system_info(&si); - fNumFlakes = 1000 * si.cpu_count / 3; - printf("BSnow: using %ld flakes\n", fNumFlakes); - for (int i = 0; i < WORKSPACES_COUNT; i++) { - fFlakes[i] = new flake[fNumFlakes]; - memset(fFlakes[i], 0, fNumFlakes * sizeof(flake)); - } - for (int i = 0; i < NUM_PATTERNS; i++) { - fFlakeBitmaps[i] = new BBitmap(BRect(0,0,7,7), B_CMAP8); - fFlakeBitmaps[i]->SetBits(gFlakeBits[i], 8*8, 0, B_CMAP8); - } - fCurrentWorkspace = 0; - SetHighColor(255,255,255); - SetDrawingMode(B_OP_OVER); -} - -SnowView::~SnowView() -{ - for (int i = 0; i < WORKSPACES_COUNT; i++) - if (fFlakes[i]) - delete [] fFlakes[i]; - if (fFallenBmp) - delete fFallenBmp; /* the view goes away with it */ -} - -BArchivable *SnowView::Instantiate(BMessage *data) -{ - return new SnowView(data); -} - -status_t SnowView::Archive(BMessage *data, bool deep) const -{ - status_t err; - err = BView::Archive(data, deep); - if (err < B_OK) - return err; - data->AddString("add_on", APP_SIG); - return B_OK; -} - -void SnowView::AttachedToWindow() -{ - BView *p; - rgb_color col; - fAttached = true; -/* if (!fMsgRunner) - fMsgRunner = new BMessageRunner(BMessenger(this), - new BMessage(MSG_PULSE_ME), - INTERVAL); -*/ - p = Parent(); - if (p) - col = B_TRANSPARENT_32_BIT;//Parent()->ViewColor(); - else - col = ui_color(B_PANEL_BACKGROUND_COLOR); - SetViewColor(col); -// BScreen bs; -// fCachedWsWidth = bs.Frame().IntegerWidth(); -// fCachedWsHeight = bs.Frame().IntegerHeight(); - fDragger = dynamic_cast(FindView("_dragger_")); - if (fDragger && p) { - fCachedParent = p; - fCachedWsWidth = p->Frame().IntegerWidth(); - fCachedWsHeight = p->Frame().IntegerHeight(); - fDragger->SetViewColor(col); - if (fDragger->InShelf()) { - p->SetFlags(p->Flags() | B_DRAW_ON_CHILDREN); -#ifdef B_BEOS_VERSION_DANO - p->SetDoubleBuffering(p->DoubleBuffering() | B_UPDATE_EXPOSED); -#endif - ResizeTo(p->Bounds().Width(), p->Bounds().Height()); - MoveTo(0,0); - fDragger->MoveTo(p->Bounds().Width()-7, p->Bounds().Height()-7); - } - BRect fallenRect(p->Bounds()); - fallenRect.top = fallenRect.bottom - FALLEN_HEIGHT; - fFallenBmp = new BBitmap(fallenRect, B_BITMAP_ACCEPTS_VIEWS, B_CMAP8); - memset(fFallenBmp->Bits(), B_TRANSPARENT_MAGIC_CMAP8, (size_t)(fallenRect.Height()*fFallenBmp->BytesPerRow())); - fFallenView = new BView(fallenRect, "offscreen fallen snow", B_FOLLOW_NONE, 0); - fFallenBmp->AddChild(fFallenView); - fFallenReg = new BRegion; - fInvalidator = spawn_thread(SnowMakerThread, INVALIDATOR_THREAD_NAME, B_LOW_PRIORITY, (void *)this); - resume_thread(fInvalidator); - printf("BSnow: OK: ws = %" B_PRId32 " x %" B_PRId32 "\n", fCachedWsWidth, fCachedWsHeight); -#ifdef DEBUG - Window()->AddCommonFilter(new BMessageFilter(B_ANY_DELIVERY, B_ANY_SOURCE, msgfilter)); -#endif - } -} - -void SnowView::DetachedFromWindow() -{ - fAttached = false; -/* - if (Parent()) { - Parent()->Invalidate(Parent()->Bounds()); - } -*/ - if (fMsgRunner) - delete fMsgRunner; - fMsgRunner = NULL; - status_t err; - fCachedParent = NULL; - if (fInvalidator > B_OK) - wait_for_thread(fInvalidator, &err); - fInvalidator = -1; - if (fFallenReg) - delete fFallenReg; -} - -void SnowView::MessageReceived(BMessage *msg) -{ - BAlert *info; - //msg->PrintToStream(); - switch (msg->what) { - case MSG_PULSE_ME: - if (Parent()) { - Calc(); - InvalFlakes(); - } - break; - case B_ABOUT_REQUESTED: - info = new BAlert("BSnow info", - "BSnow, just in case you don't have real one...\n" - "" B_UTF8_COPYRIGHT " 2003, François Revol.", - "Where is Santa ??"); - info->SetFeel(B_NORMAL_WINDOW_FEEL); - info->SetLook(B_FLOATING_WINDOW_LOOK); - info->SetFlags(info->Flags()|B_NOT_ZOOMABLE|B_CLOSE_ON_ESCAPE); - info->Go(NULL); - break; - default: -//#ifdef FORWARD_TO_PARENT -/* - if (fAttached && Parent()) - Parent()->MessageReceived(msg); - else -*/ -//#endif - BView::MessageReceived(msg); - } -} - -void SnowView::Draw(BRect ur) -{ - int i; - if (!fCachedParent) { - if (!fShowClickMe) { /* show "drag me" */ - SetLowColor(ViewColor()); - SetHighColor(0,0,0); - SetFontSize(12); - DrawString(B_TRANSLATE("Drag me on your desktop" B_UTF8_ELLIPSIS), - BPoint(15,25)); - BPoint arrowHead(Bounds().RightBottom() + BPoint(-10,-10)); - StrokeLine(arrowHead, arrowHead - BPoint(7,0)); - StrokeLine(arrowHead, arrowHead - BPoint(0,7)); - StrokeLine(arrowHead, arrowHead - BPoint(12,12)); - return; - } else { - SetLowColor(ViewColor()); - SetHighColor(0,0,0); - SetFontSize(12); - DrawString(B_TRANSLATE("Click me to remove BSnow" B_UTF8_ELLIPSIS), - BPoint(15,25)); - return; - } - } - //printf("Draw()\n"); - uint32 cw = fCurrentWorkspace; - if (fFlakes[cw] == NULL) - return; - /* draw the snow already fallen */ -// BRect fallenRect(Bounds()); -// fallenRect.top = fallenRect.bottom - FALLEN_HEIGHT; -// if (ur.Intersects(fallenRect)) { - //if (fFallenBmp->Lock()) { - // DrawBitmap(fFallenBmp, fallenRect); - // fFallenBmp->Unlock(); - //} - int32 cnt = fFallenReg->CountRects(); -// drawing_mode oldmode = DrawingMode(); -// SetDrawingMode(B_OP_ADD); - - for (i=0; iRectAt(i); -// SetHighColor(245, 245, 245, 200); -// FillRect(r); -// SetHighColor(255, 255, 255, 255); -// r.InsetBy(1,1); - FillRect(r); - } -// SetDrawingMode(oldmode); -// } - /* draw our flakes */ - for (i=0; i3)?1:0; - //FillRect(BRect(fFlakes[cw][i].pos-BPoint(PAT_HOTSPOT),fFlakes[cw][i].pos-BPoint(PAT_HOTSPOT)+BPoint(7,7)), gFlakePatterns[pat]); -/* - StrokeLine(fFlakes[cw][i].pos+BPoint(-1,-1), - fFlakes[cw][i].pos+BPoint(1,1)); - StrokeLine(fFlakes[cw][i].pos+BPoint(-1,1), - fFlakes[cw][i].pos+BPoint(1,-1)); -*/ - DrawBitmap(fFlakeBitmaps[pat], fFlakes[cw][i].pos-BPoint(PAT_HOTSPOT)); - } -} - -void SnowView::Pulse() -{ - if (fShowClickMe) - return; /* done */ - if (fCachedParent) - return; /* we are in Tracker! */ - BMessenger msgr("application/x-vnd.Be-TRAK"); - BMessage msg(B_GET_PROPERTY), reply; - msg.AddSpecifier("Frame"); - msg.AddSpecifier("View", "BSnow"); - msg.AddSpecifier("Window", 1); /* 0 is Twitcher */ - if (msgr.SendMessage(&msg, &reply) == B_OK && reply.what == B_REPLY) { - //reply.PrintToStream(); - Invalidate(Bounds()); - fShowClickMe = true; - } -} - -void SnowView::Calc() -{ - int i; - uint32 cw = fCurrentWorkspace; - - /* check if the parent changed size */ - BRect pFrame = fCachedParent->Frame(); - if (fCachedWsWidth != pFrame.Width() || fCachedWsHeight != pFrame.Height()) { - fCachedWsWidth = pFrame.IntegerWidth(); - fCachedWsHeight = pFrame.IntegerHeight(); - printf("BSnow: Parent resized to %" B_PRId32 " %" B_PRId32 "\n", fCachedWsWidth, fCachedWsHeight); - fFallenReg->MakeEmpty(); /* remove all the fallen snow */ - ResizeTo(pFrame.IntegerWidth(), pFrame.IntegerHeight()); - fDragger->MoveTo(pFrame.IntegerWidth()-7, pFrame.IntegerHeight()-7); - } - - /* make new flakes */ - for (i=0; i 0) - fFlakes[cw][i].pos.x = 0; - else - fFlakes[cw][i].pos.x = fCachedWsWidth; - } - if (fFlakes[cw][i].pos.x > fCachedWsWidth+10) { - fFlakes[cw][i].pos.y = fFlakes[cw][i].pos.x - fCachedWsWidth; - if (fWind > 0) - fFlakes[cw][i].pos.x = 0; - else - fFlakes[cw][i].pos.x = fCachedWsWidth; - } - } - } - - /* like a candle in the wind... */ - if (fWindDuration < system_time()) { - fWindDuration = system_time() + ((((bigtime_t)rand())*1000) % WIND_MAX_DURATION); - fWind = (rand() % WIND_SPAN) - WIND_SPAN/2; - printf("BSnow: wind change: %f\n", fWind); - } - - -// if (fFallenView->LockLooperWithTimeout(5000)) { -// if (fFallenBmp) { -// uint8 *fallenBits = (uint8 *)fFallenBmp->Bits(); - - BRegion desktopReg; - GetClippingRegion(&desktopReg); - - /* let's add some gravity and wind */ - for (i=0; i (fCachedWsHeight-FALLEN_HEIGHT)) { - - bool fallen = false; - bool keepfalling = false; - - /* fallen on the flour */ - if (fFlakes[cw][i].pos.y > fCachedWsHeight-2) - fallen = true; - /* fallon on another fallen flake */ - else if (fFallenReg->Intersects(BRect(fFlakes[cw][i].pos - BPoint(0,1), - fFlakes[cw][i].pos + BPoint(0,1)))) { - /* don't accumulate too much */ - if ((fFlakes[cw][i].pos.y > fCachedWsHeight-30) || - !desktopReg.Intersects( - BRect(fFlakes[cw][i].pos + BPoint(0,6), - fFlakes[cw][i].pos + BPoint(0,10)))) - fallen = true; - /* fallen on a window */ - } else if (!desktopReg.Intersects( - BRect(fFlakes[cw][i].pos + BPoint(-1,-1-2), - fFlakes[cw][i].pos + BPoint(1,1-1))) && - desktopReg.Intersects( - BRect(fFlakes[cw][i].pos + BPoint(-1,-1-3), - fFlakes[cw][i].pos + BPoint(1,1-3)))) { - //printf("fallen3 @ %f %f\n", fFlakes[cw][i].pos.x, fFlakes[cw][i].pos.y); - fFlakes[cw][i].pos = fFlakes[cw][i].opos; - fallen = true; - keepfalling = true; /* but keep one falling */ - } - -/* else if (fallenBits[ (long)(fFlakes[cw][i].pos.y - * fFallenBmp->BytesPerRow() - + fFlakes[cw][i].pos.y - - (fCachedWsHeight-FALLEN_HEIGHT)) ] != B_TRANSPARENT_MAGIC_CMAP8) { - fallen = true; - }*/ - -// if (fallen) { -// int pat = (fFlakes[cw][i].weight>3)?1:0; -// if (fFlakes[cw][i].pos.y > fCachedWsHeight-1) -// fFlakes[cw][i].pos.y = fCachedWsHeight-(rand()%4); - //fFallenView->DrawBitmap(fFlakeBitmaps[pat], fFlakes[cw][i].pos-BPoint(PAT_HOTSPOT)); -// fallenBits[ (long)(fFlakes[cw][i].pos.y * fFallenBmp->BytesPerRow() -// + fFlakes[cw][i].pos.y-(fCachedWsHeight-FALLEN_HEIGHT)) ] = 0x56; -// printf("fallen @ %f, %f\n", fFlakes[cw][i].pos.x, fFlakes[cw][i].pos.y); -// } - if (fallen) { - if (!keepfalling) - fFlakes[cw][i].weight = 0; - fFallenReg->Include(BRect(fFlakes[cw][i].pos - BPoint(2,0), - fFlakes[cw][i].pos + BPoint(2,2))); - if (keepfalling) { - fFlakes[cw][i].pos += BPoint(0,10); - /* except if under the desktop */ - if (fFlakes[cw][i].pos.y > fCachedWsHeight-1) - fFlakes[cw][i].weight = 0; - } - } - - /* cleanup, when a window hides the snow */ - fFallenReg->IntersectWith(&desktopReg); - - /* cleanup, when a window is moved */ - /* seems to lockup Tracker */ -/* - int32 cnt = fFallenReg->CountRects(); - for (i=0; iRectAt(i); - if (desktopReg.Intersects(r.OffsetByCopy(0,15))) { - fFallenReg->Exclude(r); - cnt--; - } - } -*/ - /* add the effect of the wind */ - fFlakes[cw][i].pos.x += fWind + (rand() % 6 - 3); - if ((fFlakes[cw][i].pos.x > fCachedWsWidth+50)||(fFlakes[cw][i].pos.x < -50)) - fFlakes[cw][i].weight = 0; - } -// fFallenView->UnlockLooper(); -// } -#if 0 - for (i=0; i<10; i++) - printf("f[%d] = {%f, %f}, {%f, %f}, %d\n", i, - fFlakes[cw][i].opos.x, fFlakes[cw][i].opos.y, - fFlakes[cw][i].pos.x, fFlakes[cw][i].pos.y, - fFlakes[cw][i].weight); -#endif -} - -void SnowView::InvalFlakes() -{ - int i; - BView *p = Parent(); - if (!p) - return; - //printf("InvalFlakes()\n"); - uint32 cw = fCurrentWorkspace; - - for (i=0; iMouseDown(where); -#endif -} - -void SnowView::MouseUp(BPoint where) -{ -#ifdef FORWARD_TO_PARENT - if (fAttached && Parent()) - Parent()->MouseUp(where); -#endif - if (fCachedParent) - return; /* we are *inside* the Tracker, - * don't even try talking to ourselve - * with the window locked - */ - BMessenger msgr("application/x-vnd.Be-TRAK"); - BMessage msg(B_DELETE_PROPERTY), reply; - msg.AddSpecifier("Replicant", "BSnow"); - msg.AddSpecifier("Shelf"); - msg.AddSpecifier("View", "PoseView"); - msg.AddSpecifier("Window", 1); /* 0 is Tracker Status */ - if ((msgr.SendMessage(&msg, &reply) == B_OK) && - (reply.what == B_NO_REPLY || reply.what == B_REPLY)) { - //reply.PrintToStream(); - fShowClickMe = false; - Invalidate(Bounds()); - } - /* - BMessage: what = JAHA (0x4a414841, or 1245792321) - entry index, type='LONG', c=1, size= 4, data[0]: 0x2 (2, '') - entry when, type='LLNG', c=1, size= 8, data[0]: 0xf6a1b09ac (66204666284, '') - entry source, type='PNTR', c=1, size= 4, - entry be:sender, type='MSNG', c=1, size=24, - */ -} - -void SnowView::MouseMoved(BPoint where, uint32 code, const BMessage *a_message) -{ -#ifdef FORWARD_TO_PARENT - if (fAttached && Parent()) - Parent()->MouseMoved(where, code, a_message); -#endif -} - -void SnowView::KeyDown(const char *bytes, int32 numBytes) -{ -#ifdef FORWARD_TO_PARENT - if (fAttached && Parent()) - Parent()->KeyDown(bytes, numBytes); -#endif -} - -void SnowView::KeyUp(const char *bytes, int32 numBytes) -{ -#ifdef FORWARD_TO_PARENT - if (fAttached && Parent()) - Parent()->KeyUp(bytes, numBytes); -#endif -} - -#define PORTION_GRAN 20 - -int32 SnowView::SnowMakerThread(void *p_this) -{ - SnowView *_this = (SnowView *)p_this; - BView *p = _this->Parent(); - BRect portion(0,0,(_this->fCachedWsWidth/PORTION_GRAN)-1, (_this->fCachedWsHeight/PORTION_GRAN)-1); - int nf = _this->fNumFlakes; - BRegion reg(BRect(-1,-1,-1,-1)); - while (p && _this->fAttached) { - snooze(INTERVAL/(10*(nf?nf:1))); - int32 cw = _this->fCurrentWorkspace; - bool drawThisOne = false; -//printf("processing flake %d...\n", current); - //for (; (current%(fNumFlakes/4); current++) - if (reg.Intersects(portion)) { - for (int i = 0; !drawThisOne && i < nf; i++) { - /* if we find at least one flake in this rect, draw it */ - if ((_this->fFlakes[cw][i].weight) && ( - portion.Intersects(BRect(_this->fFlakes[cw][i].opos - BPoint(4,4), _this->fFlakes[cw][i].opos + BPoint(4,4))) || - portion.Intersects(BRect(_this->fFlakes[cw][i].pos - BPoint(4,4), _this->fFlakes[cw][i].pos + BPoint(4,4))))) { - drawThisOne = true; - } - } - } - //if (!drawThisOne) - //printf("!Invalidate(%f, %f, %f, %f)\n", portion.left, portion.top, portion.right, portion.bottom); - /* avoid deadlock on exit */ - if (drawThisOne && (_this->LockLooperWithTimeout(2000) == B_OK)) { -// printf("Invalidate(%f, %f, %f, %f)\n", portion.left, portion.top, portion.right, portion.bottom); - p->Invalidate(portion); - _this->UnlockLooper(); - } - portion.OffsetBy(_this->fCachedWsWidth/PORTION_GRAN, 0); - if (portion.left >= _this->fCachedWsWidth) { /* right wrap */ - //printf("rigth wrap to %ld\n", _this->fCachedWsWidth); - portion.OffsetTo(0, portion.top+(_this->fCachedWsHeight/PORTION_GRAN)); - } - if (portion.top >= _this->fCachedWsHeight) { - portion.OffsetTo(0,0); - /* avoid deadlock on exit */ - if (_this->LockLooperWithTimeout(5000) == B_OK) { -//printf("calculating flakes...\n"); - _this->Calc(); -//printf("done calculating flakes.\n"); - _this->GetClippingRegion(®); - //printf("Region:\n"); - //reg.PrintToStream(); - _this->UnlockLooper(); - } - } - } -#if 0 - BView *p = _this->Parent(); - while (p && _this->fAttached) { - snooze(INTERVAL/_this->fNumFlakes); -//printf("processing flake %d...\n", current); - //for (; (current%(fNumFlakes/4); current++) - /* avoid deadlock on exit */ - if (_this->LockLooperWithTimeout(2000) == B_OK) { - if (_this->fFlakes[_this->fCurrentWorkspace][current].weight) { - p->Invalidate(BRect(_this->fFlakes[_this->fCurrentWorkspace][current].opos - BPoint(4,4), - _this->fFlakes[_this->fCurrentWorkspace][current].opos + BPoint(4,4))); - p->Invalidate(BRect(_this->fFlakes[_this->fCurrentWorkspace][current].pos - BPoint(4,4), - _this->fFlakes[_this->fCurrentWorkspace][current].pos + BPoint(4,4))); - } - _this->UnlockLooper(); - current++; - current %= _this->fNumFlakes; - if (!current) { - /* avoid deadlock on exit */ - if (_this->LockLooperWithTimeout(2000) == B_OK) { -printf("calculating flakes...\n"); - _this->Calc(); -printf("done calculating flakes.\n"); - _this->UnlockLooper(); - } - } - } - } -#endif - return B_OK; -} diff --git a/src/apps/bsnow/SnowView.h b/src/apps/bsnow/SnowView.h deleted file mode 100644 index ed688c9d4d..0000000000 --- a/src/apps/bsnow/SnowView.h +++ /dev/null @@ -1,83 +0,0 @@ -#ifndef _SNOW_VIEW_H -#define _SNOW_VIEW_H - - -#include -#include -#include -#include -#include -#include - -#include "Flakes.h" - - -#define APP_SIG "application/x-vnd.mmu_man.BSnow" -#define SNOW_VIEW_RECT 0,0,200,40 -#define NUM_FLAKES 200 -#define INTERVAL 200000 -#define MSG_PULSE_ME 'PulS' -#define MSG_DRAW_ME 'DraW' -#define WORKSPACES_COUNT 32 -#define WEIGHT_SPAN 50 -#define WEIGHT_GRAN 10 -#define WIND_SPAN 25 -#define WIND_MAX_DURATION 10000000 -#define FALLEN_HEIGHT 30 -#define INVALIDATOR_THREAD_NAME "You're Neo? I'm the Snow Maker!" - - -typedef struct flake { - BPoint pos; - BPoint opos; - float weight; -} flake; - - -class SnowView : public BView -{ -public: - SnowView(); - SnowView(BMessage *archive); - ~SnowView(); - static BArchivable *Instantiate(BMessage *data); - virtual status_t Archive(BMessage *data, bool deep = true) const; - void AttachedToWindow(); - void DetachedFromWindow(); - void MessageReceived(BMessage *msg); - void Draw(BRect ur); - void Pulse(); - - virtual void MouseDown(BPoint where); - virtual void MouseUp(BPoint where); - virtual void MouseMoved(BPoint where, uint32 code, - const BMessage *a_message); - virtual void KeyDown(const char *bytes, int32 numBytes); - virtual void KeyUp(const char *bytes, int32 numBytes); - - static int32 SnowMakerThread(void *p_this); - void Calc(); - void InvalFlakes(); - -private: - BMessageRunner *fMsgRunner; - BDragger *fDragger; - long fNumFlakes; - flake *fFlakes[WORKSPACES_COUNT]; - BList *fFallenFlakes[WORKSPACES_COUNT]; - uint32 fCurrentWorkspace; - uint32 fCachedWsWidth; - uint32 fCachedWsHeight; - float fWind; - bigtime_t fWindDuration; - bool fAttached; - BBitmap *fFlakeBitmaps[NUM_PATTERNS]; - thread_id fInvalidator; - BView *fCachedParent; - BBitmap *fFallenBmp; - BView *fFallenView; - BRegion *fFallenReg; - bool fShowClickMe; -}; - -#endif From 60321baacc78ffa6191ecc053e06028d29ca9087 Mon Sep 17 00:00:00 2001 From: Humdinger Date: Mon, 4 Jan 2016 16:42:00 +0100 Subject: [PATCH 050/242] Updated version of Clipdinger package New in v0.5: * Added a feature to paste to the online service Sprunge.us * Bug fix: A chosen favorite will now appear at the top of the clip list, which always shows what's currently in the clipboard. * Bug fix: Using the mouse instead of the cursor keys to switch list now correctly shows the inactive list "dimmed". --- build/jam/repositories/HaikuPorts/x86_gcc2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/jam/repositories/HaikuPorts/x86_gcc2 b/build/jam/repositories/HaikuPorts/x86_gcc2 index aaf29b88bd..97a70043c1 100644 --- a/build/jam/repositories/HaikuPorts/x86_gcc2 +++ b/build/jam/repositories/HaikuPorts/x86_gcc2 @@ -77,7 +77,7 @@ RemotePackageRepository HaikuPorts cdrtools-3.02~a04-1 cdrtools_devel-3.02~a04-1 chat-20100903-2 - clipdinger-0.4-2 + clipdinger-0.5-1 clockwerk-git-3 cpctools-0.3.0-2 criticalmass-2.2-1 From c97bb97467d76f6960aab2b854435b963f31a1bb Mon Sep 17 00:00:00 2001 From: Humdinger Date: Mon, 4 Jan 2016 17:20:49 +0100 Subject: [PATCH 051/242] Update Clipdinger package for gcc4 --- build/jam/repositories/HaikuPorts/x86 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/jam/repositories/HaikuPorts/x86 b/build/jam/repositories/HaikuPorts/x86 index 4c60fff2ca..120f8a6858 100644 --- a/build/jam/repositories/HaikuPorts/x86 +++ b/build/jam/repositories/HaikuPorts/x86 @@ -64,7 +64,7 @@ RemotePackageRepository HaikuPorts cdrtools_devel-3.01~a27-1 clang-3.4-3 clang_analysis-3.4-3 - clipdinger-0.4-1 + clipdinger-0.5-1 cmake-3.3.1-1 coreutils-8.24-1 cpio-2.10-1 From a3212ce3e9f93e800d73c9cfe88375e72d466cd9 Mon Sep 17 00:00:00 2001 From: Humdinger Date: Mon, 4 Jan 2016 17:26:30 +0100 Subject: [PATCH 052/242] Update Clipdinger package for 64bit --- build/jam/repositories/HaikuPorts/x86_64 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/jam/repositories/HaikuPorts/x86_64 b/build/jam/repositories/HaikuPorts/x86_64 index fb345aa0d0..e0e605bd94 100644 --- a/build/jam/repositories/HaikuPorts/x86_64 +++ b/build/jam/repositories/HaikuPorts/x86_64 @@ -66,7 +66,7 @@ RemotePackageRepository HaikuPorts cdrtools_devel-3.02~a04-1 clang-3.5.1-1 clang_analysis-3.5.1-1 - clipdinger-0.4-1 + clipdinger-0.5-1 cmake-3.3.2-3 coreutils-8.24-1 cpio-2.12-1 From 7f9368cae5ff96137d32a60ed2e86795421f8222 Mon Sep 17 00:00:00 2001 From: looncraz Date: Thu, 10 Dec 2015 12:52:48 -0600 Subject: [PATCH 053/242] Set*UIColor, etc. The inseparable changes necessary to support live color updating across the system in a sane, safe, and performant manner. BView gains: HasSystemColors() HasDefaultColors() AdoptSystemColors() AdoptParentColors() AdoptViewColor(BView*) SetViewUIColor(color_which, float tint) SetHighUIColor(... SetLowUIColor(... ViewUIColor(float* tint) HighUIColor(... LowUIColor(... DelayedInvalidate() BWindow gains a simple helper method: IsOffscreenWindow() BMessage gains: AddColor() FindColor() GetColor() HasColor() * allegedly this API is deprecated, but I implemented it anyway ReplaceColor() SetColor() Previous private ColorTools methods are made public and moved into GraphicsDefs: mix_color, blend_color, disable_color These are fully compatible with BeOS dan0 R5.1 methods and are just code cleanup of BeOS example code under the OpenTracker license. In addition, four new colors are created: B_LINK_TEXT_COLOR B_LINK_HOVER_COLOR B_LINK_ACTIVE_COLOR B_LINK_VISITED_COLOR These changes are documented in their proper user documentation files. In addition, due to a history rewrite, B_FOLLOW_LEFT_TOP has been defined and used in lieu of B_FOLLOW_TOP | B_FOLLOW_LEFT and is included in this commit. On the app_server side, the following has changed: Add DelayedMessage - a system by which messages can be sent at a scheduled time, and can also be merged according to set rules. A single thread is used to service the message queue and multiple recipients can be set for each message. Desktop gains the ability to add message ports to a DelayedMessage so that said messages can target either all applications or all windows, as needed. Desktop maintains a BMessage which is used to queue up all pending color changes and the delayed messaging system is used to enact these changes after a short period of time has passed. This prevents abuse and allows the system to merge repeated set_ui_color events into one event for client applications, improving performance drastically. In addition, B_COLORS_UPDATED is sent to the BApplication, which forwards the message to each BWindow. This is done to improve performance over having the app_server independently informing each window. Decorator changes are live now, which required some reworking. Signed-off-by: Augustin Cavalier --- docs/user/app/Message.dox | 140 ++- docs/user/interface/View.dox | 189 +++- docs/user/interface/Window.dox | 18 +- headers/os/app/AppDefs.h | 6 +- headers/os/app/Message.h | 16 + headers/os/interface/Box.h | 5 +- headers/os/interface/Button.h | 5 +- headers/os/interface/ChannelControl.h | 5 +- headers/os/interface/ChannelSlider.h | 8 +- headers/os/interface/CheckBox.h | 5 +- headers/os/interface/ControlLook.h | 18 +- headers/os/interface/GraphicsDefs.h | 9 +- headers/os/interface/InterfaceDefs.h | 10 + headers/os/interface/LayoutBuilder.h | 19 +- headers/os/interface/ListView.h | 5 +- headers/os/interface/MenuField.h | 8 +- headers/os/interface/MultiChannelControl.h | 5 +- headers/os/interface/OptionControl.h | 5 +- headers/os/interface/OptionPopUp.h | 7 +- headers/os/interface/OutlineListView.h | 5 +- headers/os/interface/PictureButton.h | 5 +- headers/os/interface/RadioButton.h | 5 +- headers/os/interface/ScrollView.h | 3 +- headers/os/interface/Slider.h | 8 +- headers/os/interface/SplitView.h | 3 +- headers/os/interface/StatusBar.h | 5 +- headers/os/interface/StringView.h | 2 +- headers/os/interface/TextControl.h | 3 +- headers/os/interface/View.h | 36 +- headers/os/interface/Window.h | 2 +- headers/private/app/ServerProtocol.h | 11 + headers/private/app/ServerProtocolStructs.h | 4 + headers/private/app/ServerReadOnlyMemory.h | 10 +- headers/private/interface/AbstractSpinner.h | 2 +- headers/private/interface/ColorTools.h | 79 -- headers/private/interface/ColumnListView.h | 7 +- headers/private/interface/DecimalSpinner.h | 2 +- headers/private/interface/ViewPrivate.h | 14 +- headers/private/shared/CalendarView.h | 3 +- src/kits/app/Application.cpp | 19 + src/kits/app/Message.cpp | 11 + src/kits/interface/ColorTools.cpp | 110 --- src/kits/interface/GraphicsDefs.cpp | 54 +- src/kits/interface/InterfaceDefs.cpp | 136 ++- src/kits/interface/Jamfile | 1 - src/kits/interface/View.cpp | 443 ++++++++- src/kits/interface/Window.cpp | 32 +- src/servers/app/DelayedMessage.cpp | 871 ++++++++++++++++++ src/servers/app/DelayedMessage.h | 178 ++++ src/servers/app/Desktop.cpp | 154 +++- src/servers/app/Desktop.h | 17 +- src/servers/app/DesktopSettings.cpp | 59 +- src/servers/app/DesktopSettings.h | 9 +- src/servers/app/DesktopSettingsPrivate.h | 11 +- src/servers/app/DrawState.cpp | 57 ++ src/servers/app/DrawState.h | 12 + src/servers/app/Jamfile | 1 + src/servers/app/MessageLooper.h | 4 +- src/servers/app/ProfileMessageSupport.cpp | 10 + src/servers/app/ServerApp.cpp | 24 +- src/servers/app/ServerWindow.cpp | 157 +++- src/servers/app/View.cpp | 66 ++ src/servers/app/View.h | 9 + src/servers/app/Window.cpp | 11 + src/servers/app/Window.h | 1 + src/servers/app/decorator/DecorManager.cpp | 9 +- src/servers/app/decorator/DecorManager.h | 2 +- src/servers/app/decorator/Decorator.cpp | 39 +- src/servers/app/decorator/Decorator.h | 14 +- .../app/decorator/DefaultDecorator.cpp | 75 +- src/servers/app/decorator/DefaultDecorator.h | 7 +- src/servers/app/decorator/TabDecorator.cpp | 52 +- src/servers/app/decorator/TabDecorator.h | 31 +- src/servers/app/stackandtile/SATDecorator.cpp | 42 +- src/servers/app/stackandtile/SATDecorator.h | 16 +- 75 files changed, 2982 insertions(+), 454 deletions(-) delete mode 100644 headers/private/interface/ColorTools.h delete mode 100644 src/kits/interface/ColorTools.cpp create mode 100644 src/servers/app/DelayedMessage.cpp create mode 100644 src/servers/app/DelayedMessage.h diff --git a/docs/user/app/Message.dox b/docs/user/app/Message.dox index 6e1e28e90e..50f9e12914 100644 --- a/docs/user/app/Message.dox +++ b/docs/user/app/Message.dox @@ -1078,6 +1078,7 @@ \since BeOS R3 */ + /*! \fn status_t BMessage::AddFloat(const char* name, float aFloat) \brief Convenience method to add a \c float to the label \a name. @@ -1118,6 +1119,26 @@ */ +/*! + \fn status_t BMessage::AddColor(const char* name, rgb_color aColor) + \brief Convenience method to add a \c rgb_color to the label \a name. + + This method calls AddData() with the \c B_RGB_32_BIT_TYPE \a type. + + \param name The label to associate the data with. + \param aColor The value to store in the message. + + \returns A status code, \c B_OK on success or an error code. + + \see AddColor() for a more detailed overview of the inner workings. + \see FindColor() + \see GetColor() + \see ReplaceColor() + + \since Haiku R1 +*/ + + /*! \fn status_t BMessage::AddPointer(const char* name, const void* aPointer) \brief Convenience method to add a \c pointer to the label \a name. @@ -1807,6 +1828,48 @@ */ +/*! + \fn status_t BMessage::FindColor(const char* name, rgb_color* value) + \brief Find a color with the label \a name. + + This is an overloaded version of + FindColor(const char*, int32, rgb_color*) const + where the data is sought at \a index \c 0. + + \param name The label to which the data is associated. + \param value The object in which the data should be copied. + + \returns A status code, \c B_OK on success or an error code. + \retval B_OK The object now contains the requested data. + \retval B_NAME_NOT_FOUND There is no field with this \a name. + + \since Haiku R1 +*/ + + +/*! + \fn status_t BMessage::FindColor(const char* name, int32 index, + rgb_color* value) const + \brief Find a color at the label \a name at an \a index. + + This method looks for the data with the \c B_RGB_32_BIT_TYPE, and copies + it into a provided buffer. + + \param name The label to which the data is associated. + \param index The index from which the data should be copied. + \param value The object in which the data should be copied. + + \returns A status code, \c B_OK on success or an error code. + \retval B_OK The object now contains the requested data. + \retval B_BAD_INDEX The \a index does not exist. + \retval B_NAME_NOT_FOUND There is no field with this \a name. + + \see FindColor(const char*, rgb_color*) const + + \since BeOS R3 +*/ + + /*! \fn status_t BMessage::FindPointer(const char* name, void** pointer) const \brief Find a pointer at the label \a name. @@ -1849,7 +1912,7 @@ \retval B_BAD_INDEX The \a index does not exist. \retval B_NAME_NOT_FOUND There is no field with this \a name. - \see FindPointer(const char*, double*) const + \see FindPointer(const char*, void*) const \since BeOS R3 */ @@ -2569,6 +2632,49 @@ */ +/*! + \fn status_t BMessage::ReplaceColor(const char* name, rgb_color aColot) + \brief Replace a color at the label \a name. + + This method is an overloaded method of + ReplaceColor(const char*, int32, rgb_color). + It replaces the data at \a index \c 0. + + \param name The name associated with the data to replace. + \param aColor Where to store in the message. + + \returns A status code, \c B_OK on success or an error code. + \retval B_OK The operation succeeded. + \retval B_NAME_NOT_FOUND There is no field with this \a name. + + \since Haiku R1 +*/ + + +/*! + \fn status_t BMessage::ReplaceColor(const char* name, int32 index, + rgb_color aColor) + \brief Replace a rgb_color at the label \a name at a specified + \a index. + + The data at the specified \a name and \a index will be replaced, if it + matches the \c B_RGB_32_BIT_TYPE. + + \param name The name associated with the data to replace. + \param index The index in the array to replace. + \param aColor Where to store in the message. + + \returns A status code, \c B_OK on success or an error code. + \retval B_OK The operation succeeded. + \retval B_BAD_INDEX The index was out of range. + \retval B_NAME_NOT_FOUND There is no field with this \a name. + + \see ReplaceColor(const char*, rgb_color) + + \since Haiku R1 +*/ + + /*! \fn status_t BMessage::ReplacePointer(const char* name, const void* pointer) @@ -3513,6 +3619,38 @@ bool enabled = GetBool("enabled", false); */ +/*! + \fn rgb_color BMessage::GetColor(const char* name, rgb_color defaultValue) const + \brief Return the rgb_color value from message with \a name, or + \a defaultValue if not found. + + \param name The name of the item to retrieve. + \param defaultValue The value to use if the item specified by \a name + is not found. + + \return The item with \a name, or \a defaultValue if not found. + + \since Haiku R1 +*/ + + +/*! + \fn rgb_color BMessage::GetColor(const char* name, int32 index, + rgb_colorr defaultValue) const + \brief Return the rgb_color value from message with \a name and \a index, or + \a defaultValue if not found. + + \param name The name of the item to retrieve. + \param index The index of the item to retrieve if there is more than one. + \param defaultValue The value to use if the item specified by \a name + is not found. + + \return The item with \a name, or \a defaultValue if not found. + + \since Haiku R1 +*/ + + /*! \fn const char* BMessage::GetString(const char* name, const char* defaultValue) const diff --git a/docs/user/interface/View.dox b/docs/user/interface/View.dox index 80f776711a..6ae10e7545 100644 --- a/docs/user/interface/View.dox +++ b/docs/user/interface/View.dox @@ -1,13 +1,14 @@ /* - * Copyright 2011-2014 Haiku, Inc. All rights reserved. + * Copyright 2011-2015 Haiku, Inc. All rights reserved. * Distributed under the terms of the MIT License. * * Authors: * John Scipione, jscipione@gmail.com + * Joseph Groover, looncraz@looncraz.net * * Corresponds to: - * headers/os/interface/View.h hrev47274 - * src/kits/interface/View.cpp hrev47274 + * headers/os/interface/View.h hrev497** + * src/kits/interface/View.cpp hrev497** */ @@ -523,6 +524,15 @@ */ +/*! + \var B_FOLLOW_LEFT_TOP + \brief The margins between the left and top sides of the view and the left + and top sides of its parent remain constant. + + \since Haiku R1 +*/ + + /*! \class BView \ingroup interface @@ -596,12 +606,13 @@ if (Window()->LockLooper()) { Each view has a ViewColor() that fills the frame rectangle before the view does any drawing of its own. The default view color is white, you may - change the view color by calling SetViewColor(). A commonly used view color - is \c B_PANEL_BACKGROUND_COLOR which is a grey color used as the view color - of many Interface Kit classes. If you set the view color to - \c B_TRANSPARENT_COLOR then the Application Server won't erase the clipping - region of the view before updating, this should only be used if the view - erases itself by drawing on every pixel in the clipping region. + change the view color by calling SetViewColor() or, as of Haiku R1, + SetViewUIColor(). A commonly used view color is \c B_PANEL_BACKGROUND_COLOR + which is a user-defined color used as the view color of most applications. + If you set the view color to \c B_TRANSPARENT_COLOR then the Application Server + won't erase the clipping region of the view before updating, this should only + be used if the view erases itself by drawing on every pixel in the clipping + region. If you want to set the view color of a view to be the same as its parent you need to set it within the AttachedToWindow() method of the view like so: @@ -614,6 +625,7 @@ SetViewColor(Parent()->ViewColor()); */ + /*! \fn BView::BView(const char* name, uint32 flags, BLayout* layout) \brief Layout constructor. @@ -2057,6 +2069,59 @@ SetViewColor(Parent()->ViewColor()); */ +/*! + \fn bool BView::HasDefaultColors() const + \brief Tests if the view has any colors set. + + \return Boolean value, true if colors are not set. + + \since Haiku R1 +*/ + + +/*! + \fn bool BView::HasSystemColors() const + \brief Tests if the view is using system "panel" colors. + B_PANEL_BACKGROUND_COLOR for ViewUIColor() + B_PANEL_BACKGROUND_COLOR for LowUIColor() + B_PANEL_TEXT_COLOR for HighUIColor() + + \return Boolean value, true if colors are as described. + + \since Haiku R1 +*/ + + +/*! + \fn void BView::AdoptParentColors() + \brief Attempts to use the colors of any parent view. + Will adopt view, low, and high colors. + Should be called in AttachedToWindow() or AllAttached(). + + \since Haiku R1 +*/ + + +/*! + \fn void BView::AdoptSystemColors() + \brief Instructs view to use standard system "panel" colors. + B_PANEL_BACKGROUND_COLOR for ViewUIColor() + B_PANEL_BACKGROUND_COLOR for LowUIColor() + B_PANEL_TEXT_COLOR for HighUIColor() + + \since Haiku R1 +*/ + + +/*! + \fn void BView::AdoptViewColors(BView* view) + \brief Attempts to use the colors of a given view. + Will adopt view, low, and high colors. + + \since Haiku R1 +*/ + + /*! \fn void BView::SetHighColor(rgb_color color) \brief Set the high color of the view. @@ -2081,6 +2146,18 @@ SetViewColor(Parent()->ViewColor()); */ +/*! + \fn void BView::SetHighUIColor(color_which which, float tint) + \brief Set the high color of the view to a system constant. + The color will update live with user changes. + + \param which The color_which constant to set. + \param tint Optional tint value to use. + + \since Haiku R1 +*/ + + /*! \fn rgb_color BView::HighColor() const \brief Return the current high color. @@ -2094,6 +2171,20 @@ SetViewColor(Parent()->ViewColor()); */ +/*! + \fn color_which BView::HighUIColor(float* tint) const + \brief Return the current high color constant being used. + + \param tint Optional float pointer in which to store the tint + value used to modify the system color constant. + \return The current high color constant. + + \sa SetHighUIColor(color_which, float) + + \since Haiku R1 +*/ + + /*! \fn void BView::SetLowColor(rgb_color color) \brief Set the low color of the view. @@ -2117,6 +2208,18 @@ SetViewColor(Parent()->ViewColor()); */ +/*! + \fn void BView::SetLowUIColor(color_which which, float tint) + \brief Set the low color of the view to a system constant. + The color will update live with user changes. + + \param which The color_which constant to set. + \param tint Optional tint value to use. + + \since Haiku R1 +*/ + + /*! \fn rgb_color BView::LowColor() const \brief Return the current low color. @@ -2130,6 +2233,20 @@ SetViewColor(Parent()->ViewColor()); */ +/*! + \fn color_which BView::LowUIColor(float* tint) const + \brief Return the current low color constant being used. + + \param tint Optional float pointer in which to store the tint + value used to modify the system color constant. + \return The current low color constant. + + \sa SetLowUIColor(color_which, float) + + \since Haiku R1 +*/ + + /*! \fn void BView::SetViewColor(rgb_color color) \brief Set the view color of the view. @@ -2154,6 +2271,18 @@ SetViewColor(Parent()->ViewColor()); */ +/*! + \fn void BView::SetViewUIColor(color_which which, float tint) + \brief Set the view color of the view to a system constant. + The color will update live with user changes. + + \param which The color_which constant to set. + \param tint Optional tint value to use. + + \since Haiku R1 +*/ + + /*! \fn rgb_color BView::ViewColor() const \brief Return the current view color. @@ -2167,6 +2296,20 @@ SetViewColor(Parent()->ViewColor()); */ +/*! + \fn color_which BView::ViewUIColor(float* tint) const + \brief Return the current view color constant being used. + + \param tint Optional float pointer in which to store the tint + value used to modify the system color constant. + \return The current view color constant. + + \sa SetViewUIColor(color_which, float) + + \since Haiku R1 +*/ + + /*! \fn void BView::ForceFontAliasing(bool enable) \brief Turn anti-aliasing on and off when printing. @@ -3696,6 +3839,34 @@ SetViewColor(Parent()->ViewColor()); */ +/*! + \fn void BView::DelayedInvalidate(bigtime_t delay) + \brief Sends a message to App Server to redraw the entire view after + a certain, minimum, delay. Repeated calls to this method may be + merged, but the view is guaranteed to be redrawn after the delay + given in the first call of this method. + + \param delay The time, in microseconds, to wait until redrawing the view. + + \since Haiku R1 +*/ + + +/*! + \fn void BView::DelayedInvalidate(bigtime_t delay, BRect invalRect) + \brief Sends a message to App Server to redraw the portion of the view + specified by \a invalRect after a certain, minimum, delay. + Repeated calls to this method may be merged, but the invalidated + rect is guaranteed to be redrawn after the minimum delay given + by the first call of this method. + + \param delay The time, in microseconds, to wait until redrawing the view. + \param invalRect The rectangular area of the view to redraw. + + \since Haiku R1 +*/ + + /*! \fn void BView::InvertRect(BRect rect) \brief Inverts the colors within \a rect. diff --git a/docs/user/interface/Window.dox b/docs/user/interface/Window.dox index 7efc81b37a..4d7653bfbc 100644 --- a/docs/user/interface/Window.dox +++ b/docs/user/interface/Window.dox @@ -1,13 +1,14 @@ /* - * Copyright 2011-2014 Haiku, Inc. All rights reserved. + * Copyright 2011-2015 Haiku, Inc. All rights reserved. * Distributed under the terms of the MIT License. * * Authors: * John Scipione, jscipione@gmail.com + * Joseph Groover, looncraz@looncraz.net * * Corresponds to: - * headers/os/interface/Window.h hrev45799 - * src/kits/interface/Window.cpp hrev45799 + * headers/os/interface/Window.h hrev497** + * src/kits/interface/Window.cpp hrev497** */ @@ -1967,6 +1968,17 @@ */ +/*! + \fn bool BWindow::IsOffscreenWindow() const + \brief Tests if window is used for drawing into a BBitmap. + This is mostly used by the Interface Kit itself. + + \return True if the window is used for drawing into a BBitmap. + + \since Haiku R1 +*/ + + /*! \fn void BWindow::Show() \brief Shows the window on screen, places it frontmost on the screen, adds diff --git a/headers/os/app/AppDefs.h b/headers/os/app/AppDefs.h index 0a70d8b432..d48c58580a 100644 --- a/headers/os/app/AppDefs.h +++ b/headers/os/app/AppDefs.h @@ -67,10 +67,8 @@ enum { B_WORKSPACES_CHANGED = '_WCG', B_WORKSPACE_ACTIVATED = '_WAC', B_ZOOM = '_WZM', - _COLORS_UPDATED = '_CLU', - // Currently internal-use only. Later, public as B_COLORS_UPDATED - _FONTS_UPDATED = '_FNU', - // Currently internal-use only. Later, public as B_FONTS_UPDATED + B_COLORS_UPDATED = '_CLU', + B_FONTS_UPDATED = '_FNU', _APP_MENU_ = '_AMN', _BROWSER_MENUS_ = '_BRM', _MENU_EVENT_ = '_MEV', diff --git a/headers/os/app/Message.h b/headers/os/app/Message.h index 7d7eab4977..077da8913e 100644 --- a/headers/os/app/Message.h +++ b/headers/os/app/Message.h @@ -29,6 +29,7 @@ class BHandler; class BString; class BStringList; struct entry_ref; +struct rgb_color; // Name lengths and Scripting specifiers @@ -154,6 +155,7 @@ public: status_t AddBool(const char* name, bool value); status_t AddFloat(const char* name, float value); status_t AddDouble(const char* name, double value); + status_t AddColor(const char* name, rgb_color value); status_t AddPointer(const char* name, const void* pointer); status_t AddMessenger(const char* name, @@ -241,6 +243,10 @@ public: double* value) const; status_t FindDouble(const char* name, int32 index, double* value) const; + status_t FindColor(const char* name, + rgb_color* value) const; + status_t FindColor(const char* name, int32 index, + rgb_color* value) const; status_t FindPointer(const char* name, void** pointer) const; status_t FindPointer(const char* name, int32 index, @@ -324,6 +330,10 @@ public: status_t ReplaceDouble(const char* name, double value); status_t ReplaceDouble(const char* name, int32 index, double value); + status_t ReplaceColor(const char* name, + rgb_color value); + status_t ReplaceColor(const char* name, int32 index, + rgb_color value); status_t ReplacePointer(const char* name, const void* pointer); status_t ReplacePointer(const char* name, int32 index, @@ -379,6 +389,7 @@ public: bool HasBool(const char* name, int32 n = 0) const; bool HasFloat(const char* name, int32 n = 0) const; bool HasDouble(const char* name, int32 n = 0) const; + bool HasColor(const char* name, int32 n = 0) const; bool HasPointer(const char* name, int32 n = 0) const; bool HasMessenger(const char* name, int32 n = 0) const; @@ -446,6 +457,10 @@ public: double defaultValue) const; double GetDouble(const char* name, int32 index, double defaultValue) const; + rgb_color GetColor(const char* name, + rgb_color defaultValue) const; + rgb_color GetColor(const char* name, int32 index, + rgb_color defaultValue) const; const char* GetString(const char* name, const char* defaultValue = NULL) const; const char* GetString(const char* name, int32 index, @@ -477,6 +492,7 @@ public: status_t SetUInt32(const char* name, uint32 value); status_t SetInt64(const char* name, int64 value); status_t SetUInt64(const char* name, uint64 value); + status_t SetColor(const char* name, rgb_color value); status_t SetPointer(const char* name, const void* value); status_t SetString(const char* name, const char* string); status_t SetString(const char* name, diff --git a/headers/os/interface/Box.h b/headers/os/interface/Box.h index 37bdf88d90..a3020d3602 100644 --- a/headers/os/interface/Box.h +++ b/headers/os/interface/Box.h @@ -1,5 +1,5 @@ /* - * Copyright 2005-2013 Haiku, Inc. All Rights Reserved. + * Copyright 2005-2015 Haiku, Inc. All Rights Reserved. * Distributed under the terms of the MIT License. */ #ifndef _BOX_H @@ -12,8 +12,7 @@ class BBox : public BView { public: BBox(BRect frame, const char* name = NULL, - uint32 resizingMode = B_FOLLOW_LEFT - | B_FOLLOW_TOP, + uint32 resizingMode = B_FOLLOW_LEFT_TOP, uint32 flags = B_WILL_DRAW | B_FRAME_EVENTS | B_NAVIGABLE_JUMP, border_style border = B_FANCY_BORDER); diff --git a/headers/os/interface/Button.h b/headers/os/interface/Button.h index 703bb09e8c..71dfac5255 100644 --- a/headers/os/interface/Button.h +++ b/headers/os/interface/Button.h @@ -1,5 +1,5 @@ /* - * Copyright 2001-2014 Haiku, Inc. All rights reserved. + * Copyright 2001-2015 Haiku, Inc. All rights reserved. * Distributed under the terms of the MIT License. */ #ifndef _BUTTON_H @@ -20,8 +20,7 @@ public: public: BButton(BRect frame, const char* name, const char* label, BMessage* message, - uint32 resizingMode - = B_FOLLOW_LEFT | B_FOLLOW_TOP, + uint32 resizingMode = B_FOLLOW_LEFT_TOP, uint32 flags = B_WILL_DRAW | B_NAVIGABLE | B_FULL_UPDATE_ON_RESIZE); BButton(const char* name, const char* label, diff --git a/headers/os/interface/ChannelControl.h b/headers/os/interface/ChannelControl.h index 3f9e5c8877..7df9cd9592 100644 --- a/headers/os/interface/ChannelControl.h +++ b/headers/os/interface/ChannelControl.h @@ -1,5 +1,5 @@ /* - * Copyright 2008-2009, Haiku, Inc. All rights reserved. + * Copyright 2008-2015, Haiku, Inc. All rights reserved. * Distributed under the terms of the MIT License. */ #ifndef _CHANNEL_CONTROL_H @@ -18,8 +18,7 @@ public: BChannelControl(BRect frame, const char* name, const char* label, BMessage* model, int32 channelCount = 1, - uint32 resizingMode - = B_FOLLOW_LEFT | B_FOLLOW_TOP, + uint32 resizingMode = B_FOLLOW_LEFT_TOP, uint32 flags = B_WILL_DRAW); BChannelControl(const char* name, const char* label, BMessage* model, diff --git a/headers/os/interface/ChannelSlider.h b/headers/os/interface/ChannelSlider.h index 8c3961ba55..5151ef14b1 100644 --- a/headers/os/interface/ChannelSlider.h +++ b/headers/os/interface/ChannelSlider.h @@ -1,5 +1,5 @@ /* - * Copyright 2009, Haiku, Inc. All rights reserved. + * Copyright 2009-2015, Haiku, Inc. All rights reserved. * Distributed under the terms of the MIT License. */ #ifndef _CHANNEL_SLIDER_H @@ -14,15 +14,13 @@ public: BChannelSlider(BRect area, const char* name, const char* label, BMessage* message, int32 channels = 1, - uint32 resizeMode - = B_FOLLOW_LEFT | B_FOLLOW_TOP, + uint32 resizeMode = B_FOLLOW_LEFT_TOP, uint32 flags = B_WILL_DRAW); BChannelSlider(BRect area, const char* name, const char* label, BMessage* message, orientation orientation, int32 channels = 1, - uint32 resizeMode - = B_FOLLOW_LEFT | B_FOLLOW_TOP, + uint32 resizeMode = B_FOLLOW_LEFT_TOP, uint32 flags = B_WILL_DRAW); BChannelSlider(const char* name, const char* label, BMessage* message, diff --git a/headers/os/interface/CheckBox.h b/headers/os/interface/CheckBox.h index 674a701555..056f034548 100644 --- a/headers/os/interface/CheckBox.h +++ b/headers/os/interface/CheckBox.h @@ -1,5 +1,5 @@ /* - * Copyright 2001-2014 Haiku, Inc. All rights reserved. + * Copyright 2001-2015 Haiku, Inc. All rights reserved. * Distributed under the terms of the MIT License. */ #ifndef _CHECK_BOX_H @@ -13,8 +13,7 @@ class BCheckBox : public BControl { public: BCheckBox(BRect frame, const char* name, const char* label, BMessage* message, - uint32 resizingMode - = B_FOLLOW_LEFT | B_FOLLOW_TOP, + uint32 resizingMode = B_FOLLOW_LEFT_TOP, uint32 flags = B_WILL_DRAW | B_NAVIGABLE); BCheckBox(const char* name, const char* label, BMessage* message, uint32 flags diff --git a/headers/os/interface/ControlLook.h b/headers/os/interface/ControlLook.h index 6de91e289d..445f40bf8e 100644 --- a/headers/os/interface/ControlLook.h +++ b/headers/os/interface/ControlLook.h @@ -1,5 +1,5 @@ /* - * Copyright 2009-2012, Haiku, Inc. All rights reserved. + * Copyright 2009-2015, Haiku, Inc. All rights reserved. * Distributed under the terms of the MIT License. */ #ifndef _CONTROL_LOOK_H @@ -85,6 +85,7 @@ public: B_PARTIALLY_ACTIVATED = 1 << 7, // like B_ACTIVATED, but for tri-state B_FLAT = 1 << 8, // flat look (e.g. button background) B_INVALID = 1 << 9, // invalid value, use B_FAILURE_COLOR + B_IS_CONTROL = 1 << 10, // use control colors B_BLEND_FRAME = 1 << 16, }; @@ -328,27 +329,32 @@ public: /*virtual*/ void DrawLabel(BView* view, const char* label, BRect rect, const BRect& updateRect, - const rgb_color& base, uint32 flags); + const rgb_color& base, uint32 flags, + const rgb_color* textColor = NULL); virtual void DrawLabel(BView* view, const char* label, BRect rect, const BRect& updateRect, const rgb_color& base, uint32 flags, - const BAlignment& alignment); + const BAlignment& alignment, + const rgb_color* textColor = NULL); // TODO: Would be nice to have a (non-virtual) version of this method // which takes an array of labels and locations. That would save some // setup with the view graphics state. /*virtual*/ void DrawLabel(BView* view, const char* label, const rgb_color& base, uint32 flags, - const BPoint& where); + const BPoint& where, + const rgb_color* textColor = NULL); void DrawLabel(BView* view, const char* label, const BBitmap* icon, BRect rect, const BRect& updateRect, - const rgb_color& base, uint32 flags); + const rgb_color& base, uint32 flags, + const rgb_color* textColor = NULL); virtual void DrawLabel(BView* view, const char* label, const BBitmap* icon, BRect rect, const BRect& updateRect, const rgb_color& base, uint32 flags, - const BAlignment& alignment); + const BAlignment& alignment, + const rgb_color* textColor = NULL); virtual void GetFrameInsets(frame_type frameType, uint32 flags, float& _left, float& _top, diff --git a/headers/os/interface/GraphicsDefs.h b/headers/os/interface/GraphicsDefs.h index 5e970c0a5b..e98d6deba0 100644 --- a/headers/os/interface/GraphicsDefs.h +++ b/headers/os/interface/GraphicsDefs.h @@ -1,5 +1,5 @@ /* - * Copyright 2008-2012 Haiku, Inc. All rights reserved. + * Copyright 2008-2015 Haiku, Inc. All rights reserved. * Distributed under the terms of the MIT License. */ #ifndef _GRAPHICS_DEFS_H @@ -57,6 +57,8 @@ typedef struct rgb_color { return *this; } + int32 Brightness() const; + inline bool operator==(const rgb_color& other) const { @@ -88,6 +90,11 @@ make_color(uint8 red, uint8 green, uint8 blue, uint8 alpha = 255) #endif +rgb_color mix_color(rgb_color color1, rgb_color color2, uint8 amount); +rgb_color blend_color(rgb_color color1, rgb_color color2, uint8 amount); +rgb_color disable_color(rgb_color color, rgb_color background); + + extern const rgb_color B_TRANSPARENT_COLOR; extern const uint8 B_TRANSPARENT_MAGIC_CMAP8; extern const uint16 B_TRANSPARENT_MAGIC_RGBA15; diff --git a/headers/os/interface/InterfaceDefs.h b/headers/os/interface/InterfaceDefs.h index edfe7fdd23..ed550fb5a8 100644 --- a/headers/os/interface/InterfaceDefs.h +++ b/headers/os/interface/InterfaceDefs.h @@ -11,6 +11,7 @@ class BBitmap; +class BMessage; class BPoint; class BRect; @@ -296,6 +297,7 @@ enum bitmap_drawing_options { // Default UI Colors enum color_which { + B_NO_COLOR = 0, B_PANEL_BACKGROUND_COLOR = 1, B_PANEL_TEXT_COLOR = 10, B_DOCUMENT_BACKGROUND_COLOR = 11, @@ -310,6 +312,11 @@ enum color_which { B_SHINE_COLOR = 18, B_SHADOW_COLOR = 19, + B_LINK_TEXT_COLOR = 33, + B_LINK_HOVER_COLOR = 34, + B_LINK_VISITED_COLOR = 35, + B_LINK_ACTIVE_COLOR = 36, + B_MENU_BACKGROUND_COLOR = 2, B_MENU_SELECTED_BACKGROUND_COLOR = 6, B_MENU_ITEM_TEXT_COLOR = 7, @@ -463,7 +470,10 @@ void set_accept_first_click(bool acceptFirstClick); bool accept_first_click(); rgb_color ui_color(color_which which); +const char* ui_color_name(color_which which); +color_which which_ui_color(const char* name); void set_ui_color(const color_which& which, const rgb_color& color); +void set_ui_colors(const BMessage* colors); rgb_color tint_color(rgb_color color, float tint); extern "C" status_t _init_interface_kit_(); diff --git a/headers/os/interface/LayoutBuilder.h b/headers/os/interface/LayoutBuilder.h index 1c54716748..4ba372c9d3 100644 --- a/headers/os/interface/LayoutBuilder.h +++ b/headers/os/interface/LayoutBuilder.h @@ -457,9 +457,7 @@ Group::Group(BWindow* window, orientation orientation, fLayout(new BGroupLayout(orientation, spacing)) { window->SetLayout(fLayout); - - fLayout->Owner()->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); - // TODO: we get a white background if we don't do this + fLayout->Owner()->AdoptSystemColors(); } @@ -469,9 +467,11 @@ Group::Group(BView* view, orientation orientation, : fLayout(new BGroupLayout(orientation, spacing)) { + + if (view->HasDefaultColors()) + view->AdoptSystemColors(); + view->SetLayout(fLayout); - view->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); - // TODO: we get a white background if we don't do this } @@ -796,9 +796,7 @@ Grid::Grid(BWindow* window, float horizontalSpacing, fLayout(new BGridLayout(horizontalSpacing, verticalSpacing)) { window->SetLayout(fLayout); - - fLayout->Owner()->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); - // TODO: we get a white background if we don't do this + fLayout->Owner()->AdoptSystemColors(); } @@ -808,9 +806,10 @@ Grid::Grid(BView* view, float horizontalSpacing, : fLayout(new BGridLayout(horizontalSpacing, verticalSpacing)) { + if (view->HasDefaultColors()) + view->AdoptSystemColors(); + view->SetLayout(fLayout); - view->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); - // TODO: we get a white background if we don't do this } diff --git a/headers/os/interface/ListView.h b/headers/os/interface/ListView.h index 311fa77dd5..fe8a9afec9 100644 --- a/headers/os/interface/ListView.h +++ b/headers/os/interface/ListView.h @@ -1,5 +1,5 @@ /* - * Copyright 2002-2013 Haiku, Inc. All rights reserved. + * Copyright 2002-2015 Haiku, Inc. All rights reserved. * Distributed under the terms of the MIT License. */ #ifndef _LIST_VIEW_H @@ -26,8 +26,7 @@ public: BListView(BRect frame, const char* name, list_view_type type = B_SINGLE_SELECTION_LIST, - uint32 resizeMask = B_FOLLOW_LEFT - | B_FOLLOW_TOP, + uint32 resizeMask = B_FOLLOW_LEFT_TOP, uint32 flags = B_WILL_DRAW | B_FRAME_EVENTS | B_NAVIGABLE); BListView(const char* name, diff --git a/headers/os/interface/MenuField.h b/headers/os/interface/MenuField.h index bbc95abf2a..d605419af0 100644 --- a/headers/os/interface/MenuField.h +++ b/headers/os/interface/MenuField.h @@ -1,5 +1,5 @@ /* - * Copyright 2006-2013, Haiku, Inc. All rights reserved. + * Copyright 2006-2015, Haiku, Inc. All rights reserved. * Distributed under the terms of the MIT License. */ #ifndef _MENU_FIELD_H @@ -17,14 +17,12 @@ class BMenuField : public BView { public: BMenuField(BRect frame, const char* name, const char* label, BMenu* menu, - uint32 resizingMode = B_FOLLOW_LEFT - | B_FOLLOW_TOP, + uint32 resizingMode = B_FOLLOW_LEFT_TOP, uint32 flags = B_WILL_DRAW | B_NAVIGABLE); BMenuField(BRect frame, const char* name, const char* label, BMenu* menu, bool fixed_size, - uint32 resizingMode = B_FOLLOW_LEFT - | B_FOLLOW_TOP, + uint32 resizingMode = B_FOLLOW_LEFT_TOP, uint32 flags = B_WILL_DRAW | B_NAVIGABLE); BMenuField(const char* name, const char* label, BMenu* menu, diff --git a/headers/os/interface/MultiChannelControl.h b/headers/os/interface/MultiChannelControl.h index 49733d654e..4f4aff03f9 100644 --- a/headers/os/interface/MultiChannelControl.h +++ b/headers/os/interface/MultiChannelControl.h @@ -1,5 +1,5 @@ /* - * Copyright 2009, Haiku, Inc. All rights reserved. + * Copyright 2015, Haiku, Inc. All rights reserved. * Distributed under the terms of the MIT License. */ #ifndef _MULTI_CHANNEL_CONTROL_H @@ -14,8 +14,7 @@ public: BMultiChannelControl(BRect frame, const char* name, const char* label, BMessage* message, int32 channelCount = 1, - uint32 resize = B_FOLLOW_LEFT - | B_FOLLOW_TOP, + uint32 resize = B_FOLLOW_LEFT_TOP, uint32 flags = B_WILL_DRAW); BMultiChannelControl(BMessage* archive); virtual ~BMultiChannelControl(); diff --git a/headers/os/interface/OptionControl.h b/headers/os/interface/OptionControl.h index d038f5fc45..d5f28f373f 100644 --- a/headers/os/interface/OptionControl.h +++ b/headers/os/interface/OptionControl.h @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009, Haiku, Inc. All rights reserved. + * Copyright 2001-2015, Haiku, Inc. All rights reserved. * Distributed under the terms of the MIT License. */ #ifndef _OPTION_CONTROL_H @@ -18,8 +18,7 @@ class BOptionControl : public BControl { public: BOptionControl(BRect frame, const char* name, const char* label, BMessage* message, - uint32 resizeMask = B_FOLLOW_LEFT - | B_FOLLOW_TOP, + uint32 resizeMask = B_FOLLOW_LEFT_TOP, uint32 flags = B_WILL_DRAW); BOptionControl(const char* name, const char* label, BMessage* message, diff --git a/headers/os/interface/OptionPopUp.h b/headers/os/interface/OptionPopUp.h index 12110a7f24..2c6cc3dcfa 100644 --- a/headers/os/interface/OptionPopUp.h +++ b/headers/os/interface/OptionPopUp.h @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009, Haiku, Inc. All rights reserved. + * Copyright 2001-2015, Haiku, Inc. All rights reserved. * Distributed under the terms of the MIT License. */ #ifndef _OPTION_POP_UP_H @@ -16,13 +16,12 @@ class BOptionPopUp : public BOptionControl { public: BOptionPopUp(BRect frame, const char* name, const char* label, BMessage* message, - uint32 resizeMask = B_FOLLOW_LEFT - | B_FOLLOW_TOP, + uint32 resizeMask = B_FOLLOW_LEFT_TOP, uint32 flags = B_WILL_DRAW); BOptionPopUp(BRect frame, const char* name, const char* label, BMessage* message, bool fixed, uint32 resizeMask - = B_FOLLOW_LEFT | B_FOLLOW_TOP, + = B_FOLLOW_LEFT_TOP, uint32 flags = B_WILL_DRAW); BOptionPopUp(const char* name, const char* label, BMessage* message, diff --git a/headers/os/interface/OutlineListView.h b/headers/os/interface/OutlineListView.h index 2dc58ce3f5..2d519da82b 100644 --- a/headers/os/interface/OutlineListView.h +++ b/headers/os/interface/OutlineListView.h @@ -1,5 +1,5 @@ /* - * Copyright 2006-2013, Haiku, Inc. All rights reserved. + * Copyright 2006-2015, Haiku, Inc. All rights reserved. * Distributed under the terms of the MIT License. */ #ifndef _OUTLINE_LIST_VIEW_H @@ -14,8 +14,7 @@ public: BOutlineListView(BRect frame, const char* name, list_view_type type = B_SINGLE_SELECTION_LIST, - uint32 resizingMode - = B_FOLLOW_LEFT | B_FOLLOW_TOP, + uint32 resizingMode = B_FOLLOW_LEFT_TOP, uint32 flags = B_WILL_DRAW | B_FRAME_EVENTS | B_NAVIGABLE); BOutlineListView(const char* name, diff --git a/headers/os/interface/PictureButton.h b/headers/os/interface/PictureButton.h index 904ff467bb..0a21ea94d2 100644 --- a/headers/os/interface/PictureButton.h +++ b/headers/os/interface/PictureButton.h @@ -1,5 +1,5 @@ /* - * Copyright 2001-2008, Haiku, Inc. All rights reserved. + * Copyright 2001-2015, Haiku, Inc. All rights reserved. * Distributed under the terms of the MIT License. */ #ifndef _PICTURE_BUTTON_H @@ -22,8 +22,7 @@ public: BPicture* off, BPicture* on, BMessage* message, uint32 behavior = B_ONE_STATE_BUTTON, - uint32 resizingMode = B_FOLLOW_LEFT - | B_FOLLOW_TOP, + uint32 resizingMode = B_FOLLOW_LEFT_TOP, uint32 flgs = B_WILL_DRAW | B_NAVIGABLE); BPictureButton(BMessage* archive); diff --git a/headers/os/interface/RadioButton.h b/headers/os/interface/RadioButton.h index 6a218db1d9..a1cd200cdb 100644 --- a/headers/os/interface/RadioButton.h +++ b/headers/os/interface/RadioButton.h @@ -1,5 +1,5 @@ /* - * Copyright 2001-2008, Haiku, Inc. All rights reserved. + * Copyright 2001-2015, Haiku, Inc. All rights reserved. * Distributed under the terms of the MIT License. */ #ifndef _RADIO_BUTTON_H @@ -14,8 +14,7 @@ class BRadioButton : public BControl { public: BRadioButton(BRect frame, const char* name, const char* label, BMessage* message, - uint32 resizingMode - = B_FOLLOW_LEFT | B_FOLLOW_TOP, + uint32 resizingMode = B_FOLLOW_LEFT_TOP, uint32 flags = B_WILL_DRAW | B_NAVIGABLE); BRadioButton(const char* name, const char* label, BMessage* message, diff --git a/headers/os/interface/ScrollView.h b/headers/os/interface/ScrollView.h index 7abec2d5f4..d90c758762 100644 --- a/headers/os/interface/ScrollView.h +++ b/headers/os/interface/ScrollView.h @@ -15,8 +15,7 @@ class BScrollView : public BView { public: BScrollView(const char* name, BView* target, - uint32 resizingMode - = B_FOLLOW_LEFT | B_FOLLOW_TOP, + uint32 resizingMode = B_FOLLOW_LEFT_TOP, uint32 flags = 0, bool horizontal = false, bool vertical = false, border_style border = B_FANCY_BORDER); diff --git a/headers/os/interface/Slider.h b/headers/os/interface/Slider.h index 42e81487c9..888bb8f205 100644 --- a/headers/os/interface/Slider.h +++ b/headers/os/interface/Slider.h @@ -1,5 +1,5 @@ /* - * Copyright 2001-2013, Haiku, Inc. All rights reserved. + * Copyright 2001-2015, Haiku, Inc. All rights reserved. * Distributed under the terms of the MIT License. */ #ifndef _SLIDER_H @@ -30,8 +30,7 @@ public: const char* label, BMessage* message, int32 minValue, int32 maxValue, thumb_style thumbType = B_BLOCK_THUMB, - uint32 resizingMode - = B_FOLLOW_LEFT | B_FOLLOW_TOP, + uint32 resizingMode = B_FOLLOW_LEFT_TOP, uint32 flags = B_NAVIGABLE | B_WILL_DRAW | B_FRAME_EVENTS); @@ -40,8 +39,7 @@ public: int32 minValue, int32 maxValue, orientation posture, thumb_style thumbType = B_BLOCK_THUMB, - uint32 resizingMode - = B_FOLLOW_LEFT | B_FOLLOW_TOP, + uint32 resizingMode = B_FOLLOW_LEFT_TOP, uint32 flags = B_NAVIGABLE | B_WILL_DRAW | B_FRAME_EVENTS); diff --git a/headers/os/interface/SplitView.h b/headers/os/interface/SplitView.h index c4d3dd5f19..efa8a47f05 100644 --- a/headers/os/interface/SplitView.h +++ b/headers/os/interface/SplitView.h @@ -1,5 +1,5 @@ /* - * Copyright 2006-2010, Haiku, Inc. All rights reserved. + * Copyright 2006-2015, Haiku, Inc. All rights reserved. * Distributed under the terms of the MIT License. */ #ifndef _SPLIT_VIEW_H @@ -61,6 +61,7 @@ public: bool AddChild(int32 index, BLayoutItem* child, float weight); + virtual void AttachedToWindow(); virtual void Draw(BRect updateRect); virtual void DrawAfterChildren(BRect updateRect); virtual void MouseDown(BPoint where); diff --git a/headers/os/interface/StatusBar.h b/headers/os/interface/StatusBar.h index 789f3a9309..9f17da6c4a 100644 --- a/headers/os/interface/StatusBar.h +++ b/headers/os/interface/StatusBar.h @@ -1,5 +1,5 @@ /* - * Copyright 2006-2009, Haiku, Inc. All rights reserved. + * Copyright 2006-2015, Haiku, Inc. All rights reserved. * Distributed under the terms of the MIT License. */ #ifndef _STATUS_BAR_H @@ -110,8 +110,9 @@ private: float fTextDivider; rgb_color fBarColor; bool fCustomBarHeight; + uint32 fInternalFlags; - uint32 _reserved[5]; + uint32 _reserved[4]; }; #endif // _STATUS_BAR_H diff --git a/headers/os/interface/StringView.h b/headers/os/interface/StringView.h index 820b41a7da..d75dfc2987 100644 --- a/headers/os/interface/StringView.h +++ b/headers/os/interface/StringView.h @@ -13,7 +13,7 @@ class BStringView : public BView { public: BStringView(BRect frame, const char* name, const char* text, uint32 resizingMode - = B_FOLLOW_LEFT | B_FOLLOW_TOP, + = B_FOLLOW_LEFT_TOP, uint32 flags = B_WILL_DRAW); BStringView(const char* name, const char* text, uint32 flags = B_WILL_DRAW); diff --git a/headers/os/interface/TextControl.h b/headers/os/interface/TextControl.h index 49fd7b5321..3c8792bc71 100644 --- a/headers/os/interface/TextControl.h +++ b/headers/os/interface/TextControl.h @@ -21,8 +21,7 @@ public: BTextControl(BRect frame, const char* name, const char* label, const char* initialText, BMessage* message, - uint32 resizeMask - = B_FOLLOW_LEFT | B_FOLLOW_TOP, + uint32 resizeMask = B_FOLLOW_LEFT_TOP, uint32 flags = B_WILL_DRAW | B_NAVIGABLE); BTextControl(const char* name, const char* label, const char* initialText, diff --git a/headers/os/interface/View.h b/headers/os/interface/View.h index 84079e1cb1..ddec3dfba8 100644 --- a/headers/os/interface/View.h +++ b/headers/os/interface/View.h @@ -107,6 +107,7 @@ inline uint32 _rule_(uint32 r1, uint32 r2, uint32 r3, uint32 r4) #define B_FOLLOW_TOP_BOTTOM _rule_(_VIEW_TOP_, 0, _VIEW_BOTTOM_, 0) #define B_FOLLOW_V_CENTER _rule_(_VIEW_CENTER_, 0, _VIEW_CENTER_, 0) +#define B_FOLLOW_LEFT_TOP B_FOLLOW_TOP | B_FOLLOW_LEFT class BBitmap; class BCursor; @@ -242,32 +243,38 @@ public: void SetViewCursor(const BCursor* cursor, bool sync = true); + bool HasDefaultColors() const; + bool HasSystemColors() const; + void AdoptParentColors(); + void AdoptSystemColors(); + void AdoptViewColors(BView* view); + virtual void SetViewColor(rgb_color color); void SetViewColor(uchar red, uchar green, uchar blue, uchar alpha = 255); rgb_color ViewColor() const; + void SetViewUIColor(color_which which, + float tint = B_NO_TINT); + color_which ViewUIColor(float* tint = NULL) const; + void SetViewBitmap(const BBitmap* bitmap, BRect srcRect, BRect dstRect, - uint32 followFlags - = B_FOLLOW_TOP | B_FOLLOW_LEFT, + uint32 followFlags = B_FOLLOW_LEFT_TOP, uint32 options = B_TILE_BITMAP); void SetViewBitmap(const BBitmap* bitmap, - uint32 followFlags - = B_FOLLOW_TOP | B_FOLLOW_LEFT, + uint32 followFlags = B_FOLLOW_LEFT_TOP, uint32 options = B_TILE_BITMAP); void ClearViewBitmap(); status_t SetViewOverlay(const BBitmap* overlay, BRect srcRect, BRect dstRect, rgb_color* colorKey, - uint32 followFlags - = B_FOLLOW_TOP | B_FOLLOW_LEFT, + uint32 followFlags = B_FOLLOW_LEFT_TOP, uint32 options = 0); status_t SetViewOverlay(const BBitmap* overlay, rgb_color* colorKey, - uint32 followFlags - = B_FOLLOW_TOP | B_FOLLOW_LEFT, + uint32 followFlags = B_FOLLOW_LEFT_TOP, uint32 options = 0); void ClearViewOverlay(); @@ -276,11 +283,19 @@ public: uchar alpha = 255); rgb_color HighColor() const; + void SetHighUIColor(color_which which, + float tint = B_NO_TINT); + color_which HighUIColor(float* tint = NULL) const; + virtual void SetLowColor(rgb_color color); void SetLowColor(uchar red, uchar green, uchar blue, uchar alpha = 255); rgb_color LowColor() const; + void SetLowUIColor(color_which which, + float tint = B_NO_TINT); + color_which LowUIColor(float* tint = NULL) const; + void SetLineMode(cap_mode lineCap, join_mode lineJoin, float miterLimit = B_DEFAULT_MITER_LIMIT); @@ -495,6 +510,9 @@ public: void Invalidate(BRect invalRect); void Invalidate(const BRegion* invalRegion); void Invalidate(); + void DelayedInvalidate(bigtime_t delay); + void DelayedInvalidate(bigtime_t delay, + BRect invalRect); void SetDiskMode(char* filename, long offset); @@ -691,9 +709,11 @@ private: void _Activate(bool state); void _Attach(); + void _ColorsUpdated(BMessage* message); void _Detach(); void _Draw(BRect screenUpdateRect); void _DrawAfterChildren(BRect screenUpdateRect); + void _FontsUpdated(BMessage*); void _Pulse(); void _UpdateStateForRemove(); diff --git a/headers/os/interface/Window.h b/headers/os/interface/Window.h index 586bfb7f06..c59a5494b2 100644 --- a/headers/os/interface/Window.h +++ b/headers/os/interface/Window.h @@ -272,7 +272,7 @@ public: void InvalidateLayout(bool descendants = false); void Layout(bool force); - + bool IsOffscreenWindow() const; private: // FBC padding and forbidden methods virtual void _ReservedWindow2(); diff --git a/headers/private/app/ServerProtocol.h b/headers/private/app/ServerProtocol.h index d5f42f0907..73b0a7cfac 100644 --- a/headers/private/app/ServerProtocol.h +++ b/headers/private/app/ServerProtocol.h @@ -293,11 +293,18 @@ enum { AS_VIEW_SET_PEN_SIZE, AS_VIEW_GET_PEN_SIZE, AS_VIEW_SET_HIGH_COLOR, + AS_VIEW_SET_HIGH_UI_COLOR, AS_VIEW_SET_LOW_COLOR, + AS_VIEW_SET_LOW_UI_COLOR, AS_VIEW_SET_VIEW_COLOR, + AS_VIEW_SET_VIEW_UI_COLOR, AS_VIEW_GET_HIGH_COLOR, + AS_VIEW_GET_HIGH_UI_COLOR, AS_VIEW_GET_LOW_COLOR, + AS_VIEW_GET_LOW_UI_COLOR, AS_VIEW_GET_VIEW_COLOR, + AS_VIEW_GET_VIEW_UI_COLOR, + AS_VIEW_PRINT_ALIASING, AS_VIEW_CLIP_TO_PICTURE, AS_VIEW_GET_CLIP_REGION, @@ -314,6 +321,7 @@ enum { AS_VIEW_COPY_BITS, AS_VIEW_DRAW_PICTURE, AS_VIEW_INVALIDATE_RECT, + AS_VIEW_DELAYED_INVALIDATE_RECT, AS_VIEW_INVALIDATE_REGION, AS_VIEW_INVERT_RECT, AS_VIEW_MOVE_TO, @@ -355,6 +363,9 @@ enum { AS_VIEW_CLIP_TO_RECT, AS_VIEW_CLIP_TO_SHAPE, + // Internal messages + AS_COLOR_MAP_UPDATED, + AS_LAST_CODE }; diff --git a/headers/private/app/ServerProtocolStructs.h b/headers/private/app/ServerProtocolStructs.h index 8eec0aa9c1..ff986366e1 100644 --- a/headers/private/app/ServerProtocolStructs.h +++ b/headers/private/app/ServerProtocolStructs.h @@ -18,6 +18,10 @@ struct ViewSetStateInfo { float penSize; rgb_color highColor; rgb_color lowColor; + color_which whichHighColor; + color_which whichLowColor; + float whichHighColorTint; + float whichLowColorTint; ::pattern pattern; drawing_mode drawingMode; BPoint origin; diff --git a/headers/private/app/ServerReadOnlyMemory.h b/headers/private/app/ServerReadOnlyMemory.h index 238498111b..f62e3c0236 100644 --- a/headers/private/app/ServerReadOnlyMemory.h +++ b/headers/private/app/ServerReadOnlyMemory.h @@ -13,11 +13,11 @@ #include -// Update this constant with the largest color constant excluding -// B_SUCCESS_COLOR and B_FAILURE_COLOR. -// If you add a constant with index greater than 100 you'll have to add -// to the second operand. -static const int32 kColorWhichCount = B_SCROLL_BAR_THUMB_COLOR + 3; +// Update kColorWhichLastContinuous with the largest color constant which +// leaves no gaps in the color_which integer values. +static const int32 kColorWhichLastContinuous = B_LINK_ACTIVE_COLOR; +static const int32 kColorWhichCount = kColorWhichLastContinuous + 3; + // + 1 for index-offset, + 2 for B_SUCCESS_COLOR, B_FAILURE_COLOR struct server_read_only_memory { diff --git a/headers/private/interface/AbstractSpinner.h b/headers/private/interface/AbstractSpinner.h index 9d961b1260..e822299d37 100644 --- a/headers/private/interface/AbstractSpinner.h +++ b/headers/private/interface/AbstractSpinner.h @@ -39,7 +39,7 @@ class BAbstractSpinner : public BControl { public: BAbstractSpinner(BRect frame, const char* name, const char* label, BMessage* message, - uint32 resizingMode = B_FOLLOW_LEFT | B_FOLLOW_TOP, + uint32 resizingMode = B_FOLLOW_LEFT_TOP, uint32 flags = B_WILL_DRAW | B_NAVIGABLE); BAbstractSpinner(const char* name, const char* label, BMessage* message, diff --git a/headers/private/interface/ColorTools.h b/headers/private/interface/ColorTools.h deleted file mode 100644 index 8f7e78e66e..0000000000 --- a/headers/private/interface/ColorTools.h +++ /dev/null @@ -1,79 +0,0 @@ -/* -Open Tracker License - -Terms and Conditions - -Copyright (c) 1991-2000, Be Incorporated. All rights reserved. - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies -of the Software, and to permit persons to whom the Software is furnished to do -so, subject to the following conditions: - -The above copyright notice and this permission notice applies to all licensees -and shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF TITLE, MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -BE INCORPORATED BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF, OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of Be Incorporated shall not be -used in advertising or otherwise to promote the sale, use or other dealings in -this Software without prior written authorization from Be Incorporated. - -Tracker(TM), Be(R), BeOS(R), and BeIA(TM) are trademarks or registered trademarks -of Be Incorporated in the United States and other countries. Other brand product -names are registered trademarks or trademarks of their respective holders. -All rights reserved. -*/ - -/******************************************************************************* -/ -/ File: ColorTools.h -/ -/ Description: Additional experimental color manipulation functions. -/ -/ Copyright 2000, Be Incorporated, All Rights Reserved -/ -*******************************************************************************/ - - -#ifndef _COLOR_TOOLS_H -#define _COLOR_TOOLS_H - -#include - -#if B_BEOS_VERSION <= B_BEOS_VERSION_5 - -namespace BExperimental { - -// Mix two colors together, ignoring their relative alpha channels. -// If amount is 0, the result is color1; if 255, the result is color2; -// if another value, it is somewhere in-between. The resulting alpha -// channel is mixed exactly like the other color channels. -rgb_color mix_color(rgb_color color1, rgb_color color2, uint8 amount); - -// Blend two colors together, weighting by their relative alpha channels. -// The resulting color is the same as mix_color(), except that the amount -// used from color1 and color2's color channels is dependent on that color's -// alpha channel. For example, if color1.alpha is 0 and color2.alpha is -// 255, the resulting red, green, and blue values will be the same as those -// in color2, regardless of 'amount'. -rgb_color blend_color(rgb_color color1, rgb_color color2, uint8 amount); - -// Return a color that is the disabled representation of 'color' when drawn -// on a solid color 'background'. -rgb_color disable_color(rgb_color color, rgb_color background); - -} // namespace BExperimental - -using namespace BExperimental; - -#endif - -#endif diff --git a/headers/private/interface/ColumnListView.h b/headers/private/interface/ColumnListView.h index 76fd0bc916..5cfdf13a76 100644 --- a/headers/private/interface/ColumnListView.h +++ b/headers/private/interface/ColumnListView.h @@ -63,10 +63,10 @@ class RecursiveOutlineIterator; } // ns BPrivate -class BField; -class BRow; class BColumn; class BColumnListView; +class BField; +class BRow; enum LatchType { B_NO_LATCH = 0, @@ -353,6 +353,7 @@ public: // Appearance (NEW STYLE) void SetColor(ColumnListViewColor colorIndex, rgb_color color); + void ResetColors(); void SetFont(ColumnListViewFont fontIndex, const BFont* font, uint32 mask = B_FONT_ALL); @@ -396,12 +397,14 @@ protected: private: void _Init(); + void _UpdateColors(); void _GetChildViewRects(const BRect& bounds, BRect& titleRect, BRect& outlineRect, BRect& vScrollBarRect, BRect& hScrollBarRect); rgb_color fColorList[B_COLOR_TOTAL]; + bool fCustomColors; BPrivate::TitleView* fTitleView; BPrivate::OutlineView* fOutlineView; BList fColumns; diff --git a/headers/private/interface/DecimalSpinner.h b/headers/private/interface/DecimalSpinner.h index 46161c70bd..9c97367550 100644 --- a/headers/private/interface/DecimalSpinner.h +++ b/headers/private/interface/DecimalSpinner.h @@ -16,7 +16,7 @@ class BDecimalSpinner : public BAbstractSpinner { public: BDecimalSpinner(BRect frame, const char* name, const char* label, BMessage* message, - uint32 resizingMode = B_FOLLOW_LEFT | B_FOLLOW_TOP, + uint32 resizingMode = B_FOLLOW_LEFT_TOP, uint32 flags = B_WILL_DRAW | B_NAVIGABLE); BDecimalSpinner(const char* name, const char* label, BMessage* message, diff --git a/headers/private/interface/ViewPrivate.h b/headers/private/interface/ViewPrivate.h index 7d642d7836..676454a03a 100644 --- a/headers/private/interface/ViewPrivate.h +++ b/headers/private/interface/ViewPrivate.h @@ -42,8 +42,11 @@ enum { B_VIEW_PATTERN_BIT = 0x00020000, B_VIEW_TRANSFORM_BIT = 0x00040000, B_VIEW_FILL_RULE_BIT = 0x00080000, + B_VIEW_WHICH_VIEW_COLOR_BIT = 0x00100000, + B_VIEW_WHICH_LOW_COLOR_BIT = 0x00200000, + B_VIEW_WHICH_HIGH_COLOR_BIT = 0x00400000, - B_VIEW_ALL_BITS = 0x000fffff, + B_VIEW_ALL_BITS = 0x00ffffff, // these used for archiving only B_VIEW_RESIZE_BIT = 0x00001000, @@ -107,6 +110,15 @@ class ViewState { // This one is not affected by pop state/push state rgb_color view_color; + color_which which_view_color; + float which_view_color_tint; + + // these are cached values + color_which which_low_color; + float which_low_color_tint; + + color_which which_high_color; + float which_high_color_tint; ::pattern pattern; diff --git a/headers/private/shared/CalendarView.h b/headers/private/shared/CalendarView.h index b7f0dcee66..d48c9915df 100644 --- a/headers/private/shared/CalendarView.h +++ b/headers/private/shared/CalendarView.h @@ -26,8 +26,7 @@ namespace BPrivate { class BCalendarView : public BView, public BInvoker { public: BCalendarView(BRect frame, const char* name, - uint32 resizeMask = B_FOLLOW_LEFT - | B_FOLLOW_TOP, + uint32 resizeMask = B_FOLLOW_LEFT_TOP, uint32 flags = B_WILL_DRAW | B_FRAME_EVENTS | B_NAVIGABLE); diff --git a/src/kits/app/Application.cpp b/src/kits/app/Application.cpp index c1c3f33b62..4de804b6c6 100644 --- a/src/kits/app/Application.cpp +++ b/src/kits/app/Application.cpp @@ -1044,6 +1044,8 @@ BApplication::DispatchMessage(BMessage* message, BHandler* handler) return; } + message->PrintToStream(); + switch (message->what) { case B_ARGV_RECEIVED: _ArgvReceived(message); @@ -1102,6 +1104,23 @@ BApplication::DispatchMessage(BMessage* message, BHandler* handler) break; } + case B_COLORS_UPDATED: + { + AutoLocker listLock(gLooperList); + if (!listLock.IsLocked()) + break; + + BWindow* window = NULL; + uint32 count = gLooperList.CountLoopers(); + for (uint32 index = 0; index < count; ++index) { + window = dynamic_cast(gLooperList.LooperAt(index)); + if (window == NULL || (window != NULL && window->fOffscreen)) + continue; + window->PostMessage(message); + } + break; + } + case _SHOW_DRAG_HANDLES_: { bool show; diff --git a/src/kits/app/Message.cpp b/src/kits/app/Message.cpp index d1824937e7..eac16f4b33 100644 --- a/src/kits/app/Message.cpp +++ b/src/kits/app/Message.cpp @@ -22,6 +22,7 @@ #include #include #include +#include #include #include #include @@ -735,6 +736,14 @@ BMessage::_PrintToStream(const char* indent) const break; } + case B_RGB_32_BIT_TYPE: + { + rgb_color* color = (rgb_color*)pointer; + printf("rgb_color(%u, %u, %u, %u)\n", color->red, + color->green, color->blue, color->alpha); + break; + } + default: { printf("(type = '%.4s')(size = %ld)\n", (char*)&value, @@ -2494,6 +2503,7 @@ DEFINE_FUNCTIONS(uint64, UInt64, B_UINT64_TYPE); DEFINE_FUNCTIONS(bool, Bool, B_BOOL_TYPE); DEFINE_FUNCTIONS(float, Float, B_FLOAT_TYPE); DEFINE_FUNCTIONS(double, Double, B_DOUBLE_TYPE); +DEFINE_FUNCTIONS(rgb_color, Color, B_RGB_32_BIT_TYPE); #undef DEFINE_FUNCTIONS @@ -2577,6 +2587,7 @@ DEFINE_SET_GET_FUNCTIONS(uint64, UInt64, B_UINT64_TYPE); DEFINE_SET_GET_FUNCTIONS(bool, Bool, B_BOOL_TYPE); DEFINE_SET_GET_FUNCTIONS(float, Float, B_FLOAT_TYPE); DEFINE_SET_GET_FUNCTIONS(double, Double, B_DOUBLE_TYPE); +DEFINE_SET_GET_FUNCTIONS(rgb_color, Color, B_RGB_32_BIT_TYPE); #undef DEFINE_SET_GET_FUNCTION diff --git a/src/kits/interface/ColorTools.cpp b/src/kits/interface/ColorTools.cpp deleted file mode 100644 index e4aea31624..0000000000 --- a/src/kits/interface/ColorTools.cpp +++ /dev/null @@ -1,110 +0,0 @@ -/* -Open Tracker License - -Terms and Conditions - -Copyright (c) 1991-2000, Be Incorporated. All rights reserved. - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies -of the Software, and to permit persons to whom the Software is furnished to do -so, subject to the following conditions: - -The above copyright notice and this permission notice applies to all licensees -and shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF TITLE, MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -BE INCORPORATED BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF, OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of Be Incorporated shall not be -used in advertising or otherwise to promote the sale, use or other dealings in -this Software without prior written authorization from Be Incorporated. - -Tracker(TM), Be(R), BeOS(R), and BeIA(TM) are trademarks or registered trademarks -of Be Incorporated in the United States and other countries. Other brand product -names are registered trademarks or trademarks of their respective holders. -All rights reserved. -*/ - -/******************************************************************************* -/ -/ File: ColorTools.cpp -/ -/ Description: Additional experimental color manipulation functions. -/ -/ Copyright 2000, Be Incorporated, All Rights Reserved -/ -*******************************************************************************/ - -#include "ColorTools.h" - -#if B_BEOS_VERSION <= B_BEOS_VERSION_MAUI - -namespace BExperimental { - -#if DEBUG -#define DB_INLINE -#else -#define DB_INLINE inline -#endif - -static DB_INLINE void mix_color_func(rgb_color* target, const rgb_color other, uint8 amount) -{ - target->red = (uint8)( ((int16(other.red)-int16(target->red))*amount)/255 - + target->red ); - target->green = (uint8)( ((int16(other.green)-int16(target->green))*amount)/255 - + target->green ); - target->blue = (uint8)( ((int16(other.blue)-int16(target->blue))*amount)/255 - + target->blue ); - target->alpha = (uint8)( ((int16(other.alpha)-int16(target->alpha))*amount)/255 - + target->alpha ); -} - -static DB_INLINE void blend_color_func(rgb_color* target, const rgb_color other, uint8 amount) -{ - const uint8 alphaMix = (uint8)( ((int16(other.alpha)-int16(255-target->alpha))*amount)/255 - + (255-target->alpha) ); - target->red = (uint8)( ((int16(other.red)-int16(target->red))*alphaMix)/255 - + target->red ); - target->green = (uint8)( ((int16(other.green)-int16(target->green))*alphaMix)/255 - + target->green ); - target->blue = (uint8)( ((int16(other.blue)-int16(target->blue))*alphaMix)/255 - + target->blue ); - target->alpha = (uint8)( ((int16(other.alpha)-int16(target->alpha))*amount)/255 - + target->alpha ); -} - -static DB_INLINE void disable_color_func(rgb_color* target, const rgb_color background) -{ - blend_color_func(target, background, 255-70); -} - -// -------------------------------------------------------------------------- - -rgb_color mix_color(rgb_color color1, rgb_color color2, uint8 amount) -{ - mix_color_func(&color1, color2, amount); - return color1; -} - -rgb_color blend_color(rgb_color color1, rgb_color color2, uint8 amount) -{ - blend_color_func(&color1, color2, amount); - return color1; -} - -rgb_color disable_color(rgb_color color, rgb_color background) -{ - disable_color_func(&color, background); - return color; -} - -} - -#endif diff --git a/src/kits/interface/GraphicsDefs.cpp b/src/kits/interface/GraphicsDefs.cpp index db59bd596f..b40e395b7d 100644 --- a/src/kits/interface/GraphicsDefs.cpp +++ b/src/kits/interface/GraphicsDefs.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2008, Haiku. + * Copyright 2001-2015, Haiku. * Distributed under the terms of the MIT License. * * Authors: @@ -36,6 +36,58 @@ const uint32 B_TRANSPARENT_MAGIC_RGBA32_BIG = 0x77747700; const struct screen_id B_MAIN_SCREEN_ID = {0}; +// rgb_color +int32 +rgb_color::Brightness() const +{ + return ((int32)red * 41 + (int32)green * 187 + (int32)blue * 28) >> 8; +} + + +// Mix two colors without respect for their alpha values +rgb_color +mix_color(rgb_color color1, rgb_color color2, uint8 amount) +{ + color1.red = (uint8)(((int16(color2.red) - int16(color1.red)) * amount) + / 255 + color1.red); + color1.green = (uint8)(((int16(color2.green) - int16(color1.green)) + * amount) / 255 + color1.green); + color1.blue = (uint8)(((int16(color2.blue) - int16(color1.blue)) * amount) + / 255 + color1.blue ); + color1.alpha = (uint8)(((int16(color2.alpha) - int16(color1.alpha)) + * amount) / 255 + color1.alpha ); + + return color1; +} + + +// Mix two colors, respecting their alpha values. +rgb_color +blend_color(rgb_color color1, rgb_color color2, uint8 amount) +{ + const uint8 alphaMix = (uint8)(((int16(color2.alpha) - int16(255 + - color1.alpha)) * amount) / 255 + (255 - color1.alpha)); + + color1.red = (uint8)(((int16(color2.red) - int16(color1.red)) * alphaMix) + / 255 + color1.red ); + color1.green = (uint8)(((int16(color2.green) - int16(color1.green)) + * alphaMix) / 255 + color1.green); + color1.blue = (uint8)(((int16(color2.blue) - int16(color1.blue)) + * alphaMix) / 255 + color1.blue); + color1.alpha = (uint8)(((int16(color2.alpha) - int16(color1.alpha)) + * amount) / 255 + color1.alpha); + + return color1; +} + + +rgb_color +disable_color(rgb_color color, rgb_color background) +{ + return mix_color(color, background, 185); +} + + status_t get_pixel_size_for(color_space space, size_t *pixelChunk, size_t *rowAlignment, size_t *pixelsPerChunk) diff --git a/src/kits/interface/InterfaceDefs.cpp b/src/kits/interface/InterfaceDefs.cpp index 880f786858..97017b31e4 100644 --- a/src/kits/interface/InterfaceDefs.cpp +++ b/src/kits/interface/InterfaceDefs.cpp @@ -8,6 +8,7 @@ * Axel Dörfler, axeld@pinc-software.de * Michael Lotz * Wim van der Meer + * Joseph Groover */ @@ -39,6 +40,7 @@ #include #include #include +#include #include #include #include @@ -102,6 +104,10 @@ static const rgb_color _kDefaultColors[kColorWhichCount] = { {0, 0, 0, 255}, // B_LIST_ITEM_TEXT_COLOR {0, 0, 0, 255}, // B_LIST_SELECTED_ITEM_TEXT_COLOR {216, 216, 216, 255}, // B_SCROLL_BAR_THUMB_COLOR + {51, 102, 187, 255}, // B_LINK_TEXT_COLOR + {102, 152, 203, 255}, // B_LINK_HOVER_COLOR + {145, 112, 155, 255}, // B_LINK_VISITED_COLOR + {121, 142, 203, 255}, // B_LINK_ACTIVE_COLOR // 100... {46, 204, 64, 255}, // B_SUCCESS_COLOR {255, 65, 54, 255}, // B_FAILURE_COLOR @@ -110,6 +116,50 @@ static const rgb_color _kDefaultColors[kColorWhichCount] = { const rgb_color* BPrivate::kDefaultColors = &_kDefaultColors[0]; +static const char* kColorNames[kColorWhichCount] = { + "B_PANEL_BACKGROUND_COLOR", + "B_MENU_BACKGROUND_COLOR", + "B_WINDOW_TAB_COLOR", + "B_KEYBOARD_NAVIGATION_COLOR", + "B_DESKTOP_COLOR", + "B_MENU_SELECTED_BACKGROUND_COLOR", + "B_MENU_ITEM_TEXT_COLOR", + "B_MENU_SELECTED_ITEM_TEXT_COLOR", + "B_MENU_SELECTED_BORDER_COLOR", + "B_PANEL_TEXT_COLOR", + "B_DOCUMENT_BACKGROUND_COLOR", + "B_DOCUMENT_TEXT_COLOR", + "B_CONTROL_BACKGROUND_COLOR", + "B_CONTROL_TEXT_COLOR", + "B_CONTROL_BORDER_COLOR", + "B_CONTROL_HIGHLIGHT_COLOR", + "B_NAVIGATION_PULSE_COLOR", + "B_SHINE_COLOR", + "B_SHADOW_COLOR", + "B_TOOLTIP_BACKGROUND_COLOR", + "B_TOOLTIP_TEXT_COLOR", + "B_WINDOW_TEXT_COLOR", + "B_WINDOW_INACTIVE_TAB_COLOR", + "B_WINDOW_INACTIVE_TEXT_COLOR", + "B_WINDOW_BORDER_COLOR", + "B_WINDOW_INACTIVE_BORDER_COLOR", + "B_CONTROL_MARK_COLOR", + "B_LIST_BACKGROUND_COLOR", + "B_LIST_SELECTED_BACKGROUND_COLOR", + "B_LIST_ITEM_TEXT_COLOR", + "B_LIST_SELECTED_ITEM_TEXT_COLOR", + "B_SCROLL_BAR_THUMB_COLOR", + "B_LINK_TEXT_COLOR", + "B_LINK_HOVER_COLOR", + "B_LINK_VISITED_COLOR", + "B_LINK_ACTIVE_COLOR", + // 100... + "B_SUCCESS_COLOR", + "B_FAILURE_COLOR", + NULL +}; + + namespace BPrivate { @@ -1079,14 +1129,51 @@ ui_color(color_which which) if (be_app != NULL) { server_read_only_memory* shared = BApplication::Private::ServerReadOnlyMemory(); - if (shared != NULL) + if (shared != NULL) { + // check for unset colors + if (shared->colors[index] == B_TRANSPARENT_COLOR) + shared->colors[index] = kDefaultColors[index]; + return shared->colors[index]; + } } return kDefaultColors[index]; } +const char* +ui_color_name(color_which which) +{ + // Suppress warnings for B_NO_COLOR. + if (which == B_NO_COLOR) + return NULL; + + int32 index = color_which_to_index(which); + if (index < 0 || index >= kColorWhichCount) { + fprintf(stderr, "ui_color_name(): unknown color_which %d\n", which); + return NULL; + } + + return kColorNames[index]; +} + + +color_which +which_ui_color(const char* name) +{ + if (name == NULL) + return B_NO_COLOR; + + for (int32 index = 0; index < kColorWhichCount; ++index) { + if (!strcmp(kColorNames[index], name)) + return index_to_color_which(index); + } + + return B_NO_COLOR; +} + + void set_ui_color(const color_which &which, const rgb_color &color) { @@ -1096,7 +1183,10 @@ set_ui_color(const color_which &which, const rgb_color &color) return; } - BPrivate::AppServerLink link; + if (ui_color(which) == color) + return; + + BPrivate::DesktopLink link; link.StartMessage(AS_SET_UI_COLOR); link.Attach(which); link.Attach(color); @@ -1104,6 +1194,48 @@ set_ui_color(const color_which &which, const rgb_color &color) } +void +set_ui_colors(const BMessage* colors) +{ + if (colors == NULL) + return; + + int32 count = 0; + int32 index = 0; + char* name = NULL; + type_code type; + rgb_color color; + color_which which = B_NO_COLOR; + + BPrivate::DesktopLink desktop; + if (desktop.InitCheck() != B_OK) + return; + + desktop.StartMessage(AS_SET_UI_COLORS); + desktop.Attach(false); + + // Only colors with names that map to system colors will get through. + while (colors->GetInfo(B_RGB_32_BIT_TYPE, index, &name, &type) == B_OK) { + + which = which_ui_color(name); + ++index; + + if (which == B_NO_COLOR || colors->FindColor(name, &color) != B_OK) + continue; + + desktop.Attach(which); + desktop.Attach(color); + ++count; + } + + if (count == 0) + return; + + desktop.Attach(B_NO_COLOR); + desktop.Flush(); +} + + rgb_color tint_color(rgb_color color, float tint) { diff --git a/src/kits/interface/Jamfile b/src/kits/interface/Jamfile index c02b07b8d2..561005e328 100644 --- a/src/kits/interface/Jamfile +++ b/src/kits/interface/Jamfile @@ -57,7 +57,6 @@ for architectureObject in [ MultiArchSubDirSetup ] { CheckBox.cpp ColorConversion.cpp ColorControl.cpp - ColorTools.cpp Control.cpp ControlLook.cpp DecorInfo.cpp diff --git a/src/kits/interface/View.cpp b/src/kits/interface/View.cpp index 0a0f2b4e98..21b563f1c0 100644 --- a/src/kits/interface/View.cpp +++ b/src/kits/interface/View.cpp @@ -8,6 +8,7 @@ * Adrian Oanca, adioanca@cotty.iren.ro * Ingo Weinhold. ingo_weinhold@gmx.de * Julian Harnath, julian.harnath@rwth-aachen.de + * Joseph Groover, looncraz@looncraz.net */ @@ -141,6 +142,14 @@ ViewState::ViewState() high_color = (rgb_color){ 0, 0, 0, 255 }; low_color = (rgb_color){ 255, 255, 255, 255 }; view_color = low_color; + which_view_color = B_NO_COLOR; + which_view_color_tint = B_NO_TINT; + + which_high_color = B_NO_COLOR; + which_high_color_tint = B_NO_TINT; + + which_low_color = B_NO_COLOR; + which_low_color_tint = B_NO_TINT; pattern = B_SOLID_HIGH; drawing_mode = B_OP_COPY; @@ -220,6 +229,10 @@ ViewState::UpdateServerState(BPrivate::PortLink &link) info.penSize = pen_size; info.highColor = high_color; info.lowColor = low_color; + info.whichHighColor = which_high_color; + info.whichLowColor = which_low_color; + info.whichHighColorTint = which_high_color_tint; + info.whichLowColorTint = which_low_color_tint; info.pattern = pattern; info.drawingMode = drawing_mode; info.origin = origin; @@ -456,7 +469,7 @@ BView::BView(BMessage* archive) | B_FONT_SHEAR | B_FONT_ROTATION); } - int32 color; + int32 color = 0; if (archive->FindInt32("_color", 0, &color) == B_OK) SetHighColor(get_rgb_color(color)); if (archive->FindInt32("_color", 1, &color) == B_OK) @@ -464,6 +477,29 @@ BView::BView(BMessage* archive) if (archive->FindInt32("_color", 2, &color) == B_OK) SetViewColor(get_rgb_color(color)); + float tint = B_NO_TINT; + if (archive->FindInt32("_uicolor", 0, &color) == B_OK + && color != B_NO_COLOR) { + if (archive->FindFloat("_uitint", 0, &tint) != B_OK) + tint = B_NO_TINT; + + SetHighUIColor((color_which)color, tint); + } + if (archive->FindInt32("_uicolor", 1, &color) == B_OK + && color != B_NO_COLOR) { + if (archive->FindFloat("_uitint", 1, &tint) != B_OK) + tint = B_NO_TINT; + + SetLowUIColor((color_which)color, tint); + } + if (archive->FindInt32("_uicolor", 2, &color) == B_OK + && color != B_NO_COLOR) { + if (archive->FindFloat("_uitint", 2, &tint) != B_OK) + tint = B_NO_TINT; + + SetViewUIColor((color_which)color, tint); + } + uint32 evMask; uint32 options; if (archive->FindInt32("_evmask", 0, (int32*)&evMask) == B_OK @@ -595,6 +631,20 @@ BView::Archive(BMessage* data, bool deep) const if (ret == B_OK) ret = data->AddInt32("_color", get_uint32_color(ViewColor())); + if (ret == B_OK) + ret = data->AddInt32("_uicolor", (int32)HighUIColor()); + if (ret == B_OK) + ret = data->AddInt32("_uicolor", (int32)LowUIColor()); + if (ret == B_OK) + ret = data->AddInt32("_uicolor", (int32)ViewUIColor()); + + if (ret == B_OK) + ret = data->AddFloat("_uitint", fState->which_high_color_tint); + if (ret == B_OK) + ret = data->AddFloat("_uitint", fState->which_low_color_tint); + if (ret == B_OK) + ret = data->AddFloat("_uitint", fState->which_view_color_tint); + // NOTE: we do not use this flag any more // if ( 1 ){ // ret = data->AddInt32("_dbuf", 1); @@ -2304,6 +2354,8 @@ BView::PenSize() const void BView::SetHighColor(rgb_color color) { + SetHighUIColor(B_NO_COLOR); + // are we up-to-date already? if (fState->IsValid(B_VIEW_HIGH_COLOR_BIT) && fState->high_color == color) @@ -2345,9 +2397,73 @@ BView::HighColor() const } +void +BView::SetHighUIColor(color_which which, float tint) +{ + if (fState->IsValid(B_VIEW_WHICH_HIGH_COLOR_BIT) + && fState->which_high_color == which + && fState->which_high_color_tint == tint) + return; + + if (fOwner != NULL) { + _CheckLockAndSwitchCurrent(); + + fOwner->fLink->StartMessage(AS_VIEW_SET_HIGH_UI_COLOR); + fOwner->fLink->Attach(which); + fOwner->fLink->Attach(tint); + + fState->valid_flags |= B_VIEW_WHICH_HIGH_COLOR_BIT; + } + + fState->which_high_color = which; + fState->which_high_color_tint = tint; + + if (which != B_NO_COLOR) { + fState->archiving_flags |= B_VIEW_WHICH_HIGH_COLOR_BIT; + fState->archiving_flags &= ~B_VIEW_HIGH_COLOR_BIT; + fState->valid_flags |= B_VIEW_HIGH_COLOR_BIT; + + fState->high_color = tint_color(ui_color(which), tint); + } else { + fState->valid_flags &= ~B_VIEW_HIGH_COLOR_BIT; + fState->archiving_flags &= ~B_VIEW_WHICH_HIGH_COLOR_BIT; + } +} + + +color_which +BView::HighUIColor(float* tint) const +{ + if (!fState->IsValid(B_VIEW_WHICH_HIGH_COLOR_BIT) + && fOwner != NULL) { + _CheckLockAndSwitchCurrent(); + + fOwner->fLink->StartMessage(AS_VIEW_GET_HIGH_UI_COLOR); + + int32 code; + if (fOwner->fLink->FlushWithReply(code) == B_OK + && code == B_OK) { + fOwner->fLink->Read(&fState->which_high_color); + fOwner->fLink->Read(&fState->which_high_color_tint); + fOwner->fLink->Read(&fState->high_color); + + fState->valid_flags |= B_VIEW_WHICH_HIGH_COLOR_BIT; + fState->valid_flags |= B_VIEW_HIGH_COLOR_BIT; + } + } + + if (tint != NULL) + *tint = fState->which_high_color_tint; + + return fState->which_high_color; +} + + void BView::SetLowColor(rgb_color color) { + SetLowUIColor(B_NO_COLOR); + if (fState->IsValid(B_VIEW_LOW_COLOR_BIT) && fState->low_color == color) return; @@ -2388,10 +2504,151 @@ BView::LowColor() const } +void +BView::SetLowUIColor(color_which which, float tint) +{ + if (fState->IsValid(B_VIEW_WHICH_LOW_COLOR_BIT) + && fState->which_low_color == which + && fState->which_low_color_tint == tint) + return; + + if (fOwner != NULL) { + _CheckLockAndSwitchCurrent(); + + fOwner->fLink->StartMessage(AS_VIEW_SET_LOW_UI_COLOR); + fOwner->fLink->Attach(which); + fOwner->fLink->Attach(tint); + + fState->valid_flags |= B_VIEW_WHICH_LOW_COLOR_BIT; + } + + fState->which_low_color = which; + fState->which_low_color_tint = tint; + + if (which != B_NO_COLOR) { + fState->archiving_flags |= B_VIEW_WHICH_LOW_COLOR_BIT; + fState->archiving_flags &= ~B_VIEW_LOW_COLOR_BIT; + fState->valid_flags |= B_VIEW_LOW_COLOR_BIT; + + fState->low_color = tint_color(ui_color(which), tint); + } else { + fState->valid_flags &= ~B_VIEW_LOW_COLOR_BIT; + fState->archiving_flags &= ~B_VIEW_WHICH_LOW_COLOR_BIT; + } +} + + +color_which +BView::LowUIColor(float* tint) const +{ + if (!fState->IsValid(B_VIEW_WHICH_LOW_COLOR_BIT) + && fOwner != NULL) { + _CheckLockAndSwitchCurrent(); + + fOwner->fLink->StartMessage(AS_VIEW_GET_LOW_UI_COLOR); + + int32 code; + if (fOwner->fLink->FlushWithReply(code) == B_OK + && code == B_OK) { + fOwner->fLink->Read(&fState->which_low_color); + fOwner->fLink->Read(&fState->which_low_color_tint); + fOwner->fLink->Read(&fState->low_color); + + fState->valid_flags |= B_VIEW_WHICH_LOW_COLOR_BIT; + fState->valid_flags |= B_VIEW_LOW_COLOR_BIT; + } + } + + if (tint != NULL) + *tint = fState->which_low_color_tint; + + return fState->which_low_color; +} + + +bool +BView::HasDefaultColors() const +{ + // If we don't have any of these flags, then we have default colors + uint32 testMask = B_VIEW_VIEW_COLOR_BIT | B_VIEW_HIGH_COLOR_BIT + | B_VIEW_LOW_COLOR_BIT | B_VIEW_WHICH_VIEW_COLOR_BIT + | B_VIEW_WHICH_HIGH_COLOR_BIT | B_VIEW_WHICH_LOW_COLOR_BIT; + + return (fState->archiving_flags & testMask) == 0; +} + + +bool +BView::HasSystemColors() const +{ + return fState->which_view_color == B_PANEL_BACKGROUND_COLOR + && fState->which_high_color == B_PANEL_TEXT_COLOR + && fState->which_low_color == B_PANEL_BACKGROUND_COLOR + && fState->which_view_color_tint == B_NO_TINT + && fState->which_high_color_tint == B_NO_TINT + && fState->which_low_color_tint == B_NO_TINT; +} + + +void +BView::AdoptParentColors() +{ + AdoptViewColors(Parent()); +} + + +void +BView::AdoptSystemColors() +{ + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); + SetLowUIColor(B_PANEL_BACKGROUND_COLOR); + SetHighUIColor(B_PANEL_TEXT_COLOR); +} + + +void +BView::AdoptViewColors(BView* view) +{ + if (view == NULL || !view->LockLooper()) + return; + + float tint = B_NO_TINT; + float viewTint = tint; + color_which viewWhich = view->ViewUIColor(&viewTint); + + // View color + if (viewWhich != B_NO_COLOR) + SetViewUIColor(viewWhich, viewTint); + else + SetViewColor(view->ViewColor()); + + // Low color + color_which which = view->LowUIColor(&tint); + if (which != B_NO_COLOR) + SetLowUIColor(which, tint); + else if (viewWhich != B_NO_COLOR) + SetLowUIColor(viewWhich, viewTint); + else + SetLowColor(view->LowColor()); + + // High color + which = view->HighUIColor(&tint); + if (which != B_NO_COLOR) + SetHighUIColor(which, tint); + else + SetHighColor(view->HighColor()); + + view->UnlockLooper(); +} + + void BView::SetViewColor(rgb_color color) { - if (fState->IsValid(B_VIEW_VIEW_COLOR_BIT) && fState->view_color == color) + SetViewUIColor(B_NO_COLOR); + + if (fState->IsValid(B_VIEW_VIEW_COLOR_BIT) + && fState->view_color == color) return; if (fOwner) { @@ -2431,6 +2688,71 @@ BView::ViewColor() const } +void +BView::SetViewUIColor(color_which which, float tint) +{ + if (fState->IsValid(B_VIEW_WHICH_VIEW_COLOR_BIT) + && fState->which_view_color == which + && fState->which_view_color_tint == tint) + return; + + if (fOwner != NULL) { + _CheckLockAndSwitchCurrent(); + + fOwner->fLink->StartMessage(AS_VIEW_SET_VIEW_UI_COLOR); + fOwner->fLink->Attach(which); + fOwner->fLink->Attach(tint); + + fState->valid_flags |= B_VIEW_WHICH_VIEW_COLOR_BIT; + } + + fState->which_view_color = which; + fState->which_view_color_tint = tint; + + if (which != B_NO_COLOR) { + fState->archiving_flags |= B_VIEW_WHICH_VIEW_COLOR_BIT; + fState->archiving_flags &= ~B_VIEW_VIEW_COLOR_BIT; + fState->valid_flags |= B_VIEW_VIEW_COLOR_BIT; + + fState->view_color = tint_color(ui_color(which), tint); + } else { + fState->valid_flags &= ~B_VIEW_VIEW_COLOR_BIT; + fState->archiving_flags &= ~B_VIEW_WHICH_VIEW_COLOR_BIT; + } + + if (!fState->IsValid(B_VIEW_WHICH_LOW_COLOR_BIT)) + SetLowUIColor(which, tint); +} + + +color_which +BView::ViewUIColor(float* tint) const +{ + if (!fState->IsValid(B_VIEW_WHICH_VIEW_COLOR_BIT) + && fOwner != NULL) { + _CheckLockAndSwitchCurrent(); + + fOwner->fLink->StartMessage(AS_VIEW_GET_VIEW_UI_COLOR); + + int32 code; + if (fOwner->fLink->FlushWithReply(code) == B_OK + && code == B_OK) { + fOwner->fLink->Read(&fState->which_view_color); + fOwner->fLink->Read(&fState->which_view_color_tint); + fOwner->fLink->Read(&fState->view_color); + + fState->valid_flags |= B_VIEW_WHICH_VIEW_COLOR_BIT; + fState->valid_flags |= B_VIEW_VIEW_COLOR_BIT; + } + } + + if (tint != NULL) + *tint = fState->which_view_color_tint; + + return fState->which_view_color; +} + + void BView::ForceFontAliasing(bool enable) { @@ -4099,6 +4421,35 @@ BView::Invalidate() } +void +BView::DelayedInvalidate(bigtime_t delay) +{ + DelayedInvalidate(delay, Bounds()); +} + + +void +BView::DelayedInvalidate(bigtime_t delay, BRect invalRect) +{ + if (fOwner == NULL) + return; + + invalRect.left = (int)invalRect.left; + invalRect.top = (int)invalRect.top; + invalRect.right = (int)invalRect.right; + invalRect.bottom = (int)invalRect.bottom; + if (!invalRect.IsValid()) + return; + + _CheckLockAndSwitchCurrent(); + + fOwner->fLink->StartMessage(AS_VIEW_DELAYED_INVALIDATE_RECT); + fOwner->fLink->Attach(system_time() + delay); + fOwner->fLink->Attach(invalRect); + fOwner->fLink->Flush(); +} + + void BView::InvertRect(BRect rect) { @@ -4598,6 +4949,11 @@ BView::MessageReceived(BMessage* message) break; } + // prevent message repeats + case B_COLORS_UPDATED: + case B_FONTS_UPDATED: + break; + default: BHandler::MessageReceived(message); break; @@ -4940,7 +5296,6 @@ BView::InvalidateLayout(bool descendants) || fLayoutData->fLayoutInvalidationDisabled > 0) { return; } - fLayoutData->fLayoutValid = false; fLayoutData->fMinMaxValid = false; LayoutInvalidated(descendants); @@ -4957,7 +5312,8 @@ BView::InvalidateLayout(bool descendants) else _InvalidateParentLayout(); - if (fTopLevelView && fOwner) + if (fTopLevelView + && fOwner != NULL) fOwner->PostMessage(B_LAYOUT_WINDOW); } @@ -5266,6 +5622,12 @@ BView::_InitData(BRect frame, const char* name, uint32 resizingMode, fLayoutData = new LayoutData; fToolTip = NULL; + + if ((flags & B_SUPPORTS_LAYOUT) != 0) { + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); + SetLowUIColor(ViewUIColor()); + SetHighUIColor(B_PANEL_TEXT_COLOR); + } } @@ -5545,7 +5907,7 @@ BView::_ResizeBy(int32 deltaWidth, int32 deltaHeight) } // layout the children - if (fFlags & B_SUPPORTS_LAYOUT) { + if ((fFlags & B_SUPPORTS_LAYOUT) != 0) { Relayout(); } else { for (BView* child = fFirstChild; child; child = child->fNextSibling) @@ -5624,7 +5986,26 @@ BView::_Activate(bool active) void BView::_Attach() { + if (fOwner != NULL) { + // unmask state flags to force [re]syncing with the app_server + fState->valid_flags &= ~(B_VIEW_WHICH_VIEW_COLOR_BIT + | B_VIEW_WHICH_LOW_COLOR_BIT | B_VIEW_WHICH_HIGH_COLOR_BIT); + + if (fState->which_view_color != B_NO_COLOR) + SetViewUIColor(fState->which_view_color, + fState->which_view_color_tint); + + if (fState->which_high_color != B_NO_COLOR) + SetHighUIColor(fState->which_high_color, + fState->which_high_color_tint); + + if (fState->which_low_color != B_NO_COLOR) + SetLowUIColor(fState->which_low_color, + fState->which_low_color_tint); + } + AttachedToWindow(); + fAttached = true; // after giving the view a chance to do this itself, @@ -5653,6 +6034,46 @@ BView::_Attach() } +void +BView::_ColorsUpdated(BMessage* message) +{ + if (fTopLevelView + && fLayoutData->fLayout != NULL + && !fState->IsValid(B_VIEW_WHICH_VIEW_COLOR_BIT)) { + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); + SetHighUIColor(B_PANEL_TEXT_COLOR); + } + + rgb_color color; + + const char* colorName = ui_color_name(fState->which_view_color); + if (colorName != NULL && message->FindColor(colorName, &color) == B_OK) { + fState->view_color = tint_color(color, fState->which_view_color_tint); + fState->valid_flags |= B_VIEW_VIEW_COLOR_BIT; + } + + colorName = ui_color_name(fState->which_low_color); + if (colorName != NULL && message->FindColor(colorName, &color) == B_OK) { + fState->low_color = tint_color(color, fState->which_low_color_tint); + fState->valid_flags |= B_VIEW_LOW_COLOR_BIT; + } + + colorName = ui_color_name(fState->which_high_color); + if (colorName != NULL && message->FindColor(colorName, &color) == B_OK) { + fState->high_color = tint_color(color, fState->which_high_color_tint); + fState->valid_flags |= B_VIEW_HIGH_COLOR_BIT; + } + + MessageReceived(message); + + for (BView* child = fFirstChild; child != NULL; + child = child->fNextSibling) + child->_ColorsUpdated(message); + + Invalidate(); +} + + void BView::_Detach() { @@ -5744,6 +6165,18 @@ BView::_DrawAfterChildren(BRect updateRect) } +void +BView::_FontsUpdated(BMessage* message) +{ + MessageReceived(message); + + for (BView* child = fFirstChild; child != NULL; + child = child->fNextSibling) { + child->_FontsUpdated(message); + } +} + + void BView::_Pulse() { diff --git a/src/kits/interface/Window.cpp b/src/kits/interface/Window.cpp index 694be5fa3c..3f71c54422 100644 --- a/src/kits/interface/Window.cpp +++ b/src/kits/interface/Window.cpp @@ -47,6 +47,7 @@ #include #include #include +#include #include #include #include @@ -733,7 +734,7 @@ BWindow::MessageReceived(BMessage* message) // we're talking to the server application using our own // communication channel (fLink) - we better make sure no one // interferes by locking that channel (which AppServerLink does - // implicetly) + // implicitly) fLink->StartMessage(AS_CREATE_WINDOW); @@ -1439,6 +1440,20 @@ FrameMoved(origin); break; } + case B_COLORS_UPDATED: + { + fTopView->_ColorsUpdated(message); + target->MessageReceived(message); + break; + } + + case B_FONTS_UPDATED: + { + fTopView->_FontsUpdated(message); + target->MessageReceived(message); + break; + } + default: BLooper::DispatchMessage(message, target); break; @@ -2699,6 +2714,10 @@ BWindow::Run() void BWindow::SetLayout(BLayout* layout) { + // Adopt layout's colors for fTopView + if (layout != NULL) + fTopView->AdoptViewColors(layout->View()); + fTopView->SetLayout(layout); } @@ -2727,6 +2746,13 @@ BWindow::Layout(bool force) } +bool +BWindow::IsOffscreenWindow() const +{ + return fOffscreen; +} + + status_t BWindow::GetSupportedSuites(BMessage* data) { @@ -3205,8 +3231,7 @@ BWindow::_CreateTopView() BRect frame = fFrame.OffsetToCopy(B_ORIGIN); // TODO: what to do here about std::nothrow? - fTopView = new BView(frame, "fTopView", - B_FOLLOW_ALL, B_WILL_DRAW); + fTopView = new BView(frame, "fTopView", B_FOLLOW_ALL, B_WILL_DRAW); fTopView->fTopLevelView = true; //inhibit check_lock() @@ -3222,7 +3247,6 @@ BWindow::_CreateTopView() // we can't use AddChild() because this is the top view fTopView->_CreateSelf(); - STRACE(("BuildTopView ended\n")); } diff --git a/src/servers/app/DelayedMessage.cpp b/src/servers/app/DelayedMessage.cpp new file mode 100644 index 0000000000..dd8139d812 --- /dev/null +++ b/src/servers/app/DelayedMessage.cpp @@ -0,0 +1,871 @@ +/* + * Copyright 2015, Haiku. + * Distributed under the terms of the MIT License. + * + * Authors: + * Joseph Groover +*/ + + +#include "DelayedMessage.h" + +#include +#include +#include + +#include +#include + +#include +#include + + +// DelayedMessageSender constants +static const int32 kWakeupMessage = AS_LAST_CODE + 2048; +static const int32 kExitMessage = kWakeupMessage + 1; + +static const char* kName = "DMT is here for you, eventually..."; +static int32 kPriority = B_URGENT_DISPLAY_PRIORITY; +static int32 kPortCapacity = 10; + + +//! Data attachment structure. +struct Attachment { + Attachment(const void* data, size_t size); + ~Attachment(); + + const void* constData; + void* data; + size_t size; +}; + + +typedef BObjectList AttachmentList; + + +/*! \class ScheduledMessage + \brief Responsible for sending of delayed message. +*/ +class ScheduledMessage { +public: + ScheduledMessage(DelayedMessage& message); + ~ScheduledMessage(); + + int32 CountTargets() const; + + void Finalize(); + bigtime_t ScheduledTime() const; + int32 SendMessage(); + bool IsValid() const; + bool Merge(DelayedMessage& message); + + status_t SendMessageToPort(port_id port); + bool operator<(const ScheduledMessage& other) const; + + DelayedMessageData* fData; +}; + + +/*! \class DelayedMessageSender DelayedMessageSender.h + \brief Responsible for scheduling and sending of delayed messages +*/ +class DelayedMessageSender { +public: + explicit DelayedMessageSender(); + ~DelayedMessageSender(); + + status_t ScheduleMessage (DelayedMessage& message); + + int32 CountDelayedMessages() const; + int64 CountSentMessages() const; + +private: + void _MessageLoop(); + int32 _SendDelayedMessages(); + static int32 _thread_func(void* sender); + void _Wakeup(bigtime_t whatTime); + +private: + typedef BObjectList ScheduledList; + + mutable BLocker fLock; + ScheduledList fMessages; + + bigtime_t fScheduledWakeup; + + int32 fWakeupRetry; + thread_id fThread; + port_id fPort; + + mutable int64 fSentCount; +}; + + +DelayedMessageSender gDelayedMessageSender; + + +/*! \class DelayedMessageData DelayedMessageSender.h + \brief Owns DelayedMessage data, allocates memory and copies data only + when needed, +*/ +class DelayedMessageData { + typedef BObjectList PortList; + typedef void(*FailureCallback)(int32 code, port_id port, void* data); +public: + DelayedMessageData(int32 code, bigtime_t delay, + bool isSpecificTime); + ~DelayedMessageData(); + + bool AddTarget(port_id port); + void RemoveTarget(port_id port); + int32 CountTargets() const; + + void MergeTargets(DelayedMessageData* other); + + bool CopyData(); + bool MergeData(DelayedMessageData* other); + + bool IsValid() const; + // Only valid after a successful CopyData(). + + status_t Attach(const void* data, size_t size); + + bool Compare(Attachment* one, Attachment* two, + int32 index); + + void SetMerge(DMMergeMode mode, uint32 mask); + void SendFailed(port_id port); + + void SetFailureCallback(FailureCallback callback, + void* data); + + // Accessors. + int32& Code() {return fCode;} + const int32& Code() const {return fCode;} + + bigtime_t& ScheduledTime() {return fScheduledTime;} + const bigtime_t& ScheduledTime() const {return fScheduledTime;} + + AttachmentList& Attachments() {return fAttachments;} + const AttachmentList& Attachments() const {return fAttachments;} + + PortList& Targets() {return fTargets;} + const PortList& Targets() const {return fTargets;} + +private: + // Data members. + + int32 fCode; + bigtime_t fScheduledTime; + bool fValid; + + AttachmentList fAttachments; + PortList fTargets; + + DMMergeMode fMergeMode; + uint32 fMergeMask; + + FailureCallback fFailureCallback; + void* fFailureData; +}; + + +// #pragma mark - + + + +DelayedMessage::DelayedMessage(int32 code, bigtime_t delay, + bool isSpecificTime) + : + fData(new(std::nothrow) DelayedMessageData(code, delay < DM_MINIMUM_DELAY + ? DM_MINIMUM_DELAY : delay, isSpecificTime)), + fHandedOff(false) +{ +} + + +DelayedMessage::~DelayedMessage() +{ + // Message is canceled without a handoff. + if (!fHandedOff) + delete fData; +} + + +bool +DelayedMessage::AddTarget(port_id port) +{ + if (fData == NULL || fHandedOff) + return false; + + return fData->AddTarget(port); +} + + +void +DelayedMessage::SetMerge(DMMergeMode mode, uint32 match) +{ + if (fData == NULL || fHandedOff) + return; + + fData->SetMerge(mode, match); +} + + +void +DelayedMessage::SetFailureCallback(void (*callback)(int32, port_id, void*), + void* data) +{ + if (fData == NULL || fHandedOff) + return; + + fData->SetFailureCallback(callback, data); +} + + +//! Attach data to message. Memory is not allocated nor copied until handoff. +status_t +DelayedMessage::Attach(const void* data, size_t size) +{ + if (fData == NULL) + return B_NO_MEMORY; + + if (fHandedOff) + return B_ERROR; + + if (data == NULL || size == 0) + return B_BAD_VALUE; + + return fData->Attach(data, size); +} + + +status_t +DelayedMessage::Flush() +{ + if (fData == NULL) + return B_NO_MEMORY; + + if (fHandedOff) + return B_ERROR; + + if (fData->CountTargets() == 0) + return B_BAD_VALUE; + + return gDelayedMessageSender.ScheduleMessage(*this); +} + + +/*! The data handoff occurs upon scheduling and reduces copies to only + when a message is actually scheduled. Canceled messages have low cost. +*/ +DelayedMessageData* +DelayedMessage::HandOff() +{ + if (fData == NULL || fHandedOff) + return NULL; + + if (fData->CopyData()) { + fHandedOff = true; + return fData; + } + + return NULL; +} + + +// #pragma mark - + + +Attachment::Attachment(const void* _data, size_t _size) + : + constData(_data), + data(NULL), + size(_size) +{ +} + + +Attachment::~Attachment() +{ + free(data); +} + + +// #pragma mark - + + +DelayedMessageData::DelayedMessageData(int32 code, bigtime_t delay, + bool isSpecificTime) + : + fCode(code), + fScheduledTime(delay + isSpecificTime ? 0 : system_time()), + fValid(false), + + fAttachments(3, true), + fTargets(4, true), + + fMergeMode(DM_NO_MERGE), + fMergeMask(DM_DATA_DEFAULT), + + fFailureCallback(NULL), + fFailureData(NULL) +{ +} + + +DelayedMessageData::~DelayedMessageData() +{ +} + + +bool +DelayedMessageData::AddTarget(port_id port) +{ + if (port <= 0) + return false; + + // check for duplicates: + for (int32 index = 0; index < fTargets.CountItems(); ++index) { + if (port == *fTargets.ItemAt(index)) + return false; + } + + return fTargets.AddItem(new(std::nothrow) port_id(port)); +} + + +void +DelayedMessageData::RemoveTarget(port_id port) +{ + if (port == B_BAD_PORT_ID) + return; + + // Search for a match by value. + for (int32 index = 0; index < fTargets.CountItems(); ++index) { + port_id* target = fTargets.ItemAt(index); + if (port == *target) { + fTargets.RemoveItem(target, true); + return; + } + } +} + + +int32 +DelayedMessageData::CountTargets() const +{ + return fTargets.CountItems(); +} + + +void +DelayedMessageData::MergeTargets(DelayedMessageData* other) +{ + // Failure to add one target does not abort the loop! + // It could just mean we already have the target. + for (int32 index = 0; index < other->fTargets.CountItems(); ++index) + AddTarget(*(other->fTargets.ItemAt(index))); +} + + +//! Copy data from original location - merging failed +bool +DelayedMessageData::CopyData() +{ + Attachment* attached = NULL; + + for (int32 index = 0; index < fAttachments.CountItems(); ++index) { + attached = fAttachments.ItemAt(index); + + if (attached == NULL || attached->data != NULL) + return false; + + attached->data = malloc(attached->size); + if (attached->data == NULL) + return false; + + memcpy(attached->data, attached->constData, attached->size); + } + + fValid = true; + return true; +} + + +bool +DelayedMessageData::MergeData(DelayedMessageData* other) +{ + if (!fValid + || other == NULL + || other->fCode != fCode + || fMergeMode == DM_NO_MERGE + || other->fMergeMode == DM_NO_MERGE + || other->fMergeMode != fMergeMode + || other->fAttachments.CountItems() != fAttachments.CountItems()) + return false; + + if (other->fMergeMode == DM_MERGE_CANCEL) { + MergeTargets(other); + return true; + } + + // Compare data + Attachment* attached = NULL; + Attachment* otherAttached = NULL; + + for (int32 index = 0; index < fAttachments.CountItems(); ++index) { + attached = fAttachments.ItemAt(index); + otherAttached = other->fAttachments.ItemAt(index); + + if (attached == NULL + || otherAttached == NULL + || attached->data == NULL + || otherAttached->constData == NULL + || attached->size != otherAttached->size) + return false; + + // Compares depending upon mode & flags + if (!Compare(attached, otherAttached, index)) + return false; + } + + // add any targets not included in the existing message! + MergeTargets(other); + + // since these are duplicates, we need not copy anything... + if (fMergeMode == DM_MERGE_DUPLICATES) + return true; + + // DM_MERGE_REPLACE: + + // Import the new data! + for (int32 index = 0; index < fAttachments.CountItems(); ++index) { + attached = fAttachments.ItemAt(index); + otherAttached = other->fAttachments.ItemAt(index); + + // We already have allocated our memory, but the other data + // has not. So this reduces memory allocations. + memcpy(attached->data, otherAttached->constData, attached->size); + } + + return true; +} + + +bool +DelayedMessageData::IsValid() const +{ + return fValid; +} + + +status_t +DelayedMessageData::Attach(const void* data, size_t size) +{ + // Sanity checking already performed + Attachment* attach = new(std::nothrow) Attachment(data, size); + + if (attach == NULL) + return B_NO_MEMORY; + + if (fAttachments.AddItem(attach) == false) { + delete attach; + return B_ERROR; + } + + return B_OK; +} + + +bool +DelayedMessageData::Compare(Attachment* one, Attachment* two, int32 index) +{ + if (fMergeMode == DM_MERGE_DUPLICATES) { + + // Default-policy: all data must match + if (fMergeMask == DM_DATA_DEFAULT || (fMergeMask & 1 << index) != 0) + return memcmp(one->data, two->constData, one->size) == 0; + + } else if (fMergeMode == DM_MERGE_REPLACE) { + + // Default Policy: no data needs to match + if (fMergeMask != DM_DATA_DEFAULT && (fMergeMask & 1 << index) != 0) + return memcmp(one->data, two->constData, one->size) == 0; + } + + return true; +} + + +void +DelayedMessageData::SetMerge(DMMergeMode mode, uint32 mask) +{ + fMergeMode = mode; + fMergeMask = mask; +} + + +void +DelayedMessageData::SendFailed(port_id port) +{ + if (fFailureCallback != NULL) + fFailureCallback(fCode, port, fFailureData); +} + + +void +DelayedMessageData::SetFailureCallback(FailureCallback callback, void* data) +{ + fFailureCallback = callback; + fFailureData = data; +} + + +// #pragma mark - + + +ScheduledMessage::ScheduledMessage(DelayedMessage& message) + : + fData(message.HandOff()) +{ +} + + +ScheduledMessage::~ScheduledMessage() +{ + delete fData; +} + + +int32 +ScheduledMessage::CountTargets() const +{ + if (fData == NULL) + return 0; + + return fData->CountTargets(); +} + + +bigtime_t +ScheduledMessage::ScheduledTime() const +{ + if (fData == NULL) + return 0; + + return fData->ScheduledTime(); +} + + +//! Send our message and data to their intended target(s) +int32 +ScheduledMessage::SendMessage() +{ + if (fData == NULL || !fData->IsValid()) + return 0; + + int32 sent = 0; + for (int32 index = 0; index < fData->Targets().CountItems(); ++index) { + port_id port = *(fData->Targets().ItemAt(index)); + status_t error = SendMessageToPort(port); + + if (error == B_OK) { + ++sent; + continue; + } + + if (error != B_TIMED_OUT) + fData->SendFailed(port); + } + + return sent; +} + + +status_t +ScheduledMessage::SendMessageToPort(port_id port) +{ + if (fData == NULL || !fData->IsValid()) + return B_BAD_DATA; + + if (port == B_BAD_PORT_ID) + return B_BAD_VALUE; + + BPrivate::LinkSender sender(port); + if (sender.StartMessage(fData->Code()) != B_OK) + return B_ERROR; + + AttachmentList& list = fData->Attachments(); + Attachment* attached = NULL; + status_t error = B_OK; + + // The data has been checked already, so we assume it is all good + for (int32 index = 0; index < list.CountItems(); ++index) { + attached = list.ItemAt(index); + + error = sender.Attach(attached->data, attached->size); + if (error != B_OK) { + sender.CancelMessage(); + return error; + } + } + + // We do not want to ever hold up the sender thread for too long, we + // set a 1 second sending delay, which should be more than enough for + // 99.992% of all cases. Approximately. + error = sender.Flush(1000000); + + if (error == B_OK || error == B_BAD_PORT_ID) + fData->RemoveTarget(port); + + return error; +} + + +bool +ScheduledMessage::IsValid() const +{ + return fData != NULL && fData->IsValid(); +} + + +bool +ScheduledMessage::Merge(DelayedMessage& other) +{ + if (!IsValid()) + return false; + + return fData->MergeData(other.Data()); +} + + +bool +ScheduledMessage::operator<(const ScheduledMessage& other) const +{ + if (!IsValid() || !other.IsValid()) + return false; + + return fData->ScheduledTime() < other.fData->ScheduledTime(); +} + + +int +CompareMessages(const ScheduledMessage* one, const ScheduledMessage* two) +{ + return *one < *two; +} + + +// #pragma mark - + + +DelayedMessageSender::DelayedMessageSender() + : + fLock("DelayedMessageSender"), + fMessages(20, true), + fScheduledWakeup(B_INFINITE_TIMEOUT), + fWakeupRetry(0), + fThread(spawn_thread(&_thread_func, kName, kPriority, this)), + fPort(create_port(kPortCapacity, "DelayedMessageSender")), + fSentCount(0) +{ + resume_thread(fThread); +} + + +DelayedMessageSender::~DelayedMessageSender() +{ + // write the exit message to our port + write_port(fPort, kExitMessage, NULL, 0); + + status_t status = B_OK; + while (wait_for_thread(fThread, &status) == B_OK); + + // We now know the thread has exited, it is safe to cleanup + delete_port(fPort); +} + + +status_t +DelayedMessageSender::ScheduleMessage(DelayedMessage& message) +{ + BAutolock _(fLock); + + // Can we merge with a pending message? + ScheduledMessage* pending = NULL; + for (int32 index = 0; index < fMessages.CountItems(); ++index) { + pending = fMessages.ItemAt(index); + if (pending->Merge(message)) + return B_OK; + } + + // Guess not, add it to our list! + ScheduledMessage* scheduled = new(std::nothrow) ScheduledMessage(message); + + if (scheduled == NULL) + return B_NO_MEMORY; + + if (!scheduled->IsValid()) + return B_BAD_DATA; + + if (fMessages.AddItem(scheduled)) { + fMessages.SortItems(&CompareMessages); + _Wakeup(scheduled->ScheduledTime()); + return B_OK; + } + + return B_ERROR; +} + + +int32 +DelayedMessageSender::CountDelayedMessages() const +{ + BAutolock _(fLock); + return fMessages.CountItems(); +} + + +int64 +DelayedMessageSender::CountSentMessages() const +{ + return atomic_get64(&fSentCount); +} + + +void +DelayedMessageSender::_MessageLoop() +{ + int32 code = -1; + status_t status = B_TIMED_OUT; + bigtime_t timeout = B_INFINITE_TIMEOUT; + + while (true) { + timeout = atomic_get64(&fScheduledWakeup) - (system_time() + + (DM_MINIMUM_DELAY / 2)); + + if (timeout > DM_MINIMUM_DELAY / 4) { + status = read_port_etc(fPort, &code, NULL, 0, B_RELATIVE_TIMEOUT, + timeout); + } else + status = B_TIMED_OUT; + + if (status == B_INTERRUPTED) + continue; + + if (status == B_TIMED_OUT) { + _SendDelayedMessages(); + continue; + } + + if (status == B_OK) { + switch (code) { + case kWakeupMessage: + continue; + + case kExitMessage: + return; + + // TODO: trace unhandled messages + default: + continue; + } + } + + // port deleted? + if (status < B_OK) + break; + } +} + + +int32 +DelayedMessageSender::_thread_func(void* sender) +{ + (static_cast(sender))->_MessageLoop(); + return 0; +} + + +//! Sends pending messages, call ONLY from sender thread! +int32 +DelayedMessageSender::_SendDelayedMessages() +{ + // avoid sending messages during times of contention + if (fLock.LockWithTimeout(30000) != B_OK) { + atomic_add64(&fScheduledWakeup, DM_MINIMUM_DELAY); + return 0; + } + + atomic_set64(&fScheduledWakeup, B_INFINITE_TIMEOUT); + + if (fMessages.CountItems() == 0) { + fLock.Unlock(); + return 0; + } + + int32 sent = 0; + + bigtime_t time = system_time() + DM_MINIMUM_DELAY / 2; + // capture any that may be on the verge of being sent. + + BObjectList remove; + + ScheduledMessage* message = NULL; + for (int32 index = 0; index < fMessages.CountItems(); ++index) { + message = fMessages.ItemAt(index); + + if (message->ScheduledTime() > time) { + atomic_set64(&fScheduledWakeup, message->ScheduledTime()); + break; + } + + int32 sendCount = message->SendMessage(); + if (sendCount > 0) + sent += sendCount; + + if (message->CountTargets() == 0) + remove.AddItem(message); + } + + // remove serviced messages + for (int32 index = 0; index < remove.CountItems(); ++index) + fMessages.RemoveItem(remove.ItemAt(index)); + + atomic_add64(&fSentCount, sent); + + // catch any partly-failed messages (possibly late): + if (fMessages.CountItems() > 0 + && atomic_get64(&fScheduledWakeup) == B_INFINITE_TIMEOUT) { + + fMessages.SortItems(&CompareMessages); + message = fMessages.ItemAt(0); + bigtime_t timeout = message->ScheduledTime() - time; + + if (timeout < 0) + timeout = DM_MINIMUM_DELAY; + + atomic_set64(&fScheduledWakeup, timeout); + } + + fLock.Unlock(); + return sent; +} + + +void +DelayedMessageSender::_Wakeup(bigtime_t when) +{ + if (atomic_get64(&fScheduledWakeup) < when + && atomic_get(&fWakeupRetry) == 0) + return; + + atomic_set64(&fScheduledWakeup, when); + + BPrivate::LinkSender sender(fPort); + sender.StartMessage(kWakeupMessage); + status_t error = sender.Flush(30000); + atomic_set(&fWakeupRetry, (int32)error == B_TIMED_OUT); +} + diff --git a/src/servers/app/DelayedMessage.h b/src/servers/app/DelayedMessage.h new file mode 100644 index 0000000000..1faf355e34 --- /dev/null +++ b/src/servers/app/DelayedMessage.h @@ -0,0 +1,178 @@ +/* + * Copyright 2015, Haiku. + * Distributed under the terms of the MIT License. + * + * Authors: + * Joseph Groover +*/ +#ifndef AS_DELAYED_MESSAGE_H +#define AS_DELAYED_MESSAGE_H + + +#include +#include + + +//! Method by which to merge DelayedMessages with the same code. +enum DMMergeMode { + DM_NO_MERGE = 0, // Will send this message, and the other(s) + DM_MERGE_REPLACE = 1, // Replace older data with newer data + DM_MERGE_CANCEL = 2, // keeps older data, cancels this message + DM_MERGE_DUPLICATES = 3 // If data is the same, cancel new message +}; + + +//! Merge-mode data-matching, set which data must match to merge messages. +enum { + DM_DATA_DEFAULT = 0, // Match all for DUPLICATES & none for REPLACE modes. + DM_DATA_1 = 1 << 0, + DM_DATA_2 = 1 << 1, + DM_DATA_3 = 1 << 2, + DM_DATA_4 = 1 << 3, + DM_DATA_5 = 1 << 4, + DM_DATA_6 = 1 << 5 +}; + + +//! Convenient delay definitions. +enum { + DM_MINIMUM_DELAY = 500ULL, + DM_SHORT_DELAY = 1000ULL, + DM_120HZ_DELAY = 8888ULL, + DM_60HZ_DELAY = 16666ULL, + DM_MEDIUM_DELAY = 15000ULL, + DM_30HZ_DELAY = 33332ULL, + DM_15HZ_DELAY = 66664ULL, + DM_LONG_DELAY = 100000ULL, + DM_QUARTER_SECOND_DELAY = 250000ULL, + DM_HALF_SECOND_DELAY = 500000ULL, + DM_ONE_SECOND_DELAY = 1000000ULL, + DM_ONE_MINUTE_DELAY = DM_ONE_SECOND_DELAY * 60, + DM_ONE_HOUR_DELAY = DM_ONE_MINUTE_DELAY * 60 +}; + + +class DelayedMessageData; + + +/*! \class DelayedMessage + \brief Friendly API for creating messages to be sent at a future time. + + Messages can be sent with a relative delay, or at a set time. Messages with + the same code can be merged according to various rules. Each message can + have any number of target recipients. + + DelayedMessage is a throw-away object, it is to be created on the stack, + Flush()'d, then left to be destructed when out of scope. +*/ +class DelayedMessage { + typedef void(*FailureCallback)(int32 code, port_id port, void* data); +public: + DelayedMessage(int32 code, bigtime_t delay, + bool isSpecificTime = false); + + ~DelayedMessage(); + + // At least one target port is required. + bool AddTarget(port_id port); + + // Merge messages with the same code according to the following + // rules and data matching mask. + void SetMerge(DMMergeMode mode, uint32 match = 0); + + // Called for each port on which the message was failed to be sent. + void SetFailureCallback(FailureCallback callback, + void* data = NULL); + + template + status_t Attach(const Type& data); + status_t Attach(const void* data, size_t size); + + template + status_t AttachList(const BObjectList& list); + + template + status_t AttachList(const BObjectList& list, + bool* whichArray); + + status_t Flush(); + + // Private + DelayedMessageData* HandOff(); + DelayedMessageData* Data() {return fData;} + +private: + // Forbidden methods - these are one time-use objects. + void* operator new(size_t); + void* operator new[](size_t); + + DelayedMessageData* fData; + bool fHandedOff; +}; + + +// #pragma mark Implementation + + +template +status_t +DelayedMessage::Attach(const Type& data) +{ + return Attach(&data, sizeof(Type)); +} + + +template +status_t +DelayedMessage::AttachList(const BObjectList& list) +{ + if (list.CountItems() == 0) + return B_BAD_VALUE; + + status_t error = Attach(list.CountItems()); + + for (int32 index = 0; index < list.CountItems(); ++index) { + if (error != B_OK) + break; + + error = Attach(*(list.ItemAt(index))); + } + + return error; +} + + +template +status_t +DelayedMessage::AttachList(const BObjectList& list, bool* which) +{ + if (list.CountItems() == 0) + return B_BAD_VALUE; + + if (which == NULL) + return AttachList(list); + + int32 count = 0; + for (int32 index = 0; index < list.CountItems(); ++index) { + if (which[index]) + ++count; + } + + if (count == 0) + return B_BAD_VALUE; + + status_t error = Attach(count); + + for (int32 index = 0; index < list.CountItems(); ++index) { + if (error != B_OK) + break; + + if (which[index]) + error = Attach(*list.ItemAt(index)); + } + + return error; +} + + +#endif // AS_DELAYED_MESSAGE_H diff --git a/src/servers/app/Desktop.cpp b/src/servers/app/Desktop.cpp index 5e45bc975e..a5644d7f54 100644 --- a/src/servers/app/Desktop.cpp +++ b/src/servers/app/Desktop.cpp @@ -10,6 +10,7 @@ * Brecht Machiels * Clemens Zeidler * Ingo Weinhold + * Joseph Groover */ @@ -575,7 +576,7 @@ Desktop::BroadcastToAllApps(int32 code) void Desktop::BroadcastToAllWindows(int32 code) { - AutoWriteLocker _(fWindowLock); + AutoReadLocker _(fWindowLock); for (Window* window = fAllWindows.FirstWindow(); window != NULL; window = window->NextWindow(kAllWindowList)) { @@ -584,6 +585,34 @@ Desktop::BroadcastToAllWindows(int32 code) } +int32 +Desktop::GetAllWindowTargets(DelayedMessage& message) +{ + AutoReadLocker _(fWindowLock); + int32 count = 0; + + for (Window* window = fAllWindows.FirstWindow(); window != NULL; + window = window->NextWindow(kAllWindowList)) { + message.AddTarget(window->ServerWindow()->MessagePort()); + ++count; + } + + return count; +} + + +int32 +Desktop::GetAllAppTargets(DelayedMessage& message) +{ + BAutolock _(fApplicationsLock); + + for (int32 index = 0; index < fApplications.CountItems(); ++index) + message.AddTarget(fApplications.ItemAt(index)->MessagePort()); + + return fApplications.CountItems(); +} + + filter_result Desktop::KeyEvent(uint32 what, int32 key, int32 modifiers) { @@ -1648,6 +1677,31 @@ Desktop::FontsChanged(Window* window) } +void +Desktop::ColorUpdated(Window* window, color_which which, rgb_color color) +{ + AutoWriteLocker _(fWindowLock); + + window->TopView()->ColorUpdated(which, color); + + switch (which) { + case B_WINDOW_TAB_COLOR: + case B_WINDOW_TEXT_COLOR: + case B_WINDOW_INACTIVE_TAB_COLOR: + case B_WINDOW_INACTIVE_TEXT_COLOR: + case B_WINDOW_BORDER_COLOR: + case B_WINDOW_INACTIVE_BORDER_COLOR: + break; + default: + return; + } + + BRegion dirty; + window->ColorsChanged(&dirty); + RebuildAndRedrawAfterWindowChange(window, dirty); +} + + void Desktop::SetWindowLook(Window* window, window_look newLook) { @@ -2655,6 +2709,56 @@ Desktop::_DispatchMessage(int32 code, BPrivate::LinkReceiver& link) break; } + case AS_SET_UI_COLOR: + { + color_which which; + rgb_color color; + + if (link.Read(&which) == B_OK + && link.Read(&color) == B_OK) { + + const char* colorName = ui_color_name(which); + fPendingColors.SetColor(colorName, color); + + DelayedMessage delayed(AS_SET_UI_COLORS, DM_60HZ_DELAY); + delayed.AddTarget(MessagePort()); + delayed.SetMerge(DM_MERGE_CANCEL); + + delayed.Attach(true); + delayed.Flush(); + } + + break; + } + + case AS_SET_UI_COLORS: + { + bool flushPendingOnly = false; + + if (link.Read(&flushPendingOnly) != B_OK + || (flushPendingOnly && + fPendingColors.CountNames(B_RGB_32_BIT_TYPE) == 0)) { + break; + } + + if (!flushPendingOnly) { + // Client wants to set a color map + color_which which = B_NO_COLOR; + rgb_color color; + + do { + if (link.Read(&which) != B_OK + || link.Read(&color) != B_OK) + break; + + fPendingColors.SetColor(ui_color_name(which), color); + } while (which != B_NO_COLOR); + } + + _FlushPendingColors(); + break; + } + // ToDo: Remove this again. It is a message sent by the // invalidate_on_exit kernel debugger add-on to trigger a redraw // after exiting a kernel debugger session. @@ -2716,6 +2820,54 @@ Desktop::_Windows(int32 index) } +void +Desktop::_FlushPendingColors() +{ + // Update all windows while we are holding the write lock. + + int32 count = fPendingColors.CountNames(B_RGB_32_BIT_TYPE); + if (count == 0) + return; + + bool changed[count]; + LockedDesktopSettings settings(this); + settings.SetUIColors(fPendingColors, &changed[0]); + + int32 index = 0; + char* name = NULL; + type_code type = B_RGB_32_BIT_TYPE; + rgb_color color; + color_which which = B_NO_COLOR; + BMessage clientMessage(B_COLORS_UPDATED); + + while (fPendingColors.GetInfo(type, index, &name, &type) == B_OK) { + which = which_ui_color(name); + if (which == B_NO_COLOR || fPendingColors.FindColor(name, + &color) != B_OK || !changed[index]) { + ++index; + continue; + } + + for (Window* window = fAllWindows.FirstWindow(); window != NULL; + window = window->NextWindow(kAllWindowList)) { + ColorUpdated(window, which, color); + } + + // Ensure client only gets list of changed colors + clientMessage.AddColor(name, color); + ++index; + } + + // Notify client applications + BAutolock appListLock(fApplicationsLock); + for (int32 index = 0; index < fApplications.CountItems(); ++index) { + fApplications.ItemAt(index)->SendMessageToClient(&clientMessage); + } + + fPendingColors.MakeEmpty(); +} + + void Desktop::_UpdateFloating(int32 previousWorkspace, int32 nextWorkspace, Window* mouseEventWindow) diff --git a/src/servers/app/Desktop.h b/src/servers/app/Desktop.h index c9b8e61959..6872f354c5 100644 --- a/src/servers/app/Desktop.h +++ b/src/servers/app/Desktop.h @@ -9,9 +9,11 @@ * Andrej Spielmann, * Brecht Machiels * Clemens Zeidler + * Joseph Groover */ #ifndef DESKTOP_H #define DESKTOP_H +#include "RapidDebug.h" #include @@ -22,7 +24,10 @@ #include #include +#include + #include "CursorManager.h" +#include "DelayedMessage.h" #include "DesktopListener.h" #include "DesktopSettings.h" #include "EventDispatcher.h" @@ -56,7 +61,8 @@ namespace BPrivate { class Desktop : public DesktopObservable, public MessageLooper, public ScreenOwner { public: - Desktop(uid_t userID, const char* targetScreen); + Desktop(uid_t userID, + const char* targetScreen); virtual ~Desktop(); void RegisterListener(DesktopListener* listener); @@ -74,6 +80,9 @@ public: void BroadcastToAllApps(int32 code); void BroadcastToAllWindows(int32 code); + int32 GetAllWindowTargets(DelayedMessage& message); + int32 GetAllAppTargets(DelayedMessage& message); + filter_result KeyEvent(uint32 what, int32 key, int32 modifiers); // Locking @@ -191,6 +200,8 @@ public: Window* window); void FontsChanged(Window* window); + void ColorUpdated(Window* window, color_which which, + rgb_color color); void SetWindowLook(Window* window, window_look look); void SetWindowFeel(Window* window, window_feel feel); @@ -253,6 +264,8 @@ public: private: WindowList& _Windows(int32 index); + void _FlushPendingColors(); + void _LaunchInputServer(); void _GetLooperName(char* name, size_t size); void _PrepareQuit(); @@ -359,6 +372,8 @@ private: Window* fBack; StackAndTile fStackAndTile; + + BMessage fPendingColors; }; #endif // DESKTOP_H diff --git a/src/servers/app/DesktopSettings.cpp b/src/servers/app/DesktopSettings.cpp index d6895b4657..ae261b9a88 100644 --- a/src/servers/app/DesktopSettings.cpp +++ b/src/servers/app/DesktopSettings.cpp @@ -1,11 +1,12 @@ /* - * Copyright 2005-2013, Haiku. + * Copyright 2005-2015, Haiku. * Distributed under the terms of the MIT License. * * Authors: * Stephan Aßmus * Axel Dörfler, axeld@pinc-software.de * Andrej Spielmann, + * Joseph Groover */ @@ -297,7 +298,10 @@ DesktopSettingsPrivate::_Load() snprintf(colorName, sizeof(colorName), "color%" B_PRId32, (int32)index_to_color_which(i)); - settings.FindInt32(colorName, (int32*)&fShared.colors[i]); + if (settings.FindInt32(colorName, (int32*)&fShared.colors[i]) != B_OK) { + // Set obviously bad value so the Appearance app can detect it + fShared.colors[i] = B_TRANSPARENT_COLOR; + } } } } @@ -647,12 +651,16 @@ DesktopSettingsPrivate::WorkspacesMessage(int32 index) const void -DesktopSettingsPrivate::SetUIColor(color_which which, const rgb_color color) +DesktopSettingsPrivate::SetUIColor(color_which which, const rgb_color color, + bool* changed) { int32 index = color_which_to_index(which); if (index < 0 || index >= kColorWhichCount) return; + if (changed != NULL) + *changed = fShared.colors[index] != color; + fShared.colors[index] = color; // TODO: deprecate the background_color member of the menu_info struct, // otherwise we have to keep this duplication... @@ -663,6 +671,47 @@ DesktopSettingsPrivate::SetUIColor(color_which which, const rgb_color color) } +void +DesktopSettingsPrivate::SetUIColors(const BMessage& colors, bool* changed) +{ + int32 count = colors.CountNames(B_RGB_32_BIT_TYPE); + if (count <= 0) + return; + + int32 index = 0; + int32 colorIndex = 0; + char* name = NULL; + type_code type; + rgb_color color; + color_which which = B_NO_COLOR; + + while (colors.GetInfo(B_RGB_32_BIT_TYPE, index, &name, &type) == B_OK) { + which = which_ui_color(name); + colorIndex = color_which_to_index(which); + if (colorIndex < 0 || colorIndex >= kColorWhichCount + || colors.FindColor(name, &color) != B_OK) { + if (changed != NULL) + changed[index] = false; + + ++index; + continue; + } + + if (changed != NULL) + changed[index] = fShared.colors[colorIndex] != color; + + fShared.colors[colorIndex] = color; + + if (which == (int32)B_MENU_BACKGROUND_COLOR) + fMenuInfo.background_color = color; + + ++index; + } + + Save(kAppearanceSettings); +} + + rgb_color DesktopSettingsPrivate::UIColor(color_which which) const { @@ -977,9 +1026,9 @@ LockedDesktopSettings::SetShowAllDraggers(bool show) void -LockedDesktopSettings::SetUIColor(color_which which, const rgb_color color) +LockedDesktopSettings::SetUIColors(const BMessage& colors, bool* changed) { - fSettings->SetUIColor(which, color); + fSettings->SetUIColors(colors, &changed[0]); } diff --git a/src/servers/app/DesktopSettings.h b/src/servers/app/DesktopSettings.h index 77d16569c3..48677fb227 100644 --- a/src/servers/app/DesktopSettings.h +++ b/src/servers/app/DesktopSettings.h @@ -1,10 +1,11 @@ /* - * Copyright 2001-2013, Haiku. + * Copyright 2001-2015, Haiku. * Distributed under the terms of the MIT License. * * Authors: * Axel Dörfler, axeld@pinc-software.de * Andrej Spielmann, + * Joseph Groover */ #ifndef DESKTOP_SETTINGS_H #define DESKTOP_SETTINGS_H @@ -14,6 +15,8 @@ #include #include +#include + class Desktop; class DesktopSettingsPrivate; @@ -97,8 +100,8 @@ public: void SetShowAllDraggers(bool show); - void SetUIColor(color_which which, - const rgb_color color); + void SetUIColors(const BMessage& colors, + bool* changed = NULL); void SetSubpixelAntialiasing(bool subpix); void SetHinting(uint8 hinting); diff --git a/src/servers/app/DesktopSettingsPrivate.h b/src/servers/app/DesktopSettingsPrivate.h index 71b7519adb..9983e3a77d 100644 --- a/src/servers/app/DesktopSettingsPrivate.h +++ b/src/servers/app/DesktopSettingsPrivate.h @@ -1,10 +1,11 @@ /* - * Copyright 2005-2013, Haiku. + * Copyright 2005-2015, Haiku. * Distributed under the terms of the MIT License. * * Authors: * Axel Dörfler, axeld@pinc-software.de * Andrej Spielmann, + * Joseph Groover */ #ifndef DESKTOP_SETTINGS_PRIVATE_H #define DESKTOP_SETTINGS_PRIVATE_H @@ -72,7 +73,13 @@ public: const BMessage* WorkspacesMessage(int32 index) const; void SetUIColor(color_which which, - const rgb_color color); + const rgb_color color, + bool* changed = NULL); + void SetUIColors(const BMessage& colors, + bool* changed = NULL); + // changed must be boolean array equal in + // size to colors' size + rgb_color UIColor(color_which which) const; void SetSubpixelAntialiasing(bool subpix); diff --git a/src/servers/app/DrawState.cpp b/src/servers/app/DrawState.cpp index c0f6c8427a..fb20f52438 100644 --- a/src/servers/app/DrawState.cpp +++ b/src/servers/app/DrawState.cpp @@ -9,6 +9,7 @@ * Axel Dörfler, axeld@pinc-software.de * Michael Pfeiffer * Julian Harnath + * Joseph Groover */ //! Data classes for working with BView states and draw parameters @@ -43,6 +44,10 @@ DrawState::DrawState() fHighColor((rgb_color){ 0, 0, 0, 255 }), fLowColor((rgb_color){ 255, 255, 255, 255 }), + fWhichHighColor(B_NO_COLOR), + fWhichLowColor(B_NO_COLOR), + fWhichHighColorTint(B_NO_TINT), + fWhichLowColorTint(B_NO_TINT), fPattern(kSolidHigh), fDrawingMode(B_OP_COPY), @@ -78,6 +83,10 @@ DrawState::DrawState(const DrawState& other) fHighColor(other.fHighColor), fLowColor(other.fLowColor), + fWhichHighColor(other.fWhichHighColor), + fWhichLowColor(other.fWhichLowColor), + fWhichHighColorTint(other.fWhichHighColorTint), + fWhichLowColorTint(other.fWhichLowColorTint), fPattern(other.fPattern), fDrawingMode(other.fDrawingMode), @@ -218,6 +227,10 @@ DrawState::ReadFromLink(BPrivate::LinkReceiver& link) fPenSize = info.penSize; fHighColor = info.highColor; fLowColor = info.lowColor; + fWhichHighColor = info.whichHighColor; + fWhichLowColor = info.whichLowColor; + fWhichHighColorTint = info.whichHighColorTint; + fWhichLowColorTint = info.whichLowColorTint; fPattern = info.pattern; fDrawingMode = info.drawingMode; fOrigin = info.origin; @@ -283,6 +296,10 @@ DrawState::WriteToLink(BPrivate::LinkSender& link) const info.viewStateInfo.penSize = fPenSize; info.viewStateInfo.highColor = fHighColor; info.viewStateInfo.lowColor = fLowColor; + info.viewStateInfo.whichHighColor = fWhichHighColor; + info.viewStateInfo.whichLowColor = fWhichLowColor; + info.viewStateInfo.whichHighColorTint = fWhichHighColorTint; + info.viewStateInfo.whichLowColorTint = fWhichLowColorTint; info.viewStateInfo.pattern = (::pattern)fPattern.GetPattern(); info.viewStateInfo.drawingMode = fDrawingMode; info.viewStateInfo.origin = fOrigin; @@ -577,6 +594,42 @@ DrawState::SetLowColor(rgb_color color) } +void +DrawState::SetHighUIColor(color_which which, float tint) +{ + fWhichHighColor = which; + fWhichHighColorTint = tint; +} + + +color_which +DrawState::HighUIColor(float* tint) const +{ + if (tint != NULL) + *tint = fWhichHighColorTint; + + return fWhichHighColor; +} + + +void +DrawState::SetLowUIColor(color_which which, float tint) +{ + fWhichLowColor = which; + fWhichLowColorTint = tint; +} + + +color_which +DrawState::LowUIColor(float* tint) const +{ + if (tint != NULL) + *tint = fWhichLowColorTint; + + return fWhichLowColor; +} + + void DrawState::SetPattern(const Pattern& pattern) { @@ -760,6 +813,10 @@ DrawState::PrintToStream() const fHighColor.red, fHighColor.green, fHighColor.blue, fHighColor.alpha); printf("\t LowColor: r=%d g=%d b=%d a=%d\n", fLowColor.red, fLowColor.green, fLowColor.blue, fLowColor.alpha); + printf("\t WhichHighColor: %i\n", fWhichHighColor); + printf("\t WhichLowColor: %i\n", fWhichLowColor); + printf("\t WhichHighColorTint: %.3f\n", fWhichHighColorTint); + printf("\t WhichLowColorTint: %.3f\n", fWhichLowColorTint); printf("\t Pattern: %" B_PRIu64 "\n", fPattern.GetInt64()); printf("\t DrawMode: %" B_PRIu32 "\n", (uint32)fDrawingMode); diff --git a/src/servers/app/DrawState.h b/src/servers/app/DrawState.h index 5c3535776c..8e664b8e8a 100644 --- a/src/servers/app/DrawState.h +++ b/src/servers/app/DrawState.h @@ -8,6 +8,7 @@ * Stephan Aßmus * Axel Dörfler, axeld@pinc-software.de * Julian Harnath + * Joseph Groover */ #ifndef _DRAW_STATE_H_ #define _DRAW_STATE_H_ @@ -100,6 +101,12 @@ public: rgb_color LowColor() const { return fLowColor; } + void SetHighUIColor(color_which which, float tint); + color_which HighUIColor(float* tint) const; + + void SetLowUIColor(color_which which, float tint); + color_which LowUIColor(float* tint) const; + void SetPattern(const Pattern& pattern); const Pattern& GetPattern() const { return fPattern; } @@ -175,6 +182,11 @@ protected: rgb_color fHighColor; rgb_color fLowColor; + + color_which fWhichHighColor; + color_which fWhichLowColor; + float fWhichHighColorTint; + float fWhichLowColorTint; Pattern fPattern; drawing_mode fDrawingMode; diff --git a/src/servers/app/Jamfile b/src/servers/app/Jamfile index 3d23fdeceb..aaef69de94 100644 --- a/src/servers/app/Jamfile +++ b/src/servers/app/Jamfile @@ -56,6 +56,7 @@ Server app_server : CursorData.cpp CursorManager.cpp CursorSet.cpp + DelayedMessage.cpp Desktop.cpp DesktopListener.cpp DesktopSettings.cpp diff --git a/src/servers/app/MessageLooper.h b/src/servers/app/MessageLooper.h index 9cacd304fb..d9c027175c 100644 --- a/src/servers/app/MessageLooper.h +++ b/src/servers/app/MessageLooper.h @@ -22,7 +22,9 @@ class MessageLooper : public BLocker { virtual bool Run(); virtual void Quit(); - status_t PostMessage(int32 code, bigtime_t timeout = B_INFINITE_TIMEOUT); + status_t PostMessage(int32 code, + bigtime_t timeout = B_INFINITE_TIMEOUT); + thread_id Thread() const { return fThread; } bool IsQuitting() const { return fQuitting; } sem_id DeathSemaphore() const { return fDeathSemaphore; } diff --git a/src/servers/app/ProfileMessageSupport.cpp b/src/servers/app/ProfileMessageSupport.cpp index 1dbb357d74..f48f3bdfea 100644 --- a/src/servers/app/ProfileMessageSupport.cpp +++ b/src/servers/app/ProfileMessageSupport.cpp @@ -271,11 +271,17 @@ string_for_message_code(uint32 code, BString& string) CODE(AS_VIEW_SET_PEN_SIZE); CODE(AS_VIEW_GET_PEN_SIZE); CODE(AS_VIEW_SET_HIGH_COLOR); + CODE(AS_VIEW_SET_HIGH_UI_COLOR); CODE(AS_VIEW_SET_LOW_COLOR); + CODE(AS_VIEW_SET_LOW_UI_COLOR); CODE(AS_VIEW_SET_VIEW_COLOR); + CODE(AS_VIEW_SET_VIEW_UI_COLOR); CODE(AS_VIEW_GET_HIGH_COLOR); + CODE(AS_VIEW_GET_HIGH_UI_COLOR); CODE(AS_VIEW_GET_LOW_COLOR); + CODE(AS_VIEW_GET_LOW_UI_COLOR); CODE(AS_VIEW_GET_VIEW_COLOR); + CODE(AS_VIEW_GET_VIEW_UI_COLOR); CODE(AS_VIEW_PRINT_ALIASING); CODE(AS_VIEW_CLIP_TO_PICTURE); CODE(AS_VIEW_GET_CLIP_REGION); @@ -292,6 +298,7 @@ string_for_message_code(uint32 code, BString& string) CODE(AS_VIEW_COPY_BITS); CODE(AS_VIEW_DRAW_PICTURE); CODE(AS_VIEW_INVALIDATE_RECT); + CODE(AS_VIEW_DELAYED_INVALIDATE_RECT); CODE(AS_VIEW_INVALIDATE_REGION); CODE(AS_VIEW_INVERT_RECT); CODE(AS_VIEW_MOVE_TO); @@ -307,6 +314,9 @@ string_for_message_code(uint32 code, BString& string) CODE(AS_DIRECT_WINDOW_GET_SYNC_DATA); CODE(AS_DIRECT_WINDOW_SET_FULLSCREEN); + // Internal messages + CODE(AS_COLOR_MAP_UPDATED); + default: string << "unkown code: " << code; break; diff --git a/src/servers/app/ServerApp.cpp b/src/servers/app/ServerApp.cpp index 678ab3e8bf..ec6432ab6a 100644 --- a/src/servers/app/ServerApp.cpp +++ b/src/servers/app/ServerApp.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2013, Haiku. + * Copyright 2001-2015, Haiku. * Distributed under the terms of the MIT License. * * Authors: @@ -12,6 +12,7 @@ * Andrej Spielmann, * Philippe Saint-Pierre, stpere@gmail.com * Wim van der Meer, + * Joseph Groover */ @@ -2813,25 +2814,6 @@ ServerApp::_DispatchMessage(int32 code, BPrivate::LinkReceiver& link) break; } - case AS_SET_UI_COLOR: - { - STRACE(("ServerApp %s: Set UI Color\n", Signature())); - - // Attached Data: - // 1) color_which which - // 2) rgb_color color - - color_which which; - rgb_color color; - - link.Read(&which); - if (link.Read(&color) == B_OK) { - LockedDesktopSettings settings(fDesktop); - settings.SetUIColor(which, color); - } - break; - } - case AS_GET_ACCELERANT_INFO: { STRACE(("ServerApp %s: get accelerant info\n", Signature())); @@ -3204,7 +3186,7 @@ ServerApp::_MessageLooper() STRACE(("info: ServerApp::_MessageLooper() listening on port %" B_PRId32 ".\n", fMessagePort)); - err = receiver.GetNextMessage(code, B_INFINITE_TIMEOUT); + err = receiver.GetNextMessage(code); if (err != B_OK || code == B_QUIT_REQUESTED) { STRACE(("ServerApp: application seems to be gone...\n")); diff --git a/src/servers/app/ServerWindow.cpp b/src/servers/app/ServerWindow.cpp index 6f813551d6..6d4a880c67 100644 --- a/src/servers/app/ServerWindow.cpp +++ b/src/servers/app/ServerWindow.cpp @@ -12,6 +12,7 @@ * Philippe Saint-Pierre * Brecht Machiels * Julian Harnath + * Joseph Groover */ @@ -1015,7 +1016,15 @@ ServerWindow::_DispatchMessage(int32 code, BPrivate::LinkReceiver& link) { // Has the all-window look fDesktop->FontsChanged(fWindow); - // TODO: tell client about this, too, and relayout... + break; + } + + // Forward to client + case B_FONTS_UPDATED: + { + // TODO: would knowing which font was changed be useful? + BMessage message(code); + SendMessageToClient(&message); break; } @@ -1770,6 +1779,116 @@ fDesktop->LockSingleWindow(); fWindow->GetDrawingEngine()->SetHighColor(color); break; } + + case AS_VIEW_SET_HIGH_UI_COLOR: + { + color_which which = B_NO_COLOR; + float tint = B_NO_TINT; + + if (link.Read(&which) != B_OK + || link.Read(&tint) != B_OK ) + break; + + fCurrentView->CurrentState()->SetHighUIColor(which, tint); + + // TODO: should we do more color_which validity checking? + if (which != B_NO_COLOR) { + DesktopSettings settings(fDesktop); + rgb_color color = tint_color(settings.UIColor(which), tint); + + fCurrentView->CurrentState()->SetHighColor(color); + fWindow->GetDrawingEngine()->SetHighColor(color); + } + break; + } + case AS_VIEW_SET_LOW_UI_COLOR: + { + color_which which = B_NO_COLOR; + float tint = B_NO_TINT; + + if (link.Read(&which) != B_OK + || link.Read(&tint) != B_OK ) + break; + + fCurrentView->CurrentState()->SetLowUIColor(which, tint); + + // TODO: should we do more color_which validity checking? + if (which != B_NO_COLOR) { + DesktopSettings settings(fDesktop); + rgb_color color = tint_color(settings.UIColor(which), tint); + + fCurrentView->CurrentState()->SetLowColor(color); + fWindow->GetDrawingEngine()->SetLowColor(color); + } + break; + } + case AS_VIEW_SET_VIEW_UI_COLOR: + { + color_which which = B_NO_COLOR; + float tint = B_NO_TINT; + + if (link.Read(&which) != B_OK + || link.Read(&tint) != B_OK ) + break; + + // TODO: should we do more color_which validity checking? + fCurrentView->SetViewUIColor(which, tint); + break; + } + case AS_VIEW_GET_HIGH_UI_COLOR: + { + float tint; + color_which which = fCurrentView->CurrentState()->HighUIColor(&tint); + rgb_color color = fCurrentView->CurrentState()->HighColor(); + + DTRACE(("ServerWindow %s: Message AS_VIEW_GET_HIGH_UI_COLOR: " + "View: %s -> color_which(%i) tint(%.3f) - rgb_color(%i, %i," + " %i, %i)\n", Title(), fCurrentView->Name(), which, tint, + color.red, color.green, color.blue, color.alpha)); + + fLink.StartMessage(B_OK); + fLink.Attach(which); + fLink.Attach(tint); + fLink.Attach(color); + fLink.Flush(); + break; + } + case AS_VIEW_GET_LOW_UI_COLOR: + { + float tint; + color_which which = fCurrentView->CurrentState()->LowUIColor(&tint); + rgb_color color = fCurrentView->CurrentState()->LowColor(); + + DTRACE(("ServerWindow %s: Message AS_VIEW_GET_LOW_UI_COLOR: " + "View: %s -> color_which(%i) tint(%.3f) - rgb_color(%i, %i," + " %i, %i)\n", Title(), fCurrentView->Name(), which, tint, + color.red, color.green, color.blue, color.alpha)); + + fLink.StartMessage(B_OK); + fLink.Attach(which); + fLink.Attach(tint); + fLink.Attach(color); + fLink.Flush(); + break; + } + case AS_VIEW_GET_VIEW_UI_COLOR: + { + float tint; + color_which which = fCurrentView->ViewUIColor(&tint); + rgb_color color = fCurrentView->ViewColor(); + + DTRACE(("ServerWindow %s: Message AS_VIEW_GET_VIEW_UI_COLOR: " + "View: %s -> color_which(%i) tint(%.3f) - rgb_color(%i, %i," + " %i, %i)\n", Title(), fCurrentView->Name(), which, tint, + color.red, color.green, color.blue, color.alpha)); + + fLink.StartMessage(B_OK); + fLink.Attach(which); + fLink.Attach(tint); + fLink.Attach(color); + fLink.Flush(); + break; + } case AS_VIEW_GET_HIGH_COLOR: { rgb_color color = fCurrentView->CurrentState()->HighColor(); @@ -2112,11 +2231,45 @@ fDesktop->LockSingleWindow(); fCurrentView->Name(), invalidRect.left, invalidRect.top, invalidRect.right, invalidRect.bottom)); + View* view = NULL; + if (link.Read(&view) != B_OK) + view = fCurrentView; + + // make sure the view is still available! + if (view != fCurrentView + && !fWindow->TopView()->HasView(view)) + break; + BRegion dirty(invalidRect); - fWindow->InvalidateView(fCurrentView, dirty); + fWindow->InvalidateView(view, dirty); } break; } + + case AS_VIEW_DELAYED_INVALIDATE_RECT: + { + bigtime_t time = 0; + BRect invalidRect; + if (link.Read(&time) == B_OK + && link.Read(&invalidRect) == B_OK) { + DTRACE(("ServerWindow %s: Message " + "AS_VIEW_DELAYED_INVALIDATE_RECT: " + "View: %s -> BRect(%.1f, %.1f, %.1f, %.1f) at time %llu\n", + Title(), fCurrentView->Name(), invalidRect.left, + invalidRect.top, invalidRect.right, invalidRect.bottom, + time)); + + DelayedMessage delayed(AS_VIEW_INVALIDATE_RECT, time, true); + delayed.AddTarget(MessagePort()); + delayed.SetMerge(DM_MERGE_DUPLICATES); + + if (delayed.Attach(invalidRect) == B_OK + && delayed.Attach(fCurrentView) == B_OK) + delayed.Flush(); + } + break; + } + case AS_VIEW_INVALIDATE_REGION: { // NOTE: looks like this call is NOT affected by origin and scale diff --git a/src/servers/app/View.cpp b/src/servers/app/View.cpp index 660902e5c0..554308d475 100644 --- a/src/servers/app/View.cpp +++ b/src/servers/app/View.cpp @@ -10,6 +10,7 @@ * Marcus Overhagen * Adrien Destugues + * Joseph Groover */ #include "View.h" @@ -90,6 +91,8 @@ View::View(IntRect frame, IntPoint scrollingOffset, const char* name, fScrollingOffset(scrollingOffset), fViewColor((rgb_color){ 255, 255, 255, 255 }), + fWhichViewColor(B_NO_COLOR), + fWhichViewColorTint(B_NO_TINT), fViewBitmap(NULL), fBitmapResizingMode(0), fBitmapOptions(0), @@ -436,6 +439,21 @@ View::FindViews(uint32 flags, BObjectList& list, int32& left) } +bool +View::HasView(View* view) +{ + if (view == this) + return true; + + for (View* child = FirstChild(); child; child = child->NextSibling()) { + if (child->HasView(view)) + return true; + } + + return false; +} + + View* View::ViewAt(const BPoint& where) { @@ -907,6 +925,54 @@ View::CopyBits(IntRect src, IntRect dst, BRegion& windowContentClipping) // #pragma mark - +void +View::ColorUpdated(color_which which, rgb_color color) +{ + float tint = B_NO_TINT; + + if (fWhichViewColor == which) + SetViewColor(tint_color(color, fWhichViewColorTint)); + + if (CurrentState()->HighUIColor(&tint) == which) + CurrentState()->SetHighColor(tint_color(color, tint)); + + if (CurrentState()->LowUIColor(&tint) == which) + CurrentState()->SetLowColor(tint_color(color, tint)); + + for (View* child = FirstChild(); child != NULL; + child = child->NextSibling()) { + + child->ColorUpdated(which, color); + } +} + + +void +View::SetViewUIColor(color_which which, float tint) +{ + if (which != B_NO_COLOR) { + DesktopSettings settings(fWindow->Desktop()); + SetViewColor(tint_color(settings.UIColor(which), tint)); + } + + fWhichViewColor = which; + fWhichViewColorTint = tint; +} + + +color_which +View::ViewUIColor(float* tint) +{ + if (tint != NULL) + *tint = fWhichViewColorTint; + + return fWhichViewColor; +} + + +// #pragma mark - + + void View::PushState() { diff --git a/src/servers/app/View.h b/src/servers/app/View.h index cf19fa762e..84e2b3cf16 100644 --- a/src/servers/app/View.h +++ b/src/servers/app/View.h @@ -10,6 +10,7 @@ * Marcus Overhagen * Adrien Destugues * Julian Harnath + * Joseph Groover */ #ifndef VIEW_H #define VIEW_H @@ -19,6 +20,7 @@ #include "IntRect.h" #include +#include #include #include #include @@ -110,6 +112,7 @@ public: void FindViews(uint32 flags, BObjectList& list, int32& left); + bool HasView(View* view); View* ViewAt(const BPoint& where); public: @@ -135,6 +138,10 @@ public: void SetViewColor(const rgb_color& color) { fViewColor = color; } + void ColorUpdated(color_which which, rgb_color color); + void SetViewUIColor(color_which which, float tint); + color_which ViewUIColor(float* tint); + ServerBitmap* ViewBitmap() const { return fViewBitmap; } void SetViewBitmap(ServerBitmap* bitmap, @@ -234,6 +241,8 @@ protected: IntPoint fScrollingOffset; rgb_color fViewColor; + color_which fWhichViewColor; + float fWhichViewColorTint; ServerBitmap* fViewBitmap; IntRect fBitmapSource; IntRect fBitmapDestination; diff --git a/src/servers/app/Window.cpp b/src/servers/app/Window.cpp index 8af42bd2bd..40e95b1896 100644 --- a/src/servers/app/Window.cpp +++ b/src/servers/app/Window.cpp @@ -1242,6 +1242,17 @@ Window::FontsChanged(BRegion* updateRegion) } +void +Window::ColorsChanged(BRegion* updateRegion) +{ + ::Decorator* decorator = Decorator(); + if (decorator != NULL) { + DesktopSettings settings(fDesktop); + decorator->ColorsChanged(settings, updateRegion); + } +} + + void Window::SetLook(window_look look, BRegion* updateRegion) { diff --git a/src/servers/app/Window.h b/src/servers/app/Window.h index 6817df2bd3..1de625c249 100644 --- a/src/servers/app/Window.h +++ b/src/servers/app/Window.h @@ -243,6 +243,7 @@ public: void HighlightDecorator(bool active); void FontsChanged(BRegion* updateRegion); + void ColorsChanged(BRegion* updateRegion); void SetLook(window_look look, BRegion* updateRegion); diff --git a/src/servers/app/decorator/DecorManager.cpp b/src/servers/app/decorator/DecorManager.cpp index 59e6f539a8..b09830ebef 100644 --- a/src/servers/app/decorator/DecorManager.cpp +++ b/src/servers/app/decorator/DecorManager.cpp @@ -63,11 +63,13 @@ DecorAddOn::AllocateDecorator(Desktop* desktop, DrawingEngine* engine, DesktopSettings settings(desktop); Decorator* decorator; - decorator = _AllocateDecorator(settings, rect); + decorator = _AllocateDecorator(settings, rect, desktop); desktop->UnlockSingleWindow(); if (!decorator) return NULL; + decorator->UpdateColors(settings); + if (decorator->AddTab(settings, title, look, flags) == false) { delete decorator; return NULL; @@ -94,9 +96,10 @@ DecorAddOn::GetDesktopListeners() Decorator* -DecorAddOn::_AllocateDecorator(DesktopSettings& settings, BRect rect) +DecorAddOn::_AllocateDecorator(DesktopSettings& settings, BRect rect, + Desktop* desktop) { - return new (std::nothrow)SATDecorator(settings, rect); + return new (std::nothrow)SATDecorator(settings, rect, desktop); } diff --git a/src/servers/app/decorator/DecorManager.h b/src/servers/app/decorator/DecorManager.h index d5826c22f2..eeb8864b54 100644 --- a/src/servers/app/decorator/DecorManager.h +++ b/src/servers/app/decorator/DecorManager.h @@ -53,7 +53,7 @@ public: protected: virtual Decorator* _AllocateDecorator(DesktopSettings& settings, - BRect rect); + BRect rect, Desktop* desktop); DesktopListenerList fDesktopListeners; diff --git a/src/servers/app/decorator/Decorator.cpp b/src/servers/app/decorator/Decorator.cpp index 0823257026..d35c49edf9 100644 --- a/src/servers/app/decorator/Decorator.cpp +++ b/src/servers/app/decorator/Decorator.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2013 Haiku, Inc. + * Copyright 2001-2015 Haiku, Inc. * Distributed under the terms of the MIT License. * * Authors: @@ -8,6 +8,7 @@ * John Scipione, jscipione@gmail.com * Ingo Weinhold, ingo_weinhold@gmx.de * Clemens Zeidler, haiku@clemens-zeidler.de + * Joseph Groover */ @@ -20,6 +21,8 @@ #include +#include "Desktop.h" +#include "DesktopSettings.h" #include "DrawingEngine.h" @@ -68,7 +71,8 @@ Decorator::Tab::Tab() \param settings DesktopSettings pointer. \param frame Decorator frame rectangle */ -Decorator::Decorator(DesktopSettings& settings, BRect frame) +Decorator::Decorator(DesktopSettings& settings, BRect frame, + Desktop* desktop) : fDrawingEngine(NULL), fDrawState(), @@ -87,6 +91,7 @@ Decorator::Decorator(DesktopSettings& settings, BRect frame) fTopTab(NULL), + fDesktop(desktop), fFootprintValid(false) { memset(&fRegionHighlights, HIGHLIGHT_NONE, sizeof(fRegionHighlights)); @@ -234,11 +239,26 @@ Decorator::SetFlags(int32 tab, uint32 flags, BRegion* updateRegion) void Decorator::FontsChanged(DesktopSettings& settings, BRegion* updateRegion) { + _FontsChanged(settings, updateRegion); _InvalidateFootprint(); } +/*! \brief Called when a system colors change. +*/ +void +Decorator::ColorsChanged(DesktopSettings& settings, BRegion* updateRegion) +{ + UpdateColors(settings); + + if (updateRegion != NULL) + updateRegion->Include(&GetFootprint()); + + _InvalidateBitmaps(); +} + + /*! \brief Sets the decorator's window look \param look New value for the look */ @@ -249,6 +269,7 @@ Decorator::SetLook(int32 tab, DesktopSettings& settings, window_look look, Decorator::Tab* decoratorTab = fTabList.ItemAt(tab); if (decoratorTab == NULL) return; + _SetLook(decoratorTab, settings, look, updateRect); _InvalidateFootprint(); // the border very likely changed @@ -496,6 +517,15 @@ Decorator::GetFootprint() } +/*! \brief Returns our Desktop object pointer +*/ +::Desktop* +Decorator::GetDesktop() +{ + return fDesktop; +} + + /*! \brief Performs hit-testing for the decorator. The base class provides a basic implementation, recognizing only button and @@ -821,9 +851,8 @@ Decorator::DrawZoom(int32 tab) rgb_color Decorator::UIColor(color_which which) { - // TODO: for now - calling ui_color() from within the app_server - // will always return the default colors (as there is no be_app) - return ui_color(which); + DesktopSettings settings(fDesktop); + return settings.UIColor(which); } diff --git a/src/servers/app/decorator/Decorator.h b/src/servers/app/decorator/Decorator.h index 186bd69169..44440a83ca 100644 --- a/src/servers/app/decorator/Decorator.h +++ b/src/servers/app/decorator/Decorator.h @@ -1,5 +1,5 @@ /* - * Copyright 2001-2013 Haiku, Inc. + * Copyright 2001-2015 Haiku, Inc. * Distributed under the terms of the MIT License. * * Authors: @@ -8,6 +8,7 @@ * John Scipione, jscipione@gmail.com * Ingo Weinhold, ingo_weinhold@gmx.de * Clemens Zeidler, haiku@clemens-zeidler.de + * Joseph Groover */ #ifndef DECORATOR_H #define DECORATOR_H @@ -20,6 +21,7 @@ #include "DrawState.h" +class Desktop; class DesktopSettings; class DrawingEngine; class ServerBitmap; @@ -98,7 +100,8 @@ public: }; Decorator(DesktopSettings& settings, - BRect frame); + BRect frame, + Desktop* desktop); virtual ~Decorator(); virtual Decorator::Tab* AddTab(DesktopSettings& settings, @@ -123,6 +126,11 @@ public: void FontsChanged(DesktopSettings& settings, BRegion* updateRegion = NULL); + void ColorsChanged(DesktopSettings& settings, + BRegion* updateRegion = NULL); + + virtual void UpdateColors(DesktopSettings& settings) = 0; + void SetLook(int32 tab, DesktopSettings& settings, window_look look, BRegion* updateRegion = NULL); @@ -160,6 +168,7 @@ public: virtual Region RegionAt(BPoint where, int32& tab) const; const BRegion& GetFootprint(); + ::Desktop* GetDesktop(); void MoveBy(float x, float y); void MoveBy(BPoint offset); @@ -281,6 +290,7 @@ protected: BObjectList fTabList; private: + Desktop* fDesktop; BRegion fFootprint; bool fFootprintValid : 1; diff --git a/src/servers/app/decorator/DefaultDecorator.cpp b/src/servers/app/decorator/DefaultDecorator.cpp index c12853ea11..51ad0c063b 100644 --- a/src/servers/app/decorator/DefaultDecorator.cpp +++ b/src/servers/app/decorator/DefaultDecorator.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2013 Haiku, Inc. + * Copyright 2001-2015 Haiku, Inc. * Distributed under the terms of the MIT License. * * Authors: @@ -10,6 +10,7 @@ * John Scipione, jscipione@gmail.com * Ingo Weinhold, ingo_weinhold@gmx.de * Clemens Zeidler, haiku@clemens-zeidler.de + * Joseph Groover */ @@ -72,9 +73,10 @@ blend_color_value(uint8 a, uint8 b, float position) // TODO: get rid of DesktopSettings here, and introduce private accessor // methods to the Decorator base class -DefaultDecorator::DefaultDecorator(DesktopSettings& settings, BRect rect) +DefaultDecorator::DefaultDecorator(DesktopSettings& settings, BRect rect, + Desktop* desktop) : - TabDecorator(settings, rect) + TabDecorator(settings, rect, desktop) { // TODO: If the decorator was created with a frame too small, it should // resize itself! @@ -112,35 +114,35 @@ DefaultDecorator::GetComponentColors(Component component, uint8 highlight, case COMPONENT_TAB: if (tab && tab->buttonFocus) { _colors[COLOR_TAB_FRAME_LIGHT] - = tint_color(kFocusFrameColor, B_DARKEN_2_TINT); + = tint_color(fFocusFrameColor, B_DARKEN_2_TINT); _colors[COLOR_TAB_FRAME_DARK] - = tint_color(kFocusFrameColor, B_DARKEN_3_TINT); - _colors[COLOR_TAB] = kFocusTabColor; - _colors[COLOR_TAB_LIGHT] = kFocusTabColorLight; - _colors[COLOR_TAB_BEVEL] = kFocusTabColorBevel; - _colors[COLOR_TAB_SHADOW] = kFocusTabColorShadow; - _colors[COLOR_TAB_TEXT] = kFocusTextColor; + = tint_color(fFocusFrameColor, B_DARKEN_3_TINT); + _colors[COLOR_TAB] = fFocusTabColor; + _colors[COLOR_TAB_LIGHT] = fFocusTabColorLight; + _colors[COLOR_TAB_BEVEL] = fFocusTabColorBevel; + _colors[COLOR_TAB_SHADOW] = fFocusTabColorShadow; + _colors[COLOR_TAB_TEXT] = fFocusTextColor; } else { _colors[COLOR_TAB_FRAME_LIGHT] - = tint_color(kNonFocusFrameColor, B_DARKEN_2_TINT); + = tint_color(fNonFocusFrameColor, B_DARKEN_2_TINT); _colors[COLOR_TAB_FRAME_DARK] - = tint_color(kNonFocusFrameColor, B_DARKEN_3_TINT); - _colors[COLOR_TAB] = kNonFocusTabColor; - _colors[COLOR_TAB_LIGHT] = kNonFocusTabColorLight; - _colors[COLOR_TAB_BEVEL] = kNonFocusTabColorBevel; - _colors[COLOR_TAB_SHADOW] = kNonFocusTabColorShadow; - _colors[COLOR_TAB_TEXT] = kNonFocusTextColor; + = tint_color(fNonFocusFrameColor, B_DARKEN_3_TINT); + _colors[COLOR_TAB] = fNonFocusTabColor; + _colors[COLOR_TAB_LIGHT] = fNonFocusTabColorLight; + _colors[COLOR_TAB_BEVEL] = fNonFocusTabColorBevel; + _colors[COLOR_TAB_SHADOW] = fNonFocusTabColorShadow; + _colors[COLOR_TAB_TEXT] = fNonFocusTextColor; } break; case COMPONENT_CLOSE_BUTTON: case COMPONENT_ZOOM_BUTTON: if (tab && tab->buttonFocus) { - _colors[COLOR_BUTTON] = kFocusTabColor; - _colors[COLOR_BUTTON_LIGHT] = kFocusTabColorLight; + _colors[COLOR_BUTTON] = fFocusTabColor; + _colors[COLOR_BUTTON_LIGHT] = fFocusTabColorLight; } else { - _colors[COLOR_BUTTON] = kNonFocusTabColor; - _colors[COLOR_BUTTON_LIGHT] = kNonFocusTabColorLight; + _colors[COLOR_BUTTON] = fNonFocusTabColor; + _colors[COLOR_BUTTON_LIGHT] = fNonFocusTabColorLight; } break; @@ -151,21 +153,21 @@ DefaultDecorator::GetComponentColors(Component component, uint8 highlight, case COMPONENT_RESIZE_CORNER: default: if (tab && tab->buttonFocus) { - _colors[0] = tint_color(kFocusFrameColor, B_DARKEN_2_TINT); - _colors[1] = tint_color(kFocusFrameColor, B_LIGHTEN_2_TINT); - _colors[2] = kFocusFrameColor; - _colors[3] = tint_color(kFocusFrameColor, + _colors[0] = tint_color(fFocusFrameColor, B_DARKEN_2_TINT); + _colors[1] = tint_color(fFocusFrameColor, B_LIGHTEN_2_TINT); + _colors[2] = fFocusFrameColor; + _colors[3] = tint_color(fFocusFrameColor, (B_DARKEN_1_TINT + B_NO_TINT) / 2); - _colors[4] = tint_color(kFocusFrameColor, B_DARKEN_2_TINT); - _colors[5] = tint_color(kFocusFrameColor, B_DARKEN_3_TINT); + _colors[4] = tint_color(fFocusFrameColor, B_DARKEN_2_TINT); + _colors[5] = tint_color(fFocusFrameColor, B_DARKEN_3_TINT); } else { - _colors[0] = tint_color(kNonFocusFrameColor, B_DARKEN_2_TINT); - _colors[1] = tint_color(kNonFocusFrameColor, B_LIGHTEN_2_TINT); - _colors[2] = kNonFocusFrameColor; - _colors[3] = tint_color(kNonFocusFrameColor, + _colors[0] = tint_color(fNonFocusFrameColor, B_DARKEN_2_TINT); + _colors[1] = tint_color(fNonFocusFrameColor, B_LIGHTEN_2_TINT); + _colors[2] = fNonFocusFrameColor; + _colors[3] = tint_color(fNonFocusFrameColor, (B_DARKEN_1_TINT + B_NO_TINT) / 2); - _colors[4] = tint_color(kNonFocusFrameColor, B_DARKEN_2_TINT); - _colors[5] = tint_color(kNonFocusFrameColor, B_DARKEN_3_TINT); + _colors[4] = tint_color(fNonFocusFrameColor, B_DARKEN_2_TINT); + _colors[5] = tint_color(fNonFocusFrameColor, B_DARKEN_3_TINT); } // for the resize-border highlight dye everything bluish. @@ -181,6 +183,13 @@ DefaultDecorator::GetComponentColors(Component component, uint8 highlight, } +void +DefaultDecorator::UpdateColors(DesktopSettings& settings) +{ + TabDecorator::UpdateColors(settings); +} + + // #pragma mark - Protected methods diff --git a/src/servers/app/decorator/DefaultDecorator.h b/src/servers/app/decorator/DefaultDecorator.h index e8ae5d5d3e..5d9448f83b 100644 --- a/src/servers/app/decorator/DefaultDecorator.h +++ b/src/servers/app/decorator/DefaultDecorator.h @@ -1,5 +1,5 @@ /* - * Copyright 2001-2013 Haiku, Inc. + * Copyright 2001-2015 Haiku, Inc. * Distributed under the terms of the MIT License. * * Authors: @@ -10,6 +10,7 @@ * John Scipione, jscipione@gmail.com * Ingo Weinhold, ingo_weinhold@gmx.de * Clemens Zeidler, haiku@clemens-zeidler.de + * Joseph Groover */ #ifndef DEFAULT_DECORATOR_H #define DEFAULT_DECORATOR_H @@ -25,13 +26,15 @@ class ServerBitmap; class DefaultDecorator: public TabDecorator { public: DefaultDecorator(DesktopSettings& settings, - BRect frame); + BRect frame, Desktop* desktop); virtual ~DefaultDecorator(); virtual void GetComponentColors(Component component, uint8 highlight, ComponentColors _colors, Decorator::Tab* tab = NULL); + virtual void UpdateColors(DesktopSettings& settings); + protected: virtual void _DrawFrame(BRect rect); diff --git a/src/servers/app/decorator/TabDecorator.cpp b/src/servers/app/decorator/TabDecorator.cpp index 44352063fb..a5953f2ea6 100644 --- a/src/servers/app/decorator/TabDecorator.cpp +++ b/src/servers/app/decorator/TabDecorator.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2013 Haiku, Inc. + * Copyright 2001-2015 Haiku, Inc. * Distributed under the terms of the MIT License. * * Authors: @@ -10,6 +10,7 @@ * John Scipione, jscipione@gmail.com * Ingo Weinhold, ingo_weinhold@gmx.de * Clemens Zeidler, haiku@clemens-zeidler.de + * Joseph Groover */ @@ -63,28 +64,11 @@ static const float kResizeKnobSize = 18.0; // TODO: get rid of DesktopSettings here, and introduce private accessor // methods to the Decorator base class -TabDecorator::TabDecorator(DesktopSettings& settings, BRect frame) +TabDecorator::TabDecorator(DesktopSettings& settings, BRect frame, + Desktop* desktop) : - Decorator(settings, frame), - fOldMovingTab(0, 0, -1, -1), - // focus color constants - kFocusFrameColor(settings.UIColor(B_WINDOW_BORDER_COLOR)), - kFocusTabColor(settings.UIColor(B_WINDOW_TAB_COLOR)), - kFocusTabColorLight(tint_color(kFocusTabColor, - (B_LIGHTEN_MAX_TINT + B_LIGHTEN_2_TINT) / 2)), - kFocusTabColorBevel(tint_color(kFocusTabColor, B_LIGHTEN_2_TINT)), - kFocusTabColorShadow(tint_color(kFocusTabColor, - (B_DARKEN_1_TINT + B_NO_TINT) / 2)), - kFocusTextColor(settings.UIColor(B_WINDOW_TEXT_COLOR)), - // non-focus color constants - kNonFocusFrameColor(settings.UIColor(B_WINDOW_INACTIVE_BORDER_COLOR)), - kNonFocusTabColor(settings.UIColor(B_WINDOW_INACTIVE_TAB_COLOR)), - kNonFocusTabColorLight(tint_color(kNonFocusTabColor, - (B_LIGHTEN_MAX_TINT + B_LIGHTEN_2_TINT) / 2)), - kNonFocusTabColorBevel(tint_color(kNonFocusTabColor, B_LIGHTEN_2_TINT)), - kNonFocusTabColorShadow(tint_color(kNonFocusTabColor, - (B_DARKEN_1_TINT + B_NO_TINT) / 2)), - kNonFocusTextColor(settings.UIColor(B_WINDOW_INACTIVE_TEXT_COLOR)) + Decorator(settings, frame, desktop), + fOldMovingTab(0, 0, -1, -1) { STRACE(("TabDecorator:\n")); STRACE(("\tFrame (%.1f,%.1f,%.1f,%.1f)\n", @@ -209,6 +193,30 @@ TabDecorator::SetRegionHighlight(Region region, uint8 highlight, } +void +TabDecorator::UpdateColors(DesktopSettings& settings) +{ + // Desktop is write locked, so be quick about it. + fFocusFrameColor = settings.UIColor(B_WINDOW_BORDER_COLOR); + fFocusTabColor = settings.UIColor(B_WINDOW_TAB_COLOR); + fFocusTabColorLight = tint_color(fFocusTabColor, + (B_LIGHTEN_MAX_TINT + B_LIGHTEN_2_TINT) / 2); + fFocusTabColorBevel = tint_color(fFocusTabColor, B_LIGHTEN_2_TINT); + fFocusTabColorShadow = tint_color(fFocusTabColor, + (B_DARKEN_1_TINT + B_NO_TINT) / 2); + fFocusTextColor = settings.UIColor(B_WINDOW_TEXT_COLOR); + + fNonFocusFrameColor = settings.UIColor(B_WINDOW_INACTIVE_BORDER_COLOR); + fNonFocusTabColor = settings.UIColor(B_WINDOW_INACTIVE_TAB_COLOR); + fNonFocusTabColorLight = tint_color(fNonFocusTabColor, + (B_LIGHTEN_MAX_TINT + B_LIGHTEN_2_TINT) / 2); + fNonFocusTabColorBevel = tint_color(fNonFocusTabColor, B_LIGHTEN_2_TINT); + fNonFocusTabColorShadow = tint_color(fNonFocusTabColor, + (B_DARKEN_1_TINT + B_NO_TINT) / 2); + fNonFocusTextColor = settings.UIColor(B_WINDOW_INACTIVE_TEXT_COLOR); +} + + void TabDecorator::_DoLayout() { diff --git a/src/servers/app/decorator/TabDecorator.h b/src/servers/app/decorator/TabDecorator.h index 17fb59f2b5..781d33a92b 100644 --- a/src/servers/app/decorator/TabDecorator.h +++ b/src/servers/app/decorator/TabDecorator.h @@ -1,5 +1,5 @@ /* - * Copyright 2001-2013 Haiku, Inc. + * Copyright 2001-2015 Haiku, Inc. * Distributed under the terms of the MIT License. * * Authors: @@ -10,6 +10,7 @@ * John Scipione, jscipione@gmail.com * Ingo Weinhold, ingo_weinhold@gmx.de * Clemens Zeidler, haiku@clemens-zeidler.de + * Joseph Groover */ #ifndef TAB_DECORATOR_H #define TAB_DECORATOR_H @@ -26,7 +27,7 @@ class Desktop; class TabDecorator: public Decorator { public: TabDecorator(DesktopSettings& settings, - BRect frame); + BRect frame, Desktop* desktop); virtual ~TabDecorator(); protected: @@ -71,6 +72,8 @@ public: uint8 highlight, BRegion* dirty, int32 tab = -1); + virtual void UpdateColors(DesktopSettings& settings); + protected: virtual void _DoLayout(); virtual void _DoTabLayout(); @@ -132,21 +135,21 @@ protected: BRegion fTabsRegion; BRect fOldMovingTab; - const rgb_color kFocusFrameColor; + rgb_color fFocusFrameColor; - const rgb_color kFocusTabColor; - const rgb_color kFocusTabColorLight; - const rgb_color kFocusTabColorBevel; - const rgb_color kFocusTabColorShadow; - const rgb_color kFocusTextColor; + rgb_color fFocusTabColor; + rgb_color fFocusTabColorLight; + rgb_color fFocusTabColorBevel; + rgb_color fFocusTabColorShadow; + rgb_color fFocusTextColor; - const rgb_color kNonFocusFrameColor; + rgb_color fNonFocusFrameColor; - const rgb_color kNonFocusTabColor; - const rgb_color kNonFocusTabColorLight; - const rgb_color kNonFocusTabColorBevel; - const rgb_color kNonFocusTabColorShadow; - const rgb_color kNonFocusTextColor; + rgb_color fNonFocusTabColor; + rgb_color fNonFocusTabColorLight; + rgb_color fNonFocusTabColorBevel; + rgb_color fNonFocusTabColorShadow; + rgb_color fNonFocusTextColor; }; diff --git a/src/servers/app/stackandtile/SATDecorator.cpp b/src/servers/app/stackandtile/SATDecorator.cpp index d4c1503652..62796aa2fa 100644 --- a/src/servers/app/stackandtile/SATDecorator.cpp +++ b/src/servers/app/stackandtile/SATDecorator.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2010, Haiku, Inc. + * Copyright 2010-2015, Haiku, Inc. * Distributed under the terms of the MIT License. * * Authors: @@ -46,19 +46,29 @@ static const rgb_color kHighlightFrameColors[6] = { { 8, 8, 8, 255 } }; -SATDecorator::SATDecorator(DesktopSettings& settings, BRect frame) +SATDecorator::SATDecorator(DesktopSettings& settings, BRect frame, + Desktop* desktop) : - DefaultDecorator(settings, frame), - kHighlightTabColor(tint_color(kFocusTabColor, B_DARKEN_2_TINT)), - kHighlightTabColorLight(tint_color(kHighlightTabColor, - (B_LIGHTEN_MAX_TINT + B_LIGHTEN_2_TINT) / 2)), - kHighlightTabColorBevel(tint_color(kHighlightTabColor, B_LIGHTEN_2_TINT)), - kHighlightTabColorShadow(tint_color(kHighlightTabColor, - (B_DARKEN_1_TINT + B_NO_TINT) / 2)) + DefaultDecorator(settings, frame, desktop) { } +void +SATDecorator::UpdateColors(DesktopSettings& settings) +{ + DefaultDecorator::UpdateColors(settings); + + // Called during construction, and during any changes + fHighlightTabColor = tint_color(fFocusTabColor, B_DARKEN_2_TINT); + fHighlightTabColorLight = tint_color(fHighlightTabColor, + (B_LIGHTEN_MAX_TINT + B_LIGHTEN_2_TINT) / 2); + fHighlightTabColorBevel = tint_color(fHighlightTabColor, B_LIGHTEN_2_TINT); + fHighlightTabColorShadow= tint_color(fHighlightTabColor, + (B_DARKEN_1_TINT + B_NO_TINT) / 2); +} + + void SATDecorator::GetComponentColors(Component component, uint8 highlight, ComponentColors _colors, Decorator::Tab* _tab) @@ -82,17 +92,17 @@ SATDecorator::GetComponentColors(Component component, uint8 highlight, case COMPONENT_TAB: _colors[COLOR_TAB_FRAME_LIGHT] = kFrameColors[0]; _colors[COLOR_TAB_FRAME_DARK] = kFrameColors[3]; - _colors[COLOR_TAB] = kHighlightTabColor; - _colors[COLOR_TAB_LIGHT] = kHighlightTabColorLight; - _colors[COLOR_TAB_BEVEL] = kHighlightTabColorBevel; - _colors[COLOR_TAB_SHADOW] = kHighlightTabColorShadow; - _colors[COLOR_TAB_TEXT] = kFocusTextColor; + _colors[COLOR_TAB] = fHighlightTabColor; + _colors[COLOR_TAB_LIGHT] = fHighlightTabColorLight; + _colors[COLOR_TAB_BEVEL] = fHighlightTabColorBevel; + _colors[COLOR_TAB_SHADOW] = fHighlightTabColorShadow; + _colors[COLOR_TAB_TEXT] = fFocusTextColor; break; case COMPONENT_CLOSE_BUTTON: case COMPONENT_ZOOM_BUTTON: - _colors[COLOR_BUTTON] = kHighlightTabColor; - _colors[COLOR_BUTTON_LIGHT] = kHighlightTabColorLight; + _colors[COLOR_BUTTON] = fHighlightTabColor; + _colors[COLOR_BUTTON_LIGHT] = fHighlightTabColorLight; break; case COMPONENT_LEFT_BORDER: diff --git a/src/servers/app/stackandtile/SATDecorator.h b/src/servers/app/stackandtile/SATDecorator.h index 9c2bcd4ad6..4f548b4fb3 100644 --- a/src/servers/app/stackandtile/SATDecorator.h +++ b/src/servers/app/stackandtile/SATDecorator.h @@ -1,5 +1,5 @@ /* - * Copyright 2010, Haiku, Inc. + * Copyright 2010-2015, Haiku, Inc. * Distributed under the terms of the MIT License. * * Authors: @@ -15,6 +15,9 @@ #include "StackAndTile.h" +class Desktop; + + class SATDecorator : public DefaultDecorator { public: enum { @@ -23,18 +26,19 @@ public: public: SATDecorator(DesktopSettings& settings, - BRect frame); + BRect frame, Desktop* desktop); protected: + virtual void UpdateColors(DesktopSettings& settings); virtual void GetComponentColors(Component component, uint8 highlight, ComponentColors _colors, Decorator::Tab* tab = NULL); private: - const rgb_color kHighlightTabColor; - const rgb_color kHighlightTabColorLight; - const rgb_color kHighlightTabColorBevel; - const rgb_color kHighlightTabColorShadow; + rgb_color fHighlightTabColor; + rgb_color fHighlightTabColorLight; + rgb_color fHighlightTabColorBevel; + rgb_color fHighlightTabColorShadow; }; From 7a96554cb32dc03c3a68b401a3d4083f9b866668 Mon Sep 17 00:00:00 2001 From: looncraz Date: Thu, 10 Dec 2015 12:53:17 -0600 Subject: [PATCH 054/242] kits/interface: Convert to using Set*UIColor. Signed-off-by: Augustin Cavalier Patches 0003-0017 from looncraz, unmodified. --- src/kits/interface/AboutWindow.cpp | 21 +++++-- src/kits/interface/AbstractSpinner.cpp | 34 ++++++----- src/kits/interface/Alert.cpp | 4 +- src/kits/interface/BMCPrivate.cpp | 15 +++-- src/kits/interface/Box.cpp | 28 +++------ src/kits/interface/Button.cpp | 25 ++++++-- src/kits/interface/ChannelSlider.cpp | 23 ++++++-- src/kits/interface/CheckBox.cpp | 4 +- src/kits/interface/ColorControl.cpp | 7 +-- src/kits/interface/ColumnListView.cpp | 80 +++++++++++++++++--------- src/kits/interface/Control.cpp | 28 +++++---- src/kits/interface/ControlLook.cpp | 47 ++++++++------- src/kits/interface/GridView.cpp | 4 +- src/kits/interface/GroupView.cpp | 9 ++- src/kits/interface/ListView.cpp | 7 +-- src/kits/interface/Menu.cpp | 6 +- src/kits/interface/MenuBar.cpp | 2 + src/kits/interface/MenuField.cpp | 21 ++----- src/kits/interface/MenuItem.cpp | 8 +-- src/kits/interface/MenuWindow.cpp | 4 +- src/kits/interface/ScrollView.cpp | 2 +- src/kits/interface/Slider.cpp | 15 ++++- src/kits/interface/SplitView.cpp | 9 ++- src/kits/interface/StatusBar.cpp | 66 +++++++++++++-------- src/kits/interface/StringView.cpp | 21 +++---- src/kits/interface/TabView.cpp | 12 ++-- src/kits/interface/TextControl.cpp | 36 ++++++------ src/kits/interface/TextView.cpp | 5 +- src/kits/interface/ToolTip.cpp | 2 +- src/kits/interface/ToolTipManager.cpp | 2 +- 30 files changed, 320 insertions(+), 227 deletions(-) diff --git a/src/kits/interface/AboutWindow.cpp b/src/kits/interface/AboutWindow.cpp index fa84cf5c98..a5f32c31a6 100644 --- a/src/kits/interface/AboutWindow.cpp +++ b/src/kits/interface/AboutWindow.cpp @@ -1,10 +1,11 @@ /* - * Copyright 2007-2012 Haiku, Inc. + * Copyright 2007-2015 Haiku, Inc. * Distributed under the terms of the MIT License. * * Authors: * Ryan Leavengood * John Scipione + * Joseph Groover */ @@ -68,6 +69,8 @@ public: const char* signature); virtual ~AboutView(); + virtual void AllAttached(); + BTextView* InfoView() const { return fInfoView; }; BBitmap* Icon(); @@ -99,7 +102,7 @@ StripeView::StripeView(BBitmap* icon) BView("StripeView", B_WILL_DRAW), fIcon(icon) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); float width = 0.0f; if (icon != NULL) @@ -159,6 +162,7 @@ AboutView::AboutView(const char* appName, const char* signature) : BGroupView("AboutView", B_VERTICAL) { + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); fNameView = new BStringView("name", appName); BFont font; fNameView->GetFont(&font); @@ -176,7 +180,6 @@ AboutView::AboutView(const char* appName, const char* signature) fInfoView->MakeEditable(false); fInfoView->SetWordWrap(true); fInfoView->SetInsets(5.0, 5.0, 5.0, 5.0); - fInfoView->SetViewColor(ui_color(B_DOCUMENT_BACKGROUND_COLOR)); fInfoView->SetStylable(true); BScrollView* infoViewScroller = new BScrollView( @@ -205,7 +208,8 @@ AboutView::AboutView(const char* appName, const char* signature) .End() .End() .AddGlue() - .End(); + .View()->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); + } @@ -214,6 +218,15 @@ AboutView::~AboutView() } +void +AboutView::AllAttached() +{ + fNameView->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); + fInfoView->SetViewUIColor(B_DOCUMENT_BACKGROUND_COLOR); + fVersionView->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); +} + + // #pragma mark - AboutView private methods diff --git a/src/kits/interface/AbstractSpinner.cpp b/src/kits/interface/AbstractSpinner.cpp index 576697a835..f426b5e220 100644 --- a/src/kits/interface/AbstractSpinner.cpp +++ b/src/kits/interface/AbstractSpinner.cpp @@ -311,9 +311,6 @@ SpinnerButton::SpinnerButton(BRect frame, const char* name, fIsMouseOver(false), fRepeatDelay(100000) { - rgb_color bgColor = ui_color(B_PANEL_BACKGROUND_COLOR); - SetViewColor(bgColor); - SetLowColor(bgColor); } @@ -327,6 +324,7 @@ SpinnerButton::AttachedToWindow() { fParent = static_cast(Parent()); + AdoptParentColors(); BView::AttachedToWindow(); } @@ -534,9 +532,6 @@ SpinnerTextView::SpinnerTextView(BRect rect, BRect textRect) B_WILL_DRAW | B_NAVIGABLE), fParent(NULL) { - rgb_color bgColor = ui_color(B_PANEL_BACKGROUND_COLOR); - SetViewColor(bgColor); - SetLowColor(bgColor); } @@ -550,6 +545,7 @@ SpinnerTextView::AttachedToWindow() { fParent = static_cast(Parent()); + AdoptParentColors(); BTextView::AttachedToWindow(); } @@ -1480,10 +1476,6 @@ BAbstractSpinner::_DrawTextView(BRect updateRect) void BAbstractSpinner::_InitObject() { - rgb_color bgColor = ui_color(B_PANEL_BACKGROUND_COLOR); - SetViewColor(bgColor); - SetLowColor(bgColor); - fAlignment = B_ALIGN_LEFT; fButtonStyle = SPINNER_BUTTON_PLUS_MINUS; @@ -1594,7 +1586,6 @@ void BAbstractSpinner::_UpdateTextViewColors(bool enable) { rgb_color textColor; - rgb_color bgColor; BFont font; fTextView->GetFontAndColor(0, &font); @@ -1608,15 +1599,22 @@ BAbstractSpinner::_UpdateTextViewColors(bool enable) fTextView->SetFontAndColor(&font, B_FONT_ALL, &textColor); - if (enable) - bgColor = ui_color(B_DOCUMENT_BACKGROUND_COLOR); - else { - bgColor = tint_color(ui_color(B_PANEL_BACKGROUND_COLOR), - B_LIGHTEN_2_TINT); + if (enable) { + fTextView->SetViewUIColor(B_DOCUMENT_BACKGROUND_COLOR); + fTextView->SetLowUIColor(ViewUIColor()); + } else { + color_which which = ViewUIColor(); + + if (which != B_NO_COLOR) { + fTextView->SetViewUIColor(which, B_LIGHTEN_2_TINT); + fTextView->SetLowUIColor(which, B_LIGHTEN_2_TINT); + } else { + rgb_color color = tint_color(ViewColor(), B_LIGHTEN_2_TINT); + fTextView->SetViewColor(color); + fTextView->SetLowColor(color); + } } - fTextView->SetViewColor(bgColor); - fTextView->SetLowColor(bgColor); } diff --git a/src/kits/interface/Alert.cpp b/src/kits/interface/Alert.cpp index 8e29a6bb6c..f924604184 100644 --- a/src/kits/interface/Alert.cpp +++ b/src/kits/interface/Alert.cpp @@ -497,7 +497,7 @@ BAlert::_Init(const char* text, const char* button0, const char* button1, fIconView = new TAlertView(); fTextView = new BTextView("_tv_"); - fTextView->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + fTextView->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); rgb_color textColor = ui_color(B_PANEL_TEXT_COLOR); fTextView->SetFontAndColor(be_plain_font, B_FONT_ALL, &textColor); fTextView->MakeEditable(false); @@ -718,7 +718,7 @@ TAlertView::TAlertView() BView("TAlertView", B_WILL_DRAW), fIconBitmap(NULL) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); } diff --git a/src/kits/interface/BMCPrivate.cpp b/src/kits/interface/BMCPrivate.cpp index 581c755271..ff749d2c67 100644 --- a/src/kits/interface/BMCPrivate.cpp +++ b/src/kits/interface/BMCPrivate.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2013 Haiku, Inc. All rights reserved. + * Copyright 2001-2015 Haiku, Inc. All rights reserved. * Distributed under the terms of the MIT License. * * Authors: @@ -162,10 +162,15 @@ _BMCMenuBar_::AttachedToWindow() if (fFixedSize && (Flags() & B_SUPPORTS_LAYOUT) == 0) SetResizingMode(B_FOLLOW_LEFT_RIGHT | B_FOLLOW_TOP); - if (Parent() != NULL) - SetLowColor(Parent()->LowColor()); - else - SetLowColor(ui_color(B_MENU_BACKGROUND_COLOR)); + if (Parent() != NULL) { + color_which which = Parent()->LowUIColor(); + if (which == B_NO_COLOR) + SetLowColor(Parent()->LowColor()); + else + SetLowUIColor(which); + + } else + SetLowUIColor(B_MENU_BACKGROUND_COLOR); fPreviousWidth = Bounds().Width(); } diff --git a/src/kits/interface/Box.cpp b/src/kits/interface/Box.cpp index d243a911e6..fe0a395b98 100644 --- a/src/kits/interface/Box.cpp +++ b/src/kits/interface/Box.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2013 Haiku, Inc. All Rights Reserved. + * Copyright 2001-2015 Haiku, Inc. All Rights Reserved. * Distributed under the terms of the MIT license. * * Authors: @@ -49,9 +49,6 @@ BBox::BBox(BRect frame, const char* name, uint32 resizingMode, uint32 flags, BView(frame, name, resizingMode, flags | B_WILL_DRAW | B_FRAME_EVENTS), fStyle(border) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); - SetLowColor(ui_color(B_PANEL_BACKGROUND_COLOR)); - _InitObject(); } @@ -61,9 +58,6 @@ BBox::BBox(const char* name, uint32 flags, border_style border, BView* child) BView(name, flags | B_WILL_DRAW | B_FRAME_EVENTS), fStyle(border) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); - SetLowColor(ui_color(B_PANEL_BACKGROUND_COLOR)); - _InitObject(); if (child) @@ -76,9 +70,6 @@ BBox::BBox(border_style border, BView* child) BView(NULL, B_WILL_DRAW | B_FRAME_EVENTS | B_NAVIGABLE_JUMP), fStyle(border) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); - SetLowColor(ui_color(B_PANEL_BACKGROUND_COLOR)); - _InitObject(); if (child) @@ -269,7 +260,7 @@ BBox::Draw(BRect updateRect) font_height fontHeight; GetFontHeight(&fontHeight); - SetHighColor(0, 0, 0); + SetHighColor(ui_color(B_PANEL_TEXT_COLOR)); DrawString(fLabel, BPoint(10.0f, ceilf(fontHeight.ascent))); } @@ -280,15 +271,12 @@ BBox::Draw(BRect updateRect) void BBox::AttachedToWindow() { - BView* parent = Parent(); - if (parent != NULL) { - // inherit the color from parent - rgb_color color = parent->ViewColor(); - if (color == B_TRANSPARENT_COLOR) - color = ui_color(B_PANEL_BACKGROUND_COLOR); + AdoptParentColors(); - SetViewColor(color); - SetLowColor(color); + if (ViewColor() == B_TRANSPARENT_COLOR) { + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); + SetLowUIColor(B_PANEL_BACKGROUND_COLOR); + SetHighUIColor(B_PANEL_TEXT_COLOR); } // The box could have been resized in the mean time @@ -666,6 +654,8 @@ BBox::_InitObject(BMessage* archive) if (archive->FindBool("_lblview", &hasLabelView) == B_OK) fLabelView = ChildAt(0); } + + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); } diff --git a/src/kits/interface/Button.cpp b/src/kits/interface/Button.cpp index b685d9e6fc..68b2884cc8 100644 --- a/src/kits/interface/Button.cpp +++ b/src/kits/interface/Button.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2014 Haiku Inc. All rights reserved. + * Copyright 2001-2015 Haiku Inc. All rights reserved. * Distributed under the terms of the MIT License. * * Authors: @@ -132,9 +132,14 @@ BButton::Archive(BMessage* data, bool deep) const void BButton::Draw(BRect updateRect) { + // Allow improved customization & integration + float buttonTint = B_DARKEN_1_TINT; + if (ViewUIColor() != B_CONTROL_BACKGROUND_COLOR) + buttonTint = B_NO_TINT; + BRect rect(Bounds()); rgb_color background = LowColor(); - rgb_color base = background; + rgb_color base = tint_color(ViewColor(), buttonTint); uint32 flags = be_control_look->Flags(this); if (_Flag(FLAG_DEFAULT)) flags |= BControlLook::B_DEFAULT_BUTTON; @@ -223,17 +228,25 @@ BButton::MouseDown(BPoint where) } } - void BButton::AttachedToWindow() { BControl::AttachedToWindow(); - // low color will now be the parents view color + SetViewUIColor(B_CONTROL_BACKGROUND_COLOR); + + // Ensure BButton's low color is the parent's VIEW color. + // We don't want to adopt the standard control lowcolor. + if (Parent() != NULL) { + float tint = B_NO_TINT; + color_which which = ViewUIColor(&tint); + if (which != B_NO_COLOR) + SetLowUIColor(which, tint); + else + SetLowColor(ViewColor()); + } if (IsDefault()) Window()->SetDefaultButton(this); - - SetViewColor(B_TRANSPARENT_COLOR); } diff --git a/src/kits/interface/ChannelSlider.cpp b/src/kits/interface/ChannelSlider.cpp index 8f8d41a0d9..bfe893eb5e 100644 --- a/src/kits/interface/ChannelSlider.cpp +++ b/src/kits/interface/ChannelSlider.cpp @@ -149,10 +149,7 @@ BChannelSlider::Archive(BMessage* into, bool deep) const void BChannelSlider::AttachedToWindow() { - BView* parent = Parent(); - if (parent != NULL) - SetViewColor(parent->ViewColor()); - + AdoptParentColors(); BChannelControl::AttachedToWindow(); } @@ -181,6 +178,21 @@ BChannelSlider::AllDetached() void BChannelSlider::MessageReceived(BMessage* message) { + if (message->what == B_COLORS_UPDATED + && fBacking != NULL && fBackingView != NULL) { + rgb_color color; + if (message->FindColor(ui_color_name(B_PANEL_BACKGROUND_COLOR), &color) + == B_OK + && fBacking->Lock()) { + + if (fBackingView->LockLooper()) { + fBackingView->SetLowColor(color); + fBackingView->UnlockLooper(); + } + fBacking->Unlock(); + } + } + switch (message->what) { case B_SET_PROPERTY: { case B_GET_PROPERTY: @@ -230,6 +242,7 @@ BChannelSlider::Draw(BRect updateRect) _UpdateFontDimens(); _DrawThumbs(); + SetHighColor(ui_color(B_PANEL_TEXT_COLOR)); BRect bounds(Bounds()); if (Label()) { float labelWidth = StringWidth(Label()); @@ -709,8 +722,6 @@ BChannelSlider::_InitData() fInitialValues = NULL; fMinPoint = 0; fFocusChannel = -1; - - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); } diff --git a/src/kits/interface/CheckBox.cpp b/src/kits/interface/CheckBox.cpp index c8fb055160..fc17585ed0 100644 --- a/src/kits/interface/CheckBox.cpp +++ b/src/kits/interface/CheckBox.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2014 Haiku, Inc. All rights reserved. + * Copyright 2001-2015 Haiku, Inc. All rights reserved. * Distributed under the terms of the MIT License. * * Authors: @@ -111,7 +111,7 @@ BCheckBox::Draw(BRect updateRect) BRect checkBoxRect(_CheckBoxFrame()); BRect rect(checkBoxRect); - be_control_look->DrawCheckBox(this, rect, updateRect,base, flags); + be_control_look->DrawCheckBox(this, rect, updateRect, base, flags); BRect labelRect(Bounds()); labelRect.left = checkBoxRect.right + 1 diff --git a/src/kits/interface/ColorControl.cpp b/src/kits/interface/ColorControl.cpp index 1da6e90657..0379cd5d0c 100644 --- a/src/kits/interface/ColorControl.cpp +++ b/src/kits/interface/ColorControl.cpp @@ -333,13 +333,10 @@ BColorControl::SetEnabled(bool enabled) void BColorControl::AttachedToWindow() { - if (Parent()) - SetViewColor(Parent()->ViewColor()); - else - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); - BControl::AttachedToWindow(); + AdoptParentColors(); + fRedText->SetTarget(this); fGreenText->SetTarget(this); fBlueText->SetTarget(this); diff --git a/src/kits/interface/ColumnListView.cpp b/src/kits/interface/ColumnListView.cpp index 10f2d58996..2c0ed08e2a 100644 --- a/src/kits/interface/ColumnListView.cpp +++ b/src/kits/interface/ColumnListView.cpp @@ -68,7 +68,6 @@ All rights reserved. #include -#include "ColorTools.h" #include "ObjectList.h" @@ -1423,6 +1422,16 @@ BColumnListView::SetColor(ColumnListViewColor colorIndex, const rgb_color color) } fColorList[colorIndex] = color; + fCustomColors = true; +} + + +void +BColumnListView::ResetColors() +{ + fCustomColors = false; + _UpdateColors(); + Invalidate(); } @@ -1458,6 +1467,7 @@ void BColumnListView::SetSelectionColor(rgb_color color) { fColorList[B_COLOR_SELECTION] = color; + fCustomColors = true; } @@ -1465,6 +1475,7 @@ void BColumnListView::SetBackgroundColor(rgb_color color) { fColorList[B_COLOR_BACKGROUND] = color; + fCustomColors = true; fOutlineView->Invalidate(); // repaint with new color } @@ -1474,6 +1485,7 @@ void BColumnListView::SetEditColor(rgb_color color) { fColorList[B_COLOR_EDIT_BACKGROUND] = color; + fCustomColors = true; } @@ -1662,6 +1674,9 @@ BColumnListView::MessageReceived(BMessage* message) fOutlineView->MessageReceived(message); return; } + } else if (message->what == B_COLORS_UPDATED) { + // Todo: Is it worthwhile to optimize this? + _UpdateColors(); } BView::MessageReceived(message); @@ -2045,32 +2060,8 @@ BColumnListView::_Init() if (bounds.Height() <= 0) bounds.bottom = 100; - fColorList[B_COLOR_BACKGROUND] = ui_color(B_LIST_BACKGROUND_COLOR); - fColorList[B_COLOR_TEXT] = ui_color(B_LIST_ITEM_TEXT_COLOR); - fColorList[B_COLOR_ROW_DIVIDER] = tint_color( - ui_color(B_LIST_SELECTED_BACKGROUND_COLOR), B_DARKEN_2_TINT); - fColorList[B_COLOR_SELECTION] = ui_color(B_LIST_SELECTED_BACKGROUND_COLOR); - fColorList[B_COLOR_SELECTION_TEXT] = - ui_color(B_LIST_SELECTED_ITEM_TEXT_COLOR); - - // For non focus selection uses the selection color as BListView - fColorList[B_COLOR_NON_FOCUS_SELECTION] = - ui_color(B_LIST_SELECTED_BACKGROUND_COLOR); - - // edit mode doesn't work very well - fColorList[B_COLOR_EDIT_BACKGROUND] = tint_color( - ui_color(B_LIST_SELECTED_BACKGROUND_COLOR), B_DARKEN_1_TINT); - fColorList[B_COLOR_EDIT_BACKGROUND].alpha = 180; - - // Unused color - fColorList[B_COLOR_EDIT_TEXT] = ui_color(B_LIST_SELECTED_ITEM_TEXT_COLOR); - - fColorList[B_COLOR_HEADER_BACKGROUND] = ui_color(B_PANEL_BACKGROUND_COLOR); - fColorList[B_COLOR_HEADER_TEXT] = ui_color(B_PANEL_TEXT_COLOR); - - // Unused colors - fColorList[B_COLOR_SEPARATOR_LINE] = ui_color(B_LIST_ITEM_TEXT_COLOR); - fColorList[B_COLOR_SEPARATOR_BORDER] = ui_color(B_LIST_ITEM_TEXT_COLOR); + fCustomColors = false; + _UpdateColors(); BRect titleRect; BRect outlineRect; @@ -2102,6 +2093,41 @@ BColumnListView::_Init() } +void +BColumnListView::_UpdateColors() +{ + if (fCustomColors) + return; + + fColorList[B_COLOR_BACKGROUND] = ui_color(B_LIST_BACKGROUND_COLOR); + fColorList[B_COLOR_TEXT] = ui_color(B_LIST_ITEM_TEXT_COLOR); + fColorList[B_COLOR_ROW_DIVIDER] = tint_color( + ui_color(B_LIST_SELECTED_BACKGROUND_COLOR), B_DARKEN_2_TINT); + fColorList[B_COLOR_SELECTION] = ui_color(B_LIST_SELECTED_BACKGROUND_COLOR); + fColorList[B_COLOR_SELECTION_TEXT] = + ui_color(B_LIST_SELECTED_ITEM_TEXT_COLOR); + + // For non focus selection uses the selection color as BListView + fColorList[B_COLOR_NON_FOCUS_SELECTION] = + ui_color(B_LIST_SELECTED_BACKGROUND_COLOR); + + // edit mode doesn't work very well + fColorList[B_COLOR_EDIT_BACKGROUND] = tint_color( + ui_color(B_LIST_SELECTED_BACKGROUND_COLOR), B_DARKEN_1_TINT); + fColorList[B_COLOR_EDIT_BACKGROUND].alpha = 180; + + // Unused color + fColorList[B_COLOR_EDIT_TEXT] = ui_color(B_LIST_SELECTED_ITEM_TEXT_COLOR); + + fColorList[B_COLOR_HEADER_BACKGROUND] = ui_color(B_PANEL_BACKGROUND_COLOR); + fColorList[B_COLOR_HEADER_TEXT] = ui_color(B_PANEL_TEXT_COLOR); + + // Unused colors + fColorList[B_COLOR_SEPARATOR_LINE] = ui_color(B_LIST_ITEM_TEXT_COLOR); + fColorList[B_COLOR_SEPARATOR_BORDER] = ui_color(B_LIST_ITEM_TEXT_COLOR); +} + + void BColumnListView::_GetChildViewRects(const BRect& bounds, BRect& titleRect, BRect& outlineRect, BRect& vScrollBarRect, BRect& hScrollBarRect) diff --git a/src/kits/interface/Control.cpp b/src/kits/interface/Control.cpp index 6cef099db5..1882e8bf7a 100644 --- a/src/kits/interface/Control.cpp +++ b/src/kits/interface/Control.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2013, Haiku, Inc. + * Copyright 2001-2015, Haiku, Inc. * Distributed under the terms of the MIT License. * * Authors: @@ -151,19 +151,20 @@ BControl::WindowActivated(bool active) void BControl::AttachedToWindow() { - rgb_color color; + AdoptParentColors(); - BView* parent = Parent(); - if (parent != NULL) { - // inherit the color from parent - color = parent->ViewColor(); - if (color == B_TRANSPARENT_COLOR) - color = ui_color(B_PANEL_BACKGROUND_COLOR); - } else - color = ui_color(B_PANEL_BACKGROUND_COLOR); + if (ViewColor() == B_TRANSPARENT_COLOR) + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); - SetViewColor(color); - SetLowColor(color); + // Force view color as low color + if (Parent() != NULL) { + float tint = B_NO_TINT; + color_which which = ViewUIColor(&tint); + if (which != B_NO_COLOR) + SetLowUIColor(which, tint); + else + SetLowColor(ViewColor()); + } if (!Messenger().IsValid()) SetTarget(Window()); @@ -610,6 +611,9 @@ BControl::operator=(const BControl &) void BControl::InitData(BMessage* data) { + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); + SetLowUIColor(ViewUIColor()); + fLabel = NULL; SetLabel(B_EMPTY_STRING); fValue = B_CONTROL_OFF; diff --git a/src/kits/interface/ControlLook.cpp b/src/kits/interface/ControlLook.cpp index 3cfad71874..dfeb6e3fb5 100644 --- a/src/kits/interface/ControlLook.cpp +++ b/src/kits/interface/ControlLook.cpp @@ -92,7 +92,7 @@ BControlLook::ComposeSpacing(float spacing) uint32 BControlLook::Flags(BControl* control) const { - uint32 flags = 0; + uint32 flags = B_IS_CONTROL; if (!control->IsEnabled()) flags |= B_DISABLED; @@ -1763,29 +1763,29 @@ BControlLook::DrawGroupFrame(BView* view, BRect& rect, const BRect& updateRect, void BControlLook::DrawLabel(BView* view, const char* label, BRect rect, - const BRect& updateRect, const rgb_color& base, uint32 flags) + const BRect& updateRect, const rgb_color& base, uint32 flags, + const rgb_color* textColor) { DrawLabel(view, label, NULL, rect, updateRect, base, flags, - DefaultLabelAlignment()); + DefaultLabelAlignment(), textColor); } void BControlLook::DrawLabel(BView* view, const char* label, BRect rect, const BRect& updateRect, const rgb_color& base, uint32 flags, - const BAlignment& alignment) + const BAlignment& alignment, const rgb_color* textColor) { - DrawLabel(view, label, NULL, rect, updateRect, base, flags, alignment); + DrawLabel(view, label, NULL, rect, updateRect, base, flags, alignment, + textColor); } void BControlLook::DrawLabel(BView* view, const char* label, const rgb_color& base, - uint32 flags, const BPoint& where) + uint32 flags, const BPoint& where, const rgb_color* textColor) { // setup the text color - // TODO: Should either use the ui_color(B_CONTROL_TEXT_COLOR) here, - // or elliminate that constant alltogether (stippi: +1). BWindow* window = view->Window(); bool isDesktop = window @@ -1799,19 +1799,20 @@ BControlLook::DrawLabel(BView* view, const char* label, const rgb_color& base, rgb_color color; rgb_color glowColor; + if (textColor != NULL) + glowColor = *textColor; + else if ((flags & B_IS_CONTROL) != 0) + glowColor = ui_color(B_CONTROL_TEXT_COLOR); + else + glowColor = ui_color(B_PANEL_TEXT_COLOR); + + color = glowColor; + if (isDesktop) low = view->Parent()->ViewColor(); else low = base; - if (low.red + low.green + low.blue > 128 * 3) { - color = tint_color(low, B_DARKEN_MAX_TINT); - glowColor = kWhite; - } else { - color = tint_color(low, B_LIGHTEN_MAX_TINT); - glowColor = kBlack; - } - if ((flags & B_DISABLED) != 0) { color.red = (uint8)(((int32)low.red + color.red + 1) / 2); color.green = (uint8)(((int32)low.green + color.green + 1) / 2); @@ -1847,7 +1848,7 @@ BControlLook::DrawLabel(BView* view, const char* label, const rgb_color& base, view->SetDrawingMode(B_OP_ALPHA); view->SetBlendingMode(B_CONSTANT_ALPHA, B_ALPHA_OVERLAY); // Draw glow or outline - if (glowColor == kWhite) { + if (glowColor.Brightness() > 128) { font.SetFalseBoldWidth(2.0); view->SetFont(&font, B_FONT_FALSE_BOLD_WIDTH); @@ -1864,7 +1865,7 @@ BControlLook::DrawLabel(BView* view, const char* label, const rgb_color& base, font.SetFalseBoldWidth(0.0); view->SetFont(&font, B_FONT_FALSE_BOLD_WIDTH); - } else if (glowColor == kBlack) { + } else { font.SetFalseBoldWidth(1.0); view->SetFont(&font, B_FONT_FALSE_BOLD_WIDTH); @@ -1891,17 +1892,18 @@ BControlLook::DrawLabel(BView* view, const char* label, const rgb_color& base, void BControlLook::DrawLabel(BView* view, const char* label, const BBitmap* icon, - BRect rect, const BRect& updateRect, const rgb_color& base, uint32 flags) + BRect rect, const BRect& updateRect, const rgb_color& base, uint32 flags, + const rgb_color* textColor) { DrawLabel(view, label, icon, rect, updateRect, base, flags, - DefaultLabelAlignment()); + DefaultLabelAlignment(), textColor); } void BControlLook::DrawLabel(BView* view, const char* label, const BBitmap* icon, BRect rect, const BRect& updateRect, const rgb_color& base, uint32 flags, - const BAlignment& alignment) + const BAlignment& alignment, const rgb_color* textColor) { if (!rect.Intersects(updateRect)) return; @@ -1967,7 +1969,7 @@ BControlLook::DrawLabel(BView* view, const char* label, const BBitmap* icon, if (textHeight < height) location.y += ceilf((height - textHeight) / 2); - DrawLabel(view, truncatedLabel.String(), base, flags, location); + DrawLabel(view, truncatedLabel.String(), base, flags, location, textColor); } @@ -2147,6 +2149,7 @@ BControlLook::_DrawButtonFrame(BView* view, BRect& rect, drawing_mode oldMode = view->DrawingMode(); if ((flags & B_DEFAULT_BUTTON) != 0) { + defaultIndicatorColor = ui_color(B_CONTROL_HIGHLIGHT_COLOR); cornerBgColor = defaultIndicatorColor; edgeLightColor = _EdgeLightColor(defaultIndicatorColor, contrast * ((flags & B_DISABLED) != 0 ? 0.3 : 0.8), diff --git a/src/kits/interface/GridView.cpp b/src/kits/interface/GridView.cpp index 9012f93db2..2fd96a6ab6 100644 --- a/src/kits/interface/GridView.cpp +++ b/src/kits/interface/GridView.cpp @@ -13,7 +13,7 @@ BGridView::BGridView(float horizontalSpacing, float verticalSpacing) : BView(NULL, 0, new BGridLayout(horizontalSpacing, verticalSpacing)) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + AdoptSystemColors(); } @@ -22,7 +22,7 @@ BGridView::BGridView(const char* name, float horizontalSpacing, : BView(name, 0, new BGridLayout(horizontalSpacing, verticalSpacing)) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + AdoptSystemColors(); } diff --git a/src/kits/interface/GroupView.cpp b/src/kits/interface/GroupView.cpp index dce7e7abe1..b4a62d84c4 100644 --- a/src/kits/interface/GroupView.cpp +++ b/src/kits/interface/GroupView.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2010 Haiku, Inc. All rights reserved. + * Copyright 2010-2015 Haiku, Inc. All rights reserved. * Copyright 2006, Ingo Weinhold . * * Distributed under the terms of the MIT License. @@ -8,12 +8,14 @@ #include +extern "C" void printf(const char*, ...); + BGroupView::BGroupView(orientation orientation, float spacing) : BView(NULL, 0, new BGroupLayout(orientation, spacing)) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + AdoptSystemColors(); } @@ -22,7 +24,7 @@ BGroupView::BGroupView(const char* name, orientation orientation, : BView(name, 0, new BGroupLayout(orientation, spacing)) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + AdoptSystemColors(); } @@ -30,6 +32,7 @@ BGroupView::BGroupView(BMessage* from) : BView(from) { + AdoptSystemColors(); } diff --git a/src/kits/interface/ListView.cpp b/src/kits/interface/ListView.cpp index 515ac8b4eb..8071ec96a7 100644 --- a/src/kits/interface/ListView.cpp +++ b/src/kits/interface/ListView.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2013 Haiku, Inc. All rights resrerved. + * Copyright 2001-2015 Haiku, Inc. All rights resrerved. * Distributed under the terms of the MIT license. * * Authors: @@ -1449,9 +1449,8 @@ BListView::_InitObject(list_view_type type) fTrack = new track_data; fTrack->try_drag = false; fTrack->item_index = -1; - - SetViewColor(ui_color(B_LIST_BACKGROUND_COLOR)); - SetLowColor(ui_color(B_LIST_BACKGROUND_COLOR)); + SetViewUIColor(B_LIST_BACKGROUND_COLOR); + SetLowUIColor(B_LIST_BACKGROUND_COLOR); } diff --git a/src/kits/interface/Menu.cpp b/src/kits/interface/Menu.cpp index a93340b8c8..b00620012d 100644 --- a/src/kits/interface/Menu.cpp +++ b/src/kits/interface/Menu.cpp @@ -1407,7 +1407,7 @@ void BMenu::DrawBackground(BRect updateRect) { if (be_control_look != NULL) { - rgb_color base = sMenuInfo.background_color; + rgb_color base = ui_color(B_MENU_BACKGROUND_COLOR); uint32 flags = 0; if (!IsEnabled()) flags |= BControlLook::B_DISABLED; @@ -1435,7 +1435,7 @@ BMenu::DrawBackground(BRect updateRect) } rgb_color oldColor = HighColor(); - SetHighColor(sMenuInfo.background_color); + SetHighColor(ui_color(B_MENU_BACKGROUND_COLOR)); FillRect(Bounds() & updateRect, B_SOLID_HIGH); SetHighColor(oldColor); } @@ -1469,7 +1469,7 @@ BMenu::_InitData(BMessage* archive) fLayoutData = new LayoutData; fLayoutData->lastResizingMode = ResizingMode(); - SetLowColor(sMenuInfo.background_color); + SetLowUIColor(B_MENU_BACKGROUND_COLOR); SetViewColor(B_TRANSPARENT_COLOR); fTriggerEnabled = sMenuInfo.triggers_always_shown; diff --git a/src/kits/interface/MenuBar.cpp b/src/kits/interface/MenuBar.cpp index 4351e73a3f..79005e559b 100644 --- a/src/kits/interface/MenuBar.cpp +++ b/src/kits/interface/MenuBar.cpp @@ -745,4 +745,6 @@ BMenuBar::_InitData(menu_layout layout) fLastBounds = new BRect(Bounds()); SetItemMargins(8, 2, 8, 2); _SetIgnoreHidden(true); + SetLowUIColor(B_MENU_BACKGROUND_COLOR); + SetViewColor(B_TRANSPARENT_COLOR); } diff --git a/src/kits/interface/MenuField.cpp b/src/kits/interface/MenuField.cpp index fd312af307..3318dad21c 100644 --- a/src/kits/interface/MenuField.cpp +++ b/src/kits/interface/MenuField.cpp @@ -428,19 +428,7 @@ void BMenuField::AttachedToWindow() { CALLED(); - rgb_color color; - - BView* parent = Parent(); - if (parent != NULL) { - // inherit the color from parent - color = parent->ViewColor(); - if (color == B_TRANSPARENT_COLOR) - color = ui_color(B_PANEL_BACKGROUND_COLOR); - } else - color = ui_color(B_PANEL_BACKGROUND_COLOR); - - SetViewColor(color); - SetLowColor(color); + AdoptParentColors(); } @@ -1078,6 +1066,7 @@ BMenuField::_DrawLabel(BRect updateRect) // save the current low color const rgb_color lowColor = LowColor(); + rgb_color textColor; MenuPrivate menuPrivate(fMenuBar); if (menuPrivate.State() != MENU_STATE_CLOSED) { @@ -1085,10 +1074,12 @@ BMenuField::_DrawLabel(BRect updateRect) SetLowColor(ui_color(B_MENU_SELECTED_BACKGROUND_COLOR)); BRect fillRect(rect.InsetByCopy(0, kVMargin)); FillRect(fillRect, B_SOLID_LOW); - } + textColor = ui_color(B_MENU_SELECTED_ITEM_TEXT_COLOR); + } else + textColor = ui_color(B_MENU_ITEM_TEXT_COLOR); be_control_look->DrawLabel(this, label, rect, updateRect, LowColor(), flags, - BAlignment(fAlign, B_ALIGN_MIDDLE)); + BAlignment(fAlign, B_ALIGN_MIDDLE), &textColor); // restore the previous low color SetLowColor(lowColor); diff --git a/src/kits/interface/MenuItem.cpp b/src/kits/interface/MenuItem.cpp index d51280c538..e4bf883c08 100644 --- a/src/kits/interface/MenuItem.cpp +++ b/src/kits/interface/MenuItem.cpp @@ -445,8 +445,8 @@ BMenuItem::DrawContent() void BMenuItem::Draw() { - const rgb_color lowColor = fSuper->LowColor(); - const rgb_color highColor = fSuper->HighColor(); + const color_which lowColor = fSuper->LowUIColor(); + const color_which highColor = fSuper->HighUIColor(); bool enabled = IsEnabled(); bool selected = IsSelected(); @@ -493,8 +493,8 @@ BMenuItem::Draw() } // restore the parent menu's low color and high color - fSuper->SetLowColor(lowColor); - fSuper->SetHighColor(highColor); + fSuper->SetLowUIColor(lowColor); + fSuper->SetHighUIColor(highColor); } diff --git a/src/kits/interface/MenuWindow.cpp b/src/kits/interface/MenuWindow.cpp index 42889a9be6..e8e5eeb4c6 100644 --- a/src/kits/interface/MenuWindow.cpp +++ b/src/kits/interface/MenuWindow.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009, Haiku, Inc. + * Copyright 2001-2015, Haiku, Inc. * Distributed under the terms of the MIT License. * * Authors: @@ -79,7 +79,7 @@ BMenuScroller::BMenuScroller(BRect frame) BView(frame, "menu scroller", 0, B_WILL_DRAW | B_FRAME_EVENTS), fEnabled(false) { - SetViewColor(ui_color(B_MENU_BACKGROUND_COLOR)); + SetViewUIColor(B_MENU_BACKGROUND_COLOR); } diff --git a/src/kits/interface/ScrollView.cpp b/src/kits/interface/ScrollView.cpp index 029c083e1b..905114c58d 100644 --- a/src/kits/interface/ScrollView.cpp +++ b/src/kits/interface/ScrollView.cpp @@ -738,7 +738,7 @@ BScrollView::_Init(bool horizontal, bool vertical) fBorders = BControlLook::B_ALL_BORDERS; if (be_control_look != NULL) - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); if (horizontal) { fHorizontalScrollBar = new BScrollBar(BRect(0, 0, 14, 14), "_HSB_", diff --git a/src/kits/interface/Slider.cpp b/src/kits/interface/Slider.cpp index 479a81ca6e..fa1ac56cc7 100644 --- a/src/kits/interface/Slider.cpp +++ b/src/kits/interface/Slider.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2013 Haiku, Inc. + * Copyright 2001-2015 Haiku, Inc. * Distributed under the terms of the MIT License. * * Authors: @@ -394,7 +394,10 @@ BSlider::AttachedToWindow() BView* view = OffscreenView(); if (view && view->LockLooper()) { view->SetViewColor(B_TRANSPARENT_COLOR); - view->SetLowColor(LowColor()); + if (LowUIColor() != B_NO_COLOR) + view->SetLowUIColor(LowUIColor()); + else + view->SetLowColor(LowColor()); view->UnlockLooper(); } @@ -411,6 +414,12 @@ void BSlider::AllAttached() { BControl::AllAttached(); + + // When using a layout we may not have a parent, so we need to employ the + // standard system colors manually. Due to how layouts work, this must + // happen here, rather than in AttachedToWindow(). + if (Parent() == NULL) + SetLowUIColor(B_PANEL_BACKGROUND_COLOR); } @@ -1006,7 +1015,7 @@ BSlider::DrawHashMarks() BView* view = OffscreenView(); if (be_control_look != NULL) { - rgb_color base = ui_color(B_PANEL_BACKGROUND_COLOR); + rgb_color base = ui_color(B_CONTROL_MARK_COLOR); uint32 flags = be_control_look->Flags(this); be_control_look->DrawSliderHashMarks(view, frame, frame, base, fHashMarkCount, fHashMarks, flags, fOrientation); diff --git a/src/kits/interface/SplitView.cpp b/src/kits/interface/SplitView.cpp index 6a174d5db6..79fc9814e0 100644 --- a/src/kits/interface/SplitView.cpp +++ b/src/kits/interface/SplitView.cpp @@ -1,5 +1,6 @@ /* * Copyright 2006, Ingo Weinhold . + * Copyright 2015, Haiku, Inc. * All rights reserved. Distributed under the terms of the MIT License. */ @@ -20,7 +21,6 @@ BSplitView::BSplitView(orientation orientation, float spacing) B_WILL_DRAW | B_FULL_UPDATE_ON_RESIZE | B_INVALIDATE_AFTER_LAYOUT, fSplitLayout = new BSplitLayout(orientation, spacing)) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); } @@ -236,6 +236,13 @@ BSplitView::AddChild(int32 index, BLayoutItem* child, float weight) } +void +BSplitView::AttachedToWindow() +{ + AdoptParentColors(); +} + + void BSplitView::Draw(BRect updateRect) { diff --git a/src/kits/interface/StatusBar.cpp b/src/kits/interface/StatusBar.cpp index 7cd4f74ea0..4da4fa38c1 100644 --- a/src/kits/interface/StatusBar.cpp +++ b/src/kits/interface/StatusBar.cpp @@ -1,11 +1,12 @@ /* - * Copyright 2001-2008, Haiku, Inc. All Rights Reserved. + * Copyright 2001-2015, Haiku, Inc. All Rights Reserved. * Distributed under the terms of the MIT License. * * Authors: * Marc Flerackers (mflerackers@androme.be) * Axel Dörfler, axeld@pinc-software.de * Stephan Aßmus + * Joseph Groover */ /*! BStatusBar displays a "percentage-of-completion" gauge. */ @@ -23,8 +24,9 @@ #include - -static const rgb_color kDefaultBarColor = {50, 150, 255, 255}; +enum internalFlags { + kCustomBarColor = 1 +}; BStatusBar::BStatusBar(BRect frame, const char *name, const char *label, @@ -69,8 +71,10 @@ BStatusBar::BStatusBar(BMessage *archive) } int32 color; - if (archive->FindInt32("_bcolor", (int32 *)&color) == B_OK) + if (archive->FindInt32("_bcolor", (int32 *)&color) == B_OK) { fBarColor = *(rgb_color *)&color; + fInternalFlags |= kCustomBarColor; + } if (archive->FindFloat("_val", &floatValue) == B_OK) fCurrent = floatValue; @@ -104,7 +108,7 @@ BStatusBar::Archive(BMessage *archive, bool deep) const if (fCustomBarHeight) err = archive->AddFloat("_high", fBarHeight); - if (err == B_OK && fBarColor != kDefaultBarColor) + if (err == B_OK && fInternalFlags & kCustomBarColor) err = archive->AddInt32("_bcolor", (const uint32 &)fBarColor); if (err == B_OK && fCurrent != 0) @@ -138,18 +142,13 @@ BStatusBar::AttachedToWindow() ResizeTo(Bounds().Width(), height); SetViewColor(B_TRANSPARENT_COLOR); - rgb_color lowColor = B_TRANSPARENT_COLOR; - BView* parent = Parent(); - if (parent != NULL) - lowColor = parent->ViewColor(); - - if (lowColor == B_TRANSPARENT_COLOR) - lowColor = ui_color(B_PANEL_BACKGROUND_COLOR); - - SetLowColor(lowColor); + AdoptParentColors(); fTextDivider = Bounds().Width(); + + if ((fInternalFlags & kCustomBarColor) == 0) + fBarColor = ui_color(B_CONTROL_MARK_COLOR); } @@ -311,7 +310,8 @@ BStatusBar::Draw(BRect updateRect) GetFont(&font); if (rightText.Length()) { - font.TruncateString(&rightText, B_TRUNCATE_BEGINNING, rect.Width()); + font.TruncateString(&rightText, B_TRUNCATE_BEGINNING, + rect.Width()); fTextDivider -= StringWidth(rightText.String()); } @@ -320,14 +320,22 @@ BStatusBar::Draw(BRect updateRect) font.TruncateString(&leftText, B_TRUNCATE_END, width); } - SetHighColor(ui_color(B_CONTROL_TEXT_COLOR)); + rgb_color textColor = ui_color(B_PANEL_TEXT_COLOR); + + if (backgroundColor != ui_color(B_PANEL_BACKGROUND_COLOR)) { + if (backgroundColor.Brightness() > 100) + textColor = make_color(0, 0, 0, 255); + else + textColor = make_color(255, 255, 255, 255); + } + + SetHighColor(textColor); if (leftText.Length()) DrawString(leftText.String(), BPoint(rect.left, baseLine)); if (rightText.Length()) DrawString(rightText.String(), BPoint(fTextDivider, baseLine)); - } // Draw bar @@ -344,22 +352,22 @@ BStatusBar::Draw(BRect updateRect) } // First bevel - SetHighColor(tint_color(ui_color ( B_PANEL_BACKGROUND_COLOR ), B_DARKEN_1_TINT)); + SetHighColor(tint_color(backgroundColor, B_DARKEN_1_TINT)); StrokeLine(rect.LeftBottom(), rect.LeftTop()); StrokeLine(rect.RightTop()); - SetHighColor(tint_color(ui_color(B_PANEL_BACKGROUND_COLOR), B_LIGHTEN_2_TINT)); + SetHighColor(tint_color(backgroundColor, B_LIGHTEN_2_TINT)); StrokeLine(BPoint(rect.left + 1, rect.bottom), rect.RightBottom()); StrokeLine(BPoint(rect.right, rect.top + 1)); rect.InsetBy(1, 1); // Second bevel - SetHighColor(tint_color(ui_color ( B_PANEL_BACKGROUND_COLOR ), B_DARKEN_4_TINT)); + SetHighColor(tint_color(backgroundColor, B_DARKEN_4_TINT)); StrokeLine(rect.LeftBottom(), rect.LeftTop()); StrokeLine(rect.RightTop()); - SetHighColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetHighColor(backgroundColor); StrokeLine(BPoint(rect.left + 1, rect.bottom), rect.RightBottom()); StrokeLine(BPoint(rect.right, rect.top + 1)); @@ -387,7 +395,7 @@ BStatusBar::Draw(BRect updateRect) // empty space rect.left = rect.right + 1; rect.right = barFrame.right; - SetHighColor(tint_color(ui_color(B_PANEL_BACKGROUND_COLOR), B_LIGHTEN_MAX_TINT)); + SetHighColor(tint_color(backgroundColor, B_LIGHTEN_MAX_TINT)); FillRect(rect); } } @@ -423,6 +431,17 @@ BStatusBar::MessageReceived(BMessage *message) break; } + case B_COLORS_UPDATED: + { + // Change the bar color IF we don't have an application-set color. + if ((fInternalFlags & kCustomBarColor) == 0) { + message->FindColor(ui_color_name(B_CONTROL_MARK_COLOR), + &fBarColor); + } + + break; + } + default: BView::MessageReceived(message); break; @@ -457,6 +476,7 @@ BStatusBar::MouseMoved(BPoint point, uint32 transit, const BMessage *message) void BStatusBar::SetBarColor(rgb_color color) { + fInternalFlags |= kCustomBarColor; fBarColor = color; Invalidate(); @@ -755,8 +775,8 @@ BStatusBar::_InitObject() fBarHeight = -1.0; fTextDivider = Bounds().Width(); - fBarColor = kDefaultBarColor; fCustomBarHeight = false; + fInternalFlags = 0; SetFlags(Flags() | B_FRAME_EVENTS); } diff --git a/src/kits/interface/StringView.cpp b/src/kits/interface/StringView.cpp index e4d1ca7fb5..29a6c93f75 100644 --- a/src/kits/interface/StringView.cpp +++ b/src/kits/interface/StringView.cpp @@ -128,16 +128,16 @@ BStringView::Archive(BMessage* data, bool deep) const void BStringView::AttachedToWindow() { - rgb_color color = B_TRANSPARENT_COLOR; + if (HasDefaultColors()) { + AdoptParentColors(); + SetHighUIColor(B_PANEL_TEXT_COLOR); + } - BView* parent = Parent(); - if (parent != NULL) - color = parent->ViewColor(); - - if (color == B_TRANSPARENT_COLOR) - color = ui_color(B_PANEL_BACKGROUND_COLOR); - - SetViewColor(color); + if (ViewColor() == B_TRANSPARENT_COLOR) { + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); + SetLowUIColor(B_PANEL_BACKGROUND_COLOR); + SetHighUIColor(B_PANEL_TEXT_COLOR); + } } @@ -254,7 +254,8 @@ BStringView::Draw(BRect updateRect) if (!fText) return; - SetLowColor(ViewColor()); + if (LowUIColor() == B_NO_COLOR) + SetLowColor(ViewColor()); font_height fontHeight; GetFontHeight(&fontHeight); diff --git a/src/kits/interface/TabView.cpp b/src/kits/interface/TabView.cpp index 28c93c6c33..734890b4c6 100644 --- a/src/kits/interface/TabView.cpp +++ b/src/kits/interface/TabView.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2013 Haiku, Inc. All rights reserved. + * Copyright 2001-2015 Haiku, Inc. All rights reserved. * Distributed under the terms of the MIT License. * * Authors: @@ -1224,10 +1224,8 @@ BTabView::_InitObject(bool layouted, button_width width) fTabOffset = 0.0f; fBorderStyle = B_FANCY_BORDER; - rgb_color color = ui_color(B_PANEL_BACKGROUND_COLOR); - - SetViewColor(color); - SetLowColor(color); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); + SetLowUIColor(B_PANEL_BACKGROUND_COLOR); font_height fh; GetFontHeight(&fh); @@ -1264,8 +1262,8 @@ BTabView::_InitContainerView(bool layouted) _LayoutContainerView(layouted); if (createdContainer) { - fContainerView->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); - fContainerView->SetLowColor(fContainerView->ViewColor()); + fContainerView->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); + fContainerView->SetLowUIColor(B_PANEL_BACKGROUND_COLOR); AddChild(fContainerView); } } diff --git a/src/kits/interface/TextControl.cpp b/src/kits/interface/TextControl.cpp index 3e2707f3fa..c05a1bcc93 100644 --- a/src/kits/interface/TextControl.cpp +++ b/src/kits/interface/TextControl.cpp @@ -357,7 +357,7 @@ BTextControl::Draw(BRect updateRect) BRect rect = fText->Frame(); rect.InsetBy(-2, -2); - rgb_color base = ui_color(B_PANEL_BACKGROUND_COLOR); + rgb_color base = ViewColor(); uint32 flags = fLook; if (!enabled) flags |= BControlLook::B_DISABLED; @@ -464,6 +464,16 @@ BTextControl::LayoutInvalidated(bool descendants) void BTextControl::MessageReceived(BMessage* message) { + if (message->what == B_COLORS_UPDATED) { + + if (message->HasColor(ui_color_name(B_PANEL_BACKGROUND_COLOR)) + || message->HasColor(ui_color_name(B_PANEL_TEXT_COLOR)) + || message->HasColor(ui_color_name(B_DOCUMENT_BACKGROUND_COLOR)) + || message->HasColor(ui_color_name(B_DOCUMENT_TEXT_COLOR))) { + _UpdateTextViewColors(IsEnabled()); + } + } + if (message->what == B_GET_PROPERTY || message->what == B_SET_PROPERTY) { BMessage reply(B_REPLY); bool handled = false; @@ -1025,30 +1035,20 @@ BTextControl::operator=(const BTextControl&) void BTextControl::_UpdateTextViewColors(bool enable) { - rgb_color textColor; - rgb_color color; + rgb_color textColor = ui_color(B_DOCUMENT_TEXT_COLOR); + rgb_color viewColor = ui_color(B_DOCUMENT_BACKGROUND_COLOR); BFont font; fText->GetFontAndColor(0, &font); - if (enable) - textColor = ui_color(B_DOCUMENT_TEXT_COLOR); - else { - textColor = tint_color(ui_color(B_PANEL_BACKGROUND_COLOR), - B_DISABLED_LABEL_TINT); + if (!enable) { + textColor = disable_color(textColor, ViewColor()); + viewColor = disable_color(ViewColor(), viewColor); } fText->SetFontAndColor(&font, B_FONT_ALL, &textColor); - - if (enable) - color = ui_color(B_DOCUMENT_BACKGROUND_COLOR); - else { - color = tint_color(ui_color(B_PANEL_BACKGROUND_COLOR), - B_LIGHTEN_2_TINT); - } - - fText->SetViewColor(color); - fText->SetLowColor(color); + fText->SetViewColor(viewColor); + fText->SetLowColor(viewColor); } diff --git a/src/kits/interface/TextView.cpp b/src/kits/interface/TextView.cpp index 37a0d0ca93..7aee6a30bd 100644 --- a/src/kits/interface/TextView.cpp +++ b/src/kits/interface/TextView.cpp @@ -3051,8 +3051,10 @@ BTextView::_InitObject(BRect textRect, const BFont* initialFont, _NormalizeFont(&font); + rgb_color documentTextColor = ui_color(B_DOCUMENT_TEXT_COLOR); + if (initialColor == NULL) - initialColor = &kBlackColor; + initialColor = &documentTextColor; fText = new BPrivate::TextGapBuffer; fLines = new LineBuffer; @@ -3113,6 +3115,7 @@ BTextView::_InitObject(BRect textRect, const BFont* initialFont, fLastClickOffset = -1; SetDoesUndo(true); + SetViewUIColor(B_DOCUMENT_BACKGROUND_COLOR); } diff --git a/src/kits/interface/ToolTip.cpp b/src/kits/interface/ToolTip.cpp index 2885c4732e..f5a4873f1b 100644 --- a/src/kits/interface/ToolTip.cpp +++ b/src/kits/interface/ToolTip.cpp @@ -219,7 +219,7 @@ BTextToolTip::_InitData(const char* text) fTextView = new BTextView("tool tip text"); fTextView->SetText(text); fTextView->MakeEditable(false); - fTextView->SetViewColor(ui_color(B_TOOL_TIP_BACKGROUND_COLOR)); + fTextView->SetViewUIColor(B_TOOL_TIP_BACKGROUND_COLOR); rgb_color color = ui_color(B_TOOL_TIP_TEXT_COLOR); fTextView->SetFontAndColor(NULL, 0, &color); fTextView->SetWordWrap(false); diff --git a/src/kits/interface/ToolTipManager.cpp b/src/kits/interface/ToolTipManager.cpp index 5084adcebf..7f4d8a5da9 100644 --- a/src/kits/interface/ToolTipManager.cpp +++ b/src/kits/interface/ToolTipManager.cpp @@ -66,7 +66,7 @@ ToolTipView::ToolTipView(BToolTip* tip) fHidden(false) { fToolTip->AcquireReference(); - SetViewColor(ui_color(B_TOOL_TIP_BACKGROUND_COLOR)); + SetViewUIColor(B_TOOL_TIP_BACKGROUND_COLOR); BGroupLayout* layout = new BGroupLayout(B_VERTICAL); layout->SetInsets(5, 5, 5, 5); From a4f254fa49a123689f31fb440db38b9a97268979 Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Mon, 4 Jan 2016 07:06:55 -0500 Subject: [PATCH 055/242] Remove printf() definition added in previous commit. --- src/kits/interface/GroupView.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/kits/interface/GroupView.cpp b/src/kits/interface/GroupView.cpp index b4a62d84c4..96b6cea547 100644 --- a/src/kits/interface/GroupView.cpp +++ b/src/kits/interface/GroupView.cpp @@ -8,8 +8,6 @@ #include -extern "C" void printf(const char*, ...); - BGroupView::BGroupView(orientation orientation, float spacing) : From 3199cff3224b1886af9a87a220ce3c4e9cb7dd65 Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Mon, 4 Jan 2016 07:08:24 -0500 Subject: [PATCH 056/242] kits/interface: Convert the new BCardView over as well. --- src/kits/interface/CardView.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/kits/interface/CardView.cpp b/src/kits/interface/CardView.cpp index 25c31c7158..66e2fa73d5 100644 --- a/src/kits/interface/CardView.cpp +++ b/src/kits/interface/CardView.cpp @@ -12,7 +12,7 @@ BCardView::BCardView() : BView(NULL, 0, new BCardLayout()) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + AdoptSystemColors(); } @@ -20,7 +20,7 @@ BCardView::BCardView(const char* name) : BView(name, 0, new BCardLayout()) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + AdoptSystemColors(); } @@ -28,6 +28,7 @@ BCardView::BCardView(BMessage* from) : BView(from) { + AdoptSystemColors(); } From d8ca833a3503acd69aee35ed99aa0e35fd0afbde Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Mon, 4 Jan 2016 07:10:54 -0500 Subject: [PATCH 057/242] SliderTest: dos2unix. --- src/tests/kits/interface/SliderTest.cpp | 386 ++++++++++++------------ 1 file changed, 193 insertions(+), 193 deletions(-) diff --git a/src/tests/kits/interface/SliderTest.cpp b/src/tests/kits/interface/SliderTest.cpp index abad5e5d66..93f66d9f7a 100644 --- a/src/tests/kits/interface/SliderTest.cpp +++ b/src/tests/kits/interface/SliderTest.cpp @@ -1,193 +1,193 @@ -/* - * Copyright 2005, Axel Dörfler, axeld@pinc-software.de. All rights reserved. - * Distributed under the terms of the MIT License. - */ - - -#include -#include -#include -#include - -#include - - -class Window : public BWindow { - public: - Window(); - - virtual bool QuitRequested(); -}; - - -void -downBy(BRect &rect, BView* view) -{ - rect.bottom = rect.top + view->Bounds().Height() + 10; - rect.OffsetBy(0, rect.Height()); -} - - -void -rightBy(BRect &rect, BView* view) -{ - rect.right = rect.left + view->Bounds().Width() + 10; - rect.OffsetBy(rect.Width(), 0); -} - - -// #pragma mark - - - -Window::Window() - : BWindow(BRect(100, 100, 600, 400), "Slider-Test", - B_TITLED_WINDOW, B_ASYNCHRONOUS_CONTROLS) -{ - BRect rect = Bounds(); - BView* view = new BView(rect, NULL, B_FOLLOW_ALL, B_WILL_DRAW); - view->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); - AddChild(view); - - // horizontal sliders - - rect.InsetBy(10, 10); - rect.right = rect.left + 250; - rect.bottom = rect.top + 30; - - BSlider* slider = new BSlider(rect, "Slider1", "Test 1", NULL, 0, 100); - slider->ResizeToPreferred(); - view->AddChild(slider); - - downBy(rect, slider); - - slider = new BSlider(rect, "Slider2", "Test 2", NULL, 0, 100, B_TRIANGLE_THUMB); - slider->ResizeToPreferred(); - view->AddChild(slider); - - downBy(rect, slider); - - slider = new BSlider(rect, "Slider3", "Test 3", NULL, 0, 100); - rgb_color color = { 200, 80, 80, 255 }; - slider->UseFillColor(true, &color); - slider->SetHashMarks(B_HASH_MARKS_BOTTOM); - slider->SetHashMarkCount(11); - slider->SetLimitLabels("0", "100"); - slider->SetBarThickness(12.0); - slider->ResizeToPreferred(); - view->AddChild(slider); - - downBy(rect, slider); - - slider = new BSlider(rect, "Slider4", "Test 4", NULL, 0, 100, B_TRIANGLE_THUMB); - slider->SetLimitLabels("0", "100"); - slider->UseFillColor(true, &color); - slider->SetBarThickness(20.0); - slider->SetHashMarks(B_HASH_MARKS_BOTH); - slider->SetHashMarkCount(21); - slider->ResizeToPreferred(); - view->AddChild(slider); - - downBy(rect, slider); - rect.right = rect.left + 100; - rect.bottom = rect.top + 100; - - slider = new BSlider(rect, "SliderA", "Test A", NULL, 0, 100); - slider->SetLimitLabels("0", "100"); - slider->UseFillColor(true, &color); - slider->SetHashMarks(B_HASH_MARKS_BOTH); - slider->SetHashMarkCount(5); - view->AddChild(slider); - - // vertical sliders - - rect.left = 270; - rect.right = rect.left + 30; - rect.top = 10; - rect.bottom = view->Bounds().Height() - 20; - - slider = new BSlider(rect, "Slider5", "Test 5", NULL, 0, 100); - slider->SetOrientation(B_VERTICAL); - slider->SetBarThickness(12.0); - slider->SetHashMarks(B_HASH_MARKS_RIGHT); - slider->SetHashMarkCount(5); - slider->ResizeToPreferred(); - view->AddChild(slider); - - rightBy(rect, slider); - - slider = new BSlider(rect, "Slider6", "Test 6", NULL, 0, 100, B_TRIANGLE_THUMB); - slider->SetOrientation(B_VERTICAL); - slider->ResizeToPreferred(); - view->AddChild(slider); - - rightBy(rect, slider); - - slider = new BSlider(rect, "Slider7", "Test 7", NULL, 0, 100); - slider->SetOrientation(B_VERTICAL); - slider->UseFillColor(true, &color); - slider->SetHashMarks(B_HASH_MARKS_BOTH); - slider->SetBarThickness(6.0); - slider->SetHashMarkCount(11); - slider->SetLimitLabels("0", "100"); - slider->ResizeToPreferred(); - view->AddChild(slider); - - rightBy(rect, slider); - - slider = new BSlider(rect, "Slider8", "Test 8", NULL, 0, 100, B_TRIANGLE_THUMB); - slider->SetOrientation(B_VERTICAL); - slider->UseFillColor(true, &color); - slider->SetBarThickness(20.0); - slider->SetHashMarks(B_HASH_MARKS_BOTH); - slider->SetHashMarkCount(21); - slider->SetLimitLabels("0", "100"); - slider->ResizeToPreferred(); - view->AddChild(slider); -} - - -bool -Window::QuitRequested() -{ - be_app->PostMessage(B_QUIT_REQUESTED); - return true; -} - - -// #pragma mark - - - -class Application : public BApplication { - public: - Application(); - - virtual void ReadyToRun(void); -}; - - -Application::Application() - : BApplication("application/x-vnd.haiku-test") -{ -} - - -void -Application::ReadyToRun(void) -{ - BWindow *window = new Window(); - window->Show(); -} - - -// #pragma mark - - - -int -main(int argc, char **argv) -{ - Application app; - - app.Run(); - return 0; -} - +/* + * Copyright 2005, Axel Dörfler, axeld@pinc-software.de. All rights reserved. + * Distributed under the terms of the MIT License. + */ + + +#include +#include +#include +#include + +#include + + +class Window : public BWindow { + public: + Window(); + + virtual bool QuitRequested(); +}; + + +void +downBy(BRect &rect, BView* view) +{ + rect.bottom = rect.top + view->Bounds().Height() + 10; + rect.OffsetBy(0, rect.Height()); +} + + +void +rightBy(BRect &rect, BView* view) +{ + rect.right = rect.left + view->Bounds().Width() + 10; + rect.OffsetBy(rect.Width(), 0); +} + + +// #pragma mark - + + +Window::Window() + : BWindow(BRect(100, 100, 600, 400), "Slider-Test", + B_TITLED_WINDOW, B_ASYNCHRONOUS_CONTROLS) +{ + BRect rect = Bounds(); + BView* view = new BView(rect, NULL, B_FOLLOW_ALL, B_WILL_DRAW); + view->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + AddChild(view); + + // horizontal sliders + + rect.InsetBy(10, 10); + rect.right = rect.left + 250; + rect.bottom = rect.top + 30; + + BSlider* slider = new BSlider(rect, "Slider1", "Test 1", NULL, 0, 100); + slider->ResizeToPreferred(); + view->AddChild(slider); + + downBy(rect, slider); + + slider = new BSlider(rect, "Slider2", "Test 2", NULL, 0, 100, B_TRIANGLE_THUMB); + slider->ResizeToPreferred(); + view->AddChild(slider); + + downBy(rect, slider); + + slider = new BSlider(rect, "Slider3", "Test 3", NULL, 0, 100); + rgb_color color = { 200, 80, 80, 255 }; + slider->UseFillColor(true, &color); + slider->SetHashMarks(B_HASH_MARKS_BOTTOM); + slider->SetHashMarkCount(11); + slider->SetLimitLabels("0", "100"); + slider->SetBarThickness(12.0); + slider->ResizeToPreferred(); + view->AddChild(slider); + + downBy(rect, slider); + + slider = new BSlider(rect, "Slider4", "Test 4", NULL, 0, 100, B_TRIANGLE_THUMB); + slider->SetLimitLabels("0", "100"); + slider->UseFillColor(true, &color); + slider->SetBarThickness(20.0); + slider->SetHashMarks(B_HASH_MARKS_BOTH); + slider->SetHashMarkCount(21); + slider->ResizeToPreferred(); + view->AddChild(slider); + + downBy(rect, slider); + rect.right = rect.left + 100; + rect.bottom = rect.top + 100; + + slider = new BSlider(rect, "SliderA", "Test A", NULL, 0, 100); + slider->SetLimitLabels("0", "100"); + slider->UseFillColor(true, &color); + slider->SetHashMarks(B_HASH_MARKS_BOTH); + slider->SetHashMarkCount(5); + view->AddChild(slider); + + // vertical sliders + + rect.left = 270; + rect.right = rect.left + 30; + rect.top = 10; + rect.bottom = view->Bounds().Height() - 20; + + slider = new BSlider(rect, "Slider5", "Test 5", NULL, 0, 100); + slider->SetOrientation(B_VERTICAL); + slider->SetBarThickness(12.0); + slider->SetHashMarks(B_HASH_MARKS_RIGHT); + slider->SetHashMarkCount(5); + slider->ResizeToPreferred(); + view->AddChild(slider); + + rightBy(rect, slider); + + slider = new BSlider(rect, "Slider6", "Test 6", NULL, 0, 100, B_TRIANGLE_THUMB); + slider->SetOrientation(B_VERTICAL); + slider->ResizeToPreferred(); + view->AddChild(slider); + + rightBy(rect, slider); + + slider = new BSlider(rect, "Slider7", "Test 7", NULL, 0, 100); + slider->SetOrientation(B_VERTICAL); + slider->UseFillColor(true, &color); + slider->SetHashMarks(B_HASH_MARKS_BOTH); + slider->SetBarThickness(6.0); + slider->SetHashMarkCount(11); + slider->SetLimitLabels("0", "100"); + slider->ResizeToPreferred(); + view->AddChild(slider); + + rightBy(rect, slider); + + slider = new BSlider(rect, "Slider8", "Test 8", NULL, 0, 100, B_TRIANGLE_THUMB); + slider->SetOrientation(B_VERTICAL); + slider->UseFillColor(true, &color); + slider->SetBarThickness(20.0); + slider->SetHashMarks(B_HASH_MARKS_BOTH); + slider->SetHashMarkCount(21); + slider->SetLimitLabels("0", "100"); + slider->ResizeToPreferred(); + view->AddChild(slider); +} + + +bool +Window::QuitRequested() +{ + be_app->PostMessage(B_QUIT_REQUESTED); + return true; +} + + +// #pragma mark - + + +class Application : public BApplication { + public: + Application(); + + virtual void ReadyToRun(void); +}; + + +Application::Application() + : BApplication("application/x-vnd.haiku-test") +{ +} + + +void +Application::ReadyToRun(void) +{ + BWindow *window = new Window(); + window->Show(); +} + + +// #pragma mark - + + +int +main(int argc, char **argv) +{ + Application app; + + app.Run(); + return 0; +} + From d231c2a7a54fd2f3d003a5d2cb8717614fc17626 Mon Sep 17 00:00:00 2001 From: looncraz Date: Thu, 10 Dec 2015 12:53:22 -0600 Subject: [PATCH 058/242] tests: Convert to using Set*UIColor. Signed-off-by: Augustin Cavalier Patches 0018-0019 from looncraz. --- .../add-ons/print/ppd/ui/PPDConfigView.cpp | 2 +- src/tests/kits/game/chart/ChartWindow.cpp | 34 +++++++++++++------ src/tests/kits/interface/SliderTest.cpp | 2 +- src/tests/kits/interface/StatusBarTest.cpp | 2 +- .../alert_manual_test/AlertTestWindow.cpp | 2 +- .../layout/widget_layout_test/CheckBox.cpp | 2 +- .../layout/widget_layout_test/GroupView.cpp | 6 ++-- .../layout/widget_layout_test/RadioButton.cpp | 2 +- .../layout/widget_layout_test/StringView.cpp | 2 +- .../widget_layout_test/WidgetLayoutTest.cpp | 4 +-- src/tests/kits/interface/look/Look.cpp | 2 +- .../kits/interface/pictureprint/Preview.cpp | 2 +- .../kits/net/DialUpPreflet/DialUpView.cpp | 2 +- .../net/DialUpPreflet/TextRequestDialog.cpp | 4 +-- src/tests/kits/opengl/glinfo/GearsView.cpp | 2 +- .../shared/shake_filter/ShakeFilterTest.cpp | 2 +- src/tests/libs/alm/FriendLayout.cpp | 2 +- src/tests/servers/app/bitmap_drawing/main.cpp | 2 +- .../app/constrain_clipping_region/main.cpp | 12 +++---- src/tests/servers/app/copy_bits/main.cpp | 4 +-- .../servers/app/event_mask/EventMask.cpp | 2 +- .../servers/app/hide_and_show/HideAndShow.cpp | 2 +- .../servers/app/look_and_feel/LookAndFeel.cpp | 2 +- .../servers/app/playground/ObjectWindow.cpp | 2 +- src/tests/servers/app/scrolling/main.cpp | 4 +-- src/tests/servers/app/statusbar/main.cpp | 2 +- .../servers/app/view_transit/ViewTransit.cpp | 2 +- 27 files changed, 61 insertions(+), 47 deletions(-) diff --git a/src/tests/add-ons/print/ppd/ui/PPDConfigView.cpp b/src/tests/add-ons/print/ppd/ui/PPDConfigView.cpp index 2b8d8b9c9e..963e904d3d 100644 --- a/src/tests/add-ons/print/ppd/ui/PPDConfigView.cpp +++ b/src/tests/add-ons/print/ppd/ui/PPDConfigView.cpp @@ -410,7 +410,7 @@ PPDConfigView::PPDConfigView(BRect bounds, const char *name, uint32 resizeMask, // add details view fDetails = new BView(listBounds, "details", B_FOLLOW_ALL_SIDES, B_WILL_DRAW); - fDetails->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + fDetails->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); BScrollView* scrollView = new BScrollView("details-scroll-view", fDetails, B_FOLLOW_ALL_SIDES, 0, true, true); diff --git a/src/tests/kits/game/chart/ChartWindow.cpp b/src/tests/kits/game/chart/ChartWindow.cpp index 0606c6e8bd..214916bede 100644 --- a/src/tests/kits/game/chart/ChartWindow.cpp +++ b/src/tests/kits/game/chart/ChartWindow.cpp @@ -66,7 +66,6 @@ enum { SPACE_LABEL = 40, SPACE_POPUP = 53, INSTANT_LOAD = 205, - LEFT_WIDTH = 96, LEFT_OFFSET = 2, STATUS_BOX = 98, STATUS_LABEL = 13, @@ -90,6 +89,11 @@ enum { REFRESH_RATE_V = 34 }; + +// Now calculated based off font size +int32 LEFT_WIDTH = 96; + + /* min, max and standard setting of the star count, also called starfield density. */ enum { @@ -143,9 +147,6 @@ enum { /* no comments (almost :-) */ #define abs(x) (((x)>0)?(x):-(x)) -/* default background color for the UI. */ -rgb_color background_color = { 216, 216, 216, 255 }; - /* the 7 colors for stars. */ static rgb_color color_list[7] = { { 255, 160, 160, 255 }, /* red */ @@ -476,9 +477,15 @@ ChartWindow::ChartWindow(BRect frame, const char *name) /* top line background */ r.Set(0.0, 0.0, frame.right, TOP_LEFT_LIMIT - 1); fTopView = new BView(r, "top view", B_FOLLOW_LEFT_RIGHT, B_WILL_DRAW); - fTopView->SetViewColor(background_color); + fTopView->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); AddChild(fTopView); + LEFT_WIDTH = (int32)fTopView->StringWidth(B_TRANSLATE("Full screen")) + + 22 + H_BORDER; + + if (LEFT_WIDTH < 96) + LEFT_WIDTH = 96; + h = 2; v = V_BORDER; @@ -628,7 +635,7 @@ ChartWindow::ChartWindow(BRect frame, const char *name) /* left column gray background */ r.Set(0.0, TOP_LEFT_LIMIT, LEFT_WIDTH - 1, frame.bottom); fLeftView = new BView(r, "top view", B_FOLLOW_LEFT | B_FOLLOW_TOP_BOTTOM, B_WILL_DRAW); - fLeftView->SetViewColor(background_color); + fLeftView->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); AddChild(fLeftView); h2 = LEFT_OFFSET; @@ -722,7 +729,7 @@ ChartWindow::ChartWindow(BRect frame, const char *name) boxWidth = max_c(width + r.left, boxWidth); fLeftView->AddChild(button); - v2 += AUTO_DEMO+LEFT_OFFSET*2; + v2 += button->Frame().Height()+LEFT_OFFSET*2; h = h2; v = v2; @@ -894,6 +901,13 @@ ChartWindow::ChartWindow(BRect frame, const char *name) fChartView->SetViewColor(0, 0, 0); AddChild(fChartView); + /*Resize Window Height to fit contents, if needed*/ + r = Bounds(); + r.bottom = fSpecialBox->Frame().bottom + H_BORDER * 2 + 20; + + if (r.Height() > Bounds().Height()) + ResizeTo(r.Width(), r.Height()); + /* allocate the semaphores */ fDrawingLock = create_sem(1, "chart locker"); fSecondThreadLock = create_sem(0, "chart second locker"); @@ -1206,7 +1220,7 @@ ChartWindow::OpenColorPalette(BPoint here) point.Set(0, 0); BColorControl *colorControl = new ChartColorControl(point, new BMessage(COLOR_PALETTE_MSG)); - colorControl->SetViewColor(background_color); + colorControl->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); colorControl->SetTarget(NULL, this); colorControl->SetValue(fCurrentSettings.back_color); colorControl->ResizeToPreferred(); @@ -1234,7 +1248,7 @@ ChartWindow::OpenStarDensity(BPoint here) frame.OffsetTo(0.0, 0.0); BSlider *slider = new BSlider(frame, "", NULL, new BMessage(STAR_DENSITY_MSG), STAR_DENSITY_MIN, STAR_DENSITY_MAX); - slider->SetViewColor(background_color); + slider->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); slider->SetTarget(NULL, this); slider->SetValue(fCurrentSettings.star_density); slider->SetModificationMessage(new BMessage(STAR_DENSITY_MSG)); @@ -1264,7 +1278,7 @@ ChartWindow::OpenRefresh(BPoint here) B_NOT_RESIZABLE | B_NOT_ZOOMABLE | B_WILL_ACCEPT_FIRST_CLICK); frame.OffsetTo(0.0, 0.0); BSlider *slider = new BSlider(frame, "", NULL, new BMessage(REFRESH_RATE_MSG), 0, 1000); - slider->SetViewColor(background_color); + slider->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); slider->SetTarget(NULL, this); slider->SetValue((int32)(1000 * log(fCurrentSettings.refresh_rate / REFRESH_RATE_MIN) / log(REFRESH_RATE_MAX/REFRESH_RATE_MIN))); diff --git a/src/tests/kits/interface/SliderTest.cpp b/src/tests/kits/interface/SliderTest.cpp index 93f66d9f7a..1fdba0375a 100644 --- a/src/tests/kits/interface/SliderTest.cpp +++ b/src/tests/kits/interface/SliderTest.cpp @@ -45,7 +45,7 @@ Window::Window() { BRect rect = Bounds(); BView* view = new BView(rect, NULL, B_FOLLOW_ALL, B_WILL_DRAW); - view->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + view->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); AddChild(view); // horizontal sliders diff --git a/src/tests/kits/interface/StatusBarTest.cpp b/src/tests/kits/interface/StatusBarTest.cpp index 001c27ddda..dad9036e37 100644 --- a/src/tests/kits/interface/StatusBarTest.cpp +++ b/src/tests/kits/interface/StatusBarTest.cpp @@ -32,7 +32,7 @@ Window::Window() B_TITLED_WINDOW, B_ASYNCHRONOUS_CONTROLS) { BView* main = new BView(Bounds(), NULL, B_FOLLOW_ALL, B_WILL_DRAW); - main->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + main->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); AddChild(main); BRect rect(20, 10, 400, 30); diff --git a/src/tests/kits/interface/balert/alert_manual_test/AlertTestWindow.cpp b/src/tests/kits/interface/balert/alert_manual_test/AlertTestWindow.cpp index 74b02126db..ca214f0515 100644 --- a/src/tests/kits/interface/balert/alert_manual_test/AlertTestWindow.cpp +++ b/src/tests/kits/interface/balert/alert_manual_test/AlertTestWindow.cpp @@ -96,7 +96,7 @@ AlertTestWindow::Test() ); if (fAlertType == 'H') { BView *master = pAlert->ChildAt(0); - master->SetViewColor(ui_color(B_MENU_BACKGROUND_COLOR)); + master->SetViewUIColor(B_MENU_BACKGROUND_COLOR); } BPoint pt; diff --git a/src/tests/kits/interface/layout/widget_layout_test/CheckBox.cpp b/src/tests/kits/interface/layout/widget_layout_test/CheckBox.cpp index 65985071f9..d2374a3ac2 100644 --- a/src/tests/kits/interface/layout/widget_layout_test/CheckBox.cpp +++ b/src/tests/kits/interface/layout/widget_layout_test/CheckBox.cpp @@ -16,7 +16,7 @@ CheckBox::CheckBox(BMessage* message, BMessenger target) : AbstractButton(BUTTON_POLICY_TOGGLE_ON_RELEASE, message, target) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); } diff --git a/src/tests/kits/interface/layout/widget_layout_test/GroupView.cpp b/src/tests/kits/interface/layout/widget_layout_test/GroupView.cpp index 67dcd709be..2b6f24a7c1 100644 --- a/src/tests/kits/interface/layout/widget_layout_test/GroupView.cpp +++ b/src/tests/kits/interface/layout/widget_layout_test/GroupView.cpp @@ -59,7 +59,7 @@ GroupView::GroupView(enum orientation orientation, int32 lineCount) fColumnInfos(NULL), fRowInfos(NULL) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); if (fLineCount < 1) fLineCount = 1; @@ -377,7 +377,7 @@ GroupView::_ChildAt(int32 column, int32 row) const Glue::Glue() : View() { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); } @@ -389,7 +389,7 @@ Strut::Strut(float pixelWidth, float pixelHeight) fSize(pixelWidth >= 0 ? pixelWidth - 1 : B_SIZE_UNSET, pixelHeight >= 0 ? pixelHeight - 1 : B_SIZE_UNSET) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); } diff --git a/src/tests/kits/interface/layout/widget_layout_test/RadioButton.cpp b/src/tests/kits/interface/layout/widget_layout_test/RadioButton.cpp index 07c70dea20..beb0a0837b 100644 --- a/src/tests/kits/interface/layout/widget_layout_test/RadioButton.cpp +++ b/src/tests/kits/interface/layout/widget_layout_test/RadioButton.cpp @@ -16,7 +16,7 @@ RadioButton::RadioButton(BMessage* message, BMessenger target) : AbstractButton(BUTTON_POLICY_SELECT_ON_RELEASE, message, target) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); } diff --git a/src/tests/kits/interface/layout/widget_layout_test/StringView.cpp b/src/tests/kits/interface/layout/widget_layout_test/StringView.cpp index 2f3db7985e..77218347af 100644 --- a/src/tests/kits/interface/layout/widget_layout_test/StringView.cpp +++ b/src/tests/kits/interface/layout/widget_layout_test/StringView.cpp @@ -19,7 +19,7 @@ StringView::StringView(const char* string) fStringWidth(0), fExplicitMinSize(B_SIZE_UNSET, B_SIZE_UNSET) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); fTextColor = (rgb_color){ 0, 0, 0, 255 }; } diff --git a/src/tests/kits/interface/layout/widget_layout_test/WidgetLayoutTest.cpp b/src/tests/kits/interface/layout/widget_layout_test/WidgetLayoutTest.cpp index 8132511545..afa9931f45 100644 --- a/src/tests/kits/interface/layout/widget_layout_test/WidgetLayoutTest.cpp +++ b/src/tests/kits/interface/layout/widget_layout_test/WidgetLayoutTest.cpp @@ -79,7 +79,7 @@ public: fTest(test) { fViewContainer = new ViewContainer(Bounds()); - fViewContainer->View::SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + fViewContainer->View::SetViewUIColor(B_PANEL_BACKGROUND_COLOR); AddChild(fViewContainer); // container view for the tested BView @@ -90,7 +90,7 @@ public: // container for the test's controls fTestControlsView = new View(BRect(410, 10, 690, 400)); - fTestControlsView->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + fTestControlsView->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); fViewContainer->View::AddChild(fTestControlsView); // wrapper view diff --git a/src/tests/kits/interface/look/Look.cpp b/src/tests/kits/interface/look/Look.cpp index 4e4f311871..6c32007496 100644 --- a/src/tests/kits/interface/look/Look.cpp +++ b/src/tests/kits/interface/look/Look.cpp @@ -327,7 +327,7 @@ main(int argc, char** argv) tabView->AddTab(content); BView* tab2 = new BView("Tab 2", 0); - tab2->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + tab2->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); tabView->AddTab(tab2); tabView->AddTab(new BView("Tab 3", 0)); diff --git a/src/tests/kits/interface/pictureprint/Preview.cpp b/src/tests/kits/interface/pictureprint/Preview.cpp index bf240ec482..3d1f3135a2 100644 --- a/src/tests/kits/interface/pictureprint/Preview.cpp +++ b/src/tests/kits/interface/pictureprint/Preview.cpp @@ -236,7 +236,7 @@ PreviewWindow::PreviewWindow(BFile* jobFile) r.top = top; fPreview = new PreviewView(jobFile, r); fPreviewScroller = new BScrollView("PreviewScroller", fPreview, B_FOLLOW_ALL, 0, true, true, B_FANCY_BORDER); - fPreviewScroller->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + fPreviewScroller->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); AddChild(fPreviewScroller); if (fPreview->InitCheck() == B_OK) { diff --git a/src/tests/kits/net/DialUpPreflet/DialUpView.cpp b/src/tests/kits/net/DialUpPreflet/DialUpView.cpp index 399a5f4266..e6f9bad2ed 100644 --- a/src/tests/kits/net/DialUpPreflet/DialUpView.cpp +++ b/src/tests/kits/net/DialUpPreflet/DialUpView.cpp @@ -85,7 +85,7 @@ DialUpView::DialUpView(BRect frame) { BRect bounds = Bounds(); // for caching - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); // add messenger to us so add-ons can contact us BMessenger messenger(this); diff --git a/src/tests/kits/net/DialUpPreflet/TextRequestDialog.cpp b/src/tests/kits/net/DialUpPreflet/TextRequestDialog.cpp index fb225a620a..c864a333f6 100644 --- a/src/tests/kits/net/DialUpPreflet/TextRequestDialog.cpp +++ b/src/tests/kits/net/DialUpPreflet/TextRequestDialog.cpp @@ -33,7 +33,7 @@ TextRequestDialog::TextRequestDialog(const char *title, const char *information, { BRect rect = Bounds(); BView *backgroundView = new BView(rect, "background", B_FOLLOW_ALL_SIDES, 0); - backgroundView->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + backgroundView->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); rect.InsetBy(5, 5); rect.bottom = rect.top; // init @@ -43,7 +43,7 @@ TextRequestDialog::TextRequestDialog(const char *title, const char *information, textRect.OffsetTo(0, 0); fTextView = new BTextView(rect, "TextView", textRect, B_FOLLOW_NONE, B_WILL_DRAW); - fTextView->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + fTextView->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); fTextView->MakeSelectable(false); fTextView->MakeEditable(false); fTextView->SetText(information); diff --git a/src/tests/kits/opengl/glinfo/GearsView.cpp b/src/tests/kits/opengl/glinfo/GearsView.cpp index 0d3ddc882a..10cf856d97 100644 --- a/src/tests/kits/opengl/glinfo/GearsView.cpp +++ b/src/tests/kits/opengl/glinfo/GearsView.cpp @@ -25,7 +25,7 @@ GearsView::GearsView() { SetExplicitMinSize(BSize(64.0 + 10.0, B_SIZE_UNSET)); SetExplicitPreferredSize(BSize(64.0 + 10.0, B_SIZE_UNLIMITED)); - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); _InitGearsBitmap(); } diff --git a/src/tests/kits/shared/shake_filter/ShakeFilterTest.cpp b/src/tests/kits/shared/shake_filter/ShakeFilterTest.cpp index 16495667c1..116c1ba0d3 100644 --- a/src/tests/kits/shared/shake_filter/ShakeFilterTest.cpp +++ b/src/tests/kits/shared/shake_filter/ShakeFilterTest.cpp @@ -29,7 +29,7 @@ View::View(BRect rect, const char* name, uint32 followMode) : BView(rect, name, followMode, B_WILL_DRAW) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); SetHighColor(255, 0, 0); } diff --git a/src/tests/libs/alm/FriendLayout.cpp b/src/tests/libs/alm/FriendLayout.cpp index 0d12305f24..450274617d 100644 --- a/src/tests/libs/alm/FriendLayout.cpp +++ b/src/tests/libs/alm/FriendLayout.cpp @@ -136,7 +136,7 @@ private: BView* _MakeALMView(BALMLayout* layout) { BView* view = new BView(NULL, 0, layout); - view->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + view->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); return view; } diff --git a/src/tests/servers/app/bitmap_drawing/main.cpp b/src/tests/servers/app/bitmap_drawing/main.cpp index 28124bb98a..d2d6a582ac 100644 --- a/src/tests/servers/app/bitmap_drawing/main.cpp +++ b/src/tests/servers/app/bitmap_drawing/main.cpp @@ -551,7 +551,7 @@ show_window(BRect frame, const char* name) B_FOLLOW_LEFT | B_FOLLOW_BOTTOM); view->AddChild(control); control->SetTarget(view); - control->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + control->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); window->Show(); } diff --git a/src/tests/servers/app/constrain_clipping_region/main.cpp b/src/tests/servers/app/constrain_clipping_region/main.cpp index da7bb28197..c806461f72 100644 --- a/src/tests/servers/app/constrain_clipping_region/main.cpp +++ b/src/tests/servers/app/constrain_clipping_region/main.cpp @@ -13,7 +13,7 @@ class TestView1 : public BView { TestView1(BRect frame, const char* name, uint32 resizeFlags, uint32 flags) : BView(frame, name, resizeFlags, flags) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); SetHighColor(ViewColor()); } @@ -40,7 +40,7 @@ class TestView2 : public BView { TestView2(BRect frame, const char* name, uint32 resizeFlags, uint32 flags) : BView(frame, name, resizeFlags, flags) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); SetHighColor(ViewColor()); } @@ -74,7 +74,7 @@ class TestView3 : public BView { TestView3(BRect frame, const char* name, uint32 resizeFlags, uint32 flags) : BView(frame, name, resizeFlags, flags) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); SetHighColor(ViewColor()); } @@ -120,7 +120,7 @@ class TestView4 : public BView { TestView4(BRect frame, const char* name, uint32 resizeFlags, uint32 flags) : BView(frame, name, resizeFlags, flags) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); SetHighColor(ViewColor()); } @@ -175,7 +175,7 @@ class TestView5 : public BView { TestView5(BRect frame, const char* name, uint32 resizeFlags, uint32 flags) : BView(frame, name, resizeFlags, flags) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); SetHighColor(ViewColor()); } @@ -213,7 +213,7 @@ class TestView6 : public BView { TestView6(BRect frame, const char* name, uint32 resizeFlags, uint32 flags) : BView(frame, name, resizeFlags, flags) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); SetHighColor(ViewColor()); } diff --git a/src/tests/servers/app/copy_bits/main.cpp b/src/tests/servers/app/copy_bits/main.cpp index 56c162a3d2..7fdc84535d 100644 --- a/src/tests/servers/app/copy_bits/main.cpp +++ b/src/tests/servers/app/copy_bits/main.cpp @@ -34,8 +34,8 @@ class TestView : public BView { fSourceRect.InsetBy(10.0, 10.0); fDestRect.InsetBy(10.0, 10.0); - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); - SetLowColor(ViewColor()); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); + SetLowUIColor(ViewUIColor()); } virtual void MessageReceived(BMessage* message); diff --git a/src/tests/servers/app/event_mask/EventMask.cpp b/src/tests/servers/app/event_mask/EventMask.cpp index e1da8b076a..05f00665a8 100644 --- a/src/tests/servers/app/event_mask/EventMask.cpp +++ b/src/tests/servers/app/event_mask/EventMask.cpp @@ -168,7 +168,7 @@ Window::Window() B_TITLED_WINDOW, B_ASYNCHRONOUS_CONTROLS | B_NOT_RESIZABLE | B_NOT_ZOOMABLE) { BView* view = new BView(Bounds(), NULL, B_FOLLOW_ALL, B_WILL_DRAW); - view->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + view->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); AddChild(view); BTextControl* textControl = new BTextControl(BRect(10, 10, 290, 30), diff --git a/src/tests/servers/app/hide_and_show/HideAndShow.cpp b/src/tests/servers/app/hide_and_show/HideAndShow.cpp index be87b66761..ed5df99cdf 100644 --- a/src/tests/servers/app/hide_and_show/HideAndShow.cpp +++ b/src/tests/servers/app/hide_and_show/HideAndShow.cpp @@ -44,7 +44,7 @@ Window::Window() B_FRAME_EVENTS | B_WILL_DRAW); view->MakeEditable(false); view->SetAlignment(B_ALIGN_CENTER); - view->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + view->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); view->SetText("The window will be hidden and shown every 2 seconds."); AddChild(view); diff --git a/src/tests/servers/app/look_and_feel/LookAndFeel.cpp b/src/tests/servers/app/look_and_feel/LookAndFeel.cpp index 5b182f023a..5aecb51a22 100644 --- a/src/tests/servers/app/look_and_feel/LookAndFeel.cpp +++ b/src/tests/servers/app/look_and_feel/LookAndFeel.cpp @@ -56,7 +56,7 @@ Window::Window(BRect frame, window_look look, window_feel feel) { BRect rect(Bounds()); BView *view = new BView(rect, NULL, B_FOLLOW_ALL, B_WILL_DRAW); - view->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + view->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); AddChild(view); if (!IsModal() && !IsFloating()) diff --git a/src/tests/servers/app/playground/ObjectWindow.cpp b/src/tests/servers/app/playground/ObjectWindow.cpp index e78462287a..cd1bf5fd32 100644 --- a/src/tests/servers/app/playground/ObjectWindow.cpp +++ b/src/tests/servers/app/playground/ObjectWindow.cpp @@ -147,7 +147,7 @@ ObjectWindow::ObjectWindow(BRect frame, const char* name) B_PLAIN_BORDER); AddChild(bg); - bg->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + bg->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); // object view occupies the right side of the window b.left = b.right + 1.0; diff --git a/src/tests/servers/app/scrolling/main.cpp b/src/tests/servers/app/scrolling/main.cpp index e583db9767..8b80e23fe5 100644 --- a/src/tests/servers/app/scrolling/main.cpp +++ b/src/tests/servers/app/scrolling/main.cpp @@ -21,8 +21,8 @@ class TestView : public BView { fTracking(false), fLastMousePos(0.0, 0.0) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); - SetLowColor(ViewColor()); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); + SetLowUIColor(ViewUIColor()); } virtual void MessageReceived(BMessage* message); diff --git a/src/tests/servers/app/statusbar/main.cpp b/src/tests/servers/app/statusbar/main.cpp index bebb88073d..e605a65936 100644 --- a/src/tests/servers/app/statusbar/main.cpp +++ b/src/tests/servers/app/statusbar/main.cpp @@ -24,7 +24,7 @@ public: { frame = Bounds(); BView* background = new BView(frame, "bg", B_FOLLOW_ALL, 0); - background->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + background->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); AddChild(background); frame = background->Bounds(); diff --git a/src/tests/servers/app/view_transit/ViewTransit.cpp b/src/tests/servers/app/view_transit/ViewTransit.cpp index c0fe4d283c..4481417739 100644 --- a/src/tests/servers/app/view_transit/ViewTransit.cpp +++ b/src/tests/servers/app/view_transit/ViewTransit.cpp @@ -35,7 +35,7 @@ View::View(BRect rect, const char* name, uint32 followMode, : BView(rect, name, followMode, B_WILL_DRAW), fLastTransit(B_OUTSIDE_VIEW) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); SetHighColor(red, green, blue); } From 1a8c00c14bf5a31835697c93f3f92fd860de0a10 Mon Sep 17 00:00:00 2001 From: looncraz Date: Thu, 10 Dec 2015 12:53:27 -0600 Subject: [PATCH 059/242] servers: Convert to using Set*UIColor. Signed-off-by: Augustin Cavalier Patches 0020-0022 from looncraz, unmodified. --- src/servers/bluetooth/DeskbarReplicant.cpp | 5 +---- src/servers/keystore/AppAccessRequestWindow.cpp | 4 ++-- src/servers/keystore/KeyRequestWindow.cpp | 4 ++-- src/servers/mail/DeskbarView.cpp | 10 +++++----- src/servers/notification/NotificationView.cpp | 2 +- src/servers/registrar/ShutdownProcess.cpp | 4 ++-- 6 files changed, 13 insertions(+), 16 deletions(-) diff --git a/src/servers/bluetooth/DeskbarReplicant.cpp b/src/servers/bluetooth/DeskbarReplicant.cpp index 81bb6933db..bb10d7a8a3 100644 --- a/src/servers/bluetooth/DeskbarReplicant.cpp +++ b/src/servers/bluetooth/DeskbarReplicant.cpp @@ -117,10 +117,7 @@ void DeskbarReplicant::AttachedToWindow() { BView::AttachedToWindow(); - if (Parent()) - SetViewColor(Parent()->ViewColor()); - else - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + AdoptParentColors(); SetLowColor(ViewColor()); } diff --git a/src/servers/keystore/AppAccessRequestWindow.cpp b/src/servers/keystore/AppAccessRequestWindow.cpp index dc77e4ce0a..c25ba584c1 100644 --- a/src/servers/keystore/AppAccessRequestWindow.cpp +++ b/src/servers/keystore/AppAccessRequestWindow.cpp @@ -41,7 +41,7 @@ public: : BView("AppAccessRequestView", B_WILL_DRAW) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); BGroupLayout* rootLayout = new(std::nothrow) BGroupLayout(B_VERTICAL); if (rootLayout == NULL) @@ -87,7 +87,7 @@ public: } message->SetText(details); - message->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + message->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); rgb_color textColor = ui_color(B_PANEL_TEXT_COLOR); message->SetFontAndColor(be_plain_font, B_FONT_ALL, &textColor); message->MakeEditable(false); diff --git a/src/servers/keystore/KeyRequestWindow.cpp b/src/servers/keystore/KeyRequestWindow.cpp index 6d93408d58..b017bbe988 100644 --- a/src/servers/keystore/KeyRequestWindow.cpp +++ b/src/servers/keystore/KeyRequestWindow.cpp @@ -42,7 +42,7 @@ public: BView("KeyRequestView", B_WILL_DRAW), fPassword(NULL) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); BGroupLayout* rootLayout = new(std::nothrow) BGroupLayout(B_VERTICAL); if (rootLayout == NULL) @@ -108,7 +108,7 @@ public: "If you unlock the keyring, it stays unlocked until the system is " "shut down or the keyring is manually locked again.\n" "If you cancel this dialog the keyring will remain locked.")); - message->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + message->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); rgb_color textColor = ui_color(B_PANEL_TEXT_COLOR); message->SetFontAndColor(be_plain_font, B_FONT_ALL, &textColor); message->MakeEditable(false); diff --git a/src/servers/mail/DeskbarView.cpp b/src/servers/mail/DeskbarView.cpp index 3a7a0b3e6b..d4d9f65b32 100644 --- a/src/servers/mail/DeskbarView.cpp +++ b/src/servers/mail/DeskbarView.cpp @@ -125,12 +125,12 @@ DeskbarView::~DeskbarView() void DeskbarView::AttachedToWindow() { BView::AttachedToWindow(); - if (Parent()) - SetViewColor(Parent()->ViewColor()); - else - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + AdoptParentColors(); - SetLowColor(ViewColor()); + if (ViewUIColor() == B_NO_COLOR) + SetLowColor(ViewColor()); + else + SetLowUIColor(ViewUIColor()); if (be_roster->IsRunning(B_MAIL_DAEMON_SIGNATURE)) { _RefreshMailQuery(); diff --git a/src/servers/notification/NotificationView.cpp b/src/servers/notification/NotificationView.cpp index cd0d98693e..1e54662412 100644 --- a/src/servers/notification/NotificationView.cpp +++ b/src/servers/notification/NotificationView.cpp @@ -74,7 +74,7 @@ NotificationView::NotificationView(NotificationWindow* win, BGroupLayout* layout = new BGroupLayout(B_VERTICAL); SetLayout(layout); - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); SetLowColor(ui_color(B_PANEL_BACKGROUND_COLOR)); switch (fNotification->Type()) { diff --git a/src/servers/registrar/ShutdownProcess.cpp b/src/servers/registrar/ShutdownProcess.cpp index 493189c901..c6ae176303 100644 --- a/src/servers/registrar/ShutdownProcess.cpp +++ b/src/servers/registrar/ShutdownProcess.cpp @@ -261,7 +261,7 @@ public: B_FOLLOW_NONE, 0); if (!fRootView) return B_NO_MEMORY; - fRootView->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + fRootView->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); AddChild(fRootView); // text view @@ -269,7 +269,7 @@ public: BRect(0, 0, 10, 10), B_FOLLOW_NONE); if (!fTextView) return B_NO_MEMORY; - fTextView->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + fTextView->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); rgb_color textColor = ui_color(B_PANEL_TEXT_COLOR); fTextView->SetFontAndColor(be_plain_font, B_FONT_ALL, &textColor); fTextView->MakeEditable(false); From f0650dc98fed895fc134a359aab99c27de6a0c6a Mon Sep 17 00:00:00 2001 From: looncraz Date: Thu, 10 Dec 2015 12:53:56 -0600 Subject: [PATCH 060/242] preferences: Convert to using Set*UIColor. Signed-off-by: Augustin Cavalier Patches 0023-0037 from looncraz, unmodified. --- src/add-ons/translators/bmp/BMPView.cpp | 2 +- src/add-ons/translators/exr/ConfigView.cpp | 2 +- src/add-ons/translators/gif/GIFView.cpp | 2 +- src/add-ons/translators/hpgs/ConfigView.cpp | 2 +- .../translators/jpeg/JPEGTranslator.cpp | 2 +- .../jpeg2000/JPEG2000Translator.cpp | 2 +- src/add-ons/translators/pcx/ConfigView.cpp | 2 +- src/add-ons/translators/png/PNGView.cpp | 4 +- src/add-ons/translators/ppm/PPMTranslator.cpp | 2 +- src/add-ons/translators/raw/ConfigView.cpp | 2 +- src/add-ons/translators/rtf/ConfigView.cpp | 2 +- src/add-ons/translators/sgi/SGIView.cpp | 2 +- src/add-ons/translators/stxt/STXTView.cpp | 2 +- src/add-ons/translators/tga/TGAView.cpp | 2 +- src/add-ons/translators/tiff/TIFFView.cpp | 4 +- src/add-ons/translators/webp/ConfigView.cpp | 2 +- .../wonderbrush/WonderBrushView.cpp | 2 +- src/bin/desklink/MediaReplicant.cpp | 23 ++--- src/kits/media/DefaultMediaTheme.cpp | 11 ++- src/preferences/appearance/APRView.cpp | 85 +++++++++--------- src/preferences/appearance/APRView.h | 14 +-- src/preferences/appearance/APRWindow.h | 2 +- .../appearance/AntialiasingSettingsView.cpp | 54 ++++++++---- .../appearance/AntialiasingSettingsView.h | 3 + src/preferences/appearance/ColorSet.h | 61 ------------- .../appearance/{ColorSet.cpp => Colors.cpp} | 88 ++++++------------- src/preferences/appearance/Colors.h | 29 ++++++ src/preferences/appearance/CurView.cpp | 6 +- src/preferences/appearance/FontMenu.cpp | 1 - src/preferences/appearance/FontView.cpp | 2 +- src/preferences/appearance/Jamfile | 4 +- .../appearance/LookAndFeelSettingsView.cpp | 14 +-- src/preferences/appearance/MenuView.cpp | 2 +- .../bluetooth/BluetoothDeviceView.cpp | 2 +- .../bluetooth/BluetoothSettingsView.cpp | 2 +- src/preferences/bluetooth/InquiryPanel.cpp | 4 +- .../bluetooth/RemoteDevicesView.cpp | 4 +- .../DataTranslationsWindow.cpp | 31 +++++-- .../datatranslations/DataTranslationsWindow.h | 2 + src/preferences/datatranslations/Jamfile | 2 +- .../filetypes/ApplicationTypesWindow.cpp | 2 +- src/preferences/filetypes/AttributeWindow.cpp | 2 +- src/preferences/filetypes/IconView.cpp | 5 +- src/preferences/fonts/FontView.cpp | 2 +- src/preferences/joysticks/CalibWin.cpp | 2 +- src/preferences/joysticks/JoyWin.cpp | 2 +- src/preferences/joysticks/MessageWin.cpp | 4 +- src/preferences/keymap/KeyboardLayoutView.cpp | 5 +- src/preferences/locale/FormatSettingsView.cpp | 2 + src/preferences/mail/AutoConfigView.cpp | 9 ++ src/preferences/mail/AutoConfigWindow.cpp | 7 ++ src/preferences/mail/ConfigWindow.cpp | 41 ++++++--- src/preferences/mail/ConfigWindow.h | 4 +- src/preferences/mail/Jamfile | 2 +- src/preferences/media/MediaWindow.cpp | 4 +- src/preferences/mouse/MouseView.cpp | 5 +- .../network/DialUpAddOn/DialUpView.cpp | 2 +- .../network/DialUpAddOn/GeneralAddon.cpp | 2 +- .../network/DialUpAddOn/TextRequestDialog.cpp | 4 +- src/preferences/network/NetworkWindow.cpp | 2 +- src/preferences/network/ServiceView.cpp | 2 +- src/preferences/screen/MonitorView.cpp | 11 ++- src/preferences/screen/RefreshWindow.cpp | 2 +- src/preferences/screen/ScreenSettings.cpp | 11 ++- .../screensaver/PasswordWindow.cpp | 2 +- src/preferences/screensaver/PreviewView.cpp | 2 +- .../screensaver/ScreenCornerSelector.cpp | 2 +- .../screensaver/ScreenSaverWindow.cpp | 63 ++++++++----- src/preferences/time/AnalogClock.cpp | 2 +- src/preferences/time/BaseView.cpp | 3 +- src/preferences/time/ClockView.cpp | 3 +- src/preferences/time/DateTimeEdit.cpp | 21 +++-- src/preferences/time/DateTimeView.cpp | 3 +- src/preferences/time/SectionEdit.cpp | 3 +- src/preferences/time/TZDisplay.cpp | 3 +- src/preferences/time/ZoneView.cpp | 3 +- 76 files changed, 376 insertions(+), 352 deletions(-) delete mode 100644 src/preferences/appearance/ColorSet.h rename src/preferences/appearance/{ColorSet.cpp => Colors.cpp} (71%) create mode 100644 src/preferences/appearance/Colors.h diff --git a/src/add-ons/translators/bmp/BMPView.cpp b/src/add-ons/translators/bmp/BMPView.cpp index d6eeadc023..03bef52f3b 100644 --- a/src/add-ons/translators/bmp/BMPView.cpp +++ b/src/add-ons/translators/bmp/BMPView.cpp @@ -28,7 +28,7 @@ BMPView::BMPView(const BRect &frame, const char *name, uint32 resizeMode, : BView(frame, name, resizeMode, flags) { fSettings = settings; - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); BStringView *titleView = new BStringView("title", B_TRANSLATE("BMP image translator")); diff --git a/src/add-ons/translators/exr/ConfigView.cpp b/src/add-ons/translators/exr/ConfigView.cpp index 60fd78baa9..8b18c666f5 100644 --- a/src/add-ons/translators/exr/ConfigView.cpp +++ b/src/add-ons/translators/exr/ConfigView.cpp @@ -24,7 +24,7 @@ ConfigView::ConfigView(uint32 flags) : BView("EXRTranslator Settings", flags) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); BStringView *titleView = new BStringView("title", B_TRANSLATE("EXR image translator")); diff --git a/src/add-ons/translators/gif/GIFView.cpp b/src/add-ons/translators/gif/GIFView.cpp index e26bc2d520..8bd7c84ed4 100644 --- a/src/add-ons/translators/gif/GIFView.cpp +++ b/src/add-ons/translators/gif/GIFView.cpp @@ -49,7 +49,7 @@ GIFView::GIFView(TranslatorSettings* settings) BGroupView("GIFView", B_VERTICAL), fSettings(settings) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); fTitle = new BStringView("Title", B_TRANSLATE("GIF image translator")); fTitle->SetFont(be_bold_font); diff --git a/src/add-ons/translators/hpgs/ConfigView.cpp b/src/add-ons/translators/hpgs/ConfigView.cpp index 6a0083fd71..6ac6fe8eaa 100644 --- a/src/add-ons/translators/hpgs/ConfigView.cpp +++ b/src/add-ons/translators/hpgs/ConfigView.cpp @@ -22,7 +22,7 @@ ConfigView::ConfigView(const BRect &frame, uint32 resize, uint32 flags) : BView(frame, B_TRANSLATE("HPGSTranslator Settings"), resize, flags) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); font_height fontHeight; be_bold_font->GetHeight(&fontHeight); diff --git a/src/add-ons/translators/jpeg/JPEGTranslator.cpp b/src/add-ons/translators/jpeg/JPEGTranslator.cpp index 21ec873fb7..e9b296dd4c 100644 --- a/src/add-ons/translators/jpeg/JPEGTranslator.cpp +++ b/src/add-ons/translators/jpeg/JPEGTranslator.cpp @@ -683,7 +683,7 @@ TranslatorAboutView::TranslatorAboutView(const char* name) BTextView* infoView = new BTextView("info"); infoView->SetText(sTranslatorInfo); - infoView->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + infoView->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); infoView->MakeEditable(false); BLayoutBuilder::Group<>(this, B_VERTICAL, 0) diff --git a/src/add-ons/translators/jpeg2000/JPEG2000Translator.cpp b/src/add-ons/translators/jpeg2000/JPEG2000Translator.cpp index 9d3f3d00a7..1ae99fc46b 100644 --- a/src/add-ons/translators/jpeg2000/JPEG2000Translator.cpp +++ b/src/add-ons/translators/jpeg2000/JPEG2000Translator.cpp @@ -725,7 +725,7 @@ TranslatorAboutView::TranslatorAboutView(const char* name) BTextView* infoView = new BTextView("info"); infoView->SetText(sTranslatorInfo); - infoView->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + infoView->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); infoView->MakeEditable(false); BLayoutBuilder::Group<>(this, B_VERTICAL, 0) diff --git a/src/add-ons/translators/pcx/ConfigView.cpp b/src/add-ons/translators/pcx/ConfigView.cpp index 39056f3844..85f2a28339 100644 --- a/src/add-ons/translators/pcx/ConfigView.cpp +++ b/src/add-ons/translators/pcx/ConfigView.cpp @@ -24,7 +24,7 @@ ConfigView::ConfigView(const BRect &frame, uint32 resize, uint32 flags) : BView(frame, B_TRANSLATE("PCXTranslator Settings"), resize, flags) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); BStringView *titleView = new BStringView("title", B_TRANSLATE("PCX image translator")); diff --git a/src/add-ons/translators/png/PNGView.cpp b/src/add-ons/translators/png/PNGView.cpp index ad5af2e359..71489c8422 100644 --- a/src/add-ons/translators/png/PNGView.cpp +++ b/src/add-ons/translators/png/PNGView.cpp @@ -32,7 +32,7 @@ PNGView::PNGView(const BRect &frame, const char *name, uint32 resizeMode, : BView(frame, name, resizeMode, flags | B_FRAME_EVENTS) { fSettings = settings; - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); BStringView *titleView = new BStringView("title", B_TRANSLATE("PNG image translator")); @@ -70,7 +70,7 @@ PNGView::PNGView(const BRect &frame, const char *name, uint32 resizeMode, menuField->ResizeToPreferred(); fCopyrightView = new BTextView("PNG copyright"); - fCopyrightView->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + fCopyrightView->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); fCopyrightView->SetLowColor(fCopyrightView->ViewColor()); fCopyrightView->MakeEditable(false); fCopyrightView->SetWordWrap(false); diff --git a/src/add-ons/translators/ppm/PPMTranslator.cpp b/src/add-ons/translators/ppm/PPMTranslator.cpp index b81f384f6f..9301882515 100644 --- a/src/add-ons/translators/ppm/PPMTranslator.cpp +++ b/src/add-ons/translators/ppm/PPMTranslator.cpp @@ -451,7 +451,7 @@ public: uint32 flags) : BView(name, flags) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); fTitle = new BStringView("title", B_TRANSLATE("PPM image translator")); diff --git a/src/add-ons/translators/raw/ConfigView.cpp b/src/add-ons/translators/raw/ConfigView.cpp index 1d4056484f..a58678019f 100644 --- a/src/add-ons/translators/raw/ConfigView.cpp +++ b/src/add-ons/translators/raw/ConfigView.cpp @@ -25,7 +25,7 @@ const char* kShortName2 = B_TRANSLATE_MARK("RAWTranslator Settings"); ConfigView::ConfigView(uint32 flags) : BView(kShortName2, flags) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); BStringView *fTitle = new BStringView("title", B_TRANSLATE("RAW image translator")); fTitle->SetFont(be_bold_font); diff --git a/src/add-ons/translators/rtf/ConfigView.cpp b/src/add-ons/translators/rtf/ConfigView.cpp index 4d80f27a78..c0571aaa6b 100644 --- a/src/add-ons/translators/rtf/ConfigView.cpp +++ b/src/add-ons/translators/rtf/ConfigView.cpp @@ -20,7 +20,7 @@ ConfigView::ConfigView(const BRect &frame, uint32 resize, uint32 flags) : BView(frame, B_TRANSLATE("RTF-Translator Settings"), resize, flags) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); BStringView *titleView = new BStringView("title", B_TRANSLATE("Rich Text Format (RTF) translator")); diff --git a/src/add-ons/translators/sgi/SGIView.cpp b/src/add-ons/translators/sgi/SGIView.cpp index 905ba1b7f7..98d80e84eb 100644 --- a/src/add-ons/translators/sgi/SGIView.cpp +++ b/src/add-ons/translators/sgi/SGIView.cpp @@ -123,7 +123,7 @@ SGIView::SGIView(const char* name, uint32 flags, TranslatorSettings* settings) infoView->SetWordWrap(false); infoView->MakeEditable(false); infoView->MakeResizable(true); - infoView->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + infoView->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); BLayoutBuilder::Group<>(this, B_VERTICAL, 0) .SetInsets(B_USE_DEFAULT_SPACING) diff --git a/src/add-ons/translators/stxt/STXTView.cpp b/src/add-ons/translators/stxt/STXTView.cpp index a51114b34f..3247c86b05 100644 --- a/src/add-ons/translators/stxt/STXTView.cpp +++ b/src/add-ons/translators/stxt/STXTView.cpp @@ -29,7 +29,7 @@ STXTView::STXTView(const BRect &frame, const char *name, uint32 resizeMode, : BView(frame, name, resizeMode, flags) { fSettings = settings; - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); BStringView *titleView = new BStringView("title", B_TRANSLATE("StyledEdit file translator")); diff --git a/src/add-ons/translators/tga/TGAView.cpp b/src/add-ons/translators/tga/TGAView.cpp index 6caf8bebf0..97c41b7cbe 100644 --- a/src/add-ons/translators/tga/TGAView.cpp +++ b/src/add-ons/translators/tga/TGAView.cpp @@ -47,7 +47,7 @@ TGAView::TGAView(const char *name, uint32 flags, TranslatorSettings *settings) BView(name, flags), fSettings(settings) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); fTitle = new BStringView("title", B_TRANSLATE("TGA image translator")); fTitle->SetFont(be_bold_font); diff --git a/src/add-ons/translators/tiff/TIFFView.cpp b/src/add-ons/translators/tiff/TIFFView.cpp index 4c06cf107f..925cc720ff 100644 --- a/src/add-ons/translators/tiff/TIFFView.cpp +++ b/src/add-ons/translators/tiff/TIFFView.cpp @@ -76,8 +76,8 @@ TIFFView::TIFFView(const char* name, uint32 flags, { fSettings = settings; - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); - SetLowColor(ViewColor()); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); + SetLowUIColor(ViewUIColor()); fTitle = new BStringView("title", B_TRANSLATE("TIFF image translator")); fTitle->SetFont(be_bold_font); diff --git a/src/add-ons/translators/webp/ConfigView.cpp b/src/add-ons/translators/webp/ConfigView.cpp index f3328d10e7..45a1657aa2 100644 --- a/src/add-ons/translators/webp/ConfigView.cpp +++ b/src/add-ons/translators/webp/ConfigView.cpp @@ -55,7 +55,7 @@ ConfigView::ConfigView(TranslatorSettings* settings) : BGroupView(B_TRANSLATE("WebPTranslator Settings"), B_VERTICAL), fSettings(settings) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); BStringView* title = new BStringView("title", B_TRANSLATE("WebP image translator")); diff --git a/src/add-ons/translators/wonderbrush/WonderBrushView.cpp b/src/add-ons/translators/wonderbrush/WonderBrushView.cpp index 6a78bb8a77..448d4112a3 100644 --- a/src/add-ons/translators/wonderbrush/WonderBrushView.cpp +++ b/src/add-ons/translators/wonderbrush/WonderBrushView.cpp @@ -51,7 +51,7 @@ WonderBrushView::WonderBrushView(const BRect &frame, const char *name, : BView(frame, name, resize, flags), fSettings(settings) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); BStringView *titleView = new BStringView("title", B_TRANSLATE("WonderBrush image translator")); diff --git a/src/bin/desklink/MediaReplicant.cpp b/src/bin/desklink/MediaReplicant.cpp index 2b8d18e9ce..6ce5f7c31d 100644 --- a/src/bin/desklink/MediaReplicant.cpp +++ b/src/bin/desklink/MediaReplicant.cpp @@ -32,6 +32,7 @@ #include #include #include +#include #include #include @@ -57,23 +58,17 @@ static const char* kReplicantName = "MediaReplicant"; static const char* kSettingsFile = "x-vnd.Haiku-desklink"; -class VolumeToolTip : public BToolTip { +class VolumeToolTip : public BTextToolTip { public: VolumeToolTip(int32 which = VOLUME_USE_MIXER) : + BTextToolTip(""), fWhich(which) { - fView = new BStringView("", ""); } virtual ~VolumeToolTip() { - delete fView; - } - - virtual BView* View() const - { - return fView; } virtual void AttachedToWindow() @@ -91,17 +86,18 @@ public: if (!Lock()) return; + BTextView* view = (BTextView*)View(); + if (fMuteMessage.Length() != 0) - fView->SetText(fMuteMessage.String()); + view->SetText(fMuteMessage.String()); else { MixerControl control; control.Connect(fWhich); BString text; text.SetToFormat(B_TRANSLATE("%g dB"), control.Volume()); - fView->SetText(text.String()); + view->SetText(text.String()); } - Unlock(); } @@ -111,7 +107,6 @@ public: } private: - BStringView* fView; int32 fWhich; BString fMuteMessage; }; @@ -211,9 +206,7 @@ MediaReplicant::Archive(BMessage* data, bool deep) const void MediaReplicant::AttachedToWindow() { - BView* parent = Parent(); - if (parent) - SetViewColor(parent->ViewColor()); + AdoptParentColors(); BView::AttachedToWindow(); } diff --git a/src/kits/media/DefaultMediaTheme.cpp b/src/kits/media/DefaultMediaTheme.cpp index 031e05aa72..529be6c566 100644 --- a/src/kits/media/DefaultMediaTheme.cpp +++ b/src/kits/media/DefaultMediaTheme.cpp @@ -176,7 +176,7 @@ DynamicScrollView::DynamicScrollView(const char *name, BView *target) fIsDocumentScroller(false) { fContentBounds.Set(-1, -1, -1, -1); - SetViewColor(fTarget->ViewColor()); + AdoptViewColors(fTarget); target->MoveTo(B_ORIGIN); AddChild(target); } @@ -359,7 +359,7 @@ DynamicScrollView::UpdateBars() GroupView::GroupView(BRect frame, const char *name) : BView(frame, name, B_FOLLOW_NONE, B_WILL_DRAW) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); } @@ -513,8 +513,7 @@ TitleView::TitleView(BRect frame, const char *title) : BView(frame, title, B_FOLLOW_LEFT_RIGHT, B_WILL_DRAW) { fTitle = strdup(title); - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); - SetLowColor(ViewColor()); + AdoptSystemColors(); } @@ -530,7 +529,7 @@ TitleView::Draw(BRect updateRect) BRect rect(Bounds()); SetDrawingMode(B_OP_COPY); - SetHighColor(240, 240, 240); + SetHighColor(tint_color(ViewColor(), B_LIGHTEN_2_TINT)); DrawString(fTitle, BPoint(rect.left + 1, rect.bottom - 8)); SetDrawingMode(B_OP_OVER); @@ -897,7 +896,7 @@ DefaultMediaTheme::MakeViewFor(BParameterGroup& group, const BRect* hintRect) if (parameterView == NULL) continue; - parameterView->SetViewColor(view->ViewColor()); + parameterView->AdoptViewColors(view); // ToDo: dunno why this is needed, but the controls // sometimes (!) have a white background without it diff --git a/src/preferences/appearance/APRView.cpp b/src/preferences/appearance/APRView.cpp index b1e587ad25..59a6a9d55a 100644 --- a/src/preferences/appearance/APRView.cpp +++ b/src/preferences/appearance/APRView.cpp @@ -1,11 +1,12 @@ /* - * Copyright 2002-2013 Haiku, Inc. All rights reserved. + * Copyright 2002-2015 Haiku, Inc. All rights reserved. * Distributed under the terms of the MIT License. * * Authors: * DarkWyrm, darkwyrm@earthlink.net * Rene Gollent, rene@gollent.com * John Scipione, jscipione@gmail.com + * Joseph Groover */ @@ -27,7 +28,7 @@ #include "APRWindow.h" #include "defs.h" #include "ColorPreview.h" -#include "ColorSet.h" +#include "Colors.h" #include "ColorWhichItem.h" @@ -40,10 +41,9 @@ APRView::APRView(const char* name) : - BView(name, B_WILL_DRAW), - fDefaultSet(ColorSet::DefaultColorSet()) + BView(name, B_WILL_DRAW) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); #if 0 fDecorMenu = new BMenu("Window Style"); @@ -77,15 +77,14 @@ APRView::APRView(const char* name) fAttrList = new BListView("AttributeList", B_SINGLE_SELECTION_LIST); fScrollView = new BScrollView("ScrollView", fAttrList, 0, false, true); - fScrollView->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + fScrollView->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); int32 count = color_description_count(); for (int32 i = 0; i < count; i++) { const ColorDescription& description = *get_color_description(i); const char* text = B_TRANSLATE_NOCOLLECT(description.text); color_which which = description.which; - fAttrList->AddItem(new ColorWhichItem(text, which, - fCurrentSet.GetColor(which))); + fAttrList->AddItem(new ColorWhichItem(text, which, ui_color(which))); } BRect wellrect(0, 0, 50, 50); @@ -123,6 +122,7 @@ APRView::AttachedToWindow() fColorPreview->SetTarget(this); fAttrList->Select(0); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); } @@ -162,7 +162,7 @@ APRView::MessageReceived(BMessage *msg) break; fWhich = item->ColorWhich(); - rgb_color color = fCurrentSet.GetColor(fWhich); + rgb_color color = ui_color(fWhich); _SetCurrentColor(color); break; } @@ -177,24 +177,22 @@ APRView::MessageReceived(BMessage *msg) void APRView::LoadSettings() { - int32 count = color_description_count(); - for (int32 i = 0; i < count; i++) { - color_which which = get_color_description(i)->which; - fCurrentSet.SetColor(which, ui_color(which)); - } - - fPrevSet = fCurrentSet; + get_default_colors(&fDefaultColors); + get_current_colors(&fCurrentColors); + fPrevColors = fCurrentColors; } void APRView::SetDefaults() { - fCurrentSet = ColorSet::DefaultColorSet(); + _SetUIColors(fDefaultColors); + _UpdatePreviews(fDefaultColors); - _UpdateAllColors(); + // Use a default color that stands out to show errors clearly + rgb_color color = fDefaultColors.GetColor(ui_color_name(fWhich), + make_color(255, 0, 255)); - rgb_color color = fCurrentSet.GetColor(fWhich); fPicker->SetValue(color); fColorPreview->SetColor(color); fColorPreview->Invalidate(); @@ -206,11 +204,11 @@ APRView::SetDefaults() void APRView::Revert() { - fCurrentSet = fPrevSet; + _SetUIColors(fPrevColors); + _UpdatePreviews(fPrevColors); - _UpdateAllColors(); - - rgb_color color = fCurrentSet.GetColor(fWhich); + rgb_color color = fPrevColors.GetColor(ui_color_name(fWhich), + make_color(255, 0, 255)); fPicker->SetValue(color); fColorPreview->SetColor(color); fColorPreview->Invalidate(); @@ -222,34 +220,22 @@ APRView::Revert() bool APRView::IsDefaultable() { - for (int32 i = color_description_count() - 1; i >= 0; i--) { - color_which which = get_color_description(i)->which; - if (fCurrentSet.GetColor(which) != fDefaultSet.GetColor(which)) - return true; - } - - return false; + return !fDefaultColors.HasSameData(fCurrentColors); } bool APRView::IsRevertable() { - for (int32 i = color_description_count() - 1; i >= 0; i--) { - color_which which = get_color_description(i)->which; - if (fCurrentSet.GetColor(which) != fPrevSet.GetColor(which)) - return true; - } - - return false; + return !fPrevColors.HasSameData(fCurrentColors); } void APRView::_SetCurrentColor(rgb_color color) { - fCurrentSet.SetColor(fWhich, color); set_ui_color(fWhich, color); + fCurrentColors.SetColor(ui_color_name(fWhich), color); int32 currentIndex = fAttrList->CurrentSelection(); ColorWhichItem* item = (ColorWhichItem*)fAttrList->ItemAt(currentIndex); @@ -265,13 +251,26 @@ APRView::_SetCurrentColor(rgb_color color) void -APRView::_UpdateAllColors() +APRView::_SetUIColors(const BMessage& colors) { + set_ui_colors(&colors); + fCurrentColors = colors; +} + + +void +APRView::_UpdatePreviews(const BMessage& colors) +{ + rgb_color color; for (int32 i = color_description_count() - 1; i >= 0; i--) { - color_which which = get_color_description(i)->which; - rgb_color color = fCurrentSet.GetColor(which); - set_ui_color(which, color); - static_cast(fAttrList->ItemAt(i))->SetColor(color); + ColorWhichItem* item = static_cast(fAttrList->ItemAt(i)); + if (item == NULL) + continue; + + color = colors.GetColor(ui_color_name(get_color_description(i)->which), + make_color(255, 0, 255)); + + item->SetColor(color); fAttrList->InvalidateItem(i); } } diff --git a/src/preferences/appearance/APRView.h b/src/preferences/appearance/APRView.h index 6f1317850a..598d385b13 100644 --- a/src/preferences/appearance/APRView.h +++ b/src/preferences/appearance/APRView.h @@ -1,11 +1,12 @@ /* - * Copyright 2002-2012, Haiku. All rights reserved. + * Copyright 2002-2015, Haiku. All rights reserved. * Distributed under the terms of the MIT License. * * Authors: * DarkWyrm (darkwyrm@earthlink.net) * Rene Gollent (rene@gollent.com) * Stephan Aßmus + * Joseph Groover */ #ifndef APR_VIEW_H_ #define APR_VIEW_H_ @@ -28,8 +29,6 @@ #include -#include "ColorSet.h" - class APRWindow; class ColorPreview; @@ -52,7 +51,8 @@ public: private: void _SetCurrentColor(rgb_color color); - void _UpdateAllColors(); + void _SetUIColors(const BMessage& colors); + void _UpdatePreviews(const BMessage& colors); private: BColorControl* fPicker; @@ -65,9 +65,9 @@ private: ColorPreview* fColorPreview; - ColorSet fCurrentSet; - ColorSet fPrevSet; - ColorSet fDefaultSet; + BMessage fPrevColors; + BMessage fDefaultColors; + BMessage fCurrentColors; }; #endif // APR_VIEW_H_ diff --git a/src/preferences/appearance/APRWindow.h b/src/preferences/appearance/APRWindow.h index 1907fc4964..5d1219e59b 100644 --- a/src/preferences/appearance/APRWindow.h +++ b/src/preferences/appearance/APRWindow.h @@ -22,7 +22,7 @@ class AntialiasingSettingsView; class FontView; class LookAndFeelSettingsView; - +#include class APRWindow : public BWindow { public: APRWindow(BRect frame); diff --git a/src/preferences/appearance/AntialiasingSettingsView.cpp b/src/preferences/appearance/AntialiasingSettingsView.cpp index c90b507474..fbe6dca751 100644 --- a/src/preferences/appearance/AntialiasingSettingsView.cpp +++ b/src/preferences/appearance/AntialiasingSettingsView.cpp @@ -26,6 +26,7 @@ #include #include + #include "APRWindow.h" #undef B_TRANSLATION_CONTEXT @@ -115,24 +116,17 @@ AntialiasingSettingsView::AntialiasingSettingsView(const char* name) #ifndef FT_CONFIG_OPTION_SUBPIXEL_RENDERING // subpixelAntialiasingDisabledLabel - BFont infoFont(*be_plain_font); - infoFont.SetFace(B_ITALIC_FACE); - rgb_color infoColor = tint_color(ui_color(B_PANEL_BACKGROUND_COLOR), - B_DARKEN_4_TINT); // TODO: Replace with layout friendly constructor once available. - BRect textBounds = Bounds(); - BTextView* subpixelAntialiasingDisabledLabel = new BTextView( - textBounds, "unavailable label", textBounds, &infoFont, &infoColor, - B_FOLLOW_NONE, B_WILL_DRAW | B_SUPPORTS_LAYOUT); - subpixelAntialiasingDisabledLabel->SetText(B_TRANSLATE( + fSubpixelAntialiasingDisabledLabel + = new BTextView("unavailable label"); + fSubpixelAntialiasingDisabledLabel->SetText(B_TRANSLATE( "Subpixel based anti-aliasing in combination with glyph hinting is not " "available in this build of Haiku to avoid possible patent issues. To " "enable this feature, you have to build Haiku yourself and enable " "certain options in the libfreetype configuration header.")); - subpixelAntialiasingDisabledLabel->SetViewColor( - ui_color(B_PANEL_BACKGROUND_COLOR)); - subpixelAntialiasingDisabledLabel->MakeEditable(false); - subpixelAntialiasingDisabledLabel->MakeSelectable(false); + fSubpixelAntialiasingDisabledLabel->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); + fSubpixelAntialiasingDisabledLabel->MakeEditable(false); + fSubpixelAntialiasingDisabledLabel->MakeSelectable(false); #endif // !FT_CONFIG_OPTION_SUBPIXEL_RENDERING BLayoutBuilder::Grid<>(this, B_USE_DEFAULT_SPACING, B_USE_DEFAULT_SPACING) @@ -147,7 +141,7 @@ AntialiasingSettingsView::AntialiasingSettingsView(const char* name) #ifndef FT_CONFIG_OPTION_SUBPIXEL_RENDERING // hinting+subpixel unavailable info - .Add(subpixelAntialiasingDisabledLabel, 0, 3, 2) + .Add(fSubpixelAntialiasingDisabledLabel, 0, 3, 2) #else .Add(BSpaceLayoutItem::CreateGlue(), 0, 3, 2) #endif @@ -157,6 +151,7 @@ AntialiasingSettingsView::AntialiasingSettingsView(const char* name) _SetCurrentAntialiasing(); _SetCurrentHinting(); _SetCurrentAverageWeight(); + _UpdateColors(); } @@ -168,10 +163,10 @@ AntialiasingSettingsView::~AntialiasingSettingsView() void AntialiasingSettingsView::AttachedToWindow() { - if (Parent() != NULL) - SetViewColor(Parent()->ViewColor()); - else - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + AdoptParentColors(); + + if (Parent() == NULL) + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); fAntialiasingMenu->SetTargetForItems(this); fHintingMenu->SetTargetForItems(this); @@ -224,6 +219,12 @@ AntialiasingSettingsView::MessageReceived(BMessage *msg) Window()->PostMessage(kMsgUpdate); break; } + case B_COLORS_UPDATED: + { + if (msg->HasColor(ui_color_name(B_PANEL_BACKGROUND_COLOR))) + _UpdateColors(); + break; + } default: BView::MessageReceived(msg); } @@ -319,6 +320,23 @@ AntialiasingSettingsView::_SetCurrentAverageWeight() } +void +AntialiasingSettingsView::_UpdateColors() +{ +#ifndef FT_CONFIG_OPTION_SUBPIXEL_RENDERING + rgb_color infoColor = disable_color(ui_color(B_PANEL_BACKGROUND_COLOR), + ui_color(B_PANEL_TEXT_COLOR)); + + BFont font; + uint32 mode = 0; + fSubpixelAntialiasingDisabledLabel->GetFontAndColor(&font, &mode); + font.SetFace(B_ITALIC_FACE); + fSubpixelAntialiasingDisabledLabel->SetFontAndColor(&font, mode, + &infoColor); +#endif +} + + void AntialiasingSettingsView::SetDefaults() { diff --git a/src/preferences/appearance/AntialiasingSettingsView.h b/src/preferences/appearance/AntialiasingSettingsView.h index 0813257369..ed7cb32a02 100644 --- a/src/preferences/appearance/AntialiasingSettingsView.h +++ b/src/preferences/appearance/AntialiasingSettingsView.h @@ -12,6 +12,7 @@ class BBox; class BMenuField; class BPopUpMenu; class BSlider; +class BTextView; class AntialiasingSettingsView : public BView { @@ -33,6 +34,7 @@ private: void _BuildHintingMenu(); void _SetCurrentHinting(); void _SetCurrentAverageWeight(); + void _UpdateColors(); protected: float fDivider; @@ -42,6 +44,7 @@ protected: BMenuField* fHintingMenuField; BPopUpMenu* fHintingMenu; BSlider* fAverageWeightControl; + BTextView* fSubpixelAntialiasingDisabledLabel; bool fSavedSubpixelAntialiasing; bool fCurrentSubpixelAntialiasing; diff --git a/src/preferences/appearance/ColorSet.h b/src/preferences/appearance/ColorSet.h deleted file mode 100644 index d65590a8e6..0000000000 --- a/src/preferences/appearance/ColorSet.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright 2001-2008, Haiku. - * Distributed under the terms of the MIT License. - * - * Authors: - * DarkWyrm - * Rene Gollent - */ -#ifndef COLOR_SET_H -#define COLOR_SET_H - - -#include -#include -#include -#include - -#include - - -typedef struct { - color_which which; - const char* text; -} ColorDescription; - - -const ColorDescription* get_color_description(int32 index); -int32 color_description_count(void); - - -/*! - \class ColorSet ColorSet.h - \brief Encapsulates GUI system colors -*/ -class ColorSet : public BLocker { - public: - ColorSet(); - ColorSet(const ColorSet &cs); - ColorSet & operator=(const ColorSet &cs); - - rgb_color GetColor(int32 which); - void SetColor(color_which which, rgb_color value); - - static ColorSet DefaultColorSet(void); - - inline bool operator==(const ColorSet &other) - { - return fColors == other.fColors; - } - - inline bool operator!=(const ColorSet &other) - { - return fColors != other.fColors; - } - - private: - std::map fColors; -}; - - -#endif // COLOR_SET_H diff --git a/src/preferences/appearance/ColorSet.cpp b/src/preferences/appearance/Colors.cpp similarity index 71% rename from src/preferences/appearance/ColorSet.cpp rename to src/preferences/appearance/Colors.cpp index 1260aeba38..88dd2ef956 100644 --- a/src/preferences/appearance/ColorSet.cpp +++ b/src/preferences/appearance/Colors.cpp @@ -1,11 +1,12 @@ /* - * Copyright 2001-2009, Haiku. + * Copyright 2001-2015, Haiku. * Distributed under the terms of the MIT License. * * Authors: * DarkWyrm * Stephan Aßmus * Rene Gollent + * Joseph Groover */ @@ -20,7 +21,7 @@ #include #include #include -#include "ColorSet.h" +#include "Colors.h" #undef B_TRANSLATION_CONTEXT @@ -41,6 +42,10 @@ static ColorDescription sColorDescriptionTable[] = { { B_NAVIGATION_PULSE_COLOR, B_TRANSLATE_MARK("Navigation pulse") }, { B_SHINE_COLOR, B_TRANSLATE_MARK("Shine") }, { B_SHADOW_COLOR, B_TRANSLATE_MARK("Shadow") }, + { B_LINK_TEXT_COLOR, B_TRANSLATE_MARK("Link text") }, + { B_LINK_HOVER_COLOR, B_TRANSLATE_MARK("Link hover") }, + { B_LINK_VISITED_COLOR, B_TRANSLATE_MARK("Link visited") }, + { B_LINK_ACTIVE_COLOR, B_TRANSLATE_MARK("Link active") }, { B_MENU_BACKGROUND_COLOR, B_TRANSLATE_MARK("Menu background") }, { B_MENU_SELECTED_BACKGROUND_COLOR, B_TRANSLATE_MARK("Selected menu item background") }, @@ -91,70 +96,29 @@ color_description_count(void) } -// #pragma mark - - - -ColorSet::ColorSet() -{ -} - - -/*! - \brief Copy constructor which does a massive number of assignments - \param cs Color set to copy from -*/ -ColorSet::ColorSet(const ColorSet &cs) -{ - *this = cs; -} - - -/*! - \brief Overloaded assignment operator which does a massive number of - assignments. - \param cs Color set to copy from - \return The new values assigned to the color set -*/ -ColorSet& -ColorSet::operator=(const ColorSet &cs) -{ - fColors = cs.fColors; - return *this; -} - - -/*! - \brief Assigns the default system colors to the passed ColorSet object - \param set The ColorSet object to set to defaults -*/ -ColorSet -ColorSet::DefaultColorSet(void) -{ - ColorSet set; - - for (int i = 0; i < sColorDescriptionCount; i++) { - color_which which = get_color_description(i)->which; - set.fColors[which] = - BPrivate::kDefaultColors[color_which_to_index(which)]; - } - return set; -} - - -/*! - \brief Assigns a value to a named color member - \param string name of the color to receive the value - \param value An rgb_color which is the new value of the member -*/ void -ColorSet::SetColor(color_which which, rgb_color value) +get_default_colors(BMessage* message) { - fColors[which] = value; + if (message == NULL) + return; + + for (int32 index = 0; index < kColorWhichCount; ++index) { + color_which which = index_to_color_which(index); + message->AddColor(ui_color_name(which), + BPrivate::kDefaultColors[index]); + } } -rgb_color -ColorSet::GetColor(int32 which) +void +get_current_colors(BMessage* message) { - return fColors[(color_which)which]; + if (message == NULL) + return; + + for (int32 index = 0; index < kColorWhichCount; ++index) { + color_which which = index_to_color_which(index); + message->AddColor(ui_color_name(which), ui_color(which)); + } } + diff --git a/src/preferences/appearance/Colors.h b/src/preferences/appearance/Colors.h new file mode 100644 index 0000000000..5d0e2babb3 --- /dev/null +++ b/src/preferences/appearance/Colors.h @@ -0,0 +1,29 @@ +/* + * Copyright 2001-2015, Haiku. + * Distributed under the terms of the MIT License. + * + * Authors: + * DarkWyrm + * Rene Gollent + * Joseph Groover + */ +#ifndef COLORS_H +#define COLORS_H + + +#include + + +typedef struct { + color_which which; + const char* text; +} ColorDescription; + + +const ColorDescription* get_color_description(int32 index); +int32 color_description_count(void); +void get_default_colors(BMessage* storage); +void get_current_colors(BMessage* storage); + + +#endif // COLORS_H diff --git a/src/preferences/appearance/CurView.cpp b/src/preferences/appearance/CurView.cpp index b13021c3d1..a5dd1eb40c 100644 --- a/src/preferences/appearance/CurView.cpp +++ b/src/preferences/appearance/CurView.cpp @@ -51,7 +51,7 @@ CurView::CurView(const BRect &frame, const char *name, int32 resize, int32 flags) :BView(frame,name,resize,flags), settings(B_SIMPLE_DATA) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); cursorset=new CursorSet("Default"); @@ -110,7 +110,7 @@ CurView::CurView(const BRect &frame, const char *name, int32 resize, int32 flags scrollview=new BScrollView("ScrollView",attrlist, B_FOLLOW_LEFT | B_FOLLOW_TOP, 0, false, true); AddChild(scrollview); - scrollview->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + scrollview->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); attrlist->SetSelectionMessage(new BMessage(ATTRIBUTE_CHOSEN)); @@ -413,7 +413,7 @@ BitmapView::BitmapView(const BPoint &pt,BMessage *message, const BHandler *handl { SetFont(be_plain_font); bitmap=NULL; - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); SetDrawingMode(B_OP_ALPHA); drawrect=Bounds().InsetByCopy(5,5); } diff --git a/src/preferences/appearance/FontMenu.cpp b/src/preferences/appearance/FontMenu.cpp index 9ec4771375..458ea4c635 100644 --- a/src/preferences/appearance/FontMenu.cpp +++ b/src/preferences/appearance/FontMenu.cpp @@ -61,7 +61,6 @@ font.SetFamilyAndStyle(info.f_family, info.f_style); font.SetSize(info.font_size); SetFont(&font); - SetViewColor(info.background_color); InvalidateLayout(); // font style menus diff --git a/src/preferences/appearance/FontView.cpp b/src/preferences/appearance/FontView.cpp index 74d78e0309..fea39f5f8d 100644 --- a/src/preferences/appearance/FontView.cpp +++ b/src/preferences/appearance/FontView.cpp @@ -64,7 +64,7 @@ FontView::FontView(const char* name) : BView(name, B_WILL_DRAW ) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); fPlainView = new FontSelectionView("plain", B_TRANSLATE("Plain font:")); fBoldView = new FontSelectionView("bold", B_TRANSLATE("Bold font:")); diff --git a/src/preferences/appearance/Jamfile b/src/preferences/appearance/Jamfile index a2345dfeb2..e6fcb43b4d 100644 --- a/src/preferences/appearance/Jamfile +++ b/src/preferences/appearance/Jamfile @@ -18,7 +18,7 @@ Preference Appearance : APRView.cpp APRWindow.cpp ColorPreview.cpp - ColorSet.cpp + Colors.cpp ColorWhichItem.cpp # These are currently disabled while everything else is being worked on @@ -41,7 +41,7 @@ DoCatalogs Appearance : APRView.cpp APRWindow.cpp ColorPreview.cpp - ColorSet.cpp + Colors.cpp ColorWhichItem.cpp LookAndFeelSettingsView.cpp FontView.cpp diff --git a/src/preferences/appearance/LookAndFeelSettingsView.cpp b/src/preferences/appearance/LookAndFeelSettingsView.cpp index a3f57129b0..07ae697067 100644 --- a/src/preferences/appearance/LookAndFeelSettingsView.cpp +++ b/src/preferences/appearance/LookAndFeelSettingsView.cpp @@ -132,10 +132,10 @@ LookAndFeelSettingsView::~LookAndFeelSettingsView() void LookAndFeelSettingsView::AttachedToWindow() { - if (Parent() != NULL) - SetViewColor(Parent()->ViewColor()); - else - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + AdoptParentColors(); + + if (Parent() == NULL) + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); fDecorMenu->SetTargetForItems(this); fDecorInfoButton->SetTarget(this); @@ -325,6 +325,8 @@ LookAndFeelSettingsView::IsRevertable() void LookAndFeelSettingsView::Revert() { - _SetDecor(fSavedDecor); - _SetDoubleScrollBarArrows(fSavedDoubleArrowsValue); + if (IsRevertable()) { + _SetDecor(fSavedDecor); + _SetDoubleScrollBarArrows(fSavedDoubleArrowsValue); + } } diff --git a/src/preferences/appearance/MenuView.cpp b/src/preferences/appearance/MenuView.cpp index c843b2462e..bbce4fa79a 100644 --- a/src/preferences/appearance/MenuView.cpp +++ b/src/preferences/appearance/MenuView.cpp @@ -23,7 +23,7 @@ MenuView::MenuView(BRect frame, const char *name, int32 resize, int32 flags) : BView(frame, name, resize, flags) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); get_menu_info(&menuinfo); revertinfo = menuinfo; diff --git a/src/preferences/bluetooth/BluetoothDeviceView.cpp b/src/preferences/bluetooth/BluetoothDeviceView.cpp index cb8203edee..633adc3768 100644 --- a/src/preferences/bluetooth/BluetoothDeviceView.cpp +++ b/src/preferences/bluetooth/BluetoothDeviceView.cpp @@ -67,7 +67,7 @@ BluetoothDeviceView::BluetoothDeviceView(BRect frame, BluetoothDevice* bDevice, fIcon = new BView(BRect(0, 0, 32 - 1, 32 - 1), "Icon", B_FOLLOW_ALL, B_WILL_DRAW); - fIcon->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + fIcon->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); SetBluetoothDevice(bDevice); diff --git a/src/preferences/bluetooth/BluetoothSettingsView.cpp b/src/preferences/bluetooth/BluetoothSettingsView.cpp index 54a1864094..0e9a6a06c9 100644 --- a/src/preferences/bluetooth/BluetoothSettingsView.cpp +++ b/src/preferences/bluetooth/BluetoothSettingsView.cpp @@ -131,7 +131,7 @@ BluetoothSettingsView::AttachedToWindow() if (Parent() != NULL) SetViewColor(Parent()->ViewColor()); else - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); fPolicyMenu->SetTargetForItems(this); fClassMenu->SetTargetForItems(this); diff --git a/src/preferences/bluetooth/InquiryPanel.cpp b/src/preferences/bluetooth/InquiryPanel.cpp index 7f6560e303..99b6d1f3bf 100644 --- a/src/preferences/bluetooth/InquiryPanel.cpp +++ b/src/preferences/bluetooth/InquiryPanel.cpp @@ -111,7 +111,7 @@ InquiryPanel::InquiryPanel(BRect frame, LocalDevice* lDevice) fLocalDevice = LocalDevice::GetLocalDevice(); fMessage = new BTextView("description", B_WILL_DRAW); - fMessage->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + fMessage->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); fMessage->SetLowColor(fMessage->ViewColor()); fMessage->MakeEditable(false); fMessage->MakeSelectable(false); @@ -127,7 +127,7 @@ InquiryPanel::InquiryPanel(BRect frame, LocalDevice* lDevice) fRemoteList->SetSelectionMessage(new BMessage(kMsgSelected)); fScrollView = new BScrollView("ScrollView", fRemoteList, 0, false, true); - fScrollView->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + fScrollView->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); if (fLocalDevice != NULL) { fMessage->SetText(B_TRANSLATE( diff --git a/src/preferences/bluetooth/RemoteDevicesView.cpp b/src/preferences/bluetooth/RemoteDevicesView.cpp index e4ebf54560..0a1e6a39e2 100644 --- a/src/preferences/bluetooth/RemoteDevicesView.cpp +++ b/src/preferences/bluetooth/RemoteDevicesView.cpp @@ -41,7 +41,7 @@ using namespace Bluetooth; RemoteDevicesView::RemoteDevicesView(const char* name, uint32 flags) : BView(name, flags) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); addButton = new BButton("add", B_TRANSLATE("Add" B_UTF8_ELLIPSIS), new BMessage(kMsgAddDevices)); @@ -66,7 +66,7 @@ RemoteDevicesView::RemoteDevicesView(const char* name, uint32 flags) fDeviceList = new BListView("DeviceList", B_SINGLE_SELECTION_LIST); fScrollView = new BScrollView("ScrollView", fDeviceList, 0, false, true); - fScrollView->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + fScrollView->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); SetLayout(new BGroupLayout(B_VERTICAL)); diff --git a/src/preferences/datatranslations/DataTranslationsWindow.cpp b/src/preferences/datatranslations/DataTranslationsWindow.cpp index c1ce98299c..6382a1188b 100644 --- a/src/preferences/datatranslations/DataTranslationsWindow.cpp +++ b/src/preferences/datatranslations/DataTranslationsWindow.cpp @@ -36,6 +36,7 @@ #include #include + #include "DataTranslations.h" #include "DataTranslationsSettings.h" #include "TranslatorListView.h" @@ -166,7 +167,7 @@ DataTranslationsWindow::_ShowConfigView(int32 id) if (ret != B_OK) return ret; - fConfigView->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + fConfigView->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); // force config views to all have the same color fRightBox->AddChild(fConfigView); @@ -192,17 +193,18 @@ DataTranslationsWindow::_ShowInfoView() } - BTextView* view = new BTextView("info text"); - view->MakeEditable(false); - view->MakeSelectable(false); - view->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); - view->SetText(B_TRANSLATE( + fInfoText = new BTextView("info text"); + fInfoText->MakeEditable(false); + fInfoText->MakeSelectable(false); + fInfoText->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); + fInfoText->SetText(B_TRANSLATE( "Use this control panel to set default values for translators, " "to be used when no other settings are specified by an application.")); + rgb_color textColor = ui_color(B_PANEL_TEXT_COLOR); + fInfoText->SetFontAndColor(be_plain_font, B_FONT_ALL, &textColor); BGroupView* group = new BGroupView(B_VERTICAL); - group->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); - group->AddChild(view); + group->AddChild(fInfoText); float spacing = be_control_look->DefaultItemSpacing(); group->GroupLayout()->SetInsets(spacing, spacing, spacing, spacing); fRightBox->AddChild(group); @@ -213,6 +215,7 @@ DataTranslationsWindow::_ShowInfoView() void DataTranslationsWindow::_SetupViews() { + fInfoText = NULL; fConfigView = NULL; // This is NULL until a translator is // selected from the listview @@ -356,6 +359,18 @@ DataTranslationsWindow::MessageReceived(BMessage* message) break; } + case B_COLORS_UPDATED: + { + if (fInfoText == NULL + || fInfoText->Parent() == NULL) + break; + + rgb_color color; + if (message->FindColor(ui_color_name(B_PANEL_TEXT_COLOR), &color) == B_OK) + fInfoText->SetFontAndColor(be_plain_font, B_FONT_ALL, &color); + break; + } + case B_TRANSLATOR_ADDED: { int32 index = 0, id; diff --git a/src/preferences/datatranslations/DataTranslationsWindow.h b/src/preferences/datatranslations/DataTranslationsWindow.h index c4d7b1bdb4..fa2c0cbd7d 100644 --- a/src/preferences/datatranslations/DataTranslationsWindow.h +++ b/src/preferences/datatranslations/DataTranslationsWindow.h @@ -22,6 +22,7 @@ class BTranslatorReleaseDelegate; +class BTextView; class DataTranslationsWindow : public BWindow { @@ -48,6 +49,7 @@ private: BView* fConfigView; IconView* fIconView; BButton* fButton; + BTextView* fInfoText; }; diff --git a/src/preferences/datatranslations/Jamfile b/src/preferences/datatranslations/Jamfile index 8c2ef905db..adc12d532c 100644 --- a/src/preferences/datatranslations/Jamfile +++ b/src/preferences/datatranslations/Jamfile @@ -2,7 +2,7 @@ SubDir HAIKU_TOP src preferences datatranslations ; UseLibraryHeaders lp_solve linprog alm ; -UsePrivateHeaders shared ; +UsePrivateHeaders interface shared ; Preference DataTranslations : DataTranslations.cpp diff --git a/src/preferences/filetypes/ApplicationTypesWindow.cpp b/src/preferences/filetypes/ApplicationTypesWindow.cpp index c776f33410..0afb8632f1 100644 --- a/src/preferences/filetypes/ApplicationTypesWindow.cpp +++ b/src/preferences/filetypes/ApplicationTypesWindow.cpp @@ -218,7 +218,7 @@ ApplicationTypesWindow::ApplicationTypesWindow(const BMessage& settings) fDescriptionLabel = new StringView(B_TRANSLATE("Description:"), NULL); fDescriptionLabel->LabelView()->SetExplicitAlignment(labelAlignment); fDescriptionView = new BTextView("description"); - fDescriptionView->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + fDescriptionView->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); fDescriptionView->SetLowColor(fDescriptionView->ViewColor()); fDescriptionView->MakeEditable(false); diff --git a/src/preferences/filetypes/AttributeWindow.cpp b/src/preferences/filetypes/AttributeWindow.cpp index 693d79e309..da958f7501 100644 --- a/src/preferences/filetypes/AttributeWindow.cpp +++ b/src/preferences/filetypes/AttributeWindow.cpp @@ -129,7 +129,7 @@ AttributeWindow::AttributeWindow(FileTypesWindow* target, BMimeType& mimeType, typeMenuField->SetAlignment(B_ALIGN_RIGHT); // we must set the color manually when adding a menuField directly // into a window. - typeMenuField->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + typeMenuField->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); typeMenuField->SetLowColor(ui_color(B_PANEL_BACKGROUND_COLOR)); fVisibleCheckBox = new BCheckBox("visible", B_TRANSLATE("Visible"), diff --git a/src/preferences/filetypes/IconView.cpp b/src/preferences/filetypes/IconView.cpp index b95781c040..12bf32e989 100644 --- a/src/preferences/filetypes/IconView.cpp +++ b/src/preferences/filetypes/IconView.cpp @@ -544,10 +544,7 @@ IconView::~IconView() void IconView::AttachedToWindow() { - if (Parent()) - SetViewColor(Parent()->ViewColor()); - else - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + AdoptParentColors(); fTarget = this; diff --git a/src/preferences/fonts/FontView.cpp b/src/preferences/fonts/FontView.cpp index 0634fe49e1..9208bd6999 100644 --- a/src/preferences/fonts/FontView.cpp +++ b/src/preferences/fonts/FontView.cpp @@ -52,7 +52,7 @@ add_font_selection_view(BGridLayout* layout, FontSelectionView* view, FontView::FontView() : BView("Fonts", B_WILL_DRAW ) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); fPlainView = new FontSelectionView("plain", B_TRANSLATE("Plain font:")); fBoldView = new FontSelectionView("bold", B_TRANSLATE("Bold font:")); diff --git a/src/preferences/joysticks/CalibWin.cpp b/src/preferences/joysticks/CalibWin.cpp index e144d3c321..1ecd17e6d0 100644 --- a/src/preferences/joysticks/CalibWin.cpp +++ b/src/preferences/joysticks/CalibWin.cpp @@ -54,7 +54,7 @@ CalibWin::CalibWin(BRect frame,const char *title, window_look look, fView = new BView(Bounds(),"View3", B_FOLLOW_NONE,B_WILL_DRAW); - fView->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + fView->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); // Adding object fBox->AddChild(fStringView3); diff --git a/src/preferences/joysticks/JoyWin.cpp b/src/preferences/joysticks/JoyWin.cpp index f1e137f807..8fd867fc09 100644 --- a/src/preferences/joysticks/JoyWin.cpp +++ b/src/preferences/joysticks/JoyWin.cpp @@ -88,7 +88,7 @@ JoyWin::JoyWin(BRect frame, const char *title) B_WILL_DRAW | B_FRAME_EVENTS | B_FULL_UPDATE_ON_RESIZE, B_PLAIN_BORDER); - box->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + box->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); // Add listViews with their scrolls box->AddChild(new BScrollView("PortScroll", fGamePortL, diff --git a/src/preferences/joysticks/MessageWin.cpp b/src/preferences/joysticks/MessageWin.cpp index c3d7e896e7..da74ee1b07 100644 --- a/src/preferences/joysticks/MessageWin.cpp +++ b/src/preferences/joysticks/MessageWin.cpp @@ -21,7 +21,7 @@ MessageWin::MessageWin(BRect parentFrame, const char *title, : BWindow(parentFrame ,title ,look ,feel, flags, workspace) { fBox = new BBox(Bounds(), "", B_FOLLOW_ALL, B_WILL_DRAW, B_PLAIN_BORDER); - fBox->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + fBox->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); fBox->SetLowColor(fBox->ViewColor()); // Rects for the text view @@ -32,7 +32,7 @@ MessageWin::MessageWin(BRect parentFrame, const char *title, fText = new BTextView(outside, "message", insider, B_FOLLOW_NONE, B_WILL_DRAW); fText->MakeEditable(false); - fText->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + fText->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); fText->SetLowColor(fText->ViewColor()); fBox->AddChild(fText); diff --git a/src/preferences/keymap/KeyboardLayoutView.cpp b/src/preferences/keymap/KeyboardLayoutView.cpp index 0eec89afb6..74e901abb8 100644 --- a/src/preferences/keymap/KeyboardLayoutView.cpp +++ b/src/preferences/keymap/KeyboardLayoutView.cpp @@ -765,6 +765,7 @@ KeyboardLayoutView::_DrawKey(BView* view, BRect updateRect, const Key* key, { rgb_color base = key->dark ? kDarkColor : kBrightColor; rgb_color background = ui_color(B_PANEL_BACKGROUND_COLOR); + rgb_color keyLabelColor = make_color(0, 0, 0, 255); key_kind keyKind = kNormalKey; int32 deadKey = 0; bool secondDeadKey = false; @@ -795,7 +796,7 @@ KeyboardLayoutView::_DrawKey(BView* view, BRect updateRect, const Key* key, _GetAbbreviatedKeyLabelIfNeeded(view, rect, key, text, sizeof(text)); be_control_look->DrawLabel(view, text, rect, updateRect, - base, 0, BAlignment(B_ALIGN_CENTER, B_ALIGN_MIDDLE)); + base, 0, BAlignment(B_ALIGN_CENTER, B_ALIGN_MIDDLE), &keyLabelColor); } else if (key->shape == kEnterKeyShape) { BRect topLeft = rect; BRect topRight = rect; @@ -875,7 +876,7 @@ KeyboardLayoutView::_DrawKey(BView* view, BRect updateRect, const Key* key, // draw the button label be_control_look->DrawLabel(view, text, rect, updateRect, - base, 0, BAlignment(B_ALIGN_CENTER, B_ALIGN_MIDDLE)); + base, 0, BAlignment(B_ALIGN_CENTER, B_ALIGN_MIDDLE), &keyLabelColor); // reset the clipping region view->ConstrainClippingRegion(NULL); diff --git a/src/preferences/locale/FormatSettingsView.cpp b/src/preferences/locale/FormatSettingsView.cpp index 8de1d675ab..826ff96c51 100644 --- a/src/preferences/locale/FormatSettingsView.cpp +++ b/src/preferences/locale/FormatSettingsView.cpp @@ -227,6 +227,8 @@ FormatSettingsView::FormatSettingsView() .Add(BSpaceLayoutItem::CreateGlue(), 2, 1) .View()); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); + BLayoutBuilder::Group<>(this, B_VERTICAL) .Add(fUseLanguageStringsCheckBox) .Add(fDateBox) diff --git a/src/preferences/mail/AutoConfigView.cpp b/src/preferences/mail/AutoConfigView.cpp index 347df84546..c9ec5454ae 100644 --- a/src/preferences/mail/AutoConfigView.cpp +++ b/src/preferences/mail/AutoConfigView.cpp @@ -85,6 +85,13 @@ AutoConfigView::AutoConfigView(AutoConfig &config) void AutoConfigView::AttachedToWindow() { + // Resize the view to fit the contents properly + BRect rect = Bounds(); + float newHeight = fNameView->Frame().bottom + 20 + 2; + newHeight += InnerFrame().top; + ResizeTo(rect.Width(), newHeight); + + AdoptParentColors(); fEmailView->SetTarget(this); fEmailView->MakeFocus(true); } @@ -275,6 +282,8 @@ ServerSettingsView::ServerSettingsView(const account_info &info) fOutboundEncrItemStart(NULL), fImageID(-1) { + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); + fInboundAccount = true; fOutboundAccount = true; diff --git a/src/preferences/mail/AutoConfigWindow.cpp b/src/preferences/mail/AutoConfigWindow.cpp index c5fe997f49..753e485478 100644 --- a/src/preferences/mail/AutoConfigWindow.cpp +++ b/src/preferences/mail/AutoConfigWindow.cpp @@ -28,6 +28,9 @@ #define B_TRANSLATION_CONTEXT "AutoConfigWindow" +const float kSpacing = 10; + + AutoConfigWindow::AutoConfigWindow(BRect rect, ConfigWindow *parent) : BWindow(rect, B_TRANSLATE("Create new account"), B_TITLED_WINDOW_LOOK, @@ -61,6 +64,10 @@ AutoConfigWindow::AutoConfigWindow(BRect rect, ConfigWindow *parent) .Add(fBackButton) .Add(fNextButton); + // determine the proper height + float newHeight = fMainView->Frame().bottom + buttonHeight + kSpacing * 2; + ResizeBy(0, newHeight - Bounds().Height()); + // Add a shortcut to close the window using Command-W AddShortcut('W', B_COMMAND_KEY, new BMessage(B_QUIT_REQUESTED)); } diff --git a/src/preferences/mail/ConfigWindow.cpp b/src/preferences/mail/ConfigWindow.cpp index 4acbd1e4c1..1d46ec9d32 100644 --- a/src/preferences/mail/ConfigWindow.cpp +++ b/src/preferences/mail/ConfigWindow.cpp @@ -184,7 +184,7 @@ class BitmapView : public BView { virtual void AttachedToWindow() { - SetViewColor(Parent()->ViewColor()); + AdoptParentColors(); } virtual void Draw(BRect updateRect) @@ -229,7 +229,7 @@ ConfigWindow::ConfigWindow() fConfigView = new BView(NULL, 0); fConfigView->SetLayout(new BGroupLayout(B_VERTICAL)); fConfigView->SetExplicitMaxSize(BSize(B_SIZE_UNLIMITED, B_SIZE_UNLIMITED)); - fConfigView->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + fConfigView->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); BScrollView* scroller = new BScrollView(NULL, fAccountsListView, 0, false, true); @@ -370,26 +370,34 @@ ConfigWindow::_BuildHowToView() } } - BTextView* text = new BTextView(NULL, B_WILL_DRAW); - text->SetAlignment(B_ALIGN_CENTER); - text->SetText(B_TRANSLATE( + fHowToTextView = new BTextView(NULL, B_WILL_DRAW); + fHowToTextView->SetAlignment(B_ALIGN_CENTER); + fHowToTextView->SetText(B_TRANSLATE( "Create a new account with the Add button.\n\n" "Remove an account with the Remove button on the selected item.\n\n" "Select an item in the list to change its settings.")); - text->MakeEditable(false); - text->MakeSelectable(false); - float fontFactor = be_plain_font->Size() / 12.0f; - text->SetExplicitPreferredSize(BSize(300 * fontFactor,400 * fontFactor)); + + fHowToTextView->MakeEditable(false); + fHowToTextView->MakeSelectable(false); + + BFont font(be_plain_font); + float fontFactor = font.Size() / 12.0f; + + fHowToTextView->SetExplicitPreferredSize( + BSize(300 * fontFactor,400 * fontFactor)); + + rgb_color textColor = ui_color(B_PANEL_TEXT_COLOR); + fHowToTextView->SetFontAndColor(&font, B_FONT_ALL, &textColor); BLayoutBuilder::Group<>(groupView, B_VERTICAL) .AddGlue() - .Add(text) + .Add(fHowToTextView) .AddGlue(); if (bitmapView != NULL) groupView->GetLayout()->AddView(1, bitmapView); - text->SetViewColor(groupView->ViewColor()); + fHowToTextView->AdoptSystemColors(); return groupView; } @@ -517,6 +525,17 @@ ConfigWindow::MessageReceived(BMessage *msg) AutoConfigWindow *autoConfigWindow = NULL; switch (msg->what) { + case B_COLORS_UPDATED: + { + rgb_color textColor; + if (msg->FindColor(ui_color_name(B_PANEL_TEXT_COLOR), &textColor) + == B_OK) { + BFont font; + fHowToTextView->SetFontAndColor(&font, 0, &textColor); + } + break; + } + case kMsgAccountsRightClicked: { BPoint point; diff --git a/src/preferences/mail/ConfigWindow.h b/src/preferences/mail/ConfigWindow.h index 84336e0243..5b7bf88d1e 100644 --- a/src/preferences/mail/ConfigWindow.h +++ b/src/preferences/mail/ConfigWindow.h @@ -1,5 +1,5 @@ /* - * Copyright 2004-2012, Haiku Inc. All rights reserved. + * Copyright 2004-2015, Haiku Inc. All rights reserved. * Copyright 2001, Dr. Zoidberg Enterprises. All rights reserved. * Copyright 2011, Clemens Zeidler * @@ -23,6 +23,7 @@ class BListView; class BButton; class BMenuField; class BMailSettings; +class BTextView; class CenterContainer; @@ -90,6 +91,7 @@ private: BCheckBox* fCheckMailCheckBox; BTextControl* fIntervalControl; BMenuField* fStatusModeField; + BTextView* fHowToTextView; bool fSaveSettings; BObjectList fAccounts; diff --git a/src/preferences/mail/Jamfile b/src/preferences/mail/Jamfile index 2c1250cc33..1aa95086fc 100644 --- a/src/preferences/mail/Jamfile +++ b/src/preferences/mail/Jamfile @@ -1,7 +1,7 @@ SubDir HAIKU_TOP src preferences mail ; UsePublicHeaders [ FDirName add-ons mail_daemon ] ; -UsePrivateHeaders mail ; +UsePrivateHeaders interface mail ; SubDirHdrs [ FDirName $(HAIKU_TOP) headers os add-ons mail_daemon ] ; diff --git a/src/preferences/media/MediaWindow.cpp b/src/preferences/media/MediaWindow.cpp index b1f2d7b168..0e9a9d48ca 100644 --- a/src/preferences/media/MediaWindow.cpp +++ b/src/preferences/media/MediaWindow.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2003-2012, Haiku, Inc. + * Copyright 2003-2015, Haiku, Inc. * Distributed under the terms of the MIT license. * * Authors: @@ -397,7 +397,7 @@ MediaWindow::_InitWindow() fContentLayout = new BCardLayout(); new BView("content view", 0, fContentLayout); - fContentLayout->Owner()->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + fContentLayout->Owner()->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); fContentLayout->SetExplicitMaxSize(BSize(B_SIZE_UNLIMITED, B_SIZE_UNSET)); fAudioView = new AudioSettingsView(); diff --git a/src/preferences/mouse/MouseView.cpp b/src/preferences/mouse/MouseView.cpp index 025b3f6994..4a28bf5c20 100644 --- a/src/preferences/mouse/MouseView.cpp +++ b/src/preferences/mouse/MouseView.cpp @@ -141,10 +141,7 @@ MouseView::GetPreferredSize(float* _width, float* _height) void MouseView::AttachedToWindow() { - if (Parent() != NULL) - SetViewColor(Parent()->ViewColor()); - else - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + AdoptParentColors(); UpdateFromSettings(); _CreateButtonsPicture(); diff --git a/src/preferences/network/DialUpAddOn/DialUpView.cpp b/src/preferences/network/DialUpAddOn/DialUpView.cpp index 6210b9a955..7f7c4b3122 100644 --- a/src/preferences/network/DialUpAddOn/DialUpView.cpp +++ b/src/preferences/network/DialUpAddOn/DialUpView.cpp @@ -115,7 +115,7 @@ DialUpView::DialUpView(BRect frame) { BRect bounds = Bounds(); // for caching - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); // add messenger to us so add-ons can contact us BMessenger messenger(this); diff --git a/src/preferences/network/DialUpAddOn/GeneralAddon.cpp b/src/preferences/network/DialUpAddOn/GeneralAddon.cpp index 91f25a96cd..be54a6bf03 100644 --- a/src/preferences/network/DialUpAddOn/GeneralAddon.cpp +++ b/src/preferences/network/DialUpAddOn/GeneralAddon.cpp @@ -431,7 +431,7 @@ GeneralView::GeneralView(GeneralAddon *addon, BRect frame) // B_FOLLOW_NONE, 0); // BControl automatically sets the view color when attached (we want that) fAuthenticationView = new BView(rect, "authenticationView", B_FOLLOW_NONE, 0); - fAuthenticationView->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + fAuthenticationView->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); rect = fAuthenticationView->Bounds(); rect.bottom = rect.top + 20; fUsername = new BTextControl(rect, "username", kLabelName, NULL, NULL); diff --git a/src/preferences/network/DialUpAddOn/TextRequestDialog.cpp b/src/preferences/network/DialUpAddOn/TextRequestDialog.cpp index 514e7bc8c9..d1285f6dc9 100644 --- a/src/preferences/network/DialUpAddOn/TextRequestDialog.cpp +++ b/src/preferences/network/DialUpAddOn/TextRequestDialog.cpp @@ -50,7 +50,7 @@ TextRequestDialog::TextRequestDialog(const char *title, const char *information, { BRect rect = Bounds(); BView *backgroundView = new BView(rect, "background", B_FOLLOW_ALL_SIDES, 0); - backgroundView->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + backgroundView->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); rect.InsetBy(5, 5); rect.bottom = rect.top; // init @@ -60,7 +60,7 @@ TextRequestDialog::TextRequestDialog(const char *title, const char *information, textRect.OffsetTo(0, 0); fTextView = new BTextView(rect, "TextView", textRect, B_FOLLOW_NONE, B_WILL_DRAW); - fTextView->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + fTextView->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); fTextView->MakeSelectable(false); fTextView->MakeEditable(false); fTextView->SetText(information); diff --git a/src/preferences/network/NetworkWindow.cpp b/src/preferences/network/NetworkWindow.cpp index d51f5f9b98..56458c2fe1 100644 --- a/src/preferences/network/NetworkWindow.cpp +++ b/src/preferences/network/NetworkWindow.cpp @@ -130,7 +130,7 @@ NetworkWindow::NetworkWindow() fAddOnShellView = new BView("add-on shell", 0, new BGroupLayout(B_VERTICAL)); - fAddOnShellView->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + fAddOnShellView->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); fInterfaceView = new InterfaceView(); diff --git a/src/preferences/network/ServiceView.cpp b/src/preferences/network/ServiceView.cpp index efa045352a..4b4dc01212 100644 --- a/src/preferences/network/ServiceView.cpp +++ b/src/preferences/network/ServiceView.cpp @@ -41,7 +41,7 @@ ServiceView::ServiceView(const char* name, const char* executable, BTextView* descriptionView = new BTextView("description"); descriptionView->SetText(description); - descriptionView->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + descriptionView->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); descriptionView->MakeEditable(false); fEnableButton = new BButton("toggler", B_TRANSLATE("Enable"), diff --git a/src/preferences/screen/MonitorView.cpp b/src/preferences/screen/MonitorView.cpp index bf15d9f266..b390d41806 100644 --- a/src/preferences/screen/MonitorView.cpp +++ b/src/preferences/screen/MonitorView.cpp @@ -47,10 +47,7 @@ void MonitorView::AttachedToWindow() { SetViewColor(B_TRANSPARENT_COLOR); - if (Parent()) - fBackgroundColor = Parent()->ViewColor(); - else - fBackgroundColor = ui_color(B_PANEL_BACKGROUND_COLOR); + fBackgroundColor = ui_color(B_PANEL_BACKGROUND_COLOR); _UpdateDPI(); } @@ -156,6 +153,12 @@ void MonitorView::MessageReceived(BMessage* message) { switch (message->what) { + case B_COLORS_UPDATED: + { + message->FindColor(ui_color_name(B_PANEL_BACKGROUND_COLOR), + &fBackgroundColor); + break; + } case UPDATE_DESKTOP_MSG: { int32 width, height; diff --git a/src/preferences/screen/RefreshWindow.cpp b/src/preferences/screen/RefreshWindow.cpp index 7b1df327c1..da1b47521a 100644 --- a/src/preferences/screen/RefreshWindow.cpp +++ b/src/preferences/screen/RefreshWindow.cpp @@ -35,7 +35,7 @@ RefreshWindow::RefreshWindow(BPoint position, float current, float min, float ma max = floorf(max); BView* topView = new BView(Bounds(), NULL, B_FOLLOW_ALL, B_WILL_DRAW); - topView->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + topView->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); AddChild(topView); BRect rect = Bounds().InsetByCopy(8, 8); diff --git a/src/preferences/screen/ScreenSettings.cpp b/src/preferences/screen/ScreenSettings.cpp index 5e2e97f389..9f776c06eb 100644 --- a/src/preferences/screen/ScreenSettings.cpp +++ b/src/preferences/screen/ScreenSettings.cpp @@ -21,7 +21,8 @@ static const char* kSettingsFileName = "Screen_data"; ScreenSettings::ScreenSettings() { - fWindowFrame.Set(-1, -1, 450, 250); + fWindowFrame.Set(0, 0, 450, 250); + BPoint offset; BPath path; if (find_directory(B_USER_SETTINGS_DIRECTORY, &path) == B_OK) { @@ -29,8 +30,10 @@ ScreenSettings::ScreenSettings() BFile file(path.Path(), B_READ_ONLY); if (file.InitCheck() == B_OK) - file.Read(&fWindowFrame, sizeof(BRect)); + file.Read(&offset, sizeof(BPoint)); } + + fWindowFrame.OffsetBy(offset); } @@ -42,9 +45,11 @@ ScreenSettings::~ScreenSettings() path.Append(kSettingsFileName); + BPoint offset = fWindowFrame.LeftTop(); + BFile file(path.Path(), B_WRITE_ONLY | B_CREATE_FILE); if (file.InitCheck() == B_OK) - file.Write(&fWindowFrame, sizeof(BRect)); + file.Write(&offset, sizeof(BPoint)); } diff --git a/src/preferences/screensaver/PasswordWindow.cpp b/src/preferences/screensaver/PasswordWindow.cpp index 46b43c2597..51c72b5033 100644 --- a/src/preferences/screensaver/PasswordWindow.cpp +++ b/src/preferences/screensaver/PasswordWindow.cpp @@ -57,7 +57,7 @@ PasswordWindow::_Setup() float spacing = be_control_look->DefaultItemSpacing(); BView* topView = new BView("topView", B_WILL_DRAW); - topView->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + topView->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); topView->SetExplicitMaxSize(BSize(B_SIZE_UNLIMITED, B_SIZE_UNLIMITED)); BBox* networkBox = new BBox("networkBox"); diff --git a/src/preferences/screensaver/PreviewView.cpp b/src/preferences/screensaver/PreviewView.cpp index 986f2f49f9..8301089a0e 100644 --- a/src/preferences/screensaver/PreviewView.cpp +++ b/src/preferences/screensaver/PreviewView.cpp @@ -61,7 +61,7 @@ PreviewView::PreviewView(const char* name) fSaverView(NULL), fNoPreview(NULL) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); BGroupLayout* layout = new BGroupLayout(B_VERTICAL); // We draw the "monitor" around the preview, hence the strange insets. diff --git a/src/preferences/screensaver/ScreenCornerSelector.cpp b/src/preferences/screensaver/ScreenCornerSelector.cpp index 17ac75e376..f403ab91ad 100644 --- a/src/preferences/screensaver/ScreenCornerSelector.cpp +++ b/src/preferences/screensaver/ScreenCornerSelector.cpp @@ -35,7 +35,7 @@ ScreenCornerSelector::ScreenCornerSelector(BRect frame, const char* name, fCurrentCorner(NO_CORNER), fPreviousCorner(-1) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); } diff --git a/src/preferences/screensaver/ScreenSaverWindow.cpp b/src/preferences/screensaver/ScreenSaverWindow.cpp index 8bd3e6a652..b69990859e 100644 --- a/src/preferences/screensaver/ScreenSaverWindow.cpp +++ b/src/preferences/screensaver/ScreenSaverWindow.cpp @@ -119,6 +119,7 @@ public: void UpdateStatus(); private: + void _UpdateColors(); ScreenSaverSettings& fSettings; uint32 fTurnOffScreenFlags; @@ -129,6 +130,9 @@ private: BCheckBox* fTurnOffCheckBox; TimeSlider* fTurnOffSlider; + BTextView* fFadeNeverText; + BTextView* fFadeNowText; + BCheckBox* fPasswordCheckBox; TimeSlider* fPasswordSlider; BButton* fPasswordButton; @@ -208,7 +212,7 @@ TimeSlider::TimeSlider(const char* name, uint32 changedMessage, BSlider(name, B_TRANSLATE("30 seconds"), new BMessage(changedMessage), 0, kTimeUnitCount - 1, B_HORIZONTAL, B_TRIANGLE_THUMB) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); SetModificationMessage(new BMessage(updateMessage)); SetBarThickness(10); } @@ -268,7 +272,7 @@ FadeView::FadeView(const char* name, ScreenSaverSettings& settings) BView(name, B_WILL_DRAW), fSettings(settings) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); font_height fontHeight; be_plain_font->GetHeight(&fontHeight); @@ -290,13 +294,14 @@ FadeView::FadeView(const char* name, ScreenSaverSettings& settings) kMsgRunSliderUpdate); // Turn Off - rgb_color textColor = tint_color(ui_color(B_PANEL_BACKGROUND_COLOR), - B_DISABLED_LABEL_TINT); + rgb_color textColor = disable_color(ui_color(B_PANEL_TEXT_COLOR), + ViewColor()); + fTurnOffNotSupported = new BTextView("not_supported", be_plain_font, &textColor, B_WILL_DRAW); fTurnOffNotSupported->SetExplicitMinSize(BSize(B_SIZE_UNSET, 3 + textHeight * 3)); - fTurnOffNotSupported->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + fTurnOffNotSupported->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); fTurnOffNotSupported->MakeEditable(false); fTurnOffNotSupported->MakeSelectable(false); fTurnOffNotSupported->SetText( @@ -331,23 +336,23 @@ FadeView::FadeView(const char* name, ScreenSaverSettings& settings) fFadeNow = new ScreenCornerSelector(monitorRect, "FadeNow", new BMessage(kMsgFadeCornerChanged), B_FOLLOW_NONE); - BTextView* fadeNowText = new BTextView("FadeNowText", B_WILL_DRAW); - fadeNowText->SetExplicitMinSize(BSize(B_SIZE_UNSET, + fFadeNowText = new BTextView("FadeNowText", B_WILL_DRAW); + fFadeNowText->SetExplicitMinSize(BSize(B_SIZE_UNSET, 4 + textHeight * 4)); - fadeNowText->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); - fadeNowText->MakeEditable(false); - fadeNowText->MakeSelectable(false); - fadeNowText->SetText(B_TRANSLATE("Fade now when mouse is here")); + fFadeNowText->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); + fFadeNowText->MakeEditable(false); + fFadeNowText->MakeSelectable(false); + fFadeNowText->SetText(B_TRANSLATE("Fade now when mouse is here")); fFadeNever = new ScreenCornerSelector(monitorRect, "FadeNever", new BMessage(kMsgNeverFadeCornerChanged), B_FOLLOW_NONE); - BTextView* fadeNeverText = new BTextView("FadeNeverText", B_WILL_DRAW); - fadeNeverText->SetExplicitMinSize(BSize(B_SIZE_UNSET, + fFadeNeverText = new BTextView("FadeNeverText", B_WILL_DRAW); + fFadeNeverText->SetExplicitMinSize(BSize(B_SIZE_UNSET, 4 + textHeight * 4)); - fadeNeverText->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); - fadeNeverText->MakeEditable(false); - fadeNeverText->MakeSelectable(false); - fadeNeverText->SetText(B_TRANSLATE("Don't fade when mouse is here")); + fFadeNeverText->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); + fFadeNeverText->MakeEditable(false); + fFadeNeverText->MakeSelectable(false); + fFadeNeverText->SetText(B_TRANSLATE("Don't fade when mouse is here")); box->AddChild(BLayoutBuilder::Group<>(B_VERTICAL, 0) .SetInsets(B_USE_DEFAULT_SPACING, 0, B_USE_DEFAULT_SPACING, @@ -371,12 +376,12 @@ FadeView::FadeView(const char* name, ScreenSaverSettings& settings) .AddGroup(B_HORIZONTAL) .Add(fFadeNow) .AddGroup(B_VERTICAL, 0) - .Add(fadeNowText) + .Add(fFadeNowText) .AddGlue() .End() .Add(fFadeNever) .AddGroup(B_VERTICAL, 0) - .Add(fadeNeverText) + .Add(fFadeNeverText) .AddGlue() .End() .End() @@ -388,6 +393,7 @@ FadeView::FadeView(const char* name, ScreenSaverSettings& settings) B_USE_WINDOW_SPACING, 0) .Add(box) .End(); + } @@ -412,6 +418,7 @@ FadeView::AttachedToWindow() fPasswordCheckBox->SetValue(fSettings.LockEnable()); fPasswordSlider->SetTime(fSettings.PasswordTime()); + _UpdateColors(); UpdateTurnOffScreen(); UpdateStatus(); } @@ -421,6 +428,9 @@ void FadeView::MessageReceived(BMessage *message) { switch (message->what) { + case B_COLORS_UPDATED: + _UpdateColors(); + break; case kMsgRunSliderChanged: case kMsgRunSliderUpdate: if (fRunSlider->Value() > fTurnOffSlider->Value()) @@ -530,6 +540,15 @@ FadeView::UpdateStatus() } +void +FadeView::_UpdateColors() +{ + rgb_color color = ui_color(B_PANEL_TEXT_COLOR); + fFadeNeverText->SetFontAndColor(be_plain_font, 0, &color); + fFadeNowText->SetFontAndColor(be_plain_font, 0, &color); +} + + // #pragma mark - ModulesView @@ -546,7 +565,7 @@ ModulesView::ModulesView(const char* name, ScreenSaverSettings& settings) fPreviewView(new PreviewView("preview")), fScreenSaverTestTeam(-1) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); fScreenSaversListView->SetSelectionMessage( new BMessage(kMsgSaverSelected)); @@ -825,7 +844,7 @@ ModulesView::_OpenSaver() #endif fSettingsView = new BView(rect, "SettingsView", B_FOLLOW_ALL, B_WILL_DRAW); - fSettingsView->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + fSettingsView->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); fSettingsBox->AddChild(fSettingsView); BScreenSaver* saver = ScreenSaver(); @@ -928,7 +947,7 @@ ScreenSaverWindow::ScreenSaverWindow() // Create the topmost background view BView* topView = new BView("topView", B_WILL_DRAW); - topView->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + topView->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); topView->SetExplicitAlignment(BAlignment(B_ALIGN_USE_FULL_WIDTH, B_ALIGN_USE_FULL_HEIGHT)); topView->SetExplicitMinSize(BSize(fMinWidth, fMinHeight)); diff --git a/src/preferences/time/AnalogClock.cpp b/src/preferences/time/AnalogClock.cpp index 4f1c0d0178..5b6d34eef9 100644 --- a/src/preferences/time/AnalogClock.cpp +++ b/src/preferences/time/AnalogClock.cpp @@ -250,7 +250,7 @@ TAnalogClock::DrawClock() BRect bounds = Bounds(); // clear background - rgb_color background = ui_color(B_PANEL_BACKGROUND_COLOR); + rgb_color background = ViewColor(); SetHighColor(background); FillRect(bounds); diff --git a/src/preferences/time/BaseView.cpp b/src/preferences/time/BaseView.cpp index eec15e44ec..3e096a3045 100644 --- a/src/preferences/time/BaseView.cpp +++ b/src/preferences/time/BaseView.cpp @@ -41,7 +41,8 @@ TTimeBaseView::Pulse() void TTimeBaseView::AttachedToWindow() { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); + SetLowUIColor(ViewUIColor()); } diff --git a/src/preferences/time/ClockView.cpp b/src/preferences/time/ClockView.cpp index a67d2198e9..b287a4dfdf 100644 --- a/src/preferences/time/ClockView.cpp +++ b/src/preferences/time/ClockView.cpp @@ -80,8 +80,7 @@ ClockView::~ClockView() void ClockView::AttachedToWindow() { - if (Parent()) - SetViewColor(Parent()->ViewColor()); + AdoptParentColors(); fShowClock->SetTarget(this); fShowSeconds->SetTarget(this); diff --git a/src/preferences/time/DateTimeEdit.cpp b/src/preferences/time/DateTimeEdit.cpp index 0614a2bb30..24fb1c4d2f 100644 --- a/src/preferences/time/DateTimeEdit.cpp +++ b/src/preferences/time/DateTimeEdit.cpp @@ -95,9 +95,12 @@ TTimeEdit::DrawSection(uint32 index, BRect bounds, bool hasFocus) { if (fFieldPositions == NULL || index * 2 + 1 >= (uint32)fFieldPosCount) return; - SetLowColor(ViewColor()); + if (hasFocus) - SetLowColor(tint_color(ViewColor(), B_DARKEN_1_TINT)); + SetLowColor(mix_color(ui_color(B_CONTROL_HIGHLIGHT_COLOR), + ViewColor(), 192)); + else + SetLowColor(ViewColor()); BString field; fText.CopyCharsInto(field, fFieldPositions[index * 2], @@ -106,7 +109,7 @@ TTimeEdit::DrawSection(uint32 index, BRect bounds, bool hasFocus) BPoint point(bounds.LeftBottom()); point.y -= bounds.Height() / 2.0 - 6.0; point.x += (bounds.Width() - StringWidth(field)) / 2; - SetHighColor(0, 0, 0, 255); + SetHighUIColor(B_PANEL_TEXT_COLOR); FillRect(bounds, B_SOLID_LOW); DrawString(field, point); } @@ -125,7 +128,7 @@ TTimeEdit::DrawSeparator(uint32 index, BRect bounds) BPoint point(bounds.LeftBottom()); point.y -= bounds.Height() / 2.0 - 6.0; point.x += (bounds.Width() - StringWidth(field)) / 2; - SetHighColor(0, 0, 0, 255); + SetHighUIColor(B_PANEL_TEXT_COLOR); DrawString(field, point); } @@ -471,9 +474,11 @@ TDateEdit::DrawSection(uint32 index, BRect bounds, bool hasFocus) if (fFieldPositions == NULL || index * 2 + 1 >= (uint32)fFieldPosCount) return; - SetLowColor(ViewColor()); if (hasFocus) - SetLowColor(tint_color(ViewColor(), B_DARKEN_1_TINT)); + SetLowColor(mix_color(ui_color(B_CONTROL_HIGHLIGHT_COLOR), + ViewColor(), 192)); + else + SetLowColor(ViewColor()); BString field; fText.CopyCharsInto(field, fFieldPositions[index * 2], @@ -482,7 +487,7 @@ TDateEdit::DrawSection(uint32 index, BRect bounds, bool hasFocus) BPoint point(bounds.LeftBottom()); point.y -= bounds.Height() / 2.0 - 6.0; point.x += (bounds.Width() - StringWidth(field)) / 2; - SetHighColor(0, 0, 0, 255); + SetHighUIColor(B_PANEL_TEXT_COLOR); FillRect(bounds, B_SOLID_LOW); DrawString(field, point); } @@ -504,7 +509,7 @@ TDateEdit::DrawSeparator(uint32 index, BRect bounds) BPoint point(bounds.LeftBottom()); point.y -= bounds.Height() / 2.0 - 6.0; point.x += (bounds.Width() - StringWidth(field)) / 2; - SetHighColor(0, 0, 0, 255); + SetHighUIColor(B_PANEL_TEXT_COLOR); DrawString(field, point); } diff --git a/src/preferences/time/DateTimeView.cpp b/src/preferences/time/DateTimeView.cpp index 487ca4f8b9..abc7557f5d 100644 --- a/src/preferences/time/DateTimeView.cpp +++ b/src/preferences/time/DateTimeView.cpp @@ -65,8 +65,7 @@ DateTimeView::~DateTimeView() void DateTimeView::AttachedToWindow() { - if (Parent()) - SetViewColor(Parent()->ViewColor()); + AdoptParentColors(); if (!fInitialized) { fInitialized = true; diff --git a/src/preferences/time/SectionEdit.cpp b/src/preferences/time/SectionEdit.cpp index a00461daba..b04daab5e1 100644 --- a/src/preferences/time/SectionEdit.cpp +++ b/src/preferences/time/SectionEdit.cpp @@ -41,8 +41,7 @@ TSectionEdit::~TSectionEdit() void TSectionEdit::AttachedToWindow() { - if (Parent()) - SetViewColor(Parent()->ViewColor()); + AdoptParentColors(); } diff --git a/src/preferences/time/TZDisplay.cpp b/src/preferences/time/TZDisplay.cpp index 1981ac27ef..1df7a4e444 100644 --- a/src/preferences/time/TZDisplay.cpp +++ b/src/preferences/time/TZDisplay.cpp @@ -35,8 +35,7 @@ TTZDisplay::~TTZDisplay() void TTZDisplay::AttachedToWindow() { - if (Parent()) - SetViewColor(Parent()->ViewColor()); + AdoptParentColors(); } diff --git a/src/preferences/time/ZoneView.cpp b/src/preferences/time/ZoneView.cpp index 6e20785d10..2b85e67322 100644 --- a/src/preferences/time/ZoneView.cpp +++ b/src/preferences/time/ZoneView.cpp @@ -116,8 +116,7 @@ void TimeZoneView::AttachedToWindow() { BView::AttachedToWindow(); - if (Parent()) - SetViewColor(Parent()->ViewColor()); + AdoptParentColors(); if (!fInitialized) { fInitialized = true; From c5b4dc4007fb844b1f18475cf4b37591da128fbe Mon Sep 17 00:00:00 2001 From: looncraz Date: Thu, 10 Dec 2015 12:54:01 -0600 Subject: [PATCH 061/242] Tracker: Use Set*UIColor, improved font awareness. InfoWindow now uses the font size to determine the window size and placement of elements. Also uses system colors, including link colors. Permissions view not font sensitive yet. Signed-off-by: Augustin Cavalier Patch 0039 from looncraz, unmodified. --- src/kits/tracker/ContainerWindow.cpp | 21 +- src/kits/tracker/CountView.cpp | 21 +- src/kits/tracker/DialogPane.cpp | 7 +- src/kits/tracker/FilePanelPriv.cpp | 2 +- src/kits/tracker/FilePermissionsView.cpp | 4 +- src/kits/tracker/FindPanel.cpp | 4 +- src/kits/tracker/InfoWindow.cpp | 200 ++++++++++-------- src/kits/tracker/MiniMenuField.cpp | 6 +- src/kits/tracker/PoseView.cpp | 12 +- src/kits/tracker/QueryPoseView.cpp | 3 +- src/kits/tracker/SelectionWindow.cpp | 2 +- src/kits/tracker/StatusWindow.cpp | 6 +- src/kits/tracker/TextWidget.cpp | 10 +- src/kits/tracker/TitleView.cpp | 55 ++--- src/kits/tracker/TrackerSettingsWindow.cpp | 3 +- src/kits/tracker/Utilities.cpp | 10 +- src/kits/tracker/VirtualDirectoryPoseView.cpp | 4 +- 17 files changed, 183 insertions(+), 187 deletions(-) diff --git a/src/kits/tracker/ContainerWindow.cpp b/src/kits/tracker/ContainerWindow.cpp index dfac6e3ff7..4a7432aeea 100644 --- a/src/kits/tracker/ContainerWindow.cpp +++ b/src/kits/tracker/ContainerWindow.cpp @@ -382,8 +382,11 @@ DraggableContainerIcon::MouseMoved(BPoint where, uint32, const BMessage*) view->SetHighColor(0, 0, 0, 0); view->FillRect(view->Bounds()); view->SetDrawingMode(B_OP_ALPHA); - view->SetHighColor(0, 0, 0, 128); + + rgb_color textColor = ui_color(B_PANEL_TEXT_COLOR); + textColor.alpha = 128; // set the level of transparency by value + view->SetHighColor(textColor); view->SetBlendingMode(B_CONSTANT_ALPHA, B_ALPHA_COMPOSITE); // Draw the icon @@ -517,7 +520,7 @@ BContainerWindow::BContainerWindow(LockingList* list, fRootLayout = new BGroupLayout(B_VERTICAL, 0); fRootLayout->SetInsets(0); SetLayout(fRootLayout); - fRootLayout->Owner()->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + fRootLayout->Owner()->AdoptSystemColors(); if (!fIsDesktop) { fMenuContainer = new BGroupView(B_HORIZONTAL, 0); @@ -4327,8 +4330,6 @@ BorderedView::BorderedView() fEnableBorderHighlight(true) { GroupLayout()->SetInsets(1); - SetViewColor(tint_color(ui_color(B_PANEL_BACKGROUND_COLOR), - B_DARKEN_2_TINT)); } @@ -4354,9 +4355,11 @@ BorderedView::PoseViewFocused(bool focused) if (window == NULL) return; - rgb_color base; + color_which base = B_DOCUMENT_BACKGROUND_COLOR; + float tint = B_DARKEN_2_TINT; if (focused && window->IsActive() && fEnableBorderHighlight) { - base = ui_color(B_KEYBOARD_NAVIGATION_COLOR); + base = B_KEYBOARD_NAVIGATION_COLOR; + tint = B_NO_TINT; BScrollBar* hScrollBar = window->PoseView()->HScrollBar(); if (hScrollBar != NULL) @@ -4365,12 +4368,8 @@ BorderedView::PoseViewFocused(bool focused) BScrollBar* vScrollBar = window->PoseView()->VScrollBar(); if (vScrollBar != NULL) vScrollBar->SetBorderHighlighted(focused); - } else { - base = ui_color(B_PANEL_BACKGROUND_COLOR); - base = tint_color(base, B_DARKEN_2_TINT); } - SetViewColor(base); - + SetViewUIColor(base, tint); Invalidate(); } diff --git a/src/kits/tracker/CountView.cpp b/src/kits/tracker/CountView.cpp index 55807b04fb..921c9bb31a 100644 --- a/src/kits/tracker/CountView.cpp +++ b/src/kits/tracker/CountView.cpp @@ -198,11 +198,15 @@ BCountView::Draw(BRect updateRect) { BRect bounds(Bounds()); - be_control_look->DrawBorder(this, bounds, updateRect, ViewColor(), - B_PLAIN_BORDER, 0, + rgb_color color = ViewColor(); + if (IsTypingAhead()) + color = ui_color(B_DOCUMENT_BACKGROUND_COLOR); + + SetLowColor(color); + be_control_look->DrawBorder(this, bounds, updateRect, + ui_color(B_NAVIGATION_BASE_COLOR), B_PLAIN_BORDER, 0, BControlLook::B_BOTTOM_BORDER | BControlLook::B_LEFT_BORDER); - be_control_look->DrawMenuBarBackground(this, bounds, updateRect, - ViewColor()); + be_control_look->DrawMenuBarBackground(this, bounds, updateRect, color); BString itemString; if (IsTypingAhead()) @@ -228,10 +232,9 @@ BCountView::Draw(BRect updateRect) if (IsTypingAhead()) { // use a muted gray for the typeahead - SetHighColor(tint_color(ui_color(B_PANEL_BACKGROUND_COLOR), - B_DARKEN_4_TINT)); + SetHighColor(ui_color(B_DOCUMENT_TEXT_COLOR)); } else - SetHighColor(0, 0, 0); + SetHighColor(ui_color(B_PANEL_TEXT_COLOR)); MovePenTo(textRect.LeftBottom()); DrawString(itemString.String()); @@ -313,8 +316,8 @@ BCountView::AttachedToWindow() SetFont(be_plain_font); SetFontSize(9); - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); - SetLowColor(ViewColor()); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); + SetLowUIColor(ViewUIColor()); CheckCount(); } diff --git a/src/kits/tracker/DialogPane.cpp b/src/kits/tracker/DialogPane.cpp index ad9d06358b..4e9957579e 100644 --- a/src/kits/tracker/DialogPane.cpp +++ b/src/kits/tracker/DialogPane.cpp @@ -202,11 +202,7 @@ DialogPane::SetMode(int32 mode, bool initialSetup) void DialogPane::AttachedToWindow() { - BView* parent = Parent(); - if (parent != NULL) { - SetViewColor(parent->ViewColor()); - SetLowColor(parent->LowColor()); - } + AdoptParentColors(); } @@ -370,6 +366,7 @@ PaneSwitch::Draw(BRect) else point.x = bounds.right - labelDist - StringWidth(label); + SetHighUIColor(B_PANEL_TEXT_COLOR); font_height fontHeight; GetFontHeight(&fontHeight); point.y = (bounds.top + bounds.bottom diff --git a/src/kits/tracker/FilePanelPriv.cpp b/src/kits/tracker/FilePanelPriv.cpp index 4616e43531..14bb4343be 100644 --- a/src/kits/tracker/FilePanelPriv.cpp +++ b/src/kits/tracker/FilePanelPriv.cpp @@ -654,7 +654,7 @@ TFilePanel::Init(const BMessage*) { BRect windRect(Bounds()); fBackView = new BView(Bounds(), "View", B_FOLLOW_ALL, 0); - fBackView->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + fBackView->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); AddChild(fBackView); // add poseview menu bar diff --git a/src/kits/tracker/FilePermissionsView.cpp b/src/kits/tracker/FilePermissionsView.cpp index 5aeb73c3bf..788aa4c1e9 100644 --- a/src/kits/tracker/FilePermissionsView.cpp +++ b/src/kits/tracker/FilePermissionsView.cpp @@ -60,6 +60,8 @@ FilePermissionsView::FilePermissionsView(BRect rect, Model* model) BView(rect, "FilePermissionsView", B_FOLLOW_LEFT_RIGHT, B_WILL_DRAW), fModel(model) { + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); + // Constants for the column labels: "User", "Group" and "Other". const float kColumnLabelMiddle = 77, kColumnLabelTop = 6, kColumnLabelSpacing = 37, kColumnLabelBottom = 20, @@ -203,8 +205,6 @@ FilePermissionsView::FilePermissionsView(BRect rect, Model* model) fGroupTextControl->SetDivider(0); AddChild(fGroupTextControl); - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); - ModelChanged(model); } diff --git a/src/kits/tracker/FindPanel.cpp b/src/kits/tracker/FindPanel.cpp index 66d098e46c..0f9fbf5576 100644 --- a/src/kits/tracker/FindPanel.cpp +++ b/src/kits/tracker/FindPanel.cpp @@ -725,8 +725,8 @@ FindPanel::FindPanel(BFile* node, FindWindow* parent, bool fromTemplate, fAttrGrid(NULL), fDraggableIcon(NULL) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); - SetLowColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); + SetLowUIColor(ViewUIColor()); uint32 initialMode = InitialMode(node); diff --git a/src/kits/tracker/InfoWindow.cpp b/src/kits/tracker/InfoWindow.cpp index 1a06aaf6de..0b5bf10ccb 100644 --- a/src/kits/tracker/InfoWindow.cpp +++ b/src/kits/tracker/InfoWindow.cpp @@ -120,7 +120,7 @@ public: void ReLinkTargetModel(Model*); void BeginEditingTitle(); void FinishEditingTitle(bool); - float CurrentFontHeight(float size = -1); + float CurrentFontHeight(); BTextView* TextView() const { return fTitleEditView; } @@ -187,6 +187,8 @@ private: BWindow* fPathWindow; BWindow* fLinkWindow; BWindow* fDescWindow; + color_which fCurrentLinkColorWhich; + color_which fCurrentPathColorWhich; typedef BView _inherited; }; @@ -202,18 +204,9 @@ const float kBorderWidth = 32.0f; const float kIconHorizOffset = 18.0f; const float kIconVertOffset = 6.0f; -// The font height's for the two types of information we display -const float kTitleFontHeight = 14.0f; -const float kAttribFontHeight = 10.0f; - // Amount you have to move the mouse before a drag starts const float kDragSlop = 3.0f; -const rgb_color kAttrTitleColor = {0, 0, 0, 255}; -const rgb_color kAttrValueColor = {0, 0, 0, 255}; -const rgb_color kLinkColor = {0, 0, 220, 255}; -const rgb_color kDarkBorderColor = {184, 184, 184, 255}; - const uint32 kSetPreferredApp = 'setp'; const uint32 kSelectNewSymTarget = 'snew'; const uint32 kNewTargetSelected = 'selc'; @@ -328,6 +321,7 @@ BInfoWindow::~BInfoWindow() BRect BInfoWindow::InfoWindowRect(bool) { + // starting size of window return BRect(70, 50, 385, 240); } @@ -370,6 +364,13 @@ BInfoWindow::Show() AutoLock lock(this); + const BFont* font = be_plain_font; + float width = font->StringWidth("This is a really long string which we" + "will use to find the window width"); + + float height = font->Size() * 15; + ResizeTo(width, height); + BRect attrRect(Bounds()); fAttributeView = new AttributeView(attrRect, TargetModel()); AddChild(fAttributeView); @@ -390,7 +391,6 @@ BInfoWindow::Show() windRect.OffsetTo(50, 50); MoveTo(windRect.LeftTop()); - ResizeTo(windRect.Width(), windRect.Height()); // volume case is handled by view if (!TargetModel()->IsVolume() && !TargetModel()->IsRoot()) { @@ -641,29 +641,31 @@ BInfoWindow::MessageReceived(BMessage* message) break; case kPermissionsSelected: + { + BRect permissionsBounds(kBorderWidth + 1, + fAttributeView->Bounds().bottom, + fAttributeView->Bounds().right, + fAttributeView->Bounds().bottom + 80); + if (fPermissionsView == NULL) { // Only true on first call. fPermissionsView = new FilePermissionsView( - BRect(kBorderWidth + 1, - fAttributeView->Bounds().bottom, - fAttributeView->Bounds().right, - fAttributeView->Bounds().bottom + 80), - fModel); - - ResizeBy(0, fPermissionsView->Bounds().Height()); + permissionsBounds, fModel); + ResizeBy(0, permissionsBounds.Height()); fAttributeView->AddChild(fPermissionsView); fAttributeView->SetPermissionsSwitchState(kPaneSwitchOpen); } else if (fPermissionsView->IsHidden()) { fPermissionsView->ModelChanged(fModel); fPermissionsView->Show(); - ResizeBy(0, fPermissionsView->Bounds().Height()); + ResizeBy(0, permissionsBounds.Height()); fAttributeView->SetPermissionsSwitchState(kPaneSwitchOpen); } else { fPermissionsView->Hide(); - ResizeBy(0, -fPermissionsView->Bounds().Height()); + ResizeBy(0, -permissionsBounds.Height()); fAttributeView->SetPermissionsSwitchState(kPaneSwitchClosed); } break; + } default: _inherited::MessageReceived(message); @@ -840,11 +842,13 @@ AttributeView::AttributeView(BRect rect, Model* model) fTitleEditView(NULL), fPathWindow(NULL), fLinkWindow(NULL), - fDescWindow(NULL) + fDescWindow(NULL), + fCurrentLinkColorWhich(B_LINK_TEXT_COLOR), + fCurrentPathColorWhich(fCurrentLinkColorWhich) { // Set view color to standard background grey - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); - + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); + SetFont(be_plain_font); // If the model is a symlink, then we deference the model to // get the targets icon if (fModel->IsSymLink()) { @@ -868,7 +872,6 @@ AttributeView::AttributeView(BRect rect, Model* model) BFont currentFont; font_height fontMetrics; GetFont(¤tFont); - currentFont.SetSize(kTitleFontHeight); currentFont.GetHeight(&fontMetrics); fTitleRect.left = fIconRect.right + 5; @@ -890,8 +893,8 @@ AttributeView::AttributeView(BRect rect, Model* model) // Find offset for attributes, might be overiden below if there // is a prefered handle menu displayed - currentFont.SetSize(kAttribFontHeight); - fDivider = currentFont.StringWidth(B_TRANSLATE("Modified:")) + currentFont.SetSize(currentFont.Size() - 2); + fDivider = currentFont.StringWidth(B_TRANSLATE("Description:")) + kBorderMargin + kBorderWidth + 1; // Add a preferred handler pop-up menu if this item // is a file...This goes in place of the Link To: @@ -902,7 +905,6 @@ AttributeView::AttributeView(BRect rect, Model* model) // But don't add the menu if the file is executable if (!fModel->IsExecutable()) { - SetFontSize(kAttribFontHeight); float lineHeight = CurrentFontHeight(); BRect preferredAppRect(kBorderWidth + kBorderMargin, @@ -915,7 +917,7 @@ AttributeView::AttributeView(BRect rect, Model* model) fPreferredAppMenu->SetDivider(fDivider); fDivider += (preferredAppRect.left - 2); fPreferredAppMenu->SetFont(¤tFont); - fPreferredAppMenu->SetHighColor(kAttrTitleColor); + fPreferredAppMenu->SetHighUIColor(B_PANEL_TEXT_COLOR); fPreferredAppMenu->SetLabel(B_TRANSLATE("Opens with:")); char prefSignature[B_MIME_TYPE_LENGTH]; @@ -1333,6 +1335,9 @@ AttributeView::MouseMoved(BPoint where, uint32, const BMessage* dragMessage) } } + fCurrentLinkColorWhich = B_LINK_TEXT_COLOR; + fCurrentPathColorWhich = fCurrentLinkColorWhich; + switch (fTrackingState) { case link_track: if (fLinkRect.Contains(where) != fMouseDown) { @@ -1362,9 +1367,8 @@ AttributeView::MouseMoved(BPoint where, uint32, const BMessage* dragMessage) // Find the required height BFont font; GetFont(&font); - font.SetSize(kAttribFontHeight); - float height = CurrentFontHeight(kAttribFontHeight) + float height = CurrentFontHeight() + fIconRect.Height() + 8; BRect rect(0, 0, min_c(fIconRect.Width() + font.StringWidth(fModel->Name()) + 4, @@ -1384,8 +1388,10 @@ AttributeView::MouseMoved(BPoint where, uint32, const BMessage* dragMessage) view->SetHighColor(0, 0, 0, 0); view->FillRect(view->Bounds()); view->SetDrawingMode(B_OP_ALPHA); - view->SetHighColor(0, 0, 0, 128); - // set the level of transparency by value + rgb_color textColor = ui_color(B_PANEL_TEXT_COLOR); + textColor.alpha = 128; + // set transparency by value + view->SetHighColor(textColor); view->SetBlendingMode(B_CONSTANT_ALPHA, B_ALPHA_COMPOSITE); // Draw the icon @@ -1452,37 +1458,45 @@ AttributeView::MouseMoved(BPoint where, uint32, const BMessage* dragMessage) BScreen screen(Window()); BFont font; GetFont(&font); - font.SetSize(kAttribFontHeight); float maxWidth = (Bounds().Width() - (fDivider + kBorderMargin)); - if (fPathRect.Contains(point) - && font.StringWidth(fPathStr.String()) > maxWidth) { - fTrackingState = no_track; - BRect rect(fPathRect); - rect.OffsetBy(Window()->Frame().left, - Window()->Frame().top); + if (fPathRect.Contains(point)) { + if (fCurrentPathColorWhich != B_LINK_HOVER_COLOR) + fCurrentPathColorWhich = B_LINK_HOVER_COLOR; - if (!fPathWindow - || BMessenger(fPathWindow).IsValid() == false) { - fPathWindow = OpenToolTipWindow(screen, rect, - "fPathWindow", fPathStr.String(), - BMessenger(this), - new BMessage(kOpenLinkSource)); + if (font.StringWidth(fPathStr.String()) > maxWidth) { + fTrackingState = no_track; + BRect rect(fPathRect); + rect.OffsetBy(Window()->Frame().left, + Window()->Frame().top); + + if (fPathWindow == NULL + || BMessenger(fPathWindow).IsValid() == false) { + fPathWindow = OpenToolTipWindow(screen, rect, + "fPathWindow", fPathStr.String(), + BMessenger(this), + new BMessage(kOpenLinkSource)); + } } - } else if (fLinkRect.Contains(point) - && font.StringWidth(fLinkToStr.String()) > maxWidth) { - fTrackingState = no_track; - BRect rect(fLinkRect); - rect.OffsetBy(Window()->Frame().left, - Window()->Frame().top); + } else if (fLinkRect.Contains(point)) { - if (!fLinkWindow - || BMessenger(fLinkWindow).IsValid() == false) { - fLinkWindow = OpenToolTipWindow(screen, rect, - "fLinkWindow", fLinkToStr.String(), - BMessenger(this), - new BMessage(kOpenLinkTarget)); + if (fCurrentLinkColorWhich != B_LINK_HOVER_COLOR) + fCurrentLinkColorWhich = B_LINK_HOVER_COLOR; + + if (font.StringWidth(fLinkToStr.String()) > maxWidth) { + fTrackingState = no_track; + BRect rect(fLinkRect); + rect.OffsetBy(Window()->Frame().left, + Window()->Frame().top); + + if (!fLinkWindow + || BMessenger(fLinkWindow).IsValid() == false) { + fLinkWindow = OpenToolTipWindow(screen, rect, + "fLinkWindow", fLinkToStr.String(), + BMessenger(this), + new BMessage(kOpenLinkTarget)); + } } } else if (fDescRect.Contains(point) && font.StringWidth(fDescStr.String()) > maxWidth) { @@ -1502,6 +1516,9 @@ AttributeView::MouseMoved(BPoint where, uint32, const BMessage* dragMessage) break; } } + + DelayedInvalidate(16666, fPathRect); + DelayedInvalidate(16666, fLinkRect); } @@ -1700,10 +1717,13 @@ AttributeView::Draw(BRect) SetHighColor(ui_color(B_PANEL_BACKGROUND_COLOR)); FillRect(Bounds()); + rgb_color labelColor = ui_color(B_PANEL_TEXT_COLOR); + rgb_color attributeColor = mix_color(HighColor(), labelColor, 192); + // Draw the dark grey area on the left BRect drawBounds(Bounds()); drawBounds.right = kBorderWidth; - SetHighColor(kDarkBorderColor); + SetHighUIColor(B_PANEL_BACKGROUND_COLOR, B_DARKEN_2_TINT); FillRect(drawBounds); // Draw the icon, straddling the border @@ -1719,12 +1739,12 @@ AttributeView::Draw(BRect) // Draw the main title if the user is not currently editing it if (fTitleEditView == NULL) { SetFont(be_bold_font); - SetFontSize(kTitleFontHeight); + SetFontSize(be_bold_font->Size()); GetFont(¤tFont); currentFont.GetHeight(&fontMetrics); lineHeight = CurrentFontHeight() + 5; lineBase = fTitleRect.bottom - fontMetrics.descent; - SetHighColor(kAttrValueColor); + SetHighColor(labelColor); MovePenTo(BPoint(fIconRect.right + 6, lineBase)); // Recalculate the rect width @@ -1743,7 +1763,6 @@ AttributeView::Draw(BRect) // Draw the attribute font stuff SetFont(be_plain_font); - SetFontSize(kAttribFontHeight); GetFontHeight(&fontMetrics); lineHeight = CurrentFontHeight() + 5; @@ -1751,7 +1770,7 @@ AttributeView::Draw(BRect) lineBase = fTitleRect.bottom + lineHeight; // Capacity/size - SetHighColor(kAttrTitleColor); + SetHighColor(labelColor); if (fModel->IsVolume() || fModel->IsRoot()) { MovePenTo(BPoint(fDivider - (StringWidth(B_TRANSLATE("Capacity:"))), lineBase)); @@ -1766,7 +1785,7 @@ AttributeView::Draw(BRect) } MovePenTo(BPoint(fDivider + kDrawMargin, lineBase)); - SetHighColor(kAttrValueColor); + SetHighColor(attributeColor); // Check for possible need of truncation if (StringWidth(fSizeString.String()) > (Bounds().Width() - (fDivider + kBorderMargin))) { @@ -1783,33 +1802,32 @@ AttributeView::Draw(BRect) lineBase += lineHeight; // Created - SetHighColor(kAttrTitleColor); + SetHighColor(labelColor); MovePenTo(BPoint(fDivider - (StringWidth(B_TRANSLATE("Created:"))), lineBase)); - SetHighColor(kAttrTitleColor); DrawString(B_TRANSLATE("Created:")); MovePenTo(BPoint(fDivider + kDrawMargin, lineBase)); - SetHighColor(kAttrValueColor); + SetHighColor(attributeColor); DrawString(fCreatedStr.String()); lineBase += lineHeight; // Modified MovePenTo(BPoint(fDivider - (StringWidth(B_TRANSLATE("Modified:"))), lineBase)); - SetHighColor(kAttrTitleColor); + SetHighColor(labelColor); DrawString(B_TRANSLATE("Modified:")); MovePenTo(BPoint(fDivider + kDrawMargin, lineBase)); - SetHighColor(kAttrValueColor); + SetHighColor(attributeColor); DrawString(fModifiedStr.String()); lineBase += lineHeight; // Kind MovePenTo(BPoint(fDivider - (StringWidth(B_TRANSLATE("Kind:"))), lineBase)); - SetHighColor(kAttrTitleColor); + SetHighColor(labelColor); DrawString(B_TRANSLATE("Kind:")); MovePenTo(BPoint(fDivider + kDrawMargin, lineBase)); - SetHighColor(kAttrValueColor); + SetHighColor(attributeColor); DrawString(fKindStr.String()); lineBase += lineHeight; @@ -1819,11 +1837,11 @@ AttributeView::Draw(BRect) // Path MovePenTo(BPoint(fDivider - (StringWidth(B_TRANSLATE("Location:"))), lineBase)); - SetHighColor(kAttrTitleColor); + SetHighColor(labelColor); DrawString(B_TRANSLATE("Location:")); MovePenTo(BPoint(fDivider + kDrawMargin, lineBase)); - SetHighColor(kLinkColor); + SetHighUIColor(fCurrentPathColorWhich); // Check for truncation if (StringWidth(fPathStr.String()) > (Bounds().Width() @@ -1847,10 +1865,10 @@ AttributeView::Draw(BRect) if (fModel->IsSymLink()) { MovePenTo(BPoint(fDivider - (StringWidth(B_TRANSLATE("Link to:"))), lineBase)); - SetHighColor(kAttrTitleColor); + SetHighColor(labelColor); DrawString(B_TRANSLATE("Link to:")); MovePenTo(BPoint(fDivider + kDrawMargin, lineBase)); - SetHighColor(kLinkColor); + SetHighUIColor(fCurrentLinkColorWhich); // Check for truncation if (StringWidth(fLinkToStr.String()) > (Bounds().Width() @@ -1875,10 +1893,10 @@ AttributeView::Draw(BRect) //Version MovePenTo(BPoint(fDivider - (StringWidth(B_TRANSLATE("Version:"))), lineBase)); - SetHighColor(kAttrTitleColor); + SetHighColor(labelColor); DrawString(B_TRANSLATE("Version:")); MovePenTo(BPoint(fDivider + kDrawMargin, lineBase)); - SetHighColor(kAttrValueColor); + SetHighColor(attributeColor); BString nameString; if (fModel->GetVersionString(nameString, B_APP_VERSION_KIND) == B_OK) DrawString(nameString.String()); @@ -1889,10 +1907,10 @@ AttributeView::Draw(BRect) // Description MovePenTo(BPoint(fDivider - (StringWidth(B_TRANSLATE("Description:"))), lineBase)); - SetHighColor(kAttrTitleColor); + SetHighColor(labelColor); DrawString(B_TRANSLATE("Description:")); MovePenTo(BPoint(fDivider + kDrawMargin, lineBase)); - SetHighColor(kAttrValueColor); + SetHighColor(attributeColor); // Check for truncation if (StringWidth(fDescStr.String()) > (Bounds().Width() - (fDivider + kBorderMargin))) { @@ -1921,9 +1939,8 @@ AttributeView::BeginEditingTitle() if (fTitleEditView != NULL) return; - BFont font; - GetFont(&font); - font.SetSize(kTitleFontHeight); + BFont font(be_plain_font); + font.SetSize(font.Size() + 2); BRect textFrame(fTitleRect); textFrame.right = Bounds().Width() - 5; BRect textRect(textFrame); @@ -1993,9 +2010,8 @@ AttributeView::FinishEditingTitle(bool commit) entry.Rename(text); // Adjust the size of the text rect - BFont currentFont; - GetFont(¤tFont); - currentFont.SetSize(kTitleFontHeight); + BFont currentFont(be_plain_font); + currentFont.SetSize(currentFont.Size() + 2); fTitleRect.right = min_c(fTitleRect.left + currentFont.StringWidth(fTitleEditView->Text()), Bounds().Width() - 5); @@ -2057,13 +2073,10 @@ AttributeView::WindowActivated(bool active) float -AttributeView::CurrentFontHeight(float size) +AttributeView::CurrentFontHeight() { BFont font; GetFont(&font); - if (size > -1) - font.SetSize(size); - font_height fontHeight; font.GetHeight(&fontHeight); @@ -2233,7 +2246,7 @@ AttributeView::SetSizeString(const char* sizeString) fSizeString = sizeString; BRect bounds(Bounds()); - float lineHeight = CurrentFontHeight(kAttribFontHeight) + 6; + float lineHeight = CurrentFontHeight() + 6; bounds.Set(fDivider, fIconRect.bottom, bounds.right, fIconRect.bottom + lineHeight); Invalidate(bounds); @@ -2249,7 +2262,7 @@ TrackingView::TrackingView(BRect frame, const char* str, BMessage* message) fMouseDown(false), fMouseInView(false) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); SetEventMask(B_POINTER_EVENTS, 0); } @@ -2272,7 +2285,7 @@ TrackingView::MouseMoved(BPoint, uint32 transit, const BMessage*) InvertRect(Bounds()); fMouseInView = (transit == B_ENTERED_VIEW || transit == B_INSIDE_VIEW); - + DelayedInvalidate(16666, Bounds()); if (!fMouseInView && !fMouseDown) Window()->Close(); } @@ -2295,9 +2308,10 @@ void TrackingView::Draw(BRect) { if (Message() != NULL) - SetHighColor(kLinkColor); + SetHighUIColor(fMouseInView ? B_LINK_HOVER_COLOR + : B_LINK_TEXT_COLOR); else - SetHighColor(kAttrValueColor); + SetHighUIColor(B_PANEL_TEXT_COLOR); SetLowColor(ViewColor()); font_height fontHeight; diff --git a/src/kits/tracker/MiniMenuField.cpp b/src/kits/tracker/MiniMenuField.cpp index 3de73fd980..b586d46e6d 100644 --- a/src/kits/tracker/MiniMenuField.cpp +++ b/src/kits/tracker/MiniMenuField.cpp @@ -61,11 +61,7 @@ MiniMenuField::~MiniMenuField() void MiniMenuField::AttachedToWindow() { - if (Parent() != NULL) { - SetViewColor(Parent()->ViewColor()); - SetLowColor(Parent()->ViewColor()); - } - + AdoptParentColors(); SetHighColor(0, 0, 0); } diff --git a/src/kits/tracker/PoseView.cpp b/src/kits/tracker/PoseView.cpp index ffd9a1bf1b..30d110e025 100644 --- a/src/kits/tracker/PoseView.cpp +++ b/src/kits/tracker/PoseView.cpp @@ -954,6 +954,10 @@ BPoseView::AttachedToWindow() fIsDesktopWindow = dynamic_cast(Window()) != NULL; if (fIsDesktopWindow) AddFilter(new TPoseViewFilter(this)); + else { + SetViewUIColor(B_DOCUMENT_BACKGROUND_COLOR); + SetLowUIColor(ViewUIColor()); + } AddFilter(new ShortcutFilter(B_RETURN, B_OPTION_KEY, kOpenSelection, this)); @@ -9051,7 +9055,9 @@ BPoseView::DrawAfterChildren(BRect updateRect) { if (fTransparentSelection && fSelectionRectInfo.rect.IsValid()) { SetDrawingMode(B_OP_ALPHA); - SetHighColor(255, 255, 255, 128); + rgb_color color = ui_color(B_NAVIGATION_BASE_COLOR); + color.alpha = 128; + SetHighColor(color); if (fSelectionRectInfo.rect.Width() == 0 || fSelectionRectInfo.rect.Height() == 0) { StrokeLine(fSelectionRectInfo.rect.LeftTop(), @@ -9061,7 +9067,9 @@ BPoseView::DrawAfterChildren(BRect updateRect) BRect interior = fSelectionRectInfo.rect; interior.InsetBy(1, 1); if (interior.IsValid()) { - SetHighColor(80, 80, 80, 90); + color = ui_color(B_CONTROL_HIGHLIGHT_COLOR); + color.alpha = 90; + SetHighColor(color); FillRect(interior); } } diff --git a/src/kits/tracker/QueryPoseView.cpp b/src/kits/tracker/QueryPoseView.cpp index f621bb002e..2953bcdece 100644 --- a/src/kits/tracker/QueryPoseView.cpp +++ b/src/kits/tracker/QueryPoseView.cpp @@ -143,8 +143,7 @@ void BQueryPoseView::AttachedToWindow() { _inherited::AttachedToWindow(); - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); - SetLowColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_DOCUMENT_BACKGROUND_COLOR, B_DARKEN_1_TINT); } diff --git a/src/kits/tracker/SelectionWindow.cpp b/src/kits/tracker/SelectionWindow.cpp index 4eaaa41b4d..8d3a9874d4 100644 --- a/src/kits/tracker/SelectionWindow.cpp +++ b/src/kits/tracker/SelectionWindow.cpp @@ -76,7 +76,7 @@ SelectionWindow::SelectionWindow(BContainerWindow* window) BView* backgroundView = new BView(Bounds(), "bgView", B_FOLLOW_ALL, B_WILL_DRAW); - backgroundView->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + backgroundView->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); AddChild(backgroundView); BMenu* menu = new BPopUpMenu(""); diff --git a/src/kits/tracker/StatusWindow.cpp b/src/kits/tracker/StatusWindow.cpp index 6388b7cf2a..3fdf4f5157 100644 --- a/src/kits/tracker/StatusWindow.cpp +++ b/src/kits/tracker/StatusWindow.cpp @@ -176,7 +176,7 @@ public: : BView(frame, "BackView", B_FOLLOW_ALL, B_WILL_DRAW | B_PULSE_NEEDED) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); } virtual void Pulse() @@ -444,8 +444,8 @@ BStatusView::BStatusView(BRect bounds, thread_id thread, StatusWindowState type) { Init(); - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); - SetLowColor(ViewColor()); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); + SetLowUIColor(ViewUIColor()); SetHighColor(20, 20, 20); SetDrawingMode(B_OP_ALPHA); diff --git a/src/kits/tracker/TextWidget.cpp b/src/kits/tracker/TextWidget.cpp index 58dc1acb6a..676239519f 100644 --- a/src/kits/tracker/TextWidget.cpp +++ b/src/kits/tracker/TextWidget.cpp @@ -538,11 +538,11 @@ BTextWidget::Draw(BRect eraseRect, BRect textRect, float, BPoseView* view, rgb_color highColor; if (view->IsDesktopWindow()) { if (selected) - highColor = kWhite; + highColor = ui_color(B_DOCUMENT_BACKGROUND_COLOR); else highColor = view->DeskTextColor(); } else if (selected && view->Window()->IsActive()) { - highColor = kWhite; + highColor = ui_color(B_DOCUMENT_BACKGROUND_COLOR); } else highColor = kBlack; @@ -575,10 +575,10 @@ BTextWidget::Draw(BRect eraseRect, BRect textRect, float, BPoseView* view, BFont font; drawView->GetFont(&font); - rgb_color textColor = drawView->HighColor(); - if (textColor.red + textColor.green + textColor.blue < 128 * 3) { + rgb_color textColor = ui_color(B_PANEL_TEXT_COLOR); + if (textColor.Brightness() < 100) { // dark text on light outline - rgb_color glowColor = kWhite; + rgb_color glowColor = ui_color(B_SHINE_COLOR); font.SetFalseBoldWidth(2.0); drawView->SetFont(&font, B_FONT_FALSE_BOLD_WIDTH); diff --git a/src/kits/tracker/TitleView.cpp b/src/kits/tracker/TitleView.cpp index 7399089e08..9314bcab63 100644 --- a/src/kits/tracker/TitleView.cpp +++ b/src/kits/tracker/TitleView.cpp @@ -57,21 +57,14 @@ All rights reserved. #define APP_SERVER_CLEARS_BACKGROUND 1 -static rgb_color sTitleBackground; -static rgb_color sDarkTitleBackground; -static rgb_color sShineColor; -static rgb_color sLightShadowColor; -static rgb_color sShadowColor; -static rgb_color sDarkShadowColor; - - static void _DrawLine(BPoseView* view, BPoint from, BPoint to) { - rgb_color highColor = view->HighColor(); - view->SetHighColor(tint_color(view->LowColor(), B_DARKEN_1_TINT)); + float tint = B_NO_TINT; + color_which highColor = view->HighUIColor(&tint); + view->SetHighUIColor(view->LowUIColor(), B_DARKEN_1_TINT); view->StrokeLine(from, to); - view->SetHighColor(highColor); + view->SetHighUIColor(highColor, tint); } @@ -87,10 +80,11 @@ _DrawOutline(BView* view, BRect where) { where.right++; where.bottom--; - rgb_color highColor = view->HighColor(); - view->SetHighColor(ui_color(B_CONTROL_HIGHLIGHT_COLOR)); + float tint = B_NO_TINT; + color_which highColor = view->HighUIColor(&tint); + view->SetHighUIColor(B_CONTROL_HIGHLIGHT_COLOR); view->StrokeRect(where); - view->SetHighColor(highColor); + view->SetHighUIColor(highColor, tint); } @@ -107,18 +101,10 @@ BTitleView::BTitleView(BPoseView* view) fPreviousLeftClickTime(0), fTrackingState(NULL) { - sTitleBackground = tint_color(ui_color(B_PANEL_BACKGROUND_COLOR), 0.88f); - // 216 -> 220 - sDarkTitleBackground = tint_color(sTitleBackground, B_DARKEN_1_TINT); - sShineColor = tint_color(sTitleBackground, B_LIGHTEN_MAX_TINT); - sLightShadowColor = tint_color(sTitleBackground, B_DARKEN_2_TINT); - sShadowColor = tint_color(sTitleBackground, B_DARKEN_4_TINT); - sDarkShadowColor = tint_color(sShadowColor, B_DARKEN_2_TINT); - - SetHighColor(sTitleBackground); - SetLowColor(sTitleBackground); + SetHighUIColor(B_PANEL_BACKGROUND_COLOR, 0.88f); + SetLowUIColor(B_PANEL_BACKGROUND_COLOR, 0.88f); #if APP_SERVER_CLEARS_BACKGROUND - SetViewColor(sTitleBackground); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR, 0.88f); #else SetViewColor(B_TRANSPARENT_COLOR); #endif @@ -239,12 +225,11 @@ BTitleView::Draw(BRect /*updateRect*/, bool useOffscreen, bool updateOnly, } else view = this; - rgb_color base = ui_color(B_PANEL_BACKGROUND_COLOR); - view->SetHighColor(tint_color(base, B_DARKEN_2_TINT)); + view->SetHighUIColor(B_PANEL_BACKGROUND_COLOR, B_DARKEN_2_TINT); view->StrokeLine(bounds.LeftBottom(), bounds.RightBottom()); bounds.bottom--; - be_control_look->DrawButtonBackground(view, bounds, bounds, base, 0, + be_control_look->DrawButtonBackground(view, bounds, bounds, HighColor(), 0, BControlLook::B_TOP_BORDER | BControlLook::B_BOTTOM_BORDER); int32 count = fTitleList.CountItems(); @@ -262,7 +247,7 @@ BTitleView::Draw(BRect /*updateRect*/, bool useOffscreen, bool updateOnly, bounds = Bounds(); minx--; - view->SetHighColor(sLightShadowColor); + view->SetHighUIColor(B_PANEL_BACKGROUND_COLOR, B_DARKEN_1_TINT); view->StrokeLine(BPoint(minx, bounds.top), BPoint(minx, bounds.bottom - 1)); @@ -518,8 +503,8 @@ BColumnTitle::Draw(BView* view, bool pressed) break; } - view->SetLowColor(pressed ? sDarkTitleBackground : sTitleBackground); - view->SetHighColor(tint_color(ui_color(B_PANEL_BACKGROUND_COLOR), 1.75)); + view->SetHighUIColor(B_PANEL_TEXT_COLOR, 0.8f); + view->SetLowUIColor(B_PANEL_BACKGROUND_COLOR, pressed ? 1.1 : 1.0); view->DrawString(titleString.String(), loc); // show sort columns @@ -544,19 +529,17 @@ BColumnTitle::Draw(BView* view, bool pressed) view->SetFlags(flags | B_SUBPIXEL_PRECISE); if (secondary) { - view->SetHighColor(tint_color(ui_color(B_PANEL_BACKGROUND_COLOR), - 1.3)); + view->SetHighUIColor(B_PANEL_BACKGROUND_COLOR, 1.3); view->FillTriangle(triangle[0], triangle[1], triangle[2]); } else { - view->SetHighColor(tint_color(ui_color(B_PANEL_BACKGROUND_COLOR), - 1.6)); + view->SetHighUIColor(B_PANEL_BACKGROUND_COLOR, 1.6); view->FillTriangle(triangle[0], triangle[1], triangle[2]); } view->SetFlags(flags); } - view->SetHighColor(sLightShadowColor); + view->SetHighUIColor(B_PANEL_BACKGROUND_COLOR, B_DARKEN_1_TINT); view->StrokeLine(bounds.RightTop(), bounds.RightBottom()); } diff --git a/src/kits/tracker/TrackerSettingsWindow.cpp b/src/kits/tracker/TrackerSettingsWindow.cpp index 3b085a0f72..eb72193fc8 100644 --- a/src/kits/tracker/TrackerSettingsWindow.cpp +++ b/src/kits/tracker/TrackerSettingsWindow.cpp @@ -297,7 +297,8 @@ TrackerSettingsWindow::_HandleChangedSettingsView() fSettingsContainerBox->SetLabel(selectedItem->Text()); BView* view = selectedItem->View(); - view->SetViewColor(fSettingsContainerBox->ViewColor()); + float tint = B_NO_TINT; + view->SetViewUIColor(fSettingsContainerBox->ViewUIColor(&tint), tint); view->Hide(); fSettingsContainerBox->AddChild(view); diff --git a/src/kits/tracker/Utilities.cpp b/src/kits/tracker/Utilities.cpp index d161e471a7..2a9a322298 100644 --- a/src/kits/tracker/Utilities.cpp +++ b/src/kits/tracker/Utilities.cpp @@ -600,11 +600,7 @@ DraggableIcon::PreferredRect(BPoint offset, icon_size which) void DraggableIcon::AttachedToWindow() { - BView* parent = Parent(); - if (parent != NULL) { - SetViewColor(parent->ViewColor()); - SetLowColor(parent->LowColor()); - } + AdoptParentColors(); } @@ -1275,8 +1271,8 @@ SeparatorLine::SeparatorLine(BPoint where, float length, bool vertical, BView(LineBounds(where, length, vertical), name, B_FOLLOW_LEFT | B_FOLLOW_TOP, B_WILL_DRAW) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); - SetLowColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); + SetLowUIColor(B_PANEL_BACKGROUND_COLOR); } diff --git a/src/kits/tracker/VirtualDirectoryPoseView.cpp b/src/kits/tracker/VirtualDirectoryPoseView.cpp index a44921d94d..a666626ef1 100644 --- a/src/kits/tracker/VirtualDirectoryPoseView.cpp +++ b/src/kits/tracker/VirtualDirectoryPoseView.cpp @@ -79,8 +79,8 @@ void VirtualDirectoryPoseView::AttachedToWindow() { _inherited::AttachedToWindow(); - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); - SetLowColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_DOCUMENT_BACKGROUND_COLOR, B_DARKEN_1_TINT); + SetLowUIColor(B_DOCUMENT_BACKGROUND_COLOR, B_DARKEN_1_TINT); } From f56d45ced4856b2f8943d7e5c1b1de6a78be9f38 Mon Sep 17 00:00:00 2001 From: looncraz Date: Thu, 10 Dec 2015 12:54:05 -0600 Subject: [PATCH 062/242] BToolBar: Convert to using Set*UIColor. This was a bigger change than many others as BButton now defaults to using control background colors, and we can not do that here without the buttons not appearing as we desire (blending in with the toolbar). Using the control background color for the toolbar would be unacceptable. Signed-off-by: Augustin Cavalier Patch 0041 from looncraz, unmodified. --- src/kits/shared/ToolBar.cpp | 45 ++++++++++++++++++++++++++++++++----- 1 file changed, 39 insertions(+), 6 deletions(-) diff --git a/src/kits/shared/ToolBar.cpp b/src/kits/shared/ToolBar.cpp index e29fe50005..7d01485dd3 100644 --- a/src/kits/shared/ToolBar.cpp +++ b/src/kits/shared/ToolBar.cpp @@ -14,7 +14,38 @@ namespace BPrivate { -class LockableButton: public BButton { + +// Button to adopt backgrond color of toolbar +class ToolBarButton : public BButton { +public: + ToolBarButton(const char* name, const char* label, + BMessage* message); + + void AttachedToWindow(); +}; + + +ToolBarButton::ToolBarButton(const char* name, const char* label, + BMessage* message) + : + BButton(name, label, message) + {} + + +void +ToolBarButton::AttachedToWindow() +{ + BButton::AttachedToWindow(); + SetLowUIColor(B_PANEL_BACKGROUND_COLOR); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); + // have to remove the darkening caused by BButton's drawing +} + + +//# pragma mark - + + +class LockableButton: public ToolBarButton { public: LockableButton(const char* name, const char* label, BMessage* message); @@ -26,7 +57,7 @@ public: LockableButton::LockableButton(const char* name, const char* label, BMessage* message) : - BButton(name, label, message) + ToolBarButton(name, label, message) { } @@ -40,10 +71,13 @@ LockableButton::MouseDown(BPoint point) SetBehavior(B_BUTTON_BEHAVIOR); Message()->SetInt32("behavior", Behavior()); - BButton::MouseDown(point); + ToolBarButton::MouseDown(point); } +//#pragma mark - + + BToolBar::BToolBar(BRect frame, orientation ont) : BGroupView(ont), @@ -94,11 +128,11 @@ BToolBar::AddAction(BMessage* message, BHandler* target, const BBitmap* icon, const char* toolTipText, const char* text, bool lockable) { - BButton* button; + ToolBarButton* button; if (lockable) button = new LockableButton(NULL, NULL, message); else - button = new BButton(NULL, NULL, message); + button = new ToolBarButton(NULL, NULL, message); button->SetIcon(icon); button->SetFlat(true); if (toolTipText != NULL) @@ -186,7 +220,6 @@ BToolBar::FindButton(uint32 command) const // #pragma mark - Private methods - void BToolBar::Pulse() { From f696e88a2ccab23dedcbf03dc8e7560f1770338b Mon Sep 17 00:00:00 2001 From: looncraz Date: Thu, 10 Dec 2015 12:54:10 -0600 Subject: [PATCH 063/242] Convert various more things to using Set*UIColor. Signed-off-by: Augustin Cavalier Patches 0038, 0040, 0042-0044 from looncraz, unmodified. --- src/bin/WindowShade.cpp | 4 ++ src/bin/network/ppp_up/ConnectionView.cpp | 2 +- src/bin/network/ppp_up/PPPStatusView.cpp | 2 +- src/bin/screen_blanker/PasswordWindow.cpp | 2 +- src/kits/bluetooth/UI/ConnectionIncoming.cpp | 41 ++++++++------------ src/kits/mail/FileConfigView.cpp | 2 +- src/kits/mail/ProtocolConfigView.cpp | 2 +- src/kits/shared/CalendarView.cpp | 2 +- src/kits/shared/IconButton.cpp | 13 ++----- src/kits/shared/IconView.cpp | 2 +- src/libs/alm/ALMLayoutBuilder.cpp | 4 +- src/libs/print/libprint/AboutBox.cpp | 2 +- src/libs/print/libprint/HalftoneView.cpp | 2 +- src/libs/print/libprint/JobSetupDlg.cpp | 2 +- src/libs/print/libprint/PageSetupDlg.cpp | 2 +- src/libs/print/libprint/Preview.cpp | 2 +- 16 files changed, 38 insertions(+), 48 deletions(-) diff --git a/src/bin/WindowShade.cpp b/src/bin/WindowShade.cpp index 1d2beface0..df98488132 100644 --- a/src/bin/WindowShade.cpp +++ b/src/bin/WindowShade.cpp @@ -48,6 +48,10 @@ static struct option const kLongOptions[] = { I(navigation_pulse_color, B_NAVIGATION_PULSE_COLOR), I(shine_color, B_SHINE_COLOR), I(shadow_color, B_SHADOW_COLOR), + I(link_text_color, B_LINK_TEXT_COLOR), + I(link_hover_color, B_LINK_HOVER_COLOR), + I(link_visited_color, B_LINK_VISITED_COLOR), + I(link_active_color, B_LINK_ACTIVE_COLOR), I(menu_background_color, B_MENU_BACKGROUND_COLOR), I(menu_selected_background_color, B_MENU_SELECTED_BACKGROUND_COLOR), I(menu_item_text_color, B_MENU_ITEM_TEXT_COLOR), diff --git a/src/bin/network/ppp_up/ConnectionView.cpp b/src/bin/network/ppp_up/ConnectionView.cpp index edf0747923..14291bf4a5 100644 --- a/src/bin/network/ppp_up/ConnectionView.cpp +++ b/src/bin/network/ppp_up/ConnectionView.cpp @@ -57,7 +57,7 @@ ConnectionView::ConnectionView(BRect rect, const BString& interfaceName) fInterfaceName(interfaceName), fKeepLabel(false) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); rect = Bounds(); rect.InsetBy(5, 5); diff --git a/src/bin/network/ppp_up/PPPStatusView.cpp b/src/bin/network/ppp_up/PPPStatusView.cpp index 965af9222f..658d35340d 100644 --- a/src/bin/network/ppp_up/PPPStatusView.cpp +++ b/src/bin/network/ppp_up/PPPStatusView.cpp @@ -34,7 +34,7 @@ PPPStatusView::PPPStatusView(BRect rect, ppp_interface_id id) : BView(rect, "PPPStatusView", B_FOLLOW_NONE, B_PULSE_NEEDED), fInterface(id) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); rect = Bounds(); rect.InsetBy(5, 5); diff --git a/src/bin/screen_blanker/PasswordWindow.cpp b/src/bin/screen_blanker/PasswordWindow.cpp index 156a9f758e..b69cb39b1b 100644 --- a/src/bin/screen_blanker/PasswordWindow.cpp +++ b/src/bin/screen_blanker/PasswordWindow.cpp @@ -33,7 +33,7 @@ PasswordWindow::PasswordWindow() | B_NOT_RESIZABLE | B_ASYNCHRONOUS_CONTROLS, B_ALL_WORKSPACES) { BView* topView = new BView(Bounds(), "topView", B_FOLLOW_ALL, B_WILL_DRAW); - topView->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + topView->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); AddChild(topView); BRect bounds(Bounds()); diff --git a/src/kits/bluetooth/UI/ConnectionIncoming.cpp b/src/kits/bluetooth/UI/ConnectionIncoming.cpp index 1aced3a228..c955726edf 100644 --- a/src/kits/bluetooth/UI/ConnectionIncoming.cpp +++ b/src/kits/bluetooth/UI/ConnectionIncoming.cpp @@ -7,39 +7,34 @@ #include + #define B_PULSES_BY_SECOND(x) (2*x) + namespace Bluetooth { -ConnectionView::ConnectionView(BRect frame, const char *name): BView(BRect(0, 0, 400, 400), "MyViewName", - B_FOLLOW_LEFT | B_FOLLOW_TOP, - B_WILL_DRAW | B_PULSE_NEEDED) + +ConnectionView::ConnectionView(BRect frame, const char *name) + : + BView(BRect(0, 0, 400, 400), "MyViewName", B_FOLLOW_LEFT | B_FOLLOW_TOP, + B_WILL_DRAW | B_PULSE_NEEDED) { - - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); - + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); } + ConnectionView::~ConnectionView() { - } void ConnectionView::MessageReceived(BMessage *message) { - switch(message->what) - { - default: - - break; - } } void ConnectionView::Draw(BRect update) { - } @@ -55,12 +50,14 @@ void ConnectionView::Pulse() } +//#pragma mark - + -//--------------------------------------------------------------- ConnectionIncoming::ConnectionIncoming(RemoteDevice* rDevice) - : BWindow(BRect(700, 100, 900, 150), "Connection completed", - B_FLOATING_WINDOW_LOOK, B_NORMAL_WINDOW_FEEL, - B_NOT_ZOOMABLE | B_NOT_RESIZABLE) + : + BWindow(BRect(700, 100, 900, 150), "Connection completed", + B_FLOATING_WINDOW_LOOK, B_NORMAL_WINDOW_FEEL, + B_NOT_ZOOMABLE | B_NOT_RESIZABLE) { _ConnectionView = new ConnectionView(BRect(0, 0, 400, 400),"mViewName"); @@ -70,18 +67,11 @@ ConnectionIncoming::ConnectionIncoming(RemoteDevice* rDevice) ConnectionIncoming::~ConnectionIncoming() { - } void ConnectionIncoming::MessageReceived(BMessage *message) { - switch(message->what) - { - default: - - break; - } } @@ -90,4 +80,5 @@ bool ConnectionIncoming::QuitRequested() return BWindow::QuitRequested(); } + } diff --git a/src/kits/mail/FileConfigView.cpp b/src/kits/mail/FileConfigView.cpp index 432a889cb7..f43801be6c 100644 --- a/src/kits/mail/FileConfigView.cpp +++ b/src/kits/mail/FileConfigView.cpp @@ -38,7 +38,7 @@ FileControl::FileControl(const char* name, const char* label, : BView(name, 0) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); SetLayout(new BGroupLayout(B_HORIZONTAL)); fText = new BTextControl("file_path", label, pathOfFile, NULL); diff --git a/src/kits/mail/ProtocolConfigView.cpp b/src/kits/mail/ProtocolConfigView.cpp index 6b0d0fc182..c8a7f7eac0 100644 --- a/src/kits/mail/ProtocolConfigView.cpp +++ b/src/kits/mail/ProtocolConfigView.cpp @@ -125,7 +125,7 @@ MailProtocolConfigView::MailProtocolConfigView(uint32 optionsMask) fRemoveFromServerCheckBox(NULL), fBodyDownloadConfig(NULL) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); BGridLayout* layout = new BGridLayout(0.f); SetLayout(layout); diff --git a/src/kits/shared/CalendarView.cpp b/src/kits/shared/CalendarView.cpp index c3d09d8460..58c7fe2c65 100644 --- a/src/kits/shared/CalendarView.cpp +++ b/src/kits/shared/CalendarView.cpp @@ -158,7 +158,7 @@ BCalendarView::AttachedToWindow() if (!Messenger().IsValid()) SetTarget(Window(), NULL); - SetViewColor(ui_color(B_LIST_BACKGROUND_COLOR)); + SetViewUIColor(B_LIST_BACKGROUND_COLOR); } diff --git a/src/kits/shared/IconButton.cpp b/src/kits/shared/IconButton.cpp index 2bf8ea58b5..0000f1d757 100644 --- a/src/kits/shared/IconButton.cpp +++ b/src/kits/shared/IconButton.cpp @@ -79,15 +79,10 @@ BIconButton::MessageReceived(BMessage* message) void BIconButton::AttachedToWindow() { - rgb_color background = B_TRANSPARENT_COLOR; - if (BView* parent = Parent()) { - background = parent->ViewColor(); - if (background == B_TRANSPARENT_COLOR) - background = parent->LowColor(); - } - if (background == B_TRANSPARENT_COLOR) - background = ui_color(B_PANEL_BACKGROUND_COLOR); - SetLowColor(background); + AdoptParentColors(); + + if (ViewUIColor() != B_NO_COLOR) + SetLowUIColor(ViewUIColor()); SetTarget(fTargetCache); if (!Target()) diff --git a/src/kits/shared/IconView.cpp b/src/kits/shared/IconView.cpp index 923f7b1fc2..5fdb0edf11 100644 --- a/src/kits/shared/IconView.cpp +++ b/src/kits/shared/IconView.cpp @@ -23,7 +23,7 @@ IconView::IconView(icon_size iconSize) fIconBitmap(new BBitmap(BRect(iconSize), B_RGBA32)), fDrawIcon(false) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); } diff --git a/src/libs/alm/ALMLayoutBuilder.cpp b/src/libs/alm/ALMLayoutBuilder.cpp index 79cad6235c..9906ef5b39 100644 --- a/src/libs/alm/ALMLayoutBuilder.cpp +++ b/src/libs/alm/ALMLayoutBuilder.cpp @@ -36,7 +36,7 @@ BALMLayoutBuilder::BALMLayoutBuilder(BWindow* window, float hSpacing, fLayout = new BALMLayout(hSpacing, vSpacing, friendLayout); window->SetLayout(fLayout); - fLayout->Owner()->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + fLayout->Owner()->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); // TODO: we get a white background if we don't do this } @@ -46,7 +46,7 @@ BALMLayoutBuilder::BALMLayoutBuilder(BWindow* window, BALMLayout* layout) fLayout = layout; window->SetLayout(fLayout); - fLayout->Owner()->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + fLayout->Owner()->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); // TODO: we get a white background if we don't do this } diff --git a/src/libs/print/libprint/AboutBox.cpp b/src/libs/print/libprint/AboutBox.cpp index 928b8e4d45..8c5f895029 100644 --- a/src/libs/print/libprint/AboutBox.cpp +++ b/src/libs/print/libprint/AboutBox.cpp @@ -39,7 +39,7 @@ AboutBoxView::AboutBoxView(BRect rect, const char *driver_name, const char *vers fDriverName = driver_name; fVersion = version; fCopyright = copyright; - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); SetDrawingMode(B_OP_SELECT); } diff --git a/src/libs/print/libprint/HalftoneView.cpp b/src/libs/print/libprint/HalftoneView.cpp index 638f327e43..946bb09dd8 100644 --- a/src/libs/print/libprint/HalftoneView.cpp +++ b/src/libs/print/libprint/HalftoneView.cpp @@ -131,7 +131,7 @@ HalftoneView::HalftoneView(BRect frame, const char* name, uint32 resizeMask, : BView(frame, name, resizeMask, flags) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); BRect r(frame); float size, max; diff --git a/src/libs/print/libprint/JobSetupDlg.cpp b/src/libs/print/libprint/JobSetupDlg.cpp index 93d101285c..9aa4a34301 100644 --- a/src/libs/print/libprint/JobSetupDlg.cpp +++ b/src/libs/print/libprint/JobSetupDlg.cpp @@ -160,7 +160,7 @@ JobSetupView::JobSetupView(JobData* jobData, PrinterData* printerData, fOddNumberedPages(NULL), fEvenNumberedPages(NULL) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); } diff --git a/src/libs/print/libprint/PageSetupDlg.cpp b/src/libs/print/libprint/PageSetupDlg.cpp index a23f6599ac..b3fb08ae12 100644 --- a/src/libs/print/libprint/PageSetupDlg.cpp +++ b/src/libs/print/libprint/PageSetupDlg.cpp @@ -61,7 +61,7 @@ PageSetupView::PageSetupView(JobData *job_data, PrinterData *printer_data, , fPrinterData(printer_data) , fPrinterCap(printer_cap) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); } PageSetupView::~PageSetupView() diff --git a/src/libs/print/libprint/Preview.cpp b/src/libs/print/libprint/Preview.cpp index db4d9d55d7..5c7bcade02 100644 --- a/src/libs/print/libprint/Preview.cpp +++ b/src/libs/print/libprint/Preview.cpp @@ -882,7 +882,7 @@ PreviewWindow::PreviewWindow(BFile* jobFile, bool showOkAndCancelButtons) fPreview = new PreviewView(jobFile, bounds); fPreviewScroller = new BScrollView("PreviewScroller", fPreview, B_FOLLOW_ALL, B_FRAME_EVENTS, true, true, B_FANCY_BORDER); - fPreviewScroller->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + fPreviewScroller->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); panel->AddChild(fPreviewScroller); if (fPreview->InitCheck() == B_OK) { From fa19dd4470177c1c769d49a660ea9e20f4ad6561 Mon Sep 17 00:00:00 2001 From: looncraz Date: Thu, 10 Dec 2015 18:00:01 -0600 Subject: [PATCH 064/242] apps: Convert to using Set*UIColor. Signed-off-by: Augustin Cavalier Patches 0045-0075, 0077-0087 from looncraz, unmodified. --- .../devices/keyboard/TeamMonitorWindow.cpp | 6 +- .../match_header/ConfigView.cpp | 2 +- .../notifier/NotifierConfigView.cpp | 2 +- .../spam_filter/SpamFilterConfig.cpp | 2 +- .../outbound_filters/fortune/ConfigView.cpp | 2 +- .../drivers/pdf/source/DocInfoWindow.cpp | 4 +- .../print/drivers/pdf/source/FontsWindow.cpp | 4 +- .../transports/hp_jetdirect/SetupWindow.cpp | 2 +- .../print/transports/ipp/IppSetupDlg.cpp | 2 +- .../print/transports/lpr/LprSetupDlg.cpp | 2 +- .../screen_savers/glife/GLifeConfig.cpp | 2 +- .../screen_savers/gravity/ConfigView.cpp | 2 +- src/add-ons/screen_savers/nebula/Nebula.cpp | 2 +- .../slideshowsaver/SlideShowConfigView.cpp | 2 +- .../screen_savers/spider/SpiderSaver.cpp | 2 +- src/apps/aboutsystem/AboutSystem.cpp | 74 +++++++++++++--- src/apps/aboutsystem/Jamfile | 2 +- src/apps/activitymonitor/ActivityView.cpp | 9 +- src/apps/activitymonitor/ActivityWindow.cpp | 3 +- src/apps/activitymonitor/SettingsWindow.cpp | 1 + src/apps/bootmanager/BootManagerWindow.cpp | 8 +- src/apps/bootmanager/WizardPageView.cpp | 20 +++-- src/apps/charactermap/CharacterView.cpp | 16 +++- .../gui/inspector_window/InspectorWindow.cpp | 6 +- .../gui/inspector_window/MemoryView.cpp | 4 +- .../ExpressionPromptWindow.cpp | 2 +- .../gui/utility_windows/WatchPromptWindow.cpp | 2 +- src/apps/deskcalc/CalcView.cpp | 17 ++-- src/apps/devices/PropertyListPlain.cpp | 28 +++++- src/apps/devices/PropertyListPlain.h | 3 + src/apps/devices/ResourceUsageWindow.cpp | 2 +- src/apps/diskprobe/FindWindow.cpp | 2 +- src/apps/diskprobe/ProbeView.cpp | 6 +- src/apps/diskprobe/TypeEditors.cpp | 16 ++-- src/apps/drivesetup/DiskView.cpp | 13 ++- src/apps/expander/PasswordAlert.cpp | 4 +- src/apps/firstbootprompt/BootPromptWindow.cpp | 14 ++- src/apps/fontdemo/ControlView.cpp | 2 +- .../haikudepot/textview/CharacterStyle.cpp | 76 ++++++++++++++++ src/apps/haikudepot/textview/CharacterStyle.h | 9 +- .../textview/CharacterStyleData.cpp | 87 ++++++++++++++++++- .../haikudepot/textview/CharacterStyleData.h | 20 ++++- .../haikudepot/textview/ParagraphLayout.cpp | 8 +- .../haikudepot/textview/TextDocumentView.cpp | 4 +- src/apps/haikudepot/textview/TextView.cpp | 7 +- .../haikudepot/ui/FeaturedPackagesView.cpp | 61 +++++++++---- src/apps/haikudepot/ui/PackageInfoView.cpp | 86 ++++++++++-------- src/apps/haikudepot/ui/PackageListView.cpp | 7 +- src/apps/haikudepot/ui_generic/BitmapView.cpp | 12 +-- src/apps/haikudepot/ui_generic/BitmapView.h | 2 +- src/apps/haikudepot/ui_generic/LinkView.cpp | 51 +++++++---- src/apps/haikudepot/ui_generic/LinkView.h | 7 +- .../ui_generic/LinkedBitmapView.cpp | 7 ++ .../haikudepot/ui_generic/LinkedBitmapView.h | 2 + src/apps/haikudepot/ui_generic/RatingView.cpp | 8 +- src/apps/icon-o-matic/MainWindow.cpp | 8 +- src/apps/icon-o-matic/generic/gui/Group.cpp | 2 +- .../panel/color_picker/ColorPickerView.cpp | 2 +- src/apps/icon-o-matic/gui/StyleView.cpp | 2 +- src/apps/icon-o-matic/gui/SwatchGroup.cpp | 2 +- src/apps/installedpackages/UninstallView.cpp | 4 +- src/apps/installer/InstallerWindow.cpp | 1 + src/apps/login/LoginApp.cpp | 3 +- src/apps/login/LoginView.cpp | 25 +++++- src/apps/magnify/Magnify.cpp | 4 +- src/apps/mail/AddressTextControl.cpp | 4 +- src/apps/mail/Content.cpp | 2 +- src/apps/mail/Enclosures.cpp | 2 +- src/apps/mail/FindWindow.cpp | 2 +- src/apps/mail/Status.cpp | 2 +- src/apps/mediaplayer/InfoWin.cpp | 2 +- .../mediaplayer/interface/DurationView.cpp | 20 ++++- src/apps/mediaplayer/interface/DurationView.h | 2 + src/apps/networkstatus/NetworkStatusView.cpp | 9 +- .../networkstatus/NetworkStatusWindow.cpp | 2 +- src/apps/networkstatus/RadioView.cpp | 2 +- src/apps/overlayimage/Jamfile | 2 + src/apps/overlayimage/OverlayView.cpp | 14 ++- src/apps/overlayimage/OverlayWindow.cpp | 2 +- src/apps/packageinstaller/PackageView.cpp | 13 +-- src/apps/pairs/PairsView.cpp | 2 +- src/apps/patchbay/PatchRow.cpp | 2 +- src/apps/patchbay/PatchView.cpp | 3 +- src/apps/powerstatus/ExtendedInfoWindow.cpp | 4 +- src/apps/powerstatus/PowerStatusView.cpp | 21 +++-- src/apps/powerstatus/PowerStatusWindow.cpp | 2 +- src/apps/processcontroller/PCWindow.cpp | 2 +- src/apps/pulse/ConfigView.cpp | 8 +- src/apps/pulse/NormalPulseView.cpp | 5 +- src/apps/pulse/PrefsWindow.cpp | 2 +- src/apps/resedit/BitmapView.cpp | 2 +- src/apps/resedit/ImageEditor.cpp | 2 +- src/apps/resedit/Jamfile | 2 +- src/apps/resedit/MiscEditors.cpp | 2 +- src/apps/resedit/ResView.cpp | 2 +- src/apps/screenshot/ScreenshotWindow.cpp | 4 +- src/apps/showimage/ProgressWindow.cpp | 2 +- src/apps/showimage/ShowImageStatusView.cpp | 12 +-- src/apps/showimage/ShowImageWindow.cpp | 2 +- src/apps/soundrecorder/RecorderWindow.cpp | 2 +- src/apps/stylededit/StyledEditView.cpp | 4 +- src/apps/sudoku/ProgressWindow.cpp | 2 +- src/apps/switcher/GroupListView.cpp | 2 +- src/apps/terminal/TermView.cpp | 6 +- src/apps/webpositive/AuthenticationPanel.cpp | 2 +- src/apps/webpositive/DownloadProgressView.cpp | 12 ++- .../webpositive/support/FontSelectionView.cpp | 3 +- src/apps/webpositive/tabview/TabManager.cpp | 2 +- 108 files changed, 713 insertions(+), 282 deletions(-) diff --git a/src/add-ons/input_server/devices/keyboard/TeamMonitorWindow.cpp b/src/add-ons/input_server/devices/keyboard/TeamMonitorWindow.cpp index 9241779d44..4ae9a25a8b 100644 --- a/src/add-ons/input_server/devices/keyboard/TeamMonitorWindow.cpp +++ b/src/add-ons/input_server/devices/keyboard/TeamMonitorWindow.cpp @@ -171,7 +171,7 @@ TeamMonitorWindow::TeamMonitorWindow() layout->SetSpacing(inset); SetLayout(layout); - layout->View()->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + layout->View()->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); fListView = new BListView("teams"); fListView->SetSelectionMessage(new BMessage(TM_SELECTED_TEAM)); @@ -606,7 +606,7 @@ TeamDescriptionView::TeamDescriptionView() BAlignment(B_ALIGN_HORIZONTAL_UNSET, B_ALIGN_VERTICAL_CENTER)); BView* teamPropertiesView = new BView("team properties", B_WILL_DRAW); - teamPropertiesView->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + teamPropertiesView->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); BGroupLayout* layout = new BGroupLayout(B_HORIZONTAL); teamPropertiesView->SetLayout(layout); BGroupLayoutBuilder(layout) @@ -738,7 +738,7 @@ AllShowingTextView::AllShowingTextView(const char* name) { MakeEditable(false); MakeSelectable(false); - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); } diff --git a/src/add-ons/mail_daemon/inbound_filters/match_header/ConfigView.cpp b/src/add-ons/mail_daemon/inbound_filters/match_header/ConfigView.cpp index 7e4698b989..7f3172e442 100644 --- a/src/add-ons/mail_daemon/inbound_filters/match_header/ConfigView.cpp +++ b/src/add-ons/mail_daemon/inbound_filters/match_header/ConfigView.cpp @@ -65,7 +65,7 @@ RuleFilterConfig::RuleFilterConfig(const BMailAddOnSettings& addOnSettings) BMailSettingsView("rulefilter_config"), fActionMenu(NULL) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); MatchHeaderSettings settings(addOnSettings); fAction = settings.Action(); diff --git a/src/add-ons/mail_daemon/inbound_filters/notifier/NotifierConfigView.cpp b/src/add-ons/mail_daemon/inbound_filters/notifier/NotifierConfigView.cpp index 2cb46d8004..c4dfb24cf3 100644 --- a/src/add-ons/mail_daemon/inbound_filters/notifier/NotifierConfigView.cpp +++ b/src/add-ons/mail_daemon/inbound_filters/notifier/NotifierConfigView.cpp @@ -32,7 +32,7 @@ NotifierConfigView::NotifierConfigView() : BMailSettingsView("notifier_config") { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); BPopUpMenu *menu = new BPopUpMenu(B_EMPTY_STRING, false, false); diff --git a/src/add-ons/mail_daemon/inbound_filters/spam_filter/SpamFilterConfig.cpp b/src/add-ons/mail_daemon/inbound_filters/spam_filter/SpamFilterConfig.cpp index 1035c7521f..dc81c3e3a2 100644 --- a/src/add-ons/mail_daemon/inbound_filters/spam_filter/SpamFilterConfig.cpp +++ b/src/add-ons/mail_daemon/inbound_filters/spam_filter/SpamFilterConfig.cpp @@ -77,7 +77,7 @@ SpamFilterConfig::SpamFilterConfig(const BMessage* settings) if (settings->FindFloat("SpamCutoffRatio", &fSpamCutoffRatio) != B_OK) fSpamCutoffRatio = 0.99f; - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); fSubjectHintCheckBox = new BCheckBox("AddToSubject", B_TRANSLATE("Add spam rating to start of subject"), NULL); diff --git a/src/add-ons/mail_daemon/outbound_filters/fortune/ConfigView.cpp b/src/add-ons/mail_daemon/outbound_filters/fortune/ConfigView.cpp index dbabb4a404..141413c302 100644 --- a/src/add-ons/mail_daemon/outbound_filters/fortune/ConfigView.cpp +++ b/src/add-ons/mail_daemon/outbound_filters/fortune/ConfigView.cpp @@ -26,7 +26,7 @@ ConfigView::ConfigView() : BMailSettingsView("fortune_filter") { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); fFileView = new MailFileConfigView(B_TRANSLATE("Fortune file:"), "fortune_file", false, "", B_FILE_NODE); diff --git a/src/add-ons/print/drivers/pdf/source/DocInfoWindow.cpp b/src/add-ons/print/drivers/pdf/source/DocInfoWindow.cpp index e1dd5e0720..5f9c0e7ad0 100644 --- a/src/add-ons/print/drivers/pdf/source/DocInfoWindow.cpp +++ b/src/add-ons/print/drivers/pdf/source/DocInfoWindow.cpp @@ -56,7 +56,7 @@ DocInfoWindow::DocInfoWindow(BMessage *docInfo) { BRect bounds(Bounds()); BView *background = new BView(bounds, "bachground", B_FOLLOW_ALL, B_WILL_DRAW); - background->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + background->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); AddChild(background); bounds.InsetBy(10.0, 10.0); @@ -238,7 +238,7 @@ DocInfoWindow::_SetupDocInfoView(BBox* panel) bounds.right -= B_V_SCROLL_BAR_WIDTH; bounds.InsetBy(2.0, 2.0); fTable = new BView(bounds, "table", B_FOLLOW_ALL, B_WILL_DRAW); - fTable->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + fTable->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); fTableScrollView = new BScrollView("scroll_table", fTable, B_FOLLOW_ALL, 0, false, true); diff --git a/src/add-ons/print/drivers/pdf/source/FontsWindow.cpp b/src/add-ons/print/drivers/pdf/source/FontsWindow.cpp index 8c01762521..1e4c622487 100644 --- a/src/add-ons/print/drivers/pdf/source/FontsWindow.cpp +++ b/src/add-ons/print/drivers/pdf/source/FontsWindow.cpp @@ -124,7 +124,7 @@ FontsWindow::FontsWindow(Fonts *fonts) // add a *dialog* background BView* embeddingPanel = new BView("Embedding", B_WILL_DRAW | B_FRAME_EVENTS | B_NAVIGABLE_JUMP); - embeddingPanel->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + embeddingPanel->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); // add font list #if USE_CLV @@ -166,7 +166,7 @@ FontsWindow::FontsWindow(Fonts *fonts) // add a *dialog* background BView* cjkPanel = new BView("CJK", B_WILL_DRAW | B_FRAME_EVENTS | B_NAVIGABLE_JUMP); - cjkPanel->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + cjkPanel->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); BListView* list = new DragListView(BRect(), diff --git a/src/add-ons/print/transports/hp_jetdirect/SetupWindow.cpp b/src/add-ons/print/transports/hp_jetdirect/SetupWindow.cpp index b0f831431e..84a0cf86d1 100644 --- a/src/add-ons/print/transports/hp_jetdirect/SetupWindow.cpp +++ b/src/add-ons/print/transports/hp_jetdirect/SetupWindow.cpp @@ -88,7 +88,7 @@ SetupView::SetupView(BRect frame, BDirectory* directory) : BView(frame, "", B_FOLLOW_ALL, B_WILL_DRAW), fPrinterDirectory(directory) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); } diff --git a/src/add-ons/print/transports/ipp/IppSetupDlg.cpp b/src/add-ons/print/transports/ipp/IppSetupDlg.cpp index 25720782b7..e59e5178bd 100644 --- a/src/add-ons/print/transports/ipp/IppSetupDlg.cpp +++ b/src/add-ons/print/transports/ipp/IppSetupDlg.cpp @@ -78,7 +78,7 @@ private: IppSetupView::IppSetupView(BRect frame, BDirectory *d) : BView(frame, "", B_FOLLOW_ALL, B_WILL_DRAW), dir(d) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); } void IppSetupView::AttachedToWindow() diff --git a/src/add-ons/print/transports/lpr/LprSetupDlg.cpp b/src/add-ons/print/transports/lpr/LprSetupDlg.cpp index 4fbf395f73..10339e2aa9 100644 --- a/src/add-ons/print/transports/lpr/LprSetupDlg.cpp +++ b/src/add-ons/print/transports/lpr/LprSetupDlg.cpp @@ -91,7 +91,7 @@ LprSetupView::LprSetupView(BRect frame, BDirectory *d) : BView(frame, "", B_FOLLOW_ALL, B_WILL_DRAW), fDir(d) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); } diff --git a/src/add-ons/screen_savers/glife/GLifeConfig.cpp b/src/add-ons/screen_savers/glife/GLifeConfig.cpp index e287f28802..8e3911ac0e 100644 --- a/src/add-ons/screen_savers/glife/GLifeConfig.cpp +++ b/src/add-ons/screen_savers/glife/GLifeConfig.cpp @@ -32,7 +32,7 @@ GLifeConfig::GLifeConfig(BRect frame, GLifeState* pglsState) m_pglsState(pglsState) { SetLayout(new BGroupLayout(B_HORIZONTAL)); - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); // Info text BStringView* name = new BStringView(frame, B_EMPTY_STRING, diff --git a/src/add-ons/screen_savers/gravity/ConfigView.cpp b/src/add-ons/screen_savers/gravity/ConfigView.cpp index ddaba2c3d3..6b68afba23 100644 --- a/src/add-ons/screen_savers/gravity/ConfigView.cpp +++ b/src/add-ons/screen_savers/gravity/ConfigView.cpp @@ -40,7 +40,7 @@ ConfigView::ConfigView(BRect frame, Gravity* parent) B_WILL_DRAW | B_NAVIGABLE)) { SetLayout(new BGroupLayout(B_HORIZONTAL)); - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); fShadeList->SetSelectionMessage(new BMessage(kMsgShade)); diff --git a/src/add-ons/screen_savers/nebula/Nebula.cpp b/src/add-ons/screen_savers/nebula/Nebula.cpp index 067c146afd..96d9c7fdb3 100644 --- a/src/add-ons/screen_savers/nebula/Nebula.cpp +++ b/src/add-ons/screen_savers/nebula/Nebula.cpp @@ -604,7 +604,7 @@ SettingsView::SettingsView(BRect frame) void SettingsView::AttachedToWindow() { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); fWidthMenu->Menu()->SetTargetForItems(this); fColorMenu->Menu()->SetTargetForItems(this); diff --git a/src/add-ons/screen_savers/slideshowsaver/SlideShowConfigView.cpp b/src/add-ons/screen_savers/slideshowsaver/SlideShowConfigView.cpp index bbbfee70ab..060701d9c6 100644 --- a/src/add-ons/screen_savers/slideshowsaver/SlideShowConfigView.cpp +++ b/src/add-ons/screen_savers/slideshowsaver/SlideShowConfigView.cpp @@ -60,7 +60,7 @@ SlideShowConfigView::SlideShowConfigView(const BRect &frame, const char *name, { fSettings = settings; - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); BMessage *pMsg; int32 val; diff --git a/src/add-ons/screen_savers/spider/SpiderSaver.cpp b/src/add-ons/screen_savers/spider/SpiderSaver.cpp index eddc571ad5..a541542200 100644 --- a/src/add-ons/screen_savers/spider/SpiderSaver.cpp +++ b/src/add-ons/screen_savers/spider/SpiderSaver.cpp @@ -338,7 +338,7 @@ SpiderView::SpiderView(BRect frame, SpiderSaver* saver, : BView(frame, "spider view", B_FOLLOW_NONE, B_WILL_DRAW | B_PULSE_NEEDED), fSaver(saver) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); frame.OffsetTo(0.0, 0.0); frame.InsetBy(10.0, 5.0); diff --git a/src/apps/aboutsystem/AboutSystem.cpp b/src/apps/aboutsystem/AboutSystem.cpp index 00483dc152..d00ebbce25 100644 --- a/src/apps/aboutsystem/AboutSystem.cpp +++ b/src/apps/aboutsystem/AboutSystem.cpp @@ -32,6 +32,7 @@ #include #include #include +#include #include #include #include @@ -143,11 +144,15 @@ public: }; +class AboutView; + class AboutWindow : public BWindow { public: AboutWindow(); virtual bool QuitRequested(); + + AboutView* fAboutView; }; @@ -192,6 +197,7 @@ public: ~AboutView(); virtual void AttachedToWindow(); + virtual void AllAttached(); virtual void Pulse(); virtual void MessageReceived(BMessage* msg); @@ -207,6 +213,7 @@ public: void PickRandomHaiku(); + void _AdjustTextColors(); private: typedef std::map PackageCreditMap; @@ -220,10 +227,13 @@ private: void _AddPackageCreditEntries(); BStringView* fMemView; - BTextView* fUptimeView; + BStringView* fUptimeView; BView* fInfoView; HyperTextView* fCreditsView; + BObjectList fTextViews; + BObjectList fSubTextViews; + BBitmap* fLogo; bigtime_t fLastActionTime; @@ -267,7 +277,8 @@ AboutWindow::AboutWindow() B_TITLED_WINDOW, B_AUTO_UPDATE_SIZE_LIMITS | B_NOT_ZOOMABLE) { SetLayout(new BGroupLayout(B_VERTICAL)); - AddChild(new AboutView()); + fAboutView = new AboutView(); + AddChild(fAboutView); // Make sure we take the minimal window size into account when centering BSize size = GetLayout()->MinSize(); @@ -411,7 +422,6 @@ AboutView::AboutView() fScrollRunner(NULL) { // Begin Construction of System Information controls - system_info systemInfo; get_system_info(&systemInfo); @@ -449,10 +459,12 @@ AboutView::AboutView() } BStringView* versionView = new BStringView("ostext", string); + fSubTextViews.AddItem(versionView); versionView->SetExplicitAlignment(BAlignment(B_ALIGN_LEFT, B_ALIGN_VERTICAL_UNSET)); BStringView* abiView = new BStringView("abitext", B_HAIKU_ABI_NAME); + fSubTextViews.AddItem(abiView); abiView->SetExplicitAlignment(BAlignment(B_ALIGN_LEFT, B_ALIGN_VERTICAL_UNSET)); @@ -500,6 +512,7 @@ AboutView::AboutView() << " " << get_cpu_model_string(platform, cpuVendor, cpuModel); BStringView* cpuView = new BStringView("cputext", cpuType.String()); + fSubTextViews.AddItem(cpuView); cpuView->SetExplicitAlignment(BAlignment(B_ALIGN_LEFT, B_ALIGN_VERTICAL_UNSET)); @@ -511,16 +524,20 @@ AboutView::AboutView() clockSpeed / 1000.0f); BStringView* frequencyView = new BStringView("frequencytext", string); + fSubTextViews.AddItem(frequencyView); frequencyView->SetExplicitAlignment(BAlignment(B_ALIGN_LEFT, B_ALIGN_VERTICAL_UNSET)); // RAM BStringView *memSizeView = new BStringView("ramsizetext", MemSizeToString(string, sizeof(string), &systemInfo)); + fSubTextViews.AddItem(memSizeView); memSizeView->SetExplicitAlignment(BAlignment(B_ALIGN_LEFT, B_ALIGN_VERTICAL_UNSET)); + fMemView = new BStringView("ramtext", MemUsageToString(string, sizeof(string), &systemInfo)); + fSubTextViews.AddItem(fMemView); fMemView->SetExplicitAlignment(BAlignment(B_ALIGN_LEFT, B_ALIGN_VERTICAL_UNSET)); @@ -539,22 +556,19 @@ AboutView::AboutView() buildTimeDate.SetTo(kernelTimeDate); BStringView* kernelView = new BStringView("kerneltext", buildTimeDate); + fSubTextViews.AddItem(kernelView); kernelView->SetExplicitAlignment(BAlignment(B_ALIGN_LEFT, B_ALIGN_VERTICAL_UNSET)); // Uptime - fUptimeView = new BTextView("uptimetext"); - fUptimeView->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); - fUptimeView->MakeEditable(false); - fUptimeView->MakeSelectable(false); - fUptimeView->SetWordWrap(true); - + fUptimeView = new BStringView("uptimetext", "..."); + fSubTextViews.AddItem(fUptimeView); fUptimeView->SetText(UptimeToString(string, sizeof(string))); const float offset = 5; SetLayout(new BGroupLayout(B_HORIZONTAL, 0)); - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); BLayoutBuilder::Group<>((BGroupLayout*)GetLayout()) .AddGroup(B_VERTICAL, 0) @@ -608,6 +622,14 @@ AboutView::AttachedToWindow() BView::AttachedToWindow(); Window()->SetPulseRate(500000); SetEventMask(B_POINTER_EVENTS); + DoLayout(); +} + + +void +AboutView::AllAttached() +{ + _AdjustTextColors(); } @@ -647,6 +669,13 @@ void AboutView::MessageReceived(BMessage* msg) { switch (msg->what) { + case B_COLORS_UPDATED: + { + if (msg->HasColor(ui_color_name(B_PANEL_TEXT_COLOR))) + _AdjustTextColors(); + + break; + } case SCROLL_CREDITS_VIEW: { BScrollBar* scrollBar = @@ -816,6 +845,28 @@ AboutView::PickRandomHaiku() } +void +AboutView::_AdjustTextColors() +{ + rgb_color textColor = ui_color(B_PANEL_TEXT_COLOR); + rgb_color color = mix_color(ViewColor(), textColor, 192); + + BView* view = NULL; + for (int32 index = 0; index < fSubTextViews.CountItems(); ++index) { + view = fSubTextViews.ItemAt(index); + view->SetHighColor(color); + view->Invalidate(); + } + + // Labels + for (int32 index = 0; index < fTextViews.CountItems(); ++index) { + view = fTextViews.ItemAt(index); + view->SetHighColor(textColor); + view->Invalidate(); + } +} + + BView* AboutView::_CreateLabel(const char* name, const char* label) { @@ -823,6 +874,7 @@ AboutView::_CreateLabel(const char* name, const char* label) labelView->SetExplicitAlignment(BAlignment(B_ALIGN_LEFT, B_ALIGN_VERTICAL_UNSET)); labelView->SetFont(be_bold_font); + fTextViews.AddItem(labelView); return labelView; } @@ -837,7 +889,7 @@ AboutView::_CreateCreditsView() fCreditsView->MakeEditable(false); fCreditsView->SetWordWrap(true); fCreditsView->SetInsets(5, 5, 5, 5); - fCreditsView->SetViewColor(ui_color(B_DOCUMENT_BACKGROUND_COLOR)); + fCreditsView->SetViewUIColor(B_DOCUMENT_BACKGROUND_COLOR); BScrollView* creditsScroller = new BScrollView("creditsScroller", fCreditsView, B_WILL_DRAW | B_FRAME_EVENTS, false, true, diff --git a/src/apps/aboutsystem/Jamfile b/src/apps/aboutsystem/Jamfile index ca23780132..8b2354fc6c 100644 --- a/src/apps/aboutsystem/Jamfile +++ b/src/apps/aboutsystem/Jamfile @@ -1,6 +1,6 @@ SubDir HAIKU_TOP src apps aboutsystem ; -UsePrivateHeaders app libroot shared ; +UsePrivateHeaders app interface libroot shared ; Application AboutSystem : AboutSystem.cpp diff --git a/src/apps/activitymonitor/ActivityView.cpp b/src/apps/activitymonitor/ActivityView.cpp index 2e9a405092..2f8e86cacf 100644 --- a/src/apps/activitymonitor/ActivityView.cpp +++ b/src/apps/activitymonitor/ActivityView.cpp @@ -576,7 +576,7 @@ ActivityView::ActivityView(const char* name, const BMessage* settings) #endif fSourcesLock("data sources") { - SetLowColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetLowUIColor(B_PANEL_BACKGROUND_COLOR); _Init(settings); @@ -1121,7 +1121,6 @@ ActivityView::MessageReceived(BMessage* message) break; } - case kMsgUpdateResolution: { int32 resolution; @@ -1479,7 +1478,9 @@ ActivityView::Draw(BRect updateRect) // draw legend BRect legendFrame = _LegendFrame(); - SetLowColor(fLegendBackgroundColor); + if (LowUIColor() == B_NO_COLOR) + SetLowColor(fLegendBackgroundColor); + if (drawBackground) { BRect backgroundFrame(legendFrame); backgroundFrame.bottom += kDraggerSize; @@ -1520,7 +1521,7 @@ ActivityView::Draw(BRect updateRect) TruncateString(&label, B_TRUNCATE_MIDDLE, possibleLabelWidth); if (drawBackground) - SetHighColor(ui_color(B_CONTROL_TEXT_COLOR)); + SetHighColor(ui_color(B_PANEL_TEXT_COLOR)); if (be_control_look == NULL) { DrawString(label.String(), BPoint(6 + colorBox.right, y)); diff --git a/src/apps/activitymonitor/ActivityWindow.cpp b/src/apps/activitymonitor/ActivityWindow.cpp index ce5961cdb0..f72794c161 100644 --- a/src/apps/activitymonitor/ActivityWindow.cpp +++ b/src/apps/activitymonitor/ActivityWindow.cpp @@ -68,8 +68,8 @@ ActivityWindow::ActivityWindow() fLayout->SetSpacing(inset); BView* top = new BView("top", 0, fLayout); - top->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); layout->AddView(top); + top->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); BMessage viewState; int32 count = 0; @@ -99,7 +99,6 @@ ActivityWindow::ActivityWindow() topRect.top = menuBar->Bounds().bottom + 1; BView* top = new BView(topRect, "top", B_FOLLOW_ALL, 0); - top->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); layout->AddChild(top); BMessage viewState; diff --git a/src/apps/activitymonitor/SettingsWindow.cpp b/src/apps/activitymonitor/SettingsWindow.cpp index 67829b060e..57b54571aa 100644 --- a/src/apps/activitymonitor/SettingsWindow.cpp +++ b/src/apps/activitymonitor/SettingsWindow.cpp @@ -38,6 +38,7 @@ public: SetLimitLabels(min.String(), max.String()); SetHashMarks(B_HASH_MARKS_BOTTOM); SetHashMarkCount(levels); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); if (message != NULL) SetModificationMessage(new BMessage(*message)); diff --git a/src/apps/bootmanager/BootManagerWindow.cpp b/src/apps/bootmanager/BootManagerWindow.cpp index 813f9856a4..24330c3fdd 100644 --- a/src/apps/bootmanager/BootManagerWindow.cpp +++ b/src/apps/bootmanager/BootManagerWindow.cpp @@ -34,7 +34,13 @@ BootManagerWindow::BootManagerWindow() { float minWidth, maxWidth, minHeight, maxHeight; GetSizeLimits(&minWidth, &maxWidth, &minHeight, &maxHeight); - SetSizeLimits(250, maxWidth, 250, maxHeight); + + // Use font to determine necessary size of window: + const BFont* font = be_plain_font; + minWidth = 400 * (double)font->Size() / 12.0f; + minHeight = 250 * (double)font->Size() / 12.0f; + + SetSizeLimits(minWidth, maxWidth, minHeight, maxHeight); fWizardView = new WizardView("wizard"); BLayoutBuilder::Group<>(this) diff --git a/src/apps/bootmanager/WizardPageView.cpp b/src/apps/bootmanager/WizardPageView.cpp index 59fe46ef2b..25b6419256 100644 --- a/src/apps/bootmanager/WizardPageView.cpp +++ b/src/apps/bootmanager/WizardPageView.cpp @@ -21,7 +21,7 @@ WizardPageView::WizardPageView(BMessage* settings, BRect frame, BView(frame, name, resizingMode, flags), fSettings(settings) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); } @@ -30,7 +30,7 @@ WizardPageView::WizardPageView(BMessage* settings, const char* name) BView(name, B_WILL_DRAW), fSettings(settings) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); } @@ -54,9 +54,10 @@ WizardPageView::CreateDescription(BRect frame, const char* name, B_FOLLOW_LEFT_RIGHT | B_FOLLOW_TOP, B_WILL_DRAW | B_PULSE_NEEDED | B_FRAME_EVENTS); view->MakeEditable(false); - view->SetViewColor(ViewColor()); + view->SetViewUIColor(ViewUIColor()); view->SetStylable(true); view->SetText(description); + return view; } @@ -67,9 +68,10 @@ WizardPageView::CreateDescription(const char* name, { BTextView* view = new BTextView("text"); view->MakeEditable(false); - view->SetViewColor(ViewColor()); + view->SetViewUIColor(ViewUIColor()); view->SetStylable(true); view->SetText(description); + return view; } @@ -84,7 +86,15 @@ WizardPageView::MakeHeading(BTextView* view) BFont font; view->GetFont(&font); font.SetFace(B_BOLD_FACE); - view->SetFontAndColor(0, indexFirstLineEnd, &font); + font.SetSize(font.Size() + 1); + rgb_color color = ui_color(B_PANEL_TEXT_COLOR); + view->SetFontAndColor(0, indexFirstLineEnd, &font, B_FONT_ALL, + &color); + + font.SetFace(B_REGULAR_FACE); + font.SetSize(font.Size() - 1); + view->SetFontAndColor(indexFirstLineEnd + 1, view->TextLength(), + &font, B_FONT_ALL, &color); } } diff --git a/src/apps/charactermap/CharacterView.cpp b/src/apps/charactermap/CharacterView.cpp index 3f311e3d41..0aee125d58 100644 --- a/src/apps/charactermap/CharacterView.cpp +++ b/src/apps/charactermap/CharacterView.cpp @@ -237,6 +237,8 @@ CharacterView::AttachedToWindow() { Window()->AddShortcut('C', B_SHIFT_KEY, new BMessage(kMsgCopyAsEscapedString), this); + SetViewColor(255, 255, 255, 255); + SetLowColor(ViewColor()); } @@ -402,6 +404,11 @@ CharacterView::Draw(BRect updateRect) BFont font; GetFont(&font); + rgb_color color = (rgb_color){0, 0, 0, 255}; + rgb_color highlight = (rgb_color){220, 220, 220, 255}; + rgb_color enclose = mix_color(highlight, + ui_color(B_CONTROL_HIGHLIGHT_COLOR), 128); + for (int32 i = _BlockAt(updateRect.LeftTop()); i < (int32)kNumUnicodeBlocks; i++) { if (!IsShowingBlock(i)) @@ -411,7 +418,7 @@ CharacterView::Draw(BRect updateRect) if (y > updateRect.bottom) break; - SetHighColor(0, 0, 0); + SetHighColor(color); DrawString(kUnicodeBlocks[i].name, BPoint(3, y + fTitleBase)); y += fTitleHeight; @@ -424,11 +431,14 @@ CharacterView::Draw(BRect updateRect) && y < updateRect.bottom) { // Stroke frame around the active character if (fHasCharacter && fCurrentCharacter == c) { - SetHighColor(tint_color(ViewColor(), 1.05f)); + SetHighColor(highlight); FillRect(BRect(x, y, x + fCharacterWidth, y + fCharacterHeight - fGap)); + SetHighColor(enclose); + StrokeRect(BRect(x, y, x + fCharacterWidth, + y + fCharacterHeight - fGap)); - SetHighColor(0, 0, 0); + SetHighColor(color); } // Draw character diff --git a/src/apps/debugger/user_interface/gui/inspector_window/InspectorWindow.cpp b/src/apps/debugger/user_interface/gui/inspector_window/InspectorWindow.cpp index 68efbeef8f..91bc8d4e0c 100644 --- a/src/apps/debugger/user_interface/gui/inspector_window/InspectorWindow.cpp +++ b/src/apps/debugger/user_interface/gui/inspector_window/InspectorWindow.cpp @@ -181,9 +181,9 @@ InspectorWindow::_Init() .End() .End(); - fHexMode->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); - fEndianMode->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); - fTextMode->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + fHexMode->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); + fEndianMode->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); + fTextMode->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); int32 targetEndian = fTeam->GetArchitecture()->IsBigEndian() ? EndianModeBigEndian : EndianModeLittleEndian; diff --git a/src/apps/debugger/user_interface/gui/inspector_window/MemoryView.cpp b/src/apps/debugger/user_interface/gui/inspector_window/MemoryView.cpp index e1cacc84af..18bb9f5709 100644 --- a/src/apps/debugger/user_interface/gui/inspector_window/MemoryView.cpp +++ b/src/apps/debugger/user_interface/gui/inspector_window/MemoryView.cpp @@ -149,7 +149,7 @@ void MemoryView::AttachedToWindow() { BView::AttachedToWindow(); - SetViewColor(ui_color(B_DOCUMENT_BACKGROUND_COLOR)); + SetViewUIColor(B_DOCUMENT_BACKGROUND_COLOR); SetFont(be_fixed_font); fCharWidth = be_fixed_font->StringWidth("a"); font_height fontHeight; @@ -689,7 +689,7 @@ MemoryView::MaxSize() void MemoryView::_Init() { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); } diff --git a/src/apps/debugger/user_interface/gui/utility_windows/ExpressionPromptWindow.cpp b/src/apps/debugger/user_interface/gui/utility_windows/ExpressionPromptWindow.cpp index 10adc1abc3..69f55c9f8b 100644 --- a/src/apps/debugger/user_interface/gui/utility_windows/ExpressionPromptWindow.cpp +++ b/src/apps/debugger/user_interface/gui/utility_windows/ExpressionPromptWindow.cpp @@ -57,7 +57,7 @@ ExpressionPromptWindow::_Init() BLayoutItem* inputItem = fExpressionInput->CreateTextViewLayoutItem(); inputItem->SetExplicitMinSize(BSize(200.0, B_SIZE_UNSET)); inputItem->SetExplicitMaxSize(BSize(B_SIZE_UNLIMITED, B_SIZE_UNSET)); - labelItem->View()->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + labelItem->View()->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); BLayoutBuilder::Group<>(this, B_VERTICAL) .SetInsets(B_USE_DEFAULT_SPACING) diff --git a/src/apps/debugger/user_interface/gui/utility_windows/WatchPromptWindow.cpp b/src/apps/debugger/user_interface/gui/utility_windows/WatchPromptWindow.cpp index 218599ee62..2523fa5a0a 100644 --- a/src/apps/debugger/user_interface/gui/utility_windows/WatchPromptWindow.cpp +++ b/src/apps/debugger/user_interface/gui/utility_windows/WatchPromptWindow.cpp @@ -127,7 +127,7 @@ WatchPromptWindow::_Init() fTypeField = new BMenuField("Type:", typeMenu); BLayoutItem* labelItem = fTypeField->CreateLabelLayoutItem(); - labelItem->View()->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + labelItem->View()->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); BLayoutBuilder::Group<>(this, B_VERTICAL) .SetInsets(B_USE_DEFAULT_SPACING) .AddGroup(B_HORIZONTAL, 4.0f) diff --git a/src/apps/deskcalc/CalcView.cpp b/src/apps/deskcalc/CalcView.cpp index bfdd87baec..560e75d37b 100644 --- a/src/apps/deskcalc/CalcView.cpp +++ b/src/apps/deskcalc/CalcView.cpp @@ -231,6 +231,12 @@ CalcView::AttachedToWindow() void CalcView::MessageReceived(BMessage* message) { + if (message->what == B_COLORS_UPDATED + && message->HasColor(ui_color_name(B_PANEL_BACKGROUND_COLOR))) { + _Colorize(); + return; + } + if (Parent() && (Parent()->Flags() & B_DRAW_ON_CHILDREN) != 0) { // if we are embedded in desktop we need to receive these // message here since we don't have a parent BWindow @@ -504,7 +510,7 @@ CalcView::Draw(BRect updateRect) be_control_look->DrawLabel(this, key->label, frame, updateRect, fBaseColor, flags, BAlignment(B_ALIGN_HORIZONTAL_CENTER, - B_ALIGN_VERTICAL_CENTER)); + B_ALIGN_VERTICAL_CENTER), &fButtonTextColor); key++; } @@ -1288,6 +1294,8 @@ CalcView::_AudioFeedback(bool inBackGround) void CalcView::_Colorize() { + fBaseColor = ui_color(B_PANEL_BACKGROUND_COLOR); + // calculate light and dark color from base color fLightColor.red = (uint8)(fBaseColor.red * 1.25); fLightColor.green = (uint8)(fBaseColor.green * 1.25); @@ -1300,16 +1308,13 @@ CalcView::_Colorize() fDarkColor.alpha = 255; // keypad text color - uint8 lightness = (fBaseColor.red + fBaseColor.green + fBaseColor.blue) / 3; - if (lightness > 200) + if (fBaseColor.Brightness() > 100) fButtonTextColor = (rgb_color){ 0, 0, 0, 255 }; else fButtonTextColor = (rgb_color){ 255, 255, 255, 255 }; // expression text color - lightness = (fExpressionBGColor.red - + fExpressionBGColor.green + fExpressionBGColor.blue) / 3; - if (lightness > 200) + if (fExpressionBGColor.Brightness() > 100) fExpressionTextColor = (rgb_color){ 0, 0, 0, 255 }; else fExpressionTextColor = (rgb_color){ 255, 255, 255, 255 }; diff --git a/src/apps/devices/PropertyListPlain.cpp b/src/apps/devices/PropertyListPlain.cpp index 44d1d0318c..f8687d5006 100644 --- a/src/apps/devices/PropertyListPlain.cpp +++ b/src/apps/devices/PropertyListPlain.cpp @@ -26,7 +26,7 @@ PropertyListPlain::PropertyListPlain(const char* name) : BView(name, 0, NULL) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); SetLayout(new BGroupLayout(B_VERTICAL)); } @@ -42,10 +42,13 @@ PropertyListPlain::AddAttributes(const Attributes& attributes) { RemoveAll(); BGroupLayoutBuilder layout(B_VERTICAL); - BTextView* view = new BTextView(BRect(0, 0, 1000, 1000), - "", BRect(5, 5, 995, 995), B_FOLLOW_ALL_SIDES); - view->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + BTextView* view = new BTextView(BRect(0, 0, 1000, 1000), + "attribs", BRect(5, 5, 995, 995), B_FOLLOW_ALL_SIDES); + + rgb_color textColor = ui_color(B_PANEL_TEXT_COLOR); + view->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); + view->SetFontAndColor(be_plain_font, B_FONT_ALL, &textColor); view->MakeEditable(false); for (unsigned int i = 0; i < attributes.size(); i++) { @@ -59,6 +62,7 @@ PropertyListPlain::AddAttributes(const Attributes& attributes) } layout.Add(view); + fAttributeViews.AddItem(view); AddChild(layout); } @@ -78,6 +82,22 @@ void PropertyListPlain::MessageReceived(BMessage* message) { switch (message->what) { + case B_COLORS_UPDATED: + { + rgb_color color; + if (message->FindColor(ui_color_name(B_PANEL_TEXT_COLOR), &color) + != B_OK) + break; + + BTextView* view = NULL; + int32 count = fAttributeViews.CountItems(); + for (int32 index = 0; index < count; ++index) { + view = fAttributeViews.ItemAt(index); + view->SetFontAndColor(be_plain_font, 0, &color); + } + break; + } + default: BView::MessageReceived(message); } diff --git a/src/apps/devices/PropertyListPlain.h b/src/apps/devices/PropertyListPlain.h index bbfc00fba9..19e9139952 100644 --- a/src/apps/devices/PropertyListPlain.h +++ b/src/apps/devices/PropertyListPlain.h @@ -10,6 +10,8 @@ #define PROPERTY_LIST_PLAIN_H +#include +#include #include #include "Device.h" @@ -28,6 +30,7 @@ public: virtual void DetachedFromWindow(); private: BView* rootView; + BObjectList fAttributeViews; }; #endif /* PROPERTY_LIST_PLAIN_H */ diff --git a/src/apps/devices/ResourceUsageWindow.cpp b/src/apps/devices/ResourceUsageWindow.cpp index d7c9aa1522..b9380ae6cf 100644 --- a/src/apps/devices/ResourceUsageWindow.cpp +++ b/src/apps/devices/ResourceUsageWindow.cpp @@ -220,7 +220,7 @@ void ResourceUsageWindow::InitWindow(BList &list) // Create the TabView and Tabs BTabView *tabView = new BTabView(rtab,"resource_usage_tabview"); - tabView->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + tabView->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); rtab = tabView->Bounds(); rtab.InsetBy(5,5); diff --git a/src/apps/diskprobe/FindWindow.cpp b/src/apps/diskprobe/FindWindow.cpp index 0ed756f9d0..eee1c1720c 100644 --- a/src/apps/diskprobe/FindWindow.cpp +++ b/src/apps/diskprobe/FindWindow.cpp @@ -492,7 +492,7 @@ FindWindow::FindWindow(BRect _rect, BMessage& previous, BMessenger& target, fTarget(target) { BView* view = new BView(Bounds(), "main", B_FOLLOW_ALL, 0); - view->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + view->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); AddChild(view); int8 mode = kAsciiMode; diff --git a/src/apps/diskprobe/ProbeView.cpp b/src/apps/diskprobe/ProbeView.cpp index 863df7075a..b8683f93a0 100644 --- a/src/apps/diskprobe/ProbeView.cpp +++ b/src/apps/diskprobe/ProbeView.cpp @@ -251,7 +251,7 @@ IconView::AttachedToWindow() if (Parent() != NULL) SetViewColor(Parent()->ViewColor()); else - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); } @@ -480,7 +480,7 @@ HeaderView::HeaderView(const entry_ref *ref, DataEditor &editor) fPosition(0), fLastPosition(0) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); GridLayout()->SetInsets(B_USE_WINDOW_SPACING, B_USE_WINDOW_SPACING, B_USE_WINDOW_SPACING, B_USE_DEFAULT_SPACING); @@ -1102,7 +1102,7 @@ TypeView::TypeView(BRect rect, const char* name, int32 index, DataEditor& editor, int32 resizingMode) : BView(rect, name, resizingMode, B_FRAME_EVENTS) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); fTypeEditorView = GetTypeEditorAt(index, Frame(), editor); if (fTypeEditorView == NULL) { diff --git a/src/apps/diskprobe/TypeEditors.cpp b/src/apps/diskprobe/TypeEditors.cpp index f5708fbdcf..6cbb581280 100644 --- a/src/apps/diskprobe/TypeEditors.cpp +++ b/src/apps/diskprobe/TypeEditors.cpp @@ -205,7 +205,7 @@ TypeEditorView::TypeMatches() StringEditor::StringEditor(DataEditor& editor) : TypeEditorView(B_TRANSLATE("String editor"), 0, editor) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); SetLayout(new BGroupLayout(B_VERTICAL)); BStringView *stringView = new BStringView(B_EMPTY_STRING, @@ -283,7 +283,7 @@ StringEditor::MessageReceived(BMessage *message) MimeTypeEditor::MimeTypeEditor(BRect rect, DataEditor& editor) : TypeEditorView(rect, B_TRANSLATE("MIME type editor"), B_FOLLOW_LEFT_RIGHT, 0, editor) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); fTextControl = new BTextControl(rect.InsetByCopy(5, 5), B_EMPTY_STRING, B_TRANSLATE("MIME type:"), NULL, new BMessage(kMsgValueChanged), B_FOLLOW_ALL); @@ -374,7 +374,7 @@ MimeTypeEditor::MessageReceived(BMessage *message) NumberEditor::NumberEditor(BRect rect, DataEditor &editor) : TypeEditorView(rect, B_TRANSLATE("Number editor"), B_FOLLOW_LEFT_RIGHT, 0, editor) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); fTextControl = new BTextControl(rect.InsetByCopy(5, 5), B_EMPTY_STRING, _TypeLabel(), NULL, new BMessage(kMsgValueChanged), B_FOLLOW_ALL); @@ -750,7 +750,7 @@ NumberEditor::MessageReceived(BMessage *message) BooleanEditor::BooleanEditor(BRect rect, DataEditor &editor) : TypeEditorView(rect, B_TRANSLATE("Boolean editor"), B_FOLLOW_NONE, 0, editor) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); BPopUpMenu *menu = new BPopUpMenu("bool"); BMessage *message; @@ -906,7 +906,7 @@ ImageView::AttachedToWindow() if (Parent() != NULL) SetViewColor(Parent()->ViewColor()); else - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); fEditor.StartWatching(this); if (fScaleSlider != NULL) @@ -1119,7 +1119,7 @@ ImageView::_UpdateImage() MessageView::MessageView(BRect rect, DataEditor &editor) : TypeEditorView(rect, B_TRANSLATE("Message View"), B_FOLLOW_ALL, 0, editor) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); rect = Bounds().InsetByCopy(10, 10); rect.right -= B_V_SCROLL_BAR_WIDTH; @@ -1128,8 +1128,8 @@ MessageView::MessageView(BRect rect, DataEditor &editor) fTextView = new BTextView(rect, B_EMPTY_STRING, rect.OffsetToCopy(B_ORIGIN).InsetByCopy(5, 5), B_FOLLOW_ALL, B_WILL_DRAW); - fTextView->SetViewColor(ViewColor()); - fTextView->SetLowColor(ViewColor()); + fTextView->SetViewUIColor(ViewUIColor()); + fTextView->SetLowUIColor(ViewUIColor()); BScrollView *scrollView = new BScrollView("scroller", fTextView, B_FOLLOW_ALL, B_WILL_DRAW, true, true); diff --git a/src/apps/drivesetup/DiskView.cpp b/src/apps/drivesetup/DiskView.cpp index 8980cfe5b4..e560e5beb3 100644 --- a/src/apps/drivesetup/DiskView.cpp +++ b/src/apps/drivesetup/DiskView.cpp @@ -349,9 +349,8 @@ DiskView::DiskView(const BRect& frame, uint32 resizeMode, SetLayout(layout); SetViewColor(B_TRANSPARENT_COLOR); - rgb_color base = ui_color(B_PANEL_BACKGROUND_COLOR); - SetHighColor(tint_color(base, B_DARKEN_2_TINT)); - SetLowColor(tint_color(base, (B_DARKEN_2_TINT + B_DARKEN_1_TINT) / 2)); + SetHighUIColor(B_PANEL_BACKGROUND_COLOR, B_DARKEN_2_TINT); + SetLowUIColor(B_PANEL_BACKGROUND_COLOR, 1.221f); #ifdef HAIKU_TARGET_PLATFORM_LIBBE_TEST PartitionView* view; @@ -421,7 +420,13 @@ DiskView::Draw(BRect updateRect) (bounds.Height() - (fh.ascent + fh.descent) * 2) / 2.0); FillRoundRect(messageBounds, 4, 4, B_SOLID_LOW); - SetHighColor(tint_color(HighColor(), B_DARKEN_4_TINT)); + rgb_color color = LowColor(); + if (color.Brightness() > 100) + color = tint_color(color, B_DARKEN_4_TINT); + else + color = tint_color(color, B_LIGHTEN_2_TINT); + + SetHighColor(color); BPoint textOffset; textOffset.x = messageBounds.left + fh.ascent; textOffset.y = (messageBounds.top + messageBounds.bottom diff --git a/src/apps/expander/PasswordAlert.cpp b/src/apps/expander/PasswordAlert.cpp index 8469deb4cc..a99cd79aef 100644 --- a/src/apps/expander/PasswordAlert.cpp +++ b/src/apps/expander/PasswordAlert.cpp @@ -64,7 +64,7 @@ PasswordAlert::PasswordAlert(const char* title, const char* text) fTextControl = new BTextControl(textControlRect, "_password_", text, NULL, new BMessage('pass'), B_FOLLOW_ALL); - fTextControl->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + fTextControl->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); fTextControl->TextView()->HideTyping(true); fTextControl->SetAlignment(B_ALIGN_RIGHT, B_ALIGN_LEFT); fTextControl->SetDivider(10 + fTextControl->StringWidth(text)); @@ -190,7 +190,7 @@ TAlertView::TAlertView(BRect frame) BView(frame, "TAlertView", B_FOLLOW_ALL_SIDES, B_WILL_DRAW), fIconBitmap(NULL) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); } diff --git a/src/apps/firstbootprompt/BootPromptWindow.cpp b/src/apps/firstbootprompt/BootPromptWindow.cpp index b80b2bf56a..afc350c180 100644 --- a/src/apps/firstbootprompt/BootPromptWindow.cpp +++ b/src/apps/firstbootprompt/BootPromptWindow.cpp @@ -28,6 +28,7 @@ #include #include #include +#include #include #include #include @@ -155,11 +156,22 @@ BootPromptWindow::BootPromptWindow() { SetSizeLimits(450, 16384, 350, 16384); + rgb_color textColor = ui_color(B_PANEL_TEXT_COLOR); fInfoTextView = new BTextView(""); - fInfoTextView->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + fInfoTextView->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); + fInfoTextView->SetFontAndColor(be_plain_font, B_FONT_ALL, &textColor); fInfoTextView->MakeEditable(false); fInfoTextView->MakeSelectable(false); + // Carefully designed to not exceed the 640x480 resolution with a 12pt font. + float width = fInfoTextView->StringWidth("Thank you for trying out Haiku," + " We hope you like it!") * 1.5; + float height = be_plain_font->Size() * 36; + + BRect newFrame(0, 0, width, height); + newFrame = newFrame & BScreen().Frame(); + ResizeTo(newFrame.Width(), newFrame.Height()); + fDesktopButton = new BButton("", new BMessage(MSG_BOOT_DESKTOP)); fDesktopButton->SetTarget(be_app); fDesktopButton->MakeDefault(true); diff --git a/src/apps/fontdemo/ControlView.cpp b/src/apps/fontdemo/ControlView.cpp index 7c15aae8ec..65f601d3da 100644 --- a/src/apps/fontdemo/ControlView.cpp +++ b/src/apps/fontdemo/ControlView.cpp @@ -48,7 +48,7 @@ ControlView::ControlView() fCycleFonts(false), fFontStyleindex(0) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); GroupLayout()->SetInsets(B_USE_WINDOW_SPACING); } diff --git a/src/apps/haikudepot/textview/CharacterStyle.cpp b/src/apps/haikudepot/textview/CharacterStyle.cpp index 06fbbc4264..85261bba64 100644 --- a/src/apps/haikudepot/textview/CharacterStyle.cpp +++ b/src/apps/haikudepot/textview/CharacterStyle.cpp @@ -238,6 +238,18 @@ CharacterStyle::SetForegroundColor(uint8 r, uint8 g, uint8 b, uint8 a) } +bool +CharacterStyle::SetForegroundColor(color_which which) +{ + CharacterStyleDataRef data = fStyleData->SetForegroundColor(which); + if (data == fStyleData) + return data->WhichForegroundColor() == which; + + fStyleData = data; + return true; +} + + bool CharacterStyle::SetForegroundColor(rgb_color color) { @@ -257,6 +269,13 @@ CharacterStyle::ForegroundColor() const } +color_which +CharacterStyle::WhichForegroundColor() const +{ + return fStyleData->WhichForegroundColor(); +} + + bool CharacterStyle::SetBackgroundColor(uint8 r, uint8 g, uint8 b, uint8 a) { @@ -264,6 +283,18 @@ CharacterStyle::SetBackgroundColor(uint8 r, uint8 g, uint8 b, uint8 a) } +bool +CharacterStyle::SetBackgroundColor(color_which which) +{ + CharacterStyleDataRef data = fStyleData->SetBackgroundColor(which); + if (data == fStyleData) + return data->WhichBackgroundColor() == which; + + fStyleData = data; + return true; +} + + bool CharacterStyle::SetBackgroundColor(rgb_color color) { @@ -283,6 +314,25 @@ CharacterStyle::BackgroundColor() const } +color_which +CharacterStyle::WhichBackgroundColor() const +{ + return fStyleData->WhichBackgroundColor(); +} + + +bool +CharacterStyle::SetStrikeOutColor(color_which which) +{ + CharacterStyleDataRef data = fStyleData->SetStrikeOutColor(which); + if (data == fStyleData) + return data->WhichStrikeOutColor() == which; + + fStyleData = data; + return true; +} + + bool CharacterStyle::SetStrikeOutColor(rgb_color color) { @@ -302,6 +352,25 @@ CharacterStyle::StrikeOutColor() const } +color_which +CharacterStyle::WhichStrikeOutColor() const +{ + return fStyleData->WhichStrikeOutColor(); +} + + +bool +CharacterStyle::SetUnderlineColor(color_which which) +{ + CharacterStyleDataRef data = fStyleData->SetUnderlineColor(which); + if (data == fStyleData) + return data->WhichUnderlineColor() == which; + + fStyleData = data; + return true; +} + + bool CharacterStyle::SetUnderlineColor(rgb_color color) { @@ -321,6 +390,13 @@ CharacterStyle::UnderlineColor() const } +color_which +CharacterStyle::WhichUnderlineColor() const +{ + return fStyleData->WhichUnderlineColor(); +} + + bool CharacterStyle::SetStrikeOut(uint8 strikeOut) { diff --git a/src/apps/haikudepot/textview/CharacterStyle.h b/src/apps/haikudepot/textview/CharacterStyle.h index 4a184f46a9..781964bcb2 100644 --- a/src/apps/haikudepot/textview/CharacterStyle.h +++ b/src/apps/haikudepot/textview/CharacterStyle.h @@ -44,20 +44,28 @@ public: bool SetForegroundColor( uint8 r, uint8 g, uint8 b, uint8 a = 255); + bool SetForegroundColor(color_which which); bool SetForegroundColor(rgb_color color); rgb_color ForegroundColor() const; + color_which WhichForegroundColor() const; bool SetBackgroundColor( uint8 r, uint8 g, uint8 b, uint8 a = 255); + bool SetBackgroundColor(color_which which); bool SetBackgroundColor(rgb_color color); rgb_color BackgroundColor() const; + color_which WhichBackgroundColor() const; + bool SetStrikeOutColor(color_which which); bool SetStrikeOutColor(rgb_color color); rgb_color StrikeOutColor() const; + color_which WhichStrikeOutColor() const; + bool SetUnderlineColor(color_which which); bool SetUnderlineColor(rgb_color color); rgb_color UnderlineColor() const; + color_which WhichUnderlineColor() const; bool SetStrikeOut(uint8 strikeOut); uint8 StrikeOut() const; @@ -65,7 +73,6 @@ public: bool SetUnderline(uint8 underline); uint8 Underline() const; - private: BFont _FindFontForFace(uint16 face) const; diff --git a/src/apps/haikudepot/textview/CharacterStyleData.cpp b/src/apps/haikudepot/textview/CharacterStyleData.cpp index 1103205ec8..5f9ce2cae2 100644 --- a/src/apps/haikudepot/textview/CharacterStyleData.cpp +++ b/src/apps/haikudepot/textview/CharacterStyleData.cpp @@ -18,10 +18,15 @@ CharacterStyleData::CharacterStyleData() fGlyphSpacing(0.0f), - fFgColor((rgb_color){ 0, 0, 0, 255 }), - fBgColor((rgb_color){ 255, 255, 255, 255 }), - fStrikeOutColor((rgb_color){ 0, 0, 0, 255 }), - fUnderlineColor((rgb_color){ 0, 0, 0, 255 }), + fWhichFgColor(B_PANEL_TEXT_COLOR), + fWhichBgColor(B_PANEL_BACKGROUND_COLOR), + fWhichStrikeOutColor(fWhichFgColor), + fWhichUnderlineColor(fWhichFgColor), + + fFgColor(ui_color(fWhichFgColor)), + fBgColor(ui_color(fWhichBgColor)), + fStrikeOutColor(fFgColor), + fUnderlineColor(fFgColor), fStrikeOutStyle(STRIKE_OUT_NONE), fUnderlineStyle(UNDERLINE_NONE) @@ -39,6 +44,11 @@ CharacterStyleData::CharacterStyleData(const CharacterStyleData& other) fGlyphSpacing(other.fGlyphSpacing), + fWhichFgColor(other.fWhichFgColor), + fWhichBgColor(other.fWhichBgColor), + fWhichStrikeOutColor(other.fWhichStrikeOutColor), + fWhichUnderlineColor(other.fWhichUnderlineColor), + fFgColor(other.fFgColor), fBgColor(other.fBgColor), fStrikeOutColor(other.fStrikeOutColor), @@ -63,6 +73,11 @@ CharacterStyleData::operator==(const CharacterStyleData& other) const && fGlyphSpacing == other.fGlyphSpacing + && fWhichFgColor == other.fWhichFgColor + && fWhichBgColor == other.fWhichBgColor + && fWhichStrikeOutColor == other.fWhichStrikeOutColor + && fWhichUnderlineColor == other.fWhichUnderlineColor + && fFgColor == other.fFgColor && fBgColor == other.fBgColor && fStrikeOutColor == other.fStrikeOutColor @@ -179,6 +194,21 @@ CharacterStyleData::SetGlyphSpacing(float glyphSpacing) } +CharacterStyleDataRef +CharacterStyleData::SetForegroundColor(color_which which) +{ + if (fWhichFgColor == which) + return CharacterStyleDataRef(this); + + CharacterStyleData* ret = new(std::nothrow) CharacterStyleData(*this); + if (ret == NULL) + return CharacterStyleDataRef(this); + + ret->fWhichFgColor = which; + return CharacterStyleDataRef(ret, true); +} + + CharacterStyleDataRef CharacterStyleData::SetForegroundColor(rgb_color color) { @@ -190,6 +220,22 @@ CharacterStyleData::SetForegroundColor(rgb_color color) return CharacterStyleDataRef(this); ret->fFgColor = color; + ret->fWhichFgColor = B_NO_COLOR; + return CharacterStyleDataRef(ret, true); +} + + +CharacterStyleDataRef +CharacterStyleData::SetBackgroundColor(color_which which) +{ + if (fWhichBgColor == which) + return CharacterStyleDataRef(this); + + CharacterStyleData* ret = new(std::nothrow) CharacterStyleData(*this); + if (ret == NULL) + return CharacterStyleDataRef(this); + + ret->fWhichBgColor = which; return CharacterStyleDataRef(ret, true); } @@ -205,6 +251,22 @@ CharacterStyleData::SetBackgroundColor(rgb_color color) return CharacterStyleDataRef(this); ret->fBgColor = color; + ret->fWhichBgColor = B_NO_COLOR; + return CharacterStyleDataRef(ret, true); +} + + +CharacterStyleDataRef +CharacterStyleData::SetStrikeOutColor(color_which which) +{ + if (fWhichStrikeOutColor == which) + return CharacterStyleDataRef(this); + + CharacterStyleData* ret = new(std::nothrow) CharacterStyleData(*this); + if (ret == NULL) + return CharacterStyleDataRef(this); + + ret->fWhichStrikeOutColor = which; return CharacterStyleDataRef(ret, true); } @@ -220,6 +282,22 @@ CharacterStyleData::SetStrikeOutColor(rgb_color color) return CharacterStyleDataRef(this); ret->fStrikeOutColor = color; + ret->fWhichStrikeOutColor = B_NO_COLOR; + return CharacterStyleDataRef(ret, true); +} + + +CharacterStyleDataRef +CharacterStyleData::SetUnderlineColor(color_which which) +{ + if (fWhichUnderlineColor == which) + return CharacterStyleDataRef(this); + + CharacterStyleData* ret = new(std::nothrow) CharacterStyleData(*this); + if (ret == NULL) + return CharacterStyleDataRef(this); + + ret->fWhichUnderlineColor = which; return CharacterStyleDataRef(ret, true); } @@ -235,6 +313,7 @@ CharacterStyleData::SetUnderlineColor(rgb_color color) return CharacterStyleDataRef(this); ret->fUnderlineColor = color; + ret->fWhichUnderlineColor = B_NO_COLOR; return CharacterStyleDataRef(ret, true); } diff --git a/src/apps/haikudepot/textview/CharacterStyleData.h b/src/apps/haikudepot/textview/CharacterStyleData.h index ad58241fe9..81439457f2 100644 --- a/src/apps/haikudepot/textview/CharacterStyleData.h +++ b/src/apps/haikudepot/textview/CharacterStyleData.h @@ -68,21 +68,33 @@ public: inline float GlyphSpacing() const { return fGlyphSpacing; } + CharacterStyleDataRef SetForegroundColor(color_which which); CharacterStyleDataRef SetForegroundColor(rgb_color color); inline rgb_color ForegroundColor() const { return fFgColor; } + inline color_which WhichForegroundColor() const + { return fWhichFgColor; } + CharacterStyleDataRef SetBackgroundColor(color_which which); CharacterStyleDataRef SetBackgroundColor(rgb_color color); inline rgb_color BackgroundColor() const { return fBgColor; } + inline color_which WhichBackgroundColor() const + { return fWhichBgColor; } + CharacterStyleDataRef SetStrikeOutColor(color_which which); CharacterStyleDataRef SetStrikeOutColor(rgb_color color); inline rgb_color StrikeOutColor() const { return fStrikeOutColor; } + inline color_which WhichStrikeOutColor() const + { return fWhichStrikeOutColor; } + CharacterStyleDataRef SetUnderlineColor(color_which which); CharacterStyleDataRef SetUnderlineColor(rgb_color color); inline rgb_color UnderlineColor() const { return fUnderlineColor; } + inline color_which WhichUnderlineColor() const + { return fWhichUnderlineColor; } CharacterStyleDataRef SetStrikeOut(uint8 strikeOut); inline uint8 StrikeOut() const @@ -92,6 +104,7 @@ public: inline uint8 Underline() const { return fUnderlineStyle; } + private: CharacterStyleData& operator=(const CharacterStyleData& other); @@ -112,6 +125,12 @@ private: // Additional spacing to be applied between glyphs. float fGlyphSpacing; + color_which fWhichFgColor; + color_which fWhichBgColor; + + color_which fWhichStrikeOutColor; + color_which fWhichUnderlineColor; + rgb_color fFgColor; rgb_color fBgColor; @@ -123,5 +142,4 @@ private: }; - #endif // CHARACTER_STYLE_DATA_H diff --git a/src/apps/haikudepot/textview/ParagraphLayout.cpp b/src/apps/haikudepot/textview/ParagraphLayout.cpp index 864bd16526..09341eda5f 100644 --- a/src/apps/haikudepot/textview/ParagraphLayout.cpp +++ b/src/apps/haikudepot/textview/ParagraphLayout.cpp @@ -261,7 +261,7 @@ ParagraphLayout::Draw(BView* view, const BPoint& offset) const Bullet& bullet = fParagraphStyle.Bullet(); if (bullet.Spacing() > 0.0f && bullet.String().Length() > 0) { // Draw bullet at offset - view->SetHighColor(0, 0, 0, 255); + view->SetHighUIColor(B_PANEL_TEXT_COLOR); BPoint bulletPos(offset); bulletPos.x += fParagraphStyle.FirstLineInset() + fParagraphStyle.LineInset(); @@ -934,7 +934,11 @@ ParagraphLayout::_DrawSpan(BView* view, BPoint offset, const CharacterStyle& style = span.Style(); view->SetFont(&style.Font()); - view->SetHighColor(style.ForegroundColor()); + + if (style.WhichForegroundColor() != B_NO_COLOR) + view->SetHighUIColor(style.WhichForegroundColor()); + else + view->SetHighColor(style.ForegroundColor()); // TODO: Implement other style properties diff --git a/src/apps/haikudepot/textview/TextDocumentView.cpp b/src/apps/haikudepot/textview/TextDocumentView.cpp index 1584d24cf3..7eba3e681f 100644 --- a/src/apps/haikudepot/textview/TextDocumentView.cpp +++ b/src/apps/haikudepot/textview/TextDocumentView.cpp @@ -41,8 +41,8 @@ TextDocumentView::TextDocumentView(const char* name) // Set default TextEditor SetTextEditor(TextEditorRef(new(std::nothrow) TextEditor(), true)); - SetViewColor(B_TRANSPARENT_COLOR); - SetLowColor(255, 255, 255, 255); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); + SetLowUIColor(ViewUIColor()); } diff --git a/src/apps/haikudepot/textview/TextView.cpp b/src/apps/haikudepot/textview/TextView.cpp index ee806cc08e..e4eb46c7e0 100644 --- a/src/apps/haikudepot/textview/TextView.cpp +++ b/src/apps/haikudepot/textview/TextView.cpp @@ -10,9 +10,6 @@ TextView::TextView(const char* name) : BView(name, B_WILL_DRAW | B_FULL_UPDATE_ON_RESIZE | B_FRAME_EVENTS) { - SetViewColor(B_TRANSPARENT_COLOR); - SetLowColor(ui_color(B_PANEL_BACKGROUND_COLOR)); - BFont font; GetFont(&font); @@ -41,9 +38,7 @@ TextView::Draw(BRect updateRect) void TextView::AttachedToWindow() { - BView* parent = Parent(); - if (parent != NULL) - SetLowColor(parent->ViewColor()); + AdoptParentColors(); } diff --git a/src/apps/haikudepot/ui/FeaturedPackagesView.cpp b/src/apps/haikudepot/ui/FeaturedPackagesView.cpp index fc3e33eb05..ffbb823b56 100644 --- a/src/apps/haikudepot/ui/FeaturedPackagesView.cpp +++ b/src/apps/haikudepot/ui/FeaturedPackagesView.cpp @@ -44,7 +44,8 @@ public: new(std::nothrow) OnePackageMessagePackageListener(this)), fSelected(false) { - SetViewColor(255, 255, 255); + SetViewUIColor(B_LIST_BACKGROUND_COLOR); + SetHighUIColor(B_LIST_ITEM_TEXT_COLOR); SetEventMask(B_POINTER_EVENTS); fIconView = new BitmapView("package icon view"); @@ -67,25 +68,27 @@ public: font.SetSize(std::max(9.0f, floorf(font.Size() * 0.92f))); font.SetFamilyAndStyle(family, "Italic"); fPublisherView->SetFont(&font); - fPublisherView->SetHighColor(kLightBlack); // Summary text view - fSummaryView = new MarkupTextView("package summary"); - fSummaryView->SetSelectionEnabled(false); + fSummaryView = new BTextView("package summary"); + fSummaryView->MakeSelectable(false); + fSummaryView->MakeEditable(false); + font = BFont(be_plain_font); + rgb_color color = HighColor(); + fSummaryView->SetFontAndColor(&font, B_FONT_ALL, &color); // Rating view fRatingView = new RatingView("package rating view"); fAvgRating = new BStringView("package average rating", ""); fAvgRating->SetFont(&font); - fAvgRating->SetHighColor(kLightBlack); fVoteInfo = new BStringView("package vote info", ""); // small font GetFont(&font); font.SetSize(std::max(9.0f, floorf(font.Size() * 0.85f))); fVoteInfo->SetFont(&font); - fVoteInfo->SetHighColor(kLightBlack); + fVoteInfo->SetHighUIColor(HighUIColor()); BLayoutBuilder::Group<>(this) .Add(fIconView) @@ -119,6 +122,15 @@ public: delete fPackageListener; } + virtual void AllAttached() + { + for (int32 index = 0; index < CountChildren(); ++index) { + ChildAt(index)->SetViewUIColor(ViewUIColor()); + ChildAt(index)->SetLowUIColor(ViewUIColor()); + ChildAt(index)->SetHighUIColor(HighUIColor()); + } + } + virtual void MessageReceived(BMessage* message) { switch (message->what) { @@ -129,6 +141,13 @@ public: case MSG_UPDATE_PACKAGE: SetPackage(fPackageListener->Package()); break; + + case B_COLORS_UPDATED: + { + if (message->HasColor(ui_color_name(B_LIST_ITEM_TEXT_COLOR))) + _UpdateColors(); + break; + } } } @@ -227,11 +246,18 @@ public: return; fSelected = selected; - rgb_color bgColor; - if (fSelected) - bgColor = ui_color(B_LIST_SELECTED_BACKGROUND_COLOR); - else - bgColor = (rgb_color){ 255, 255, 255, 255 }; + _UpdateColors(); + } + + void _UpdateColors() + { + color_which bgColor = B_LIST_BACKGROUND_COLOR; + color_which textColor = B_LIST_ITEM_TEXT_COLOR; + + if (fSelected) { + bgColor = B_LIST_SELECTED_BACKGROUND_COLOR; + textColor = B_LIST_SELECTED_ITEM_TEXT_COLOR; + } List views; @@ -248,10 +274,15 @@ public: for (int32 i = 0; i < views.CountItems(); i++) { BView* view = views.ItemAtFast(i); - view->SetViewColor(bgColor); - view->SetLowColor(bgColor); + view->SetViewUIColor(bgColor); + view->SetLowUIColor(bgColor); + view->SetHighUIColor(textColor); view->Invalidate(); } + + BFont font(be_plain_font); + rgb_color color = HighColor(); + fSummaryView->SetFontAndColor(&font, B_FONT_ALL, &color); } private: @@ -263,7 +294,7 @@ private: BStringView* fTitleView; BStringView* fPublisherView; - MarkupTextView* fSummaryView; + BTextView* fSummaryView; RatingView* fRatingView; BStringView* fAvgRating; @@ -286,7 +317,7 @@ FeaturedPackagesView::FeaturedPackagesView() SetLayout(layout); ScrollableGroupView* containerView = new ScrollableGroupView(); - containerView->SetViewColor(255, 255, 255); + containerView->SetViewUIColor(B_LIST_BACKGROUND_COLOR); fPackageListLayout = containerView->GroupLayout(); BScrollView* scrollView = new BScrollView( diff --git a/src/apps/haikudepot/ui/PackageInfoView.cpp b/src/apps/haikudepot/ui/PackageInfoView.cpp index aab0cf505b..4b4e86af8e 100644 --- a/src/apps/haikudepot/ui/PackageInfoView.cpp +++ b/src/apps/haikudepot/ui/PackageInfoView.cpp @@ -14,6 +14,7 @@ #include #include #include +#include #include #include #include @@ -127,9 +128,8 @@ public: BView("diagram bar view", B_WILL_DRAW), fValue(0.0f) { - SetViewColor(B_TRANSPARENT_COLOR); - SetLowColor(ui_color(B_PANEL_BACKGROUND_COLOR)); - SetHighColor(tint_color(LowColor(), B_DARKEN_2_TINT)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR, kContentTint); + SetHighUIColor(B_CONTROL_MARK_COLOR); } virtual ~DiagramBarView() @@ -138,11 +138,6 @@ public: virtual void AttachedToWindow() { - BView* parent = Parent(); - if (parent != NULL) { - SetLowColor(parent->ViewColor()); - SetHighColor(tint_color(LowColor(), B_DARKEN_2_TINT)); - } } virtual void Draw(BRect updateRect) @@ -325,7 +320,7 @@ public: fRatingLayout = new BCardLayout(); ratingStack->SetLayout(fRatingLayout); ratingStack->SetExplicitMaxSize(BSize(B_SIZE_UNLIMITED, B_SIZE_UNSET)); - ratingStack->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + ratingStack->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); BGroupView* ratingGroup = new BGroupView(B_HORIZONTAL, B_USE_SMALL_SPACING); @@ -471,7 +466,7 @@ public: fStatusLabel(NULL), fStatusBar(NULL) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); SetLayout(fLayout); fLayout->AddItem(BSpaceLayoutItem::CreateGlue()); @@ -684,11 +679,10 @@ public: fEmailIcon("text/x-email"), fWebsiteIcon("text/html") { - SetViewColor(tint_color(ui_color(B_PANEL_BACKGROUND_COLOR), - kContentTint)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR, kContentTint); fDescriptionView = new MarkupTextView("description view"); - fDescriptionView->SetLowColor(ViewColor()); + fDescriptionView->SetViewUIColor(ViewUIColor(), kContentTint); fDescriptionView->SetInsets(be_plain_font->Size()); BScrollView* scrollView = new CustomScrollView( @@ -714,17 +708,20 @@ public: fEmailIconView = new BitmapView("email icon view"); fEmailLinkView = new LinkView("email link view", "", - new BMessage(MSG_EMAIL_PUBLISHER), kLightBlack); + new BMessage(MSG_EMAIL_PUBLISHER)); fEmailLinkView->SetFont(&smallFont); fWebsiteIconView = new BitmapView("website icon view"); fWebsiteLinkView = new LinkView("website link view", "", - new BMessage(MSG_VISIT_PUBLISHER_WEBSITE), kLightBlack); + new BMessage(MSG_VISIT_PUBLISHER_WEBSITE)); fWebsiteLinkView->SetFont(&smallFont); BGroupView* leftGroup = new BGroupView(B_VERTICAL, B_USE_DEFAULT_SPACING); - leftGroup->SetViewColor(ViewColor()); + + fScreenshotView->SetViewUIColor(ViewUIColor(), kContentTint); + fEmailLinkView->SetViewUIColor(ViewUIColor(), kContentTint); + fWebsiteLinkView->SetViewUIColor(ViewUIColor(), kContentTint); BLayoutBuilder::Group<>(this, B_HORIZONTAL, 0.0f) // .Add(BSpaceLayoutItem::CreateHorizontalStrut(32.0f)) @@ -760,6 +757,14 @@ public: fWebsiteLinkView->SetTarget(this); } + virtual void AllAttached() + { + SetViewUIColor(B_PANEL_BACKGROUND_COLOR, kContentTint); + + for (int32 index = 0; index < CountChildren(); ++index) + ChildAt(index)->AdoptParentColors(); + } + virtual void MessageReceived(BMessage* message) { switch (message->what) { @@ -867,8 +872,7 @@ public: : BGroupView(B_HORIZONTAL, 0.0f) { - SetViewColor(tint_color(ui_color(B_PANEL_BACKGROUND_COLOR), - kContentTint)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR, kContentTint); fAvatarView = new BitmapView("avatar view"); if (rating.User().Avatar().Get() != NULL) { @@ -878,10 +882,10 @@ public: fAvatarView->SetExplicitMinSize(BSize(16.0f, 16.0f)); fNameView = new BStringView("user name", rating.User().NickName()); + BFont nameFont(be_bold_font); nameFont.SetSize(std::max(9.0f, floorf(nameFont.Size() * 0.9f))); fNameView->SetFont(&nameFont); - fNameView->SetHighColor(kLightBlack); fNameView->SetExplicitMaxSize( BSize(nameFont.StringWidth("xxxxxxxxxxxxxxxxxxxxxx"), B_SIZE_UNSET)); @@ -900,7 +904,6 @@ public: BFont versionFont(be_plain_font); versionFont.SetSize(std::max(9.0f, floorf(versionFont.Size() * 0.85f))); fPackageVersionView->SetFont(&versionFont); - fPackageVersionView->SetHighColor(kLightBlack); // TODO: User rating IDs to identify which rating to vote up or down // BMessage* voteUpMessage = new BMessage(MSG_VOTE_UP); @@ -928,7 +931,6 @@ public: // fDownVoteCountView->SetText(voteCountLabel); fTextView = new TextView("rating text"); - fTextView->SetViewColor(ViewColor()); ParagraphStyle paragraphStyle(fTextView->ParagraphStyle()); paragraphStyle.SetJustify(true); fTextView->SetParagraphStyle(paragraphStyle); @@ -957,6 +959,21 @@ public: .End() .SetInsets(B_USE_DEFAULT_SPACING) ; + + SetFlags(Flags() | B_WILL_DRAW); + } + + void AllAttached() + { + for (int32 index = 0; index < CountChildren(); ++index) + ChildAt(index)->AdoptParentColors(); + } + + void Draw(BRect rect) + { + rgb_color color = mix_color(ViewColor(), ui_color(B_PANEL_TEXT_COLOR), 64); + SetHighColor(color); + StrokeLine(Bounds().LeftBottom(), Bounds().RightBottom()); } private: @@ -981,8 +998,8 @@ public: : BGridView("rating summary view", B_USE_HALF_ITEM_SPACING, 0.0f) { - SetViewColor(tint_color(ui_color(B_PANEL_BACKGROUND_COLOR), - kContentTint - 0.1)); + float tint = kContentTint - 0.1; + SetViewUIColor(B_PANEL_BACKGROUND_COLOR, tint); BLayoutBuilder::Grid<> layoutBuilder(this); @@ -995,7 +1012,7 @@ public: label.SetToFormat("%" B_PRId32, 5 - i); fLabelViews[i] = new BStringView("", label); fLabelViews[i]->SetFont(&smallFont); - fLabelViews[i]->SetHighColor(kLightBlack); + fLabelViews[i]->SetViewUIColor(ViewUIColor(), tint); layoutBuilder.Add(fLabelViews[i], 0, i); fDiagramBarViews[i] = new DiagramBarView(); @@ -1003,7 +1020,7 @@ public: fCountViews[i] = new BStringView("", ""); fCountViews[i]->SetFont(&smallFont); - fCountViews[i]->SetHighColor(kLightBlack); + fCountViews[i]->SetViewUIColor(ViewUIColor(), tint); fCountViews[i]->SetAlignment(B_ALIGN_RIGHT); layoutBuilder.Add(fCountViews[i], 2, i); } @@ -1049,14 +1066,13 @@ public: fThumbsUpIcon(BitmapRef(new SharedBitmap(502), true)), fThumbsDownIcon(BitmapRef(new SharedBitmap(503), true)) { - SetViewColor(tint_color(ui_color(B_PANEL_BACKGROUND_COLOR), - kContentTint)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR, kContentTint); fRatingSummaryView = new RatingSummaryView(); ScrollableGroupView* ratingsContainerView = new ScrollableGroupView(); - ratingsContainerView->SetViewColor( - tint_color(ui_color(B_PANEL_BACKGROUND_COLOR), kContentTint)); + ratingsContainerView->SetViewUIColor(B_PANEL_BACKGROUND_COLOR, + kContentTint); fRatingContainerLayout = ratingsContainerView->GroupLayout(); BScrollView* scrollView = new RatingsScrollView( @@ -1093,8 +1109,10 @@ public: if (count == 0) { BStringView* noRatingsView = new BStringView("no ratings", B_TRANSLATE("No user ratings available.")); + noRatingsView->SetViewUIColor(ViewUIColor(), kContentTint); noRatingsView->SetAlignment(B_ALIGN_CENTER); - noRatingsView->SetHighColor(kLightBlack); + noRatingsView->SetHighColor(disable_color(ui_color(B_PANEL_TEXT_COLOR), + ViewColor())); noRatingsView->SetExplicitMaxSize( BSize(B_SIZE_UNLIMITED, B_SIZE_UNLIMITED)); fRatingContainerLayout->AddView(0, noRatingsView); @@ -1178,8 +1196,7 @@ public: : BGroupView("package contents view", B_HORIZONTAL) { - SetViewColor(tint_color(ui_color(B_PANEL_BACKGROUND_COLOR), - kContentTint)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR, kContentTint); fPackageContents = new PackageContentsView("contents_list"); AddChild(fPackageContents); @@ -1218,11 +1235,10 @@ public: : BGroupView("package changelog view", B_HORIZONTAL) { - SetViewColor(tint_color(ui_color(B_PANEL_BACKGROUND_COLOR), - kContentTint)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR, kContentTint); fTextView = new MarkupTextView("changelog view"); - fTextView->SetLowColor(ViewColor()); + fTextView->SetLowUIColor(ViewUIColor()); fTextView->SetInsets(be_plain_font->Size()); BScrollView* scrollView = new CustomScrollView( diff --git a/src/apps/haikudepot/ui/PackageListView.cpp b/src/apps/haikudepot/ui/PackageListView.cpp index 3ef7c39b10..4972d56281 100644 --- a/src/apps/haikudepot/ui/PackageListView.cpp +++ b/src/apps/haikudepot/ui/PackageListView.cpp @@ -632,10 +632,9 @@ public: font.SetSize(9.0f); SetFont(&font); - SetViewColor(B_TRANSPARENT_COLOR); - SetLowColor(ui_color(B_PANEL_BACKGROUND_COLOR)); - - SetHighColor(tint_color(LowColor(), B_DARKEN_4_TINT)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); + SetLowUIColor(ViewUIColor()); + SetHighUIColor(LowUIColor(), B_DARKEN_4_TINT); } virtual BSize MinSize() diff --git a/src/apps/haikudepot/ui_generic/BitmapView.cpp b/src/apps/haikudepot/ui_generic/BitmapView.cpp index 0bb85976ed..e00e122701 100644 --- a/src/apps/haikudepot/ui_generic/BitmapView.cpp +++ b/src/apps/haikudepot/ui_generic/BitmapView.cpp @@ -18,8 +18,6 @@ BitmapView::BitmapView(const char* name) fBitmap(NULL), fScaleBitmap(true) { - SetViewColor(B_TRANSPARENT_COLOR); - SetLowColor(ui_color(B_PANEL_BACKGROUND_COLOR)); } @@ -29,15 +27,9 @@ BitmapView::~BitmapView() void -BitmapView::AttachedToWindow() +BitmapView::AllAttached() { - BView* parent = Parent(); - if (parent != NULL) { - rgb_color color = parent->ViewColor(); - if (color == B_TRANSPARENT_COLOR) - color = parent->LowColor(); - SetLowColor(color); - } + AdoptParentColors(); } diff --git a/src/apps/haikudepot/ui_generic/BitmapView.h b/src/apps/haikudepot/ui_generic/BitmapView.h index 327f35fa14..d2a706c9fb 100644 --- a/src/apps/haikudepot/ui_generic/BitmapView.h +++ b/src/apps/haikudepot/ui_generic/BitmapView.h @@ -17,7 +17,7 @@ public: virtual ~BitmapView(); - virtual void AttachedToWindow(); + virtual void AllAttached(); virtual void Draw(BRect updateRect); virtual BSize MinSize(); diff --git a/src/apps/haikudepot/ui_generic/LinkView.cpp b/src/apps/haikudepot/ui_generic/LinkView.cpp index 5d337fce58..1196a6776f 100644 --- a/src/apps/haikudepot/ui_generic/LinkView.cpp +++ b/src/apps/haikudepot/ui_generic/LinkView.cpp @@ -10,18 +10,21 @@ #include -LinkView::LinkView(const char* name, const char* string, BMessage* message, - rgb_color color) +LinkView::LinkView(const char* name, const char* string, BMessage* message) : BStringView(name, string), BInvoker(message, NULL), - fNormalColor(color), - fHoverColor(make_color(1, 141, 211)), fEnabled(true), fMouseInside(false) { SetExplicitMaxSize(BSize(B_SIZE_UNLIMITED, B_SIZE_UNSET)); SetExplicitMinSize(BSize(120, B_SIZE_UNSET)); +} + + +void +LinkView::AttachedToWindow() +{ _UpdateLinkColor(); } @@ -55,7 +58,7 @@ LinkView::Draw(BRect updateRect) if (Text() == NULL) return; - SetLowColor(ViewColor()); + SetDrawingMode(B_OP_ALPHA); font_height fontHeight; GetFontHeight(&fontHeight); @@ -82,18 +85,34 @@ LinkView::SetEnabled(bool enabled) } +void +LinkView::MessageReceived(BMessage* message) +{ + if (message->what == B_COLORS_UPDATED) + _UpdateLinkColor(); + + BStringView::MessageReceived(message); +} + + void LinkView::_UpdateLinkColor() { - if (fEnabled && fMouseInside) { - SetHighColor(fHoverColor); - BCursor cursor(B_CURSOR_ID_FOLLOW_LINK); - SetViewCursor(&cursor, true); - Invalidate(); - } else { - SetHighColor(fNormalColor); - BCursor cursor(B_CURSOR_SYSTEM_DEFAULT); - SetViewCursor(&cursor, true); - Invalidate(); - } + BCursorID cursorID = B_CURSOR_ID_SYSTEM_DEFAULT; + + float tint = B_DARKEN_1_TINT; + ViewUIColor(&tint); + + if (fEnabled) { + if (fMouseInside) { + cursorID = B_CURSOR_ID_FOLLOW_LINK; + SetHighUIColor(B_LINK_HOVER_COLOR, tint); + } else + SetHighUIColor(B_LINK_TEXT_COLOR, tint); + } else + SetHighColor(disable_color(ui_color(B_LINK_TEXT_COLOR), ViewColor())); + + BCursor cursor(cursorID); + SetViewCursor(&cursor, true); + Invalidate(); } diff --git a/src/apps/haikudepot/ui_generic/LinkView.h b/src/apps/haikudepot/ui_generic/LinkView.h index 059b954c7c..9e344b8db6 100644 --- a/src/apps/haikudepot/ui_generic/LinkView.h +++ b/src/apps/haikudepot/ui_generic/LinkView.h @@ -13,7 +13,9 @@ class LinkView : public BStringView, public BInvoker { public: LinkView(const char* name, const char* string, - BMessage* message, rgb_color color); + BMessage* message); + + virtual void AttachedToWindow(); virtual void MouseMoved(BPoint where, uint32 transit, const BMessage* dragMessage); @@ -21,14 +23,13 @@ public: virtual void Draw(BRect updateRect); + virtual void MessageReceived(BMessage* message); void SetEnabled(bool enabled); private: void _UpdateLinkColor(); private: - rgb_color fNormalColor; - rgb_color fHoverColor; bool fEnabled; bool fMouseInside; diff --git a/src/apps/haikudepot/ui_generic/LinkedBitmapView.cpp b/src/apps/haikudepot/ui_generic/LinkedBitmapView.cpp index 50eaccdcbe..c8ddea6ea4 100644 --- a/src/apps/haikudepot/ui_generic/LinkedBitmapView.cpp +++ b/src/apps/haikudepot/ui_generic/LinkedBitmapView.cpp @@ -19,6 +19,13 @@ LinkedBitmapView::LinkedBitmapView(const char* name, BMessage* message) } +void +LinkedBitmapView::AllAttached() +{ + // We don't want to use BitmapView's default behavior here. +} + + void LinkedBitmapView::MouseMoved(BPoint where, uint32 transit, const BMessage* dragMessage) diff --git a/src/apps/haikudepot/ui_generic/LinkedBitmapView.h b/src/apps/haikudepot/ui_generic/LinkedBitmapView.h index 5d4c62f0c5..d206eb559e 100644 --- a/src/apps/haikudepot/ui_generic/LinkedBitmapView.h +++ b/src/apps/haikudepot/ui_generic/LinkedBitmapView.h @@ -16,6 +16,8 @@ public: LinkedBitmapView(const char* name, BMessage* message); + virtual void AllAttached(); + virtual void MouseMoved(BPoint where, uint32 transit, const BMessage* dragMessage); virtual void MouseDown(BPoint where); diff --git a/src/apps/haikudepot/ui_generic/RatingView.cpp b/src/apps/haikudepot/ui_generic/RatingView.cpp index aab3174863..bd733103c0 100644 --- a/src/apps/haikudepot/ui_generic/RatingView.cpp +++ b/src/apps/haikudepot/ui_generic/RatingView.cpp @@ -17,8 +17,8 @@ RatingView::RatingView(const char* name) fStarBitmap(501), fRating(-1.0f) { - SetViewColor(B_TRANSPARENT_COLOR); - SetLowColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); + SetLowUIColor(ViewUIColor()); } @@ -30,9 +30,7 @@ RatingView::~RatingView() void RatingView::AttachedToWindow() { - BView* parent = Parent(); - if (parent != NULL) - SetLowColor(parent->ViewColor()); + AdoptParentColors(); } diff --git a/src/apps/icon-o-matic/MainWindow.cpp b/src/apps/icon-o-matic/MainWindow.cpp index 9f2dee2d22..1146a19204 100644 --- a/src/apps/icon-o-matic/MainWindow.cpp +++ b/src/apps/icon-o-matic/MainWindow.cpp @@ -967,7 +967,7 @@ MainWindow::_CreateGUI() layout->SetSpacing(0, 0); BView* rootView = new BView("root view", 0, layout); AddChild(rootView); - rootView->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + rootView->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); BGroupView* leftTopView = new BGroupView(B_VERTICAL, 0); layout->AddView(leftTopView, 0, 0); @@ -982,7 +982,7 @@ MainWindow::_CreateGUI() leftTopView->SetExplicitMinSize(BSize(splitWidth, B_SIZE_UNSET)); BGroupView* iconPreviews = new BGroupView(B_HORIZONTAL); - iconPreviews->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + iconPreviews->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); iconPreviews->GroupLayout()->SetSpacing(5); // icon previews @@ -1003,14 +1003,14 @@ MainWindow::_CreateGUI() BGroupView* smallPreviews = new BGroupView(B_VERTICAL); - smallPreviews->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + smallPreviews->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); smallPreviews->GroupLayout()->SetSpacing(5); smallPreviews->AddChild(fIconPreview16Folder); smallPreviews->AddChild(fIconPreview16Menu); BGroupView* mediumPreviews = new BGroupView(B_VERTICAL); - mediumPreviews->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + mediumPreviews->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); mediumPreviews->GroupLayout()->SetSpacing(5); mediumPreviews->AddChild(fIconPreview32Folder); diff --git a/src/apps/icon-o-matic/generic/gui/Group.cpp b/src/apps/icon-o-matic/generic/gui/Group.cpp index fb0d5209f2..f8c3cf368b 100644 --- a/src/apps/icon-o-matic/generic/gui/Group.cpp +++ b/src/apps/icon-o-matic/generic/gui/Group.cpp @@ -17,7 +17,7 @@ Group::Group(BRect frame, const char* name, orientation direction) fInset(4.0), fSpacing(0.0) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); } // destructor diff --git a/src/apps/icon-o-matic/generic/gui/panel/color_picker/ColorPickerView.cpp b/src/apps/icon-o-matic/generic/gui/panel/color_picker/ColorPickerView.cpp index 2b83786ef1..a7be54ee56 100644 --- a/src/apps/icon-o-matic/generic/gui/panel/color_picker/ColorPickerView.cpp +++ b/src/apps/icon-o-matic/generic/gui/panel/color_picker/ColorPickerView.cpp @@ -47,7 +47,7 @@ ColorPickerView::ColorPickerView(const char* name, rgb_color color, b((float)color.blue / 255.0), fRequiresUpdate(false) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); RGB_to_HSV(r, g, b, h, s, v); diff --git a/src/apps/icon-o-matic/gui/StyleView.cpp b/src/apps/icon-o-matic/gui/StyleView.cpp index e0229a8fc3..9aa1bb2ce0 100644 --- a/src/apps/icon-o-matic/gui/StyleView.cpp +++ b/src/apps/icon-o-matic/gui/StyleView.cpp @@ -62,7 +62,7 @@ StyleView::StyleView(BRect frame) fIgnoreControlGradientNotifications(false), fPreviousBounds(frame.OffsetToCopy(B_ORIGIN)) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); // style type BMenu* menu = new BPopUpMenu(B_TRANSLATE("")); diff --git a/src/apps/icon-o-matic/gui/SwatchGroup.cpp b/src/apps/icon-o-matic/gui/SwatchGroup.cpp index 6ddfaf9a80..ab444e630d 100644 --- a/src/apps/icon-o-matic/gui/SwatchGroup.cpp +++ b/src/apps/icon-o-matic/gui/SwatchGroup.cpp @@ -133,7 +133,7 @@ SwatchGroup::SwatchGroup(BRect frame) // configure self ResizeTo(width, fAlphaSlider->Frame().bottom + 4); - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); // add views AddChild(fCurrentColorSV); diff --git a/src/apps/installedpackages/UninstallView.cpp b/src/apps/installedpackages/UninstallView.cpp index f831f85519..a6c6e6d97e 100644 --- a/src/apps/installedpackages/UninstallView.cpp +++ b/src/apps/installedpackages/UninstallView.cpp @@ -270,7 +270,7 @@ UninstallView::MessageReceived(BMessage* msg) void UninstallView::_InitView() { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); fAppList = new BListView("pkg_list", B_SINGLE_SELECTION_LIST); fAppList->SetSelectionMessage(new BMessage(P_MSG_SELECT)); @@ -284,7 +284,7 @@ UninstallView::_InitView() fDescription = new BTextView("description", B_WILL_DRAW); fDescription->MakeSelectable(false); fDescription->MakeEditable(false); - fDescription->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + fDescription->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); fDescription->SetText(fNoPackageSelectedString); fButton = new BButton("removal", B_TRANSLATE("Remove"), diff --git a/src/apps/installer/InstallerWindow.cpp b/src/apps/installer/InstallerWindow.cpp index 36564210eb..eb36bf3cce 100644 --- a/src/apps/installer/InstallerWindow.cpp +++ b/src/apps/installer/InstallerWindow.cpp @@ -173,6 +173,7 @@ InstallerWindow::InstallerWindow() fStatusView = new BTextView("statusView", be_plain_font, NULL, B_WILL_DRAW); + fStatusView->SetViewColor(255, 255, 255, 255); fStatusView->SetInsets(10, 0, 10, 0); fStatusView->MakeEditable(false); fStatusView->MakeSelectable(false); diff --git a/src/apps/login/LoginApp.cpp b/src/apps/login/LoginApp.cpp index abf2d90973..d3a5dcc33e 100644 --- a/src/apps/login/LoginApp.cpp +++ b/src/apps/login/LoginApp.cpp @@ -61,7 +61,8 @@ LoginApp::ReadyToRun() alert->SetFlags(alert->Flags() | B_CLOSE_ON_ESCAPE); alert->Go(NULL); } else { - BRect frame(0, 0, 450, 150); + float sizeDelta = (float)be_plain_font->Size()/12.0f; + BRect frame(0, 0, 450 * sizeDelta, 150 * sizeDelta); frame.OffsetBySelf(screen.Frame().Width()/2 - frame.Width()/2, screen.Frame().Height()/2 - frame.Height()/2); fLoginWindow = new LoginWindow(frame); diff --git a/src/apps/login/LoginView.cpp b/src/apps/login/LoginView.cpp index d91fd76379..b053f3d6ff 100644 --- a/src/apps/login/LoginView.cpp +++ b/src/apps/login/LoginView.cpp @@ -48,8 +48,8 @@ LoginView::LoginView(BRect frame) { // TODO: when I don't need to test in BeOS anymore, // rewrite to use layout engine. - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); - SetLowColor(ViewColor()); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); + SetLowUIColor(ViewUIColor()); BRect r; r.Set(CSEP, CSEP, LW, Bounds().Height() - 3 * CSEP - BH); fUserList = new BListView(r, "users"); @@ -85,20 +85,24 @@ LoginView::LoginView(BRect frame) fHaltButton = new BButton(buttonRect, "halt", B_TRANSLATE("Halt"), new BMessage(kHaltAction)); + fHaltButton->ResizeToPreferred(); AddChild(fHaltButton); - buttonRect.OffsetBySelf(CSEP + buttonWidth, 0); + buttonRect.OffsetBySelf(CSEP + fHaltButton->Frame().Width(), 0); fRebootButton = new BButton(buttonRect, "reboot", B_TRANSLATE("Reboot"), new BMessage(kRebootAction)); + + fRebootButton->ResizeToPreferred(); AddChild(fRebootButton); BRect infoRect(buttonRect); - infoRect.OffsetBySelf(buttonWidth + CSEP, 0); + infoRect.OffsetBySelf(fRebootButton->Frame().Width() + CSEP, 0); buttonRect.OffsetToSelf(Bounds().Width() - CSEP - buttonWidth, Bounds().Height() - CSEP - BH); fLoginButton = new BButton(buttonRect, "ok", B_TRANSLATE("OK"), new BMessage(kAttemptLogin)); + fLoginButton->ResizeToPreferred(); AddChild(fLoginButton); infoRect.right = buttonRect.left - CSEP + 5; @@ -128,6 +132,19 @@ LoginView::AttachedToWindow() fUserList->MakeFocus(); // populate user list BMessenger(this).SendMessage(kAddNextUser); + + // size window relative to buttons + BRect bounds = Window()->Bounds(); + float spacing = fHaltButton->Frame().left; + bounds.bottom = fLoginButton->Frame().bottom + spacing; + bounds.right = fLoginButton->Frame().right + spacing; + Window()->ResizeTo(bounds.Width(), bounds.Height()); + + // Center info view + BPoint leftTop = fInfoView->Frame().LeftTop(); + leftTop.y += fHaltButton->Frame().Height() / 2; + leftTop.y -= fInfoView->Bounds().Height() / 2; + fInfoView->MoveTo(leftTop); } diff --git a/src/apps/magnify/Magnify.cpp b/src/apps/magnify/Magnify.cpp index 28e5a56c16..f5bab51628 100644 --- a/src/apps/magnify/Magnify.cpp +++ b/src/apps/magnify/Magnify.cpp @@ -808,7 +808,7 @@ void TInfoView::AttachedToWindow() { BBox::AttachedToWindow(); - + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); dynamic_cast(Window())->PixelCount(&fHPixelCount, &fVPixelCount); fPixelSize = dynamic_cast(Window())->PixelSize(); @@ -1050,7 +1050,6 @@ TMagnify::TMagnify(BRect r, TWindow* parent) fParent(parent), fStickCoordinates(false) { - SetViewColor(B_TRANSPARENT_32_BIT); } @@ -1073,6 +1072,7 @@ TMagnify::AttachedToWindow() resume_thread(fThread); + SetViewColor(B_TRANSPARENT_32_BIT); MakeFocus(); } diff --git a/src/apps/mail/AddressTextControl.cpp b/src/apps/mail/AddressTextControl.cpp index 0ebe84b8b5..b3805b11a5 100644 --- a/src/apps/mail/AddressTextControl.cpp +++ b/src/apps/mail/AddressTextControl.cpp @@ -656,8 +656,8 @@ AddressTextControl::AddressTextControl(const char* name, BMessage* message) .Add(fPopUpButton); SetFlags(Flags() | B_WILL_DRAW | B_FULL_UPDATE_ON_RESIZE); - SetLowColor(ViewColor()); - SetViewColor(fTextView->ViewColor()); + SetLowUIColor(ViewUIColor()); + SetViewUIColor(fTextView->ViewUIColor()); SetExplicitAlignment(BAlignment(B_ALIGN_USE_FULL_WIDTH, B_ALIGN_VERTICAL_CENTER)); diff --git a/src/apps/mail/Content.cpp b/src/apps/mail/Content.cpp index 07ae30d63a..e03647573f 100644 --- a/src/apps/mail/Content.cpp +++ b/src/apps/mail/Content.cpp @@ -646,7 +646,7 @@ TContentView::TContentView(bool incoming, BFont* font, fFocus(false), fIncoming(incoming) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); BGroupLayout* layout = new BGroupLayout(B_VERTICAL, 0); SetLayout(layout); diff --git a/src/apps/mail/Enclosures.cpp b/src/apps/mail/Enclosures.cpp index f6ea5d0df9..25f5a492ec 100644 --- a/src/apps/mail/Enclosures.cpp +++ b/src/apps/mail/Enclosures.cpp @@ -154,7 +154,7 @@ TEnclosuresView::TEnclosuresView(BRect rect, BRect windowRect) B_WILL_DRAW), fFocus(false) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); BFont font(be_plain_font); font.SetSize(font.Size() * kPlainFontSizeScale); diff --git a/src/apps/mail/FindWindow.cpp b/src/apps/mail/FindWindow.cpp index d7b78b9405..fe60214f86 100644 --- a/src/apps/mail/FindWindow.cpp +++ b/src/apps/mail/FindWindow.cpp @@ -136,7 +136,7 @@ FindPanel::~FindPanel() void FindPanel::AttachedToWindow() { BView::AttachedToWindow(); - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); Window()->SetDefaultButton(fFindButton); fFindButton->SetTarget(this); diff --git a/src/apps/mail/Status.cpp b/src/apps/mail/Status.cpp index 7acee481a2..6911efddcc 100644 --- a/src/apps/mail/Status.cpp +++ b/src/apps/mail/Status.cpp @@ -87,7 +87,7 @@ TStatusWindow::TStatusWindow(BRect rect, BMessenger target, const char* status) fTarget(target) { BView* view = new BView(Bounds(), "", B_FOLLOW_ALL, B_WILL_DRAW); - view->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + view->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); AddChild(view); BRect r(STATUS_FIELD_H, STATUS_FIELD_V, diff --git a/src/apps/mediaplayer/InfoWin.cpp b/src/apps/mediaplayer/InfoWin.cpp index eea4e9189e..12f9e64b7d 100644 --- a/src/apps/mediaplayer/InfoWin.cpp +++ b/src/apps/mediaplayer/InfoWin.cpp @@ -153,7 +153,7 @@ IconView::AttachedToWindow() if (Parent() != NULL) SetViewColor(Parent()->ViewColor()); else - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); } diff --git a/src/apps/mediaplayer/interface/DurationView.cpp b/src/apps/mediaplayer/interface/DurationView.cpp index d5befd62dc..08c15f0287 100644 --- a/src/apps/mediaplayer/interface/DurationView.cpp +++ b/src/apps/mediaplayer/interface/DurationView.cpp @@ -31,7 +31,7 @@ void DurationView::AttachedToWindow() { BStringView::AttachedToWindow(); - SetHighColor(tint_color(ViewColor(), B_DARKEN_4_TINT)); + _UpdateTextColor(); } @@ -46,6 +46,17 @@ DurationView::MouseDown(BPoint where) } +void +DurationView::MessageReceived(BMessage* message) +{ + if (message->what == B_COLORS_UPDATED + && message->HasColor(ui_color_name(B_PANEL_TEXT_COLOR))) + _UpdateTextColor(); + + BStringView::MessageReceived(message); +} + + BSize DurationView::MinSize() { @@ -128,6 +139,13 @@ DurationView::_Update() } +void +DurationView::_UpdateTextColor() +{ + SetHighColor(mix_color(ViewColor(), ui_color(B_PANEL_TEXT_COLOR), 128)); +} + + void DurationView::_GenerateString(bigtime_t duration) { diff --git a/src/apps/mediaplayer/interface/DurationView.h b/src/apps/mediaplayer/interface/DurationView.h index 2e0ae69b2e..63e40bd497 100644 --- a/src/apps/mediaplayer/interface/DurationView.h +++ b/src/apps/mediaplayer/interface/DurationView.h @@ -17,6 +17,7 @@ public: // BStringView interface virtual void AttachedToWindow(); virtual void MouseDown(BPoint where); + virtual void MessageReceived(BMessage* message); virtual BSize MinSize(); virtual BSize MaxSize(); @@ -39,6 +40,7 @@ public: private: void _Update(); + void _UpdateTextColor(); void _GenerateString(bigtime_t duration); private: diff --git a/src/apps/networkstatus/NetworkStatusView.cpp b/src/apps/networkstatus/NetworkStatusView.cpp index c678fd48b0..2495f3b9d9 100644 --- a/src/apps/networkstatus/NetworkStatusView.cpp +++ b/src/apps/networkstatus/NetworkStatusView.cpp @@ -236,11 +236,14 @@ NetworkStatusView::AttachedToWindow() if ((Parent()->Flags() & B_DRAW_ON_CHILDREN) != 0) SetViewColor(B_TRANSPARENT_COLOR); else - SetViewColor(Parent()->ViewColor()); + AdoptParentColors(); } else - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); - SetLowColor(ViewColor()); + if (ViewUIColor() != B_NO_COLOR) + SetLowUIColor(ViewUIColor()); + else + SetLowColor(ViewColor()); start_watching_network( B_WATCH_NETWORK_INTERFACE_CHANGES | B_WATCH_NETWORK_LINK_CHANGES, this); diff --git a/src/apps/networkstatus/NetworkStatusWindow.cpp b/src/apps/networkstatus/NetworkStatusWindow.cpp index 3420b21f0a..2e4df6c01f 100644 --- a/src/apps/networkstatus/NetworkStatusWindow.cpp +++ b/src/apps/networkstatus/NetworkStatusWindow.cpp @@ -24,7 +24,7 @@ NetworkStatusWindow::NetworkStatusWindow() B_TITLED_WINDOW, B_NOT_ZOOMABLE | B_ASYNCHRONOUS_CONTROLS) { BView* topView = new BView(Bounds(), NULL, B_FOLLOW_ALL, B_WILL_DRAW); - topView->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + topView->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); AddChild(topView); SetSizeLimits(25, 265, 25, 265); diff --git a/src/apps/networkstatus/RadioView.cpp b/src/apps/networkstatus/RadioView.cpp index 972773a757..d3aa6af4da 100644 --- a/src/apps/networkstatus/RadioView.cpp +++ b/src/apps/networkstatus/RadioView.cpp @@ -118,7 +118,7 @@ RadioView::AttachedToWindow() if (Parent() != NULL) SetViewColor(Parent()->ViewColor()); else - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); } diff --git a/src/apps/overlayimage/Jamfile b/src/apps/overlayimage/Jamfile index 3e295013d6..bcbcd3438a 100644 --- a/src/apps/overlayimage/Jamfile +++ b/src/apps/overlayimage/Jamfile @@ -1,5 +1,7 @@ SubDir HAIKU_TOP src apps overlayimage ; +UsePrivateHeaders interface ; + Application OverlayImage : OverlayApp.cpp OverlayView.cpp diff --git a/src/apps/overlayimage/OverlayView.cpp b/src/apps/overlayimage/OverlayView.cpp index 8bc37bcddd..0e7c33d77b 100644 --- a/src/apps/overlayimage/OverlayView.cpp +++ b/src/apps/overlayimage/OverlayView.cpp @@ -19,6 +19,7 @@ #include #include + #undef B_TRANSLATION_CONTEXT #define B_TRANSLATION_CONTEXT "Main view" @@ -40,7 +41,9 @@ OverlayView::OverlayView(BRect frame) SetViewColor(B_TRANSPARENT_COLOR); fText = new BTextView(Bounds(), "bgView", Bounds(), B_FOLLOW_ALL, B_WILL_DRAW); - fText->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + fText->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); + rgb_color color = ui_color(B_PANEL_TEXT_COLOR); + fText->SetFontAndColor(be_plain_font, B_FONT_ALL, &color); AddChild(fText); BString text; text << B_TRANSLATE( @@ -117,7 +120,14 @@ OverlayView::MessageReceived(BMessage *msg) case B_ABOUT_REQUESTED: OverlayAboutRequested(); break; - + case B_COLORS_UPDATED: + { + rgb_color color; + if (msg->FindColor(ui_color_name(B_PANEL_TEXT_COLOR), &color) + == B_OK) + fText->SetFontAndColor(be_plain_font, B_FONT_ALL, &color); + break; + } default: BView::MessageReceived(msg); break; diff --git a/src/apps/overlayimage/OverlayWindow.cpp b/src/apps/overlayimage/OverlayWindow.cpp index ade428d5df..0b05a5ab90 100644 --- a/src/apps/overlayimage/OverlayWindow.cpp +++ b/src/apps/overlayimage/OverlayWindow.cpp @@ -32,7 +32,7 @@ OverlayWindow::OverlayWindow() AddChild(replView); BView *bgView = new BView(Bounds(), "bgView", B_FOLLOW_ALL, B_WILL_DRAW); - bgView->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + bgView->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); AddChild(bgView); } diff --git a/src/apps/packageinstaller/PackageView.cpp b/src/apps/packageinstaller/PackageView.cpp index f4c3bfb6c0..dfe5b06ddf 100644 --- a/src/apps/packageinstaller/PackageView.cpp +++ b/src/apps/packageinstaller/PackageView.cpp @@ -471,16 +471,19 @@ private: void PackageView::_InitView() { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); float fontHeight = be_plain_font->Size(); + rgb_color textColor = ui_color(B_PANEL_TEXT_COLOR); BTextView* packageDescriptionView = new DescriptionTextView( "package description", fontHeight * 13); - packageDescriptionView->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + packageDescriptionView->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); packageDescriptionView->SetText(fInfo.GetDescription()); packageDescriptionView->MakeEditable(false); packageDescriptionView->MakeSelectable(false); + packageDescriptionView->SetFontAndColor(be_plain_font, B_FONT_ALL, + &textColor); BScrollView* descriptionScrollView = new BScrollView( "package description scroll view", packageDescriptionView, @@ -500,11 +503,11 @@ PackageView::_InitView() // Left inset needs to match BMenuField text offset fInstallTypeDescriptionView->SetText( B_TRANSLATE("No installation type selected")); - fInstallTypeDescriptionView->SetViewColor( - ui_color(B_PANEL_BACKGROUND_COLOR)); + fInstallTypeDescriptionView->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); BFont font(be_plain_font); font.SetSize(ceilf(font.Size() * 0.85)); - fInstallTypeDescriptionView->SetFontAndColor(&font); + fInstallTypeDescriptionView->SetFontAndColor(&font, B_FONT_ALL, + &textColor); BScrollView* installTypeScrollView = new BScrollView( "install type description scroll view", fInstallTypeDescriptionView, diff --git a/src/apps/pairs/PairsView.cpp b/src/apps/pairs/PairsView.cpp index 273eb08166..47534704ea 100644 --- a/src/apps/pairs/PairsView.cpp +++ b/src/apps/pairs/PairsView.cpp @@ -54,7 +54,7 @@ PairsView::PairsView(BRect frame, const char* name, uint8 rows, uint8 cols, fPositionX(new int32[fButtonsCount]), fPositionY(new int32[fButtonsCount]) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); CreateGameBoard(); _SetPairsBoard(); } diff --git a/src/apps/patchbay/PatchRow.cpp b/src/apps/patchbay/PatchRow.cpp index f22a8ce9a3..193646bf87 100644 --- a/src/apps/patchbay/PatchRow.cpp +++ b/src/apps/patchbay/PatchRow.cpp @@ -164,7 +164,7 @@ void PatchRow::AttachedToWindow() { Window()->SetPulseRate(200000); - SetViewColor(Parent()->ViewColor()); + AdoptParentColors(); int32 numChildren = CountChildren(); for (int32 i = 0; i < numChildren; i++) { PatchCheckBox* box = dynamic_cast(ChildAt(i)); diff --git a/src/apps/patchbay/PatchView.cpp b/src/apps/patchbay/PatchView.cpp index f3966b406a..cf0f036ca9 100644 --- a/src/apps/patchbay/PatchView.cpp +++ b/src/apps/patchbay/PatchView.cpp @@ -37,7 +37,7 @@ PatchView::PatchView(BRect rect) BView(rect, "PatchView", B_FOLLOW_ALL, B_WILL_DRAW), fUnknownDeviceIcon(NULL) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); BRect iconRect(0, 0, LARGE_ICON_SIZE - 1, LARGE_ICON_SIZE - 1); fUnknownDeviceIcon = new BBitmap(iconRect, B_RGBA32); @@ -68,6 +68,7 @@ PatchView::AttachedToWindow() BMessenger msgr(this); roster->StartWatching(&msgr); + SetHighUIColor(B_PANEL_TEXT_COLOR); } diff --git a/src/apps/powerstatus/ExtendedInfoWindow.cpp b/src/apps/powerstatus/ExtendedInfoWindow.cpp index 35f9ec6f7a..543fb8731f 100644 --- a/src/apps/powerstatus/ExtendedInfoWindow.cpp +++ b/src/apps/powerstatus/ExtendedInfoWindow.cpp @@ -37,7 +37,7 @@ BatteryInfoView::BatteryInfoView() fPreferredSize(200, 200), fMaxStringSize(0, 0) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); } @@ -346,7 +346,7 @@ ExtendedInfoWindow::ExtendedInfoWindow(PowerStatusDriverInterface* interface) fDriverInterface->AcquireReference(); BView *view = new BView(Bounds(), "view", B_FOLLOW_ALL, 0); - view->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + view->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); AddChild(view); BGroupLayout* mainLayout = new BGroupLayout(B_VERTICAL); diff --git a/src/apps/powerstatus/PowerStatusView.cpp b/src/apps/powerstatus/PowerStatusView.cpp index 2b7cc98aff..0b1b4aa3b1 100644 --- a/src/apps/powerstatus/PowerStatusView.cpp +++ b/src/apps/powerstatus/PowerStatusView.cpp @@ -118,10 +118,12 @@ void PowerStatusView::AttachedToWindow() { BView::AttachedToWindow(); - if (Parent()) - SetLowColor(Parent()->ViewColor()); + AdoptParentColors(); + + if (ViewUIColor() == B_NO_COLOR) + SetLowUIColor(B_PANEL_BACKGROUND_COLOR); else - SetLowColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetLowUIColor(ViewUIColor()); Update(); } @@ -159,7 +161,10 @@ PowerStatusView::_DrawBattery(BRect rect) float left = rect.left; rect.left += rect.Width() / 11; - SetHighColor(0, 0, 0); + if (LowColor().Brightness() > 100) + SetHighColor(0, 0, 0); + else + SetHighColor(128, 128, 128); float gap = 1; if (rect.Height() > 8) { @@ -190,7 +195,10 @@ PowerStatusView::_DrawBattery(BRect rect) if (percent > 0) { rect.InsetBy(gap, gap); - rgb_color base = {84, 84, 84, 255}; + rgb_color base = (rgb_color){84, 84, 84, 255}; + if (LowColor().Brightness() < 128) + base = (rgb_color){172, 172, 172, 255}; + if (be_control_look != NULL) { BRect empty = rect; if (fHasBattery && percent > 0) @@ -313,8 +321,7 @@ PowerStatusView::Draw(BRect updateRect) SetHighColor(ui_color(B_CONTROL_TEXT_COLOR)); else { SetDrawingMode(B_OP_OVER); - rgb_color c = Parent()->LowColor(); - if (c.red + c.green + c.blue > 128 * 3) + if (LowColor().Brightness() > 100) SetHighColor(0, 0, 0); else SetHighColor(255, 255, 255); diff --git a/src/apps/powerstatus/PowerStatusWindow.cpp b/src/apps/powerstatus/PowerStatusWindow.cpp index fe83bc432f..6333e17fab 100644 --- a/src/apps/powerstatus/PowerStatusWindow.cpp +++ b/src/apps/powerstatus/PowerStatusWindow.cpp @@ -20,7 +20,7 @@ PowerStatusWindow::PowerStatusWindow() B_TITLED_WINDOW, B_NOT_ZOOMABLE | B_ASYNCHRONOUS_CONTROLS) { BView* topView = new BView(Bounds(), NULL, B_FOLLOW_ALL, B_WILL_DRAW); - topView->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + topView->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); AddChild(topView); topView->AddChild(new PowerStatusReplicant(Bounds(), B_FOLLOW_ALL)); diff --git a/src/apps/processcontroller/PCWindow.cpp b/src/apps/processcontroller/PCWindow.cpp index 05c018d160..852e179591 100644 --- a/src/apps/processcontroller/PCWindow.cpp +++ b/src/apps/processcontroller/PCWindow.cpp @@ -47,7 +47,7 @@ PCWindow::PCWindow() BRect rect = Bounds(); BView* topView = new BView(rect, NULL, B_FOLLOW_ALL, B_WILL_DRAW); - topView->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + topView->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); AddChild(topView); // set up a rectangle && instantiate a new view diff --git a/src/apps/pulse/ConfigView.cpp b/src/apps/pulse/ConfigView.cpp index 4b53468374..b6c2de2ccc 100644 --- a/src/apps/pulse/ConfigView.cpp +++ b/src/apps/pulse/ConfigView.cpp @@ -198,10 +198,10 @@ ConfigView::AttachedToWindow() // AttachedToWindow() gets called every time this tab is brought // to the front, but we only want this initialization to happen once if (fFirstTimeAttached) { - if (Parent() != NULL) - SetViewColor(Parent()->ViewColor()); - else - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + AdoptParentColors(); + + if (Parent() == NULL) + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); BMessenger messenger(this); fColorControl->SetTarget(messenger); diff --git a/src/apps/pulse/NormalPulseView.cpp b/src/apps/pulse/NormalPulseView.cpp index b2c2224154..14c112ea32 100644 --- a/src/apps/pulse/NormalPulseView.cpp +++ b/src/apps/pulse/NormalPulseView.cpp @@ -50,9 +50,8 @@ NormalPulseView::NormalPulseView(BRect rect) : PulseView(rect, "NormalPulseView"), fHasBrandLogo(false) { - rgb_color color = { 168, 168, 168, 0xff }; - SetViewColor(color); - SetLowColor(color); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); + SetLowUIColor(ViewUIColor()); mode1->SetLabel(B_TRANSLATE("Mini mode")); mode1->SetMessage(new BMessage(PV_MINI_MODE)); diff --git a/src/apps/pulse/PrefsWindow.cpp b/src/apps/pulse/PrefsWindow.cpp index 973e5a5a31..3521b81c48 100644 --- a/src/apps/pulse/PrefsWindow.cpp +++ b/src/apps/pulse/PrefsWindow.cpp @@ -36,7 +36,7 @@ PrefsWindow::PrefsWindow(BRect frame, const char *name, // This gives a nice look, and sets the background color correctly BRect bounds = Bounds(); BView* topView = new BView(bounds, "ParentView", B_FOLLOW_ALL, B_WILL_DRAW); - topView->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + topView->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); AddChild(topView); bounds.top += 10; diff --git a/src/apps/resedit/BitmapView.cpp b/src/apps/resedit/BitmapView.cpp index 165deb336d..1b781743aa 100644 --- a/src/apps/resedit/BitmapView.cpp +++ b/src/apps/resedit/BitmapView.cpp @@ -42,7 +42,7 @@ BitmapView::BitmapView(BRect frame, const char *name, BMessage *mod, BBitmap *bi const char *label, border_style borderstyle, int32 resize, int32 flags) : BView(frame, name, resize, flags) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); if (bitmap && bitmap->IsValid()) fBitmap = bitmap; diff --git a/src/apps/resedit/ImageEditor.cpp b/src/apps/resedit/ImageEditor.cpp index fc0b035ed6..e67ebce36d 100644 --- a/src/apps/resedit/ImageEditor.cpp +++ b/src/apps/resedit/ImageEditor.cpp @@ -31,7 +31,7 @@ ImageEditor::ImageEditor(const BRect &frame, ResourceData *data, BHandler *owner imgsize.Set(0, 0, 200, 200); BView *back = new BView(Bounds(), "back", B_FOLLOW_ALL, B_WILL_DRAW); - back->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + back->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); AddChild(back); BRect r; diff --git a/src/apps/resedit/Jamfile b/src/apps/resedit/Jamfile index 26397b09b5..31b696faf5 100644 --- a/src/apps/resedit/Jamfile +++ b/src/apps/resedit/Jamfile @@ -7,7 +7,7 @@ UsePrivateHeaders shared interface ; local columnViewSources ; if ! $(TARGET_PLATFORM_HAIKU_COMPATIBLE) { - columnViewSources = ColumnListView.cpp ColumnTypes.cpp ColorTools.cpp ; + columnViewSources = ColumnListView.cpp ColumnTypes.cpp ; } SEARCH_SOURCE += [ FDirName $(HAIKU_TOP) src kits interface ] ; diff --git a/src/apps/resedit/MiscEditors.cpp b/src/apps/resedit/MiscEditors.cpp index 406169a510..f33b3a25ff 100644 --- a/src/apps/resedit/MiscEditors.cpp +++ b/src/apps/resedit/MiscEditors.cpp @@ -75,7 +75,7 @@ Editor::~Editor(void) StringEditView::StringEditView(const BRect &frame) : BView(frame, "edit", B_FOLLOW_ALL, B_WILL_DRAW) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); BRect r; diff --git a/src/apps/resedit/ResView.cpp b/src/apps/resedit/ResView.cpp index a16ba4daec..c1152c86bf 100644 --- a/src/apps/resedit/ResView.cpp +++ b/src/apps/resedit/ResView.cpp @@ -50,7 +50,7 @@ ResView::ResView(const BRect &frame, const char *name, const int32 &resize, fOpenPanel(NULL), fSavePanel(NULL) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); if (ref) { fRef = new entry_ref; *fRef = *ref; diff --git a/src/apps/screenshot/ScreenshotWindow.cpp b/src/apps/screenshot/ScreenshotWindow.cpp index 75035e988e..98fd819982 100644 --- a/src/apps/screenshot/ScreenshotWindow.cpp +++ b/src/apps/screenshot/ScreenshotWindow.cpp @@ -175,13 +175,13 @@ ScreenshotWindow::ScreenshotWindow(const Utility& utility, bool silent, BMenuField* menuLocation = new BMenuField(B_TRANSLATE("Save in:"), fOutputPathMenu); - menuLocation->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + menuLocation->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); fTranslatorMenu = new BMenu(B_TRANSLATE("Please select")); _SetupTranslatorMenu(); BMenuField* menuFormat = new BMenuField(B_TRANSLATE("Save as:"), fTranslatorMenu); - menuFormat->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + menuFormat->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); BButton* showSettings = new BButton("", B_TRANSLATE("Settings" B_UTF8_ELLIPSIS), new BMessage(kSettings)); diff --git a/src/apps/showimage/ProgressWindow.cpp b/src/apps/showimage/ProgressWindow.cpp index 70df9875f8..e22fadb038 100644 --- a/src/apps/showimage/ProgressWindow.cpp +++ b/src/apps/showimage/ProgressWindow.cpp @@ -38,7 +38,7 @@ ProgressWindow::ProgressWindow() BRect rect = Bounds(); BView* view = new BView(rect, NULL, B_FOLLOW_ALL, B_WILL_DRAW); - view->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + view->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); AddChild(view); rect = view->Bounds().InsetByCopy(5, 5); diff --git a/src/apps/showimage/ShowImageStatusView.cpp b/src/apps/showimage/ShowImageStatusView.cpp index 8ed52cbdfd..436e323f9c 100644 --- a/src/apps/showimage/ShowImageStatusView.cpp +++ b/src/apps/showimage/ShowImageStatusView.cpp @@ -45,15 +45,8 @@ ShowImageStatusView::AttachedToWindow() BScrollBar* scrollBar = fScrollView->ScrollBar(B_HORIZONTAL); MoveTo(0.0, scrollBar->Frame().top); - rgb_color color = B_TRANSPARENT_COLOR; - BView* parent = Parent(); - if (parent != NULL) - color = parent->ViewColor(); - if (color == B_TRANSPARENT_COLOR) - color = ui_color(B_PANEL_BACKGROUND_COLOR); - - SetViewColor(color); + AdoptParentColors(); ResizeToPreferred(); } @@ -98,7 +91,8 @@ ShowImageStatusView::Draw(BRect updateRect) } BRect bounds(Bounds()); - rgb_color highColor = HighColor(); + rgb_color highColor = ui_color(B_PANEL_TEXT_COLOR); + SetHighColor(tint_color(ViewColor(), B_DARKEN_2_TINT)); StrokeLine(bounds.LeftTop(), bounds.RightTop()); diff --git a/src/apps/showimage/ShowImageWindow.cpp b/src/apps/showimage/ShowImageWindow.cpp index 9844119dba..d7db462b2b 100644 --- a/src/apps/showimage/ShowImageWindow.cpp +++ b/src/apps/showimage/ShowImageWindow.cpp @@ -164,7 +164,7 @@ ShowImageWindow::ShowImageWindow(BRect frame, const entry_ref& ref, // visible portion without colliding with the menu bar. BView* contentView = new BView(BRect(), "content", B_FOLLOW_NONE, 0); - contentView->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + contentView->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); contentView->SetExplicitMinSize(BSize(250, 100)); AddChild(contentView); diff --git a/src/apps/soundrecorder/RecorderWindow.cpp b/src/apps/soundrecorder/RecorderWindow.cpp index 3868b753b2..aebfc7fda8 100644 --- a/src/apps/soundrecorder/RecorderWindow.cpp +++ b/src/apps/soundrecorder/RecorderWindow.cpp @@ -373,7 +373,7 @@ RecorderWindow::InitWindow() fSoundList = new SoundListView(r, B_TRANSLATE("Sound List"), B_FOLLOW_ALL); fSoundList->SetSelectionMessage(new BMessage(SOUND_SELECTED)); - fSoundList->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + fSoundList->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); BScrollView *scroller = new BScrollView("scroller", fSoundList, B_FOLLOW_ALL, 0, false, true, B_FANCY_BORDER); fBottomBox->AddChild(scroller); diff --git a/src/apps/stylededit/StyledEditView.cpp b/src/apps/stylededit/StyledEditView.cpp index 32d0ae4be4..c08f6ebffb 100644 --- a/src/apps/stylededit/StyledEditView.cpp +++ b/src/apps/stylededit/StyledEditView.cpp @@ -37,8 +37,8 @@ StyledEditView::StyledEditView(BRect viewFrame, BRect textBounds, &(fInitialColor = ui_color(B_DOCUMENT_TEXT_COLOR)), B_FOLLOW_ALL, B_FRAME_EVENTS | B_WILL_DRAW) { - SetViewColor(ui_color(B_DOCUMENT_BACKGROUND_COLOR)); - SetLowColor(ViewColor()); + SetViewUIColor(B_DOCUMENT_BACKGROUND_COLOR); + SetLowUIColor(ViewUIColor()); fMessenger = new BMessenger(handler); fSuppressChanges = false; diff --git a/src/apps/sudoku/ProgressWindow.cpp b/src/apps/sudoku/ProgressWindow.cpp index 8bd76ed9bc..50cb6402ea 100644 --- a/src/apps/sudoku/ProgressWindow.cpp +++ b/src/apps/sudoku/ProgressWindow.cpp @@ -34,7 +34,7 @@ ProgressWindow::ProgressWindow(BWindow* referenceWindow, BRect rect = Bounds(); BView *view = new BView(rect, NULL, B_FOLLOW_ALL, B_WILL_DRAW); - view->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + view->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); AddChild(view); rect = view->Bounds().InsetByCopy(8, 8); diff --git a/src/apps/switcher/GroupListView.cpp b/src/apps/switcher/GroupListView.cpp index 0bee91284e..5aa26533c9 100644 --- a/src/apps/switcher/GroupListView.cpp +++ b/src/apps/switcher/GroupListView.cpp @@ -74,7 +74,7 @@ GroupListView::GroupListView(const char* name, GroupListModel* model, fGroupRenderer(NULL), fSelectionMessage(NULL) { - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); SetModel(model); } diff --git a/src/apps/terminal/TermView.cpp b/src/apps/terminal/TermView.cpp index eb6c9b988c..dc4122860e 100644 --- a/src/apps/terminal/TermView.cpp +++ b/src/apps/terminal/TermView.cpp @@ -1451,10 +1451,12 @@ TermView::FrameResized(float width, float height) bool hasResizeView = fResizeRunner != NULL; if (!hasResizeView) { // show the current size in a view - fResizeView = new BStringView(BRect(100, 100, 300, 140), - B_TRANSLATE("size"), ""); + fResizeView = new BStringView(BRect(100, 100, 300, 140), "size", ""); fResizeView->SetAlignment(B_ALIGN_CENTER); fResizeView->SetFont(be_bold_font); + fResizeView->SetViewColor(fTextBackColor); + fResizeView->SetLowColor(fTextBackColor); + fResizeView->SetHighColor(fTextForeColor); BMessage message(MSG_REMOVE_RESIZE_VIEW_IF_NEEDED); fResizeRunner = new(std::nothrow) BMessageRunner(BMessenger(this), diff --git a/src/apps/webpositive/AuthenticationPanel.cpp b/src/apps/webpositive/AuthenticationPanel.cpp index bfcde2da89..c9e095a173 100644 --- a/src/apps/webpositive/AuthenticationPanel.cpp +++ b/src/apps/webpositive/AuthenticationPanel.cpp @@ -120,7 +120,7 @@ bool AuthenticationPanel::getAuthentication(const BString& text, BTextView* textView = new BTextView(textBounds, "text", textBounds, be_plain_font, &infoColor, B_FOLLOW_NONE, B_WILL_DRAW | B_SUPPORTS_LAYOUT); - textView->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + textView->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); textView->SetText(text.String()); textView->MakeEditable(false); textView->MakeSelectable(false); diff --git a/src/apps/webpositive/DownloadProgressView.cpp b/src/apps/webpositive/DownloadProgressView.cpp index f7865dcdcd..2e50c965f2 100644 --- a/src/apps/webpositive/DownloadProgressView.cpp +++ b/src/apps/webpositive/DownloadProgressView.cpp @@ -116,7 +116,7 @@ public: virtual void AttachedToWindow() { - SetViewColor(Parent()->ViewColor()); + AdoptParentColors(); } virtual void Draw(BRect updateRect) @@ -257,7 +257,8 @@ DownloadProgressView::Init(BMessage* archive) } fInfoView = new BStringView("info view", ""); - + fInfoView->SetViewColor(ViewColor()); + BSize topButtonSize = fTopButton->PreferredSize(); BSize bottomButtonSize = fBottomButton->PreferredSize(); if (bottomButtonSize.width < topButtonSize.width) @@ -275,6 +276,7 @@ DownloadProgressView::Init(BMessage* archive) ; verticalGroup->SetViewColor(ViewColor()); layout->AddView(verticalGroup); + verticalGroup = BGroupLayoutBuilder(B_VERTICAL, 3) .Add(fTopButton) .Add(fBottomButton) @@ -288,8 +290,6 @@ DownloadProgressView::Init(BMessage* archive) float fontSize = font.Size() * 0.8f; font.SetSize(max_c(8.0f, fontSize)); fInfoView->SetFont(&font, B_FONT_SIZE); - fInfoView->SetHighColor(tint_color(fInfoView->LowColor(), - B_DARKEN_4_TINT)); fInfoView->SetExplicitMaxSize(BSize(B_SIZE_UNLIMITED, B_SIZE_UNSET)); return true; @@ -340,6 +340,10 @@ DownloadProgressView::DetachedFromWindow() void DownloadProgressView::AllAttached() { + fStatusBar->SetLowColor(ViewColor()); + fInfoView->SetLowColor(ViewColor()); + fInfoView->SetHighColor(0, 0, 0, 255); + SetViewColor(B_TRANSPARENT_COLOR); SetLowColor(245, 245, 245); SetHighColor(tint_color(LowColor(), B_DARKEN_1_TINT)); diff --git a/src/apps/webpositive/support/FontSelectionView.cpp b/src/apps/webpositive/support/FontSelectionView.cpp index 859095e72f..4d1c9ed2f5 100644 --- a/src/apps/webpositive/support/FontSelectionView.cpp +++ b/src/apps/webpositive/support/FontSelectionView.cpp @@ -85,8 +85,7 @@ FontSelectionView::FontSelectionView(const char* name, const char* label, fPreviewText->SetExplicitMaxSize(BSize(B_SIZE_UNLIMITED, B_SIZE_UNLIMITED)); - fPreviewText->SetHighColor(tint_color(ui_color(B_PANEL_BACKGROUND_COLOR), - 1.65)); + fPreviewText->SetHighUIColor(B_PANEL_BACKGROUND_COLOR, 1.65); fPreviewText->SetAlignment(B_ALIGN_RIGHT); _UpdateFontPreview(); } diff --git a/src/apps/webpositive/tabview/TabManager.cpp b/src/apps/webpositive/tabview/TabManager.cpp index 7938335b1a..e9e3da8468 100644 --- a/src/apps/webpositive/tabview/TabManager.cpp +++ b/src/apps/webpositive/tabview/TabManager.cpp @@ -338,7 +338,7 @@ public: { SetFlags(Flags() | B_WILL_DRAW); SetViewColor(B_TRANSPARENT_COLOR); - SetLowColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetLowUIColor(B_PANEL_BACKGROUND_COLOR); GroupLayout()->SetInsets(0, 6, 0, 0); } From 673b9591b2526cf2b53b13eb8b270b5c7967f6f3 Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Mon, 4 Jan 2016 12:42:59 -0500 Subject: [PATCH 065/242] app_server: Remove include looncraz forgot to remove. --- src/servers/app/Desktop.h | 1 - 1 file changed, 1 deletion(-) diff --git a/src/servers/app/Desktop.h b/src/servers/app/Desktop.h index 6872f354c5..f46b4c86a2 100644 --- a/src/servers/app/Desktop.h +++ b/src/servers/app/Desktop.h @@ -13,7 +13,6 @@ */ #ifndef DESKTOP_H #define DESKTOP_H -#include "RapidDebug.h" #include From e8a15cb354d6b7efd9b5385aeceee6074868df16 Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Mon, 4 Jan 2016 13:32:22 -0500 Subject: [PATCH 066/242] Mail preferences: Delete added code to resize the window. Breaks the build, and shouldn't be needed anyway. --- src/preferences/mail/AutoConfigWindow.cpp | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/preferences/mail/AutoConfigWindow.cpp b/src/preferences/mail/AutoConfigWindow.cpp index 753e485478..7138de25b9 100644 --- a/src/preferences/mail/AutoConfigWindow.cpp +++ b/src/preferences/mail/AutoConfigWindow.cpp @@ -64,10 +64,6 @@ AutoConfigWindow::AutoConfigWindow(BRect rect, ConfigWindow *parent) .Add(fBackButton) .Add(fNextButton); - // determine the proper height - float newHeight = fMainView->Frame().bottom + buttonHeight + kSpacing * 2; - ResizeBy(0, newHeight - Bounds().Height()); - // Add a shortcut to close the window using Command-W AddShortcut('W', B_COMMAND_KEY, new BMessage(B_QUIT_REQUESTED)); } From 16c1051785368b6afe925505c9dffa3a6cfe06ba Mon Sep 17 00:00:00 2001 From: looncraz Date: Thu, 10 Dec 2015 12:55:08 -0600 Subject: [PATCH 067/242] Deskbar: Convert to using Set*UIColor. Signed-off-by: Augustin Cavalier Patches 0076 from looncraz, unmodified. --- src/apps/deskbar/BarMenuBar.cpp | 2 +- src/apps/deskbar/BarMenuTitle.cpp | 2 +- src/apps/deskbar/BarView.cpp | 2 +- src/apps/deskbar/ExpandoMenuBar.cpp | 2 +- src/apps/deskbar/InlineScrollView.cpp | 2 +- src/apps/deskbar/StatusView.cpp | 11 ++-- src/apps/deskbar/Switcher.cpp | 92 ++++++++++++++++++++------- src/apps/deskbar/TeamMenuItem.cpp | 11 ++-- src/apps/deskbar/TimeView.cpp | 10 +-- src/apps/deskbar/WindowMenuItem.cpp | 2 +- 10 files changed, 92 insertions(+), 44 deletions(-) diff --git a/src/apps/deskbar/BarMenuBar.cpp b/src/apps/deskbar/BarMenuBar.cpp index 7f3213ee55..2189d12702 100644 --- a/src/apps/deskbar/BarMenuBar.cpp +++ b/src/apps/deskbar/BarMenuBar.cpp @@ -74,7 +74,7 @@ TSeparatorItem::Draw() BRect frame(Frame()); frame.right = frame.left + kSepItemWidth; - rgb_color base = menu->LowColor(); + rgb_color base = ui_color(B_MENU_BACKGROUND_COLOR); menu->PushState(); diff --git a/src/apps/deskbar/BarMenuTitle.cpp b/src/apps/deskbar/BarMenuTitle.cpp index b97cea4a1e..48b1bf73e6 100644 --- a/src/apps/deskbar/BarMenuTitle.cpp +++ b/src/apps/deskbar/BarMenuTitle.cpp @@ -86,7 +86,7 @@ TBarMenuTitle::Draw() return; BRect frame(Frame()); - rgb_color base = menu->LowColor(); + rgb_color base = ui_color(B_MENU_BACKGROUND_COLOR); menu->PushState(); diff --git a/src/apps/deskbar/BarView.cpp b/src/apps/deskbar/BarView.cpp index 8634207243..bd45e30ba8 100644 --- a/src/apps/deskbar/BarView.cpp +++ b/src/apps/deskbar/BarView.cpp @@ -192,7 +192,7 @@ TBarView::AttachedToWindow() { BView::AttachedToWindow(); - SetViewColor(ui_color(B_MENU_BACKGROUND_COLOR)); + SetViewUIColor(B_MENU_BACKGROUND_COLOR); SetFont(be_plain_font); fMouseFilter = new BarViewMessageFilter(this); diff --git a/src/apps/deskbar/ExpandoMenuBar.cpp b/src/apps/deskbar/ExpandoMenuBar.cpp index 304722a0b6..b4c01b1669 100644 --- a/src/apps/deskbar/ExpandoMenuBar.cpp +++ b/src/apps/deskbar/ExpandoMenuBar.cpp @@ -822,7 +822,7 @@ TExpandoMenuBar::DrawBackground(BRect updateRect) return; BRect bounds(Bounds()); - rgb_color menuColor = LowColor(); + rgb_color menuColor = ui_color(B_MENU_BACKGROUND_COLOR); rgb_color hilite = tint_color(menuColor, B_DARKEN_1_TINT); rgb_color vlight = tint_color(menuColor, B_LIGHTEN_2_TINT); diff --git a/src/apps/deskbar/InlineScrollView.cpp b/src/apps/deskbar/InlineScrollView.cpp index e80591b2f4..27cbafbac2 100644 --- a/src/apps/deskbar/InlineScrollView.cpp +++ b/src/apps/deskbar/InlineScrollView.cpp @@ -85,7 +85,7 @@ ScrollArrow::ScrollArrow(BRect frame) BView(frame, "menu scroll arrow", B_FOLLOW_NONE, B_WILL_DRAW), fEnabled(false) { - SetViewColor(ui_color(B_MENU_BACKGROUND_COLOR)); + SetViewUIColor(B_MENU_BACKGROUND_COLOR); } diff --git a/src/apps/deskbar/StatusView.cpp b/src/apps/deskbar/StatusView.cpp index b672072247..4b4746e20e 100644 --- a/src/apps/deskbar/StatusView.cpp +++ b/src/apps/deskbar/StatusView.cpp @@ -167,11 +167,12 @@ TReplicantTray::AttachedToWindow() { BView::AttachedToWindow(); + float tint = B_NO_TINT; + if (be_control_look != NULL) { - SetViewColor(Parent()->ViewColor()); + SetViewUIColor(Parent()->ViewUIColor(&tint), tint); } else { - SetViewColor(tint_color(ui_color(B_MENU_BACKGROUND_COLOR), - B_DARKEN_1_TINT)); + SetViewUIColor(B_MENU_BACKGROUND_COLOR, B_DARKEN_1_TINT); } SetDrawingMode(B_OP_COPY); @@ -1310,9 +1311,9 @@ TDragRegion::AttachedToWindow() { BView::AttachedToWindow(); if (be_control_look != NULL) - SetViewColor(tint_color(ui_color(B_MENU_BACKGROUND_COLOR), 1.1)); + SetViewUIColor(B_MENU_BACKGROUND_COLOR, 1.1); else - SetViewColor(ui_color(B_MENU_BACKGROUND_COLOR)); + SetViewUIColor(B_MENU_BACKGROUND_COLOR); ResizeToPreferred(); } diff --git a/src/apps/deskbar/Switcher.cpp b/src/apps/deskbar/Switcher.cpp index 5146f5e54d..268d6d8ec6 100644 --- a/src/apps/deskbar/Switcher.cpp +++ b/src/apps/deskbar/Switcher.cpp @@ -1212,7 +1212,7 @@ TSwitchManager::GroupList() TBox::TBox(BRect bounds, TSwitchManager* manager, TSwitcherWindow* window, TIconView* iconView) : - BBox(bounds, "top", B_FOLLOW_NONE, B_WILL_DRAW, B_NO_BORDER), + BBox(bounds, "top", B_FOLLOW_ALL, B_WILL_DRAW, B_NO_BORDER), fManager(manager), fWindow(window), fIconView(iconView), @@ -1322,11 +1322,18 @@ TBox::Draw(BRect update) float center = (bounds.right + bounds.left) / 2; BRect box(3, 3, bounds.right - 3, 3 + height + kChildInset * 2); + rgb_color panelColor = ui_color(B_PANEL_BACKGROUND_COLOR); rgb_color white = {255, 255, 255, 255}; - rgb_color standardGray = ui_color(B_PANEL_BACKGROUND_COLOR); + rgb_color standardGray = panelColor; rgb_color veryDarkGray = {128, 128, 128, 255}; - rgb_color darkGray = tint_color(ui_color(B_PANEL_BACKGROUND_COLOR), - B_DARKEN_1_TINT); + rgb_color darkGray = tint_color(panelColor, B_DARKEN_1_TINT); + + if (panelColor.Brightness() < 100) { + standardGray = tint_color(panelColor, 0.8); + darkGray = tint_color(panelColor, 0.85); + white = make_color(200, 200, 200, 255); + veryDarkGray = make_color(0, 0, 0, 255); + } // Fill the area with dark gray SetHighColor(darkGray); @@ -1407,10 +1414,18 @@ TBox::Draw(BRect update) void TBox::DrawIconScrollers(bool force) { - rgb_color backgroundColor = tint_color(ui_color(B_PANEL_BACKGROUND_COLOR), - B_DARKEN_1_TINT); - rgb_color dark = tint_color(ui_color(B_PANEL_BACKGROUND_COLOR), - B_DARKEN_4_TINT); + rgb_color panelColor = ui_color(B_PANEL_BACKGROUND_COLOR); + rgb_color backgroundColor; + rgb_color dark; + + if (panelColor.Brightness() > 100) { + backgroundColor = tint_color(panelColor, B_DARKEN_1_TINT); + dark = tint_color(backgroundColor, B_DARKEN_3_TINT); + } else { + backgroundColor = tint_color(panelColor, 0.85); + dark = tint_color(panelColor, B_LIGHTEN_1_TINT); + } + bool updateLeft = false; bool updateRight = false; @@ -1481,8 +1496,18 @@ TBox::DrawIconScrollers(bool force) void TBox::DrawWindowScrollers(bool force) { - rgb_color backgroundColor = ui_color(B_PANEL_BACKGROUND_COLOR); - rgb_color dark = tint_color(backgroundColor, B_DARKEN_4_TINT); + rgb_color panelColor = ui_color(B_PANEL_BACKGROUND_COLOR); + rgb_color backgroundColor; + rgb_color dark; + + if (panelColor.Brightness() > 100) { + backgroundColor = tint_color(panelColor, B_DARKEN_1_TINT); + dark = tint_color(backgroundColor, B_DARKEN_2_TINT); + } else { + backgroundColor = panelColor; + dark = tint_color(panelColor, B_LIGHTEN_2_TINT); + } + bool updateUp = false; bool updateDown = false; @@ -1593,10 +1618,18 @@ TSwitcherWindow::TSwitcherWindow(BRect frame, TSwitchManager* manager) fTopView = new TBox(Bounds(), fManager, this, fIconView); AddChild(fTopView); + fTopView->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); + fTopView->SetLowUIColor(B_PANEL_BACKGROUND_COLOR); + fTopView->SetHighUIColor(B_PANEL_TEXT_COLOR); SetPulseRate(0); fTopView->AddChild(fIconView); fTopView->AddChild(fWindowView); + + if (be_plain_font->Size() != 12) { + float sizeDelta = be_plain_font->Size() - 12; + ResizeBy(0, sizeDelta); + } } @@ -1803,19 +1836,13 @@ TIconView::TIconView(BRect frame, TSwitchManager* manager, fManager(manager) { BRect rect(0, 0, kSlotSize - 1, kSlotSize - 1); - rgb_color color = tint_color(ui_color(B_PANEL_BACKGROUND_COLOR), - B_DARKEN_1_TINT); fOffView = new BView(rect, "off_view", B_FOLLOW_NONE, B_WILL_DRAW); - fOffView->SetHighColor(color); fOffBitmap = new BBitmap(rect, B_RGB32, true); fOffBitmap->AddChild(fOffView); fCurrentSmall = new BBitmap(BRect(0, 0, 15, 15), kIconFormat); fCurrentLarge = new BBitmap(BRect(0, 0, 31, 31), kIconFormat); - - SetViewColor(color); - SetLowColor(color); } @@ -1873,6 +1900,11 @@ TIconView::AnimateIcon(BBitmap* startIcon, BBitmap* endIcon) destRect.OffsetBy(BPoint(off, off)); fOffBitmap->Lock(); + rgb_color backgroundColor = ui_color(B_PANEL_BACKGROUND_COLOR); + if (backgroundColor.Brightness() > 100) + fOffView->SetHighColor(tint_color(backgroundColor, B_DARKEN_1_TINT)); + else + fOffView->SetHighColor(tint_color(backgroundColor, 0.85)); for (int i = 0; i < 2; i++) { startIconBounds.InsetBy(amount, amount); @@ -1999,6 +2031,18 @@ TIconView::FrameOf(int32 index) const void TIconView::DrawTeams(BRect update) { + float tint = B_NO_TINT; + rgb_color panelColor = ui_color(B_PANEL_BACKGROUND_COLOR); + + if (panelColor.Brightness() < 100) + tint = 0.85; + else + tint = B_DARKEN_1_TINT; + + SetHighUIColor(B_PANEL_BACKGROUND_COLOR, tint); + SetLowUIColor(ViewUIColor(), tint); + + FillRect(update); int32 mainIndex = fManager->CurrentIndex(); BList* list = fManager->GroupList(); int32 count = list->CountItems(); @@ -2098,10 +2142,7 @@ TWindowView::TWindowView(BRect rect, TSwitchManager* manager, void TWindowView::AttachedToWindow() { - if (Parent()) - SetViewColor(Parent()->ViewColor()); - else - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); } @@ -2249,8 +2290,12 @@ TWindowView::Draw(BRect update) DrawBitmap(bitmap, p); if (!local) { - SetHighColor(tint_color(ui_color(B_PANEL_BACKGROUND_COLOR), - B_DARKEN_4_TINT)); + rgb_color color = ui_color(B_PANEL_BACKGROUND_COLOR); + if (color.Brightness() > 100) + SetHighColor(tint_color(color, B_DARKEN_4_TINT)); + else + SetHighColor(tint_color(color, B_LIGHTEN_1_TINT)); + p.x -= 8; p.y += 4; StrokeLine(p + BPoint(2, 2), p + BPoint(2, 2)); @@ -2261,13 +2306,12 @@ TWindowView::Draw(BRect update) StrokeLine(p + BPoint(1, 8), p + BPoint(1, 8)); StrokeLine(p + BPoint(3, 8), p + BPoint(6, 8)); - - SetHighColor(0, 0, 0); } point.x += 21; MovePenTo(point); + SetHighUIColor(B_PANEL_TEXT_COLOR); DrawString(title.String()); SetDrawingMode(B_OP_COPY); diff --git a/src/apps/deskbar/TeamMenuItem.cpp b/src/apps/deskbar/TeamMenuItem.cpp index 3f072e2f05..6fb53218a3 100644 --- a/src/apps/deskbar/TeamMenuItem.cpp +++ b/src/apps/deskbar/TeamMenuItem.cpp @@ -180,7 +180,7 @@ TTeamMenuItem::Draw() menu->PushState(); - rgb_color menuColor = menu->LowColor(); + rgb_color menuColor = ui_color(B_MENU_BACKGROUND_COLOR); bool canHandle = !fBarView->Dragging() || fBarView->AppCanHandleTypes(Signature()); uint32 flags = 0; @@ -274,10 +274,10 @@ TTeamMenuItem::DrawContent() bool canHandle = !fBarView->Dragging() || fBarView->AppCanHandleTypes(Signature()); if (_IsSelected() && IsEnabled() && canHandle) - menu->SetLowColor(tint_color(menu->LowColor(), + menu->SetLowColor(tint_color(ui_color(B_MENU_BACKGROUND_COLOR), B_HIGHLIGHT_BACKGROUND_TINT)); else - menu->SetLowColor(menu->LowColor()); + menu->SetLowColor(ui_color(B_MENU_BACKGROUND_COLOR)); if (IsSelected()) menu->SetHighColor(ui_color(B_MENU_SELECTED_ITEM_TEXT_COLOR)); @@ -308,8 +308,9 @@ TTeamMenuItem::DrawExpanderArrow() rect.OffsetTo(BPoint(frame.right - rect.Width(), ContentLocation().y + ((frame.Height() - rect.Height()) / 2))); - be_control_look->DrawArrowShape(menu, rect, rect, menu->LowColor(), - fArrowDirection, 0, B_DARKEN_3_TINT); + be_control_look->DrawArrowShape(menu, rect, rect, + ui_color(B_MENU_BACKGROUND_COLOR), fArrowDirection, 0, + B_DARKEN_3_TINT); } diff --git a/src/apps/deskbar/TimeView.cpp b/src/apps/deskbar/TimeView.cpp index 5a96ed8d64..98fafb4e02 100644 --- a/src/apps/deskbar/TimeView.cpp +++ b/src/apps/deskbar/TimeView.cpp @@ -135,11 +135,13 @@ TTimeView::AttachedToWindow() fCurrentTime = time(NULL); SetFont(be_plain_font); + float tint = B_NO_TINT; + if (Parent()) { fParent = Parent(); - SetViewColor(Parent()->ViewColor()); + SetViewUIColor(Parent()->ViewUIColor(&tint), tint); } else - SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); CalculateTextPlacement(); ResizeToPreferred(); @@ -152,9 +154,9 @@ TTimeView::Draw(BRect /*updateRect*/) PushState(); SetHighColor(ViewColor()); - SetLowColor(ViewColor()); + SetLowUIColor(ViewUIColor()); FillRect(Bounds()); - SetHighColor(ui_color(B_MENU_ITEM_TEXT_COLOR)); + SetHighUIColor(B_MENU_ITEM_TEXT_COLOR); DrawString(fCurrentTimeStr, fTimeLocation); diff --git a/src/apps/deskbar/WindowMenuItem.cpp b/src/apps/deskbar/WindowMenuItem.cpp index 45bedb81ba..f9d70bfbdc 100644 --- a/src/apps/deskbar/WindowMenuItem.cpp +++ b/src/apps/deskbar/WindowMenuItem.cpp @@ -113,7 +113,7 @@ TWindowMenuItem::Draw() // TODO: Tint this smartly based on the low color, this does // nothing to black. - rgb_color menuColor = tint_color(Menu()->LowColor(), 1.07); + rgb_color menuColor = tint_color(ui_color(B_MENU_BACKGROUND_COLOR), 1.07); BRect frame(Frame()); BMenu* menu = Menu(); From 2567fac21d1a62d4a965559f913fc3407c021df1 Mon Sep 17 00:00:00 2001 From: looncraz Date: Thu, 10 Dec 2015 12:52:50 -0600 Subject: [PATCH 068/242] app_server: Fix for LinkReciever. LinkReceiver would spin endlessly when given a timeout value which prevented DelayedMessageSender from being operational. Signed-off-by: Augustin Cavalier Patch 0002 from looncraz, unmodified. --- src/kits/app/LinkReceiver.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/kits/app/LinkReceiver.cpp b/src/kits/app/LinkReceiver.cpp index 4928500da7..40ddd888fd 100644 --- a/src/kits/app/LinkReceiver.cpp +++ b/src/kits/app/LinkReceiver.cpp @@ -180,7 +180,7 @@ LinkReceiver::AdjustReplyBuffer(bigtime_t timeout) ssize_t bufferSize; do { bufferSize = port_buffer_size_etc(fReceivePort, - timeout == B_INFINITE_TIMEOUT ? B_RELATIVE_TIMEOUT : 0, + timeout == B_INFINITE_TIMEOUT ? 0 : B_RELATIVE_TIMEOUT, timeout); } while (bufferSize == B_INTERRUPTED); From 36cbd68b3765d104759c1abdbaa4c547fcd57600 Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Mon, 4 Jan 2016 13:45:44 -0500 Subject: [PATCH 069/242] Various Jamfiles: Remove added "UsePrivateHeaders interface". Added by looncraz in previous commits, and not needed. --- src/apps/aboutsystem/Jamfile | 2 +- src/apps/overlayimage/Jamfile | 2 -- src/preferences/datatranslations/Jamfile | 2 +- src/preferences/mail/Jamfile | 6 +----- 4 files changed, 3 insertions(+), 9 deletions(-) diff --git a/src/apps/aboutsystem/Jamfile b/src/apps/aboutsystem/Jamfile index 8b2354fc6c..ca23780132 100644 --- a/src/apps/aboutsystem/Jamfile +++ b/src/apps/aboutsystem/Jamfile @@ -1,6 +1,6 @@ SubDir HAIKU_TOP src apps aboutsystem ; -UsePrivateHeaders app interface libroot shared ; +UsePrivateHeaders app libroot shared ; Application AboutSystem : AboutSystem.cpp diff --git a/src/apps/overlayimage/Jamfile b/src/apps/overlayimage/Jamfile index bcbcd3438a..3e295013d6 100644 --- a/src/apps/overlayimage/Jamfile +++ b/src/apps/overlayimage/Jamfile @@ -1,7 +1,5 @@ SubDir HAIKU_TOP src apps overlayimage ; -UsePrivateHeaders interface ; - Application OverlayImage : OverlayApp.cpp OverlayView.cpp diff --git a/src/preferences/datatranslations/Jamfile b/src/preferences/datatranslations/Jamfile index adc12d532c..8c2ef905db 100644 --- a/src/preferences/datatranslations/Jamfile +++ b/src/preferences/datatranslations/Jamfile @@ -2,7 +2,7 @@ SubDir HAIKU_TOP src preferences datatranslations ; UseLibraryHeaders lp_solve linprog alm ; -UsePrivateHeaders interface shared ; +UsePrivateHeaders shared ; Preference DataTranslations : DataTranslations.cpp diff --git a/src/preferences/mail/Jamfile b/src/preferences/mail/Jamfile index 1aa95086fc..0ed4ae211c 100644 --- a/src/preferences/mail/Jamfile +++ b/src/preferences/mail/Jamfile @@ -1,14 +1,10 @@ SubDir HAIKU_TOP src preferences mail ; UsePublicHeaders [ FDirName add-ons mail_daemon ] ; -UsePrivateHeaders interface mail ; +UsePrivateHeaders mail shared ; SubDirHdrs [ FDirName $(HAIKU_TOP) headers os add-ons mail_daemon ] ; -# for BObjectList.h -UsePrivateHeaders shared ; - - local sources = AutoConfig.cpp AutoConfigView.cpp From 153b2eeacea5effa82a89d39a8b183f2f56d4015 Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Mon, 4 Jan 2016 13:56:51 -0500 Subject: [PATCH 070/242] APRWindow: Delete another missed include. --- src/preferences/appearance/APRWindow.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/preferences/appearance/APRWindow.h b/src/preferences/appearance/APRWindow.h index 5d1219e59b..1907fc4964 100644 --- a/src/preferences/appearance/APRWindow.h +++ b/src/preferences/appearance/APRWindow.h @@ -22,7 +22,7 @@ class AntialiasingSettingsView; class FontView; class LookAndFeelSettingsView; -#include + class APRWindow : public BWindow { public: APRWindow(BRect frame); From 3d1fa65454962cf0738ee2d2ef8d0c5fdb41ce37 Mon Sep 17 00:00:00 2001 From: Humdinger Date: Mon, 4 Jan 2016 20:17:27 +0100 Subject: [PATCH 071/242] Updated SVG logos. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit As suggested by Christopher Sean Morrison: "Curiously, the two svg files lack styling / namespace declarations so they won’t render in a browser. Adding an xml namespace to their opening tag lets them render correctly: xmlns="http://www.w3.org/2000/svg" Thanks! --- data/artwork/HAIKU logo - black.svg | 2 +- data/artwork/HAIKU logo - white.svg | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/data/artwork/HAIKU logo - black.svg b/data/artwork/HAIKU logo - black.svg index f3f6daea4b..464334ed00 100644 --- a/data/artwork/HAIKU logo - black.svg +++ b/data/artwork/HAIKU logo - black.svg @@ -1,5 +1,5 @@ - + - + Date: Mon, 4 Jan 2016 22:12:55 +0000 Subject: [PATCH 072/242] nVidia driver: Added basic dualhead support for native Haiku ScreenPrefs app --- .../private/graphics/nvidia/DriverInterface.h | 18 +- .../accelerants/nvidia/InitAccelerant.c | 6 +- .../accelerants/nvidia/ProposeDisplayMode.c | 225 +++++++++++++++--- .../accelerants/nvidia/SetDisplayMode.c | 6 +- .../accelerants/nvidia/engine/nv_general.c | 2 +- .../drivers/graphics/nvidia/README.html | 10 +- .../drivers/graphics/nvidia/UPDATE.html | 5 +- 7 files changed, 226 insertions(+), 46 deletions(-) diff --git a/headers/private/graphics/nvidia/DriverInterface.h b/headers/private/graphics/nvidia/DriverInterface.h index a6360af3e4..4c94ab2e9f 100644 --- a/headers/private/graphics/nvidia/DriverInterface.h +++ b/headers/private/graphics/nvidia/DriverInterface.h @@ -5,7 +5,7 @@ Other authors: Mark Watson; Apsed; - Rudolf Cornelissen 10/2002-10/2009. + Rudolf Cornelissen 10/2002-12/2015. */ #ifndef DRIVERINTERFACE_H @@ -63,6 +63,20 @@ typedef struct { #define TV_VIDEO (1<<12) #define TV_PRIMARY (1<<13) +/* additional timing flags for GetMode/SetMode for Haiku ScreenPrefs panel */ +enum { + RADEON_MODE_MULTIMON_REQUEST = 1 << 25, + RADEON_MODE_MULTIMON_REPLY = 1 << 26 +}; + +/* operation codes tunneled via ProposeDisplayMode for Haiku ScreenPrefs panel */ +typedef enum { + ms_swap = 'sw', + ms_use_laptop_panel = 'up', + ms_tv_standard = 'tv' +} multi_mon_settings; + + #define SKD_MOVE_CURSOR 0x00000001 #define SKD_PROGRAM_CLUT 0x00000002 #define SKD_SET_START_ADDR 0x00000004 @@ -306,6 +320,8 @@ typedef struct { bool acc_mode; /* signals (non)accelerated mode */ bool interlaced_tv_mode;/* signals interlaced CRTC TV output mode */ bool crtc_switch_mode; /* signals dualhead switch mode if panels are used */ + bool haiku_prefs_used; /* signals use of Haiku ScreenPrefs app for special modes */ + bool Haiku_switch_head; /* signals Haiku ScreenPrefs panel want inverted mode later on */ /*frame buffer config - for BDirectScreen*/ frame_buffer_config fbc; /* bytes_per_row and start of frame buffer: head1 */ diff --git a/src/add-ons/accelerants/nvidia/InitAccelerant.c b/src/add-ons/accelerants/nvidia/InitAccelerant.c index d57f58777f..9c241b40c8 100644 --- a/src/add-ons/accelerants/nvidia/InitAccelerant.c +++ b/src/add-ons/accelerants/nvidia/InitAccelerant.c @@ -4,7 +4,7 @@ Other authors: Mark Watson, - Rudolf Cornelissen 10/2002-3/2009. + Rudolf Cornelissen 10/2002-12/2015. */ #define MODULE_BIT 0x00800000 @@ -214,6 +214,10 @@ status_t INIT_ACCELERANT(int the_fd) /* every 3D add-on will reset this bit-flag when it's done. */ si->engine.threeD.newmode = 0xffffffff; + /* we did not detect the Haiku ScreenPrefs app yet */ + si->haiku_prefs_used = false; + si->Haiku_switch_head = false; + /* a winner! */ result = B_OK; /* ensure that INIT_ACCELERANT won't be executed again (copies should be clones) */ diff --git a/src/add-ons/accelerants/nvidia/ProposeDisplayMode.c b/src/add-ons/accelerants/nvidia/ProposeDisplayMode.c index 680676d660..f08094c89b 100644 --- a/src/add-ons/accelerants/nvidia/ProposeDisplayMode.c +++ b/src/add-ons/accelerants/nvidia/ProposeDisplayMode.c @@ -4,7 +4,7 @@ Other authors for NV driver: Mark Watson, - Rudolf Cornelissen 9/2002-9/2009 + Rudolf Cornelissen 9/2002-12/2015 */ #define MODULE_BIT 0x00400000 @@ -96,6 +96,114 @@ static const display_mode mode_list[] = { }; +// transform official mode to internal, multi-screen mode enhanced mode +static void Haiku_DetectTranslateMultiMode(display_mode *mode) +{ + mode->flags &= ~DUALHEAD_BITS; + + if( mode->virtual_width == 2 * mode->timing.h_display ) { + LOG(4, ("Haiku: horizontal combine mode\n")); + if (si->Haiku_switch_head) + mode->flags |= DUALHEAD_SWITCH; + else + mode->flags |= DUALHEAD_ON; + } else if( mode->virtual_height == 2 * mode->timing.v_display ) { + LOG(4, ("Haiku: vertical combine mode not supported\n")); + } else { + /* unfortunately Haiku's screenprefs panel does not support single head output explicitly, so we'd better + activate both heads always to (probably) mimic Radeon driver behaviour (for which this app was adapted) */ + /* note please: + - this will have a big downside on hardware for which both heads have different resolution cababilities (i.e. Matrox); + - also (on laptops) this will shorten battery life a bit of course.. */ + mode->flags |= DUALHEAD_CLONE; + } +} + + +// check and execute tunnel settings command +static status_t Haiku_CheckMultiMonTunnel(display_mode *mode, const display_mode *low, const display_mode *high, bool *isTunneled ) +{ + if( (mode->timing.flags & RADEON_MODE_MULTIMON_REQUEST) != 0 && + (mode->timing.flags & RADEON_MODE_MULTIMON_REPLY) == 0 ) + { + mode->timing.flags &= ~RADEON_MODE_MULTIMON_REQUEST; + mode->timing.flags |= RADEON_MODE_MULTIMON_REPLY; + + // still process request, just in case someone set this flag + // combination by mistake + + *isTunneled = true; + return B_OK; + } + + // check magic params + if( mode->space != 0 || low->space != 0 || high->space != 0 + || low->virtual_width != 0xffff || low->virtual_height != 0xffff + || high->virtual_width != 0 || high->virtual_height != 0 + || mode->timing.pixel_clock != 0 + || low->timing.pixel_clock != 'TKTK' || high->timing.pixel_clock != 'KTKT' ) + { + *isTunneled = false; + return B_OK; + } + + *isTunneled = true; + + /* enable Haiku special handling */ + if (!si->haiku_prefs_used) + LOG(4, ("PROPOSEMODE: Haiku screenprefs tunnel detected.\n")); + si->haiku_prefs_used = true; + + /* note please: + Haiku ScreenPrefs does not issue a SetMode command after changing these settings (per se), but relies on + driver switching outputs directly. These settings are not dependant on workspace there, and are not part of + the mode in the Radeon driver. In the Matrox and nVidia drivers they are though. So we need SetMode + to be issued. (yes: sometimes I switch monitors when I switch workspace.. ;-) + Also the RADEON driver saves these settings to a file so it remembers these after reboots. We don't atm. + If the mode as proposed by the driver would be saved by the ScreenPrefs panel, we would 'remember' it over + reboots though (via app_server settings).. */ + + switch( mode->h_display_start ) { + case ms_swap: + switch( mode->v_display_start ) { + case 0: + if (si->Haiku_switch_head) + mode->timing.flags = 1; + else + mode->timing.flags = 0; + LOG(4, ("Haiku: tunnel access target=swap, command=get, value=%u\n", mode->timing.flags)); + return B_OK; + case 1: + si->Haiku_switch_head = mode->timing.flags != 0; + LOG(4, ("Haiku: tunnel access target=swap, command=set, value=%u\n", mode->timing.flags)); + /* Haiku's screenprefs panel expects us to directly set the mode.. (but it should do that itself) */ + SET_DISPLAY_MODE(&si->dm); + return B_OK; + } + break; + + case ms_use_laptop_panel: + LOG(4, ("Haiku: tunnel access target=usepanel, command=%s, value=%u\n", + (mode->v_display_start == 1) ? "set" : "get", mode->timing.flags)); + // we refuse this setting (makes no sense for us: laptop panel is treated as normal screen) + return B_ERROR; + break; + + case ms_tv_standard: + LOG(4, ("Haiku: tunnel access target=tvstandard, command=%s, value=%u\n", + (mode->v_display_start == 1) ? "set" : "get", mode->timing.flags)); + // let's forget about this for now.. + return B_ERROR; + break; + } + + LOG(4, ("Haiku: unhandled tunnel access target=$%x, command=%u, value=%u\n", + mode->h_display_start, mode->v_display_start, mode->timing.flags)); + + return B_ERROR; +} + + /*! Check mode is between low and high limits. Returns: @@ -128,6 +236,25 @@ PROPOSE_DISPLAY_MODE(display_mode *target, const display_mode *low, const displa / ((double)target->timing.h_total * (double)target->timing.v_total); bool want_same_width = target->timing.h_display == target->virtual_width; bool want_same_height = target->timing.v_display == target->virtual_height; + bool isTunneled = false; + // check whether we got a tunneled settings command + result = Haiku_CheckMultiMonTunnel(target, low, high, &isTunneled); + if (isTunneled) + return result; + + /* since we (might be) called by the Haiku ScreenPrefs panel, check for special modes and translate + them from (for us) non-native modes to native modes (as used in DualheadSetup by Mark Watson). + These 'native modes' survive system reboots by the way, at least when set using DualheadSetup. */ + + /* note please: apparantly Haiku Screenprefs does not save the modes as set by the driver, but as originally requested + by the ScreenPrefs panel. Modifications done by the driver are therefore not saved. + It would be nice if the screenprefs panel in Haiku would save the modified modeflags (after proposemode or setmode), + that would also make the driver remember switched heads (now it's a temporary setting). */ + + if (si->haiku_prefs_used) { + // check how many heads are needed by target mode + Haiku_DetectTranslateMultiMode(target); + } LOG(1, ("PROPOSEMODE: (ENTER) requested virtual_width %d, virtual_height %d\n", target->virtual_width, target->virtual_height)); @@ -447,19 +574,56 @@ GET_MODE_LIST(display_mode *dm) } +static void checkAndAddMode(const display_mode *src, display_mode *dst) +{ + uint32 j, pix_clk_range; + display_mode low, high; + color_space spaces[4] = {B_RGB32_LITTLE, B_RGB16_LITTLE, B_RGB15_LITTLE, B_CMAP8}; + + /* set ranges for acceptable values */ + low = high = *src; + /* range is 6.25% of default clock: arbitrarily picked */ + pix_clk_range = low.timing.pixel_clock >> 5; + low.timing.pixel_clock -= pix_clk_range; + high.timing.pixel_clock += pix_clk_range; + /* 'some cards need wider virtual widths for certain modes': + * Not true. They might need a wider pitch, but this is _not_ reflected in + * virtual_width, but in fbc.bytes_per_row. */ + //So disable next line: + //high.virtual_width = 4096; + /* do it once for each depth we want to support */ + for (j = 0; j < (sizeof(spaces) / sizeof(color_space)); j++) { + /* set target values */ + dst[si->mode_count] = *src; + /* poke the specific space */ + dst[si->mode_count].space = low.space = high.space = spaces[j]; + /* ask for a compatible mode */ + /* We have to check for B_OK, because otherwise the pix_clk_range + * won't be taken into account!! */ + //So don't do this: + //if (PROPOSE_DISPLAY_MODE(dst, &low, &high) != B_ERROR) { + //Instead, do this: + if (PROPOSE_DISPLAY_MODE(&dst[si->mode_count], &low, &high) == B_OK) { + /* count it, so move on to next mode */ + si->mode_count++; + } + } +} + + /*! Create a list of display_modes to pass back to the caller. */ status_t create_mode_list(void) { size_t max_size; - uint32 i, j, pix_clk_range; + uint32 i; const display_mode *src; - display_mode *dst, low, high; - color_space spaces[4] = {B_RGB32_LITTLE, B_RGB16_LITTLE, B_RGB15_LITTLE, B_CMAP8}; + display_mode *dst; + display_mode custom_mode; - /* figure out how big the list could be, and adjust up to nearest multiple of B_PAGE_SIZE */ - max_size = (((MODE_COUNT * 4) * sizeof(display_mode)) + (B_PAGE_SIZE-1)) & ~(B_PAGE_SIZE-1); + /* figure out how big the list could be (4 colorspaces, 3 virtual types per mode), and adjust up to nearest multiple of B_PAGE_SIZE */ + max_size = (((MODE_COUNT * 4 * 3) * sizeof(display_mode)) + (B_PAGE_SIZE-1)) & ~(B_PAGE_SIZE-1); /* create an area to hold the info */ si->mode_area = my_mode_list_area = create_area("NV accelerant mode info", @@ -473,35 +637,26 @@ create_mode_list(void) dst = my_mode_list; si->mode_count = 0; for (i = 0; i < MODE_COUNT; i++) { - /* set ranges for acceptable values */ - low = high = *src; - /* range is 6.25% of default clock: arbitrarily picked */ - pix_clk_range = low.timing.pixel_clock >> 5; - low.timing.pixel_clock -= pix_clk_range; - high.timing.pixel_clock += pix_clk_range; - /* 'some cards need wider virtual widths for certain modes': - * Not true. They might need a wider pitch, but this is _not_ reflected in - * virtual_width, but in fbc.bytes_per_row. */ - //So disable next line: - //high.virtual_width = 4096; - /* do it once for each depth we want to support */ - for (j = 0; j < (sizeof(spaces) / sizeof(color_space)); j++) { - /* set target values */ - *dst = *src; - /* poke the specific space */ - dst->space = low.space = high.space = spaces[j]; - /* ask for a compatible mode */ - /* We have to check for B_OK, because otherwise the pix_clk_range - * won't be taken into account!! */ - //So don't do this: - //if (PROPOSE_DISPLAY_MODE(dst, &low, &high) != B_ERROR) { - //Instead, do this: - if (PROPOSE_DISPLAY_MODE(dst, &low, &high) == B_OK) { - /* count it, and move on to next mode */ - dst++; - si->mode_count++; - } - } + // standard mode + /* unfortunately Haiku's screenprefs panel does not support single head output explicitly, so we'd better + activate both heads always to (probably) mimic Radeon driver behaviour (for which this app was adapted) */ + /* note please: + - this will have a big downside on hardware for which both heads have different resolution cababilities (i.e. Matrox); + - also (on laptops) this will shorten battery life a bit of course.. */ + custom_mode = *src; + custom_mode.flags |= DUALHEAD_CLONE; + checkAndAddMode(&custom_mode, dst); + // double width mode for Haiku ScreenPrefs panel + /* note please: These modes should not be added. Instead the mode.flags should be used during setting screen as these will + automatically generate the needed other properties of the mode. Besides, virtual size is meant to be used for + pan&scan modes (viewports), i.e. for certain games. + The currently used method will fail programs that are meant to work pan@scan if the virtual width (or height) are + exactly twice the view area. */ + custom_mode = *src; + custom_mode.virtual_width *= 2; + custom_mode.flags |= DUALHEAD_ON; + checkAndAddMode(&custom_mode, dst); + // we don't support double height modes /* advance to next mode */ src++; } diff --git a/src/add-ons/accelerants/nvidia/SetDisplayMode.c b/src/add-ons/accelerants/nvidia/SetDisplayMode.c index 0f4e4fab86..330c6f89d8 100644 --- a/src/add-ons/accelerants/nvidia/SetDisplayMode.c +++ b/src/add-ons/accelerants/nvidia/SetDisplayMode.c @@ -6,7 +6,7 @@ Other authors: Mark Watson, Apsed, - Rudolf Cornelissen 11/2002-3/2009 + Rudolf Cornelissen 11/2002-12/2015 */ #define MODULE_BIT 0x00200000 @@ -41,8 +41,8 @@ status_t SET_DISPLAY_MODE(display_mode *mode_to_set) target /*= bounds*/ = *mode_to_set; /* show the mode bits */ LOG(1, ("SETMODE: (ENTER) initial modeflags: $%08x\n", target.flags)); - LOG(1, ("SETMODE: requested target pixelclock %dkHz\n", target.timing.pixel_clock)); - LOG(1, ("SETMODE: requested virtual_width %d, virtual_height %d\n", + LOG(1, ("SETMODE: requested target pixelclock %ukHz\n", target.timing.pixel_clock)); + LOG(1, ("SETMODE: requested virtual_width %u, virtual_height %u\n", target.virtual_width, target.virtual_height)); /* See BOUNDS WARNING above... */ diff --git a/src/add-ons/accelerants/nvidia/engine/nv_general.c b/src/add-ons/accelerants/nvidia/engine/nv_general.c index 4dc24e673c..0b33922d51 100644 --- a/src/add-ons/accelerants/nvidia/engine/nv_general.c +++ b/src/add-ons/accelerants/nvidia/engine/nv_general.c @@ -92,7 +92,7 @@ status_t nv_general_powerup() { status_t status; - LOG(1,("POWERUP: Haiku nVidia Accelerant 1.08 running.\n")); + LOG(1,("POWERUP: Haiku nVidia Accelerant 1.09 running.\n")); /* log VBLANK INT usability status */ if (si->ps.int_assigned) diff --git a/src/add-ons/kernel/drivers/graphics/nvidia/README.html b/src/add-ons/kernel/drivers/graphics/nvidia/README.html index 2b2cf01cd3..44fe6666f3 100644 --- a/src/add-ons/kernel/drivers/graphics/nvidia/README.html +++ b/src/add-ons/kernel/drivers/graphics/nvidia/README.html @@ -39,13 +39,13 @@ Geforce 8xxx and later series cards (NV50, G80, also known as GPGPU, general pur
  • Full BWindowScreen support (used for hardware pageflipping, scrolling/panning and acceleration in applications/games);
  • DPMS support for both DVI and most laptop panels, and for analog connected screens (on both heads on dualhead cards), but not (yet?) for external DVI panels on laptops;
  • B_YCbCr422 hardware overlay support on both TNT and GeForce series cards, except for GeForce 6xxx and 7xxx series (GeForce 6800 works though). Overlay output 'follows head' in dualhead stretch/switch modes; -
  • Dualhead support on GeForce dualhead cards (use 'Dualhead Setup' from BeBits for now); +
  • Dualhead support on GeForce dualhead cards (use 'Dualhead Setup' or Haiku native ScreenPrefs panel (with limitations));
  • DVI and laptop panel support;
  • Widescreen mode support (all screens must be widescreen type;
  • Basic AGP mode support on AGP cards, using the new (seperate) Haiku AGP busmanager;
  • Basic ('legacy') PCIe support;
  • Coldstart support for analog connected screens on most cards except TNT1, GeForce 6xxx and 7xxx series; -
  • TVout support on cards with Brooktree BT868/BT869 and Conexant CX25870/CX25871 encoders (use 'Dualhead Setup' 0.04 from BeBits for now); +
  • TVout support on cards with Brooktree BT868/BT869 and Conexant CX25870/CX25871 encoders (use 'Dualhead Setup' 0.05 for now);
  • DDC/EDID support for monitor capability detection. Known limitations: @@ -250,10 +250,14 @@ The acceleration engine is enabled.
  • true:
    The acceleration engine is disabled. +Note please: +
      +
    • On Haiku the acceleration engine is not used at all.
      +


    Rudolf Cornelissen.
    -

    (Page last updated on December 26, 2015)

    +

    (Page last updated on January 4, 2016)

    diff --git a/src/add-ons/kernel/drivers/graphics/nvidia/UPDATE.html b/src/add-ons/kernel/drivers/graphics/nvidia/UPDATE.html index 08f9ab2b89..ee2a08dfd9 100644 --- a/src/add-ons/kernel/drivers/graphics/nvidia/UPDATE.html +++ b/src/add-ons/kernel/drivers/graphics/nvidia/UPDATE.html @@ -4,7 +4,7 @@

    Changes done for each driverversion:

    -

    head (SVN 1.08, Rudolf)

    +

    head (Haiku repository 1.09, Rudolf)

    • Fixed driver assuming enabling AGP mode succeeded on some occasions if it did not block it itself. Blocking AGP mode completely via the AGP busmanager (option 'block_agp') resulted in a crashing acceleration engine because it was setup for AGP transfers instead of using PCI transfers. Error was solved with help from user kraton.
    • Fixed shared_info struct problem occuring when 3D 'accelerant' is used (tested Alpha 4.1): the TVencoder type definition list apparantly gets some memory assigned these days when done inside the definition of shared_info. Moved encoder list outside the shared_info definition. @@ -33,7 +33,8 @@
    • Modified head selection code on NV40 architecture cards except for NV40, NV41 and NV45. The cards affected have differently behaving BIOSes. This should fix black or disabled screens if the secondary connector was used for VGA while the first one was not connected;
    • Added dithering for laptop panels (if they are connected to DAC1 only for now). Gradients should now display much more fluently on 18bit depth panels (no more 'colorbands');
    • Fixed black screen on (some?) NV44 cards like Geforce 6100, 6150 and 6200 types; -
    • Modified 'force_ws' option to force aspect 16:9 instead of 16:10 so both aspect widescreen modes are settable. +
    • Modified 'force_ws' option to force aspect 16:9 instead of 16:10 so both aspect widescreen modes are settable; +
    • Added basic support for Haiku's native ScreenPrefs panel for dualhead modes. No TVout currently, and switched dualhead mode is not remembered over reboots nor is it coupled with workspaces (so unlike as it is with Dualhead Setup).

    nv_driver 0.80 (Rudolf)

      From 3592932936155601fba2e2eec0814b7363df9944 Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Mon, 4 Jan 2016 18:52:41 -0500 Subject: [PATCH 073/242] BApplication: Remove added PrintToStream(). Another missed debugging snippet from the merge. --- src/kits/app/Application.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/kits/app/Application.cpp b/src/kits/app/Application.cpp index 4de804b6c6..51db371967 100644 --- a/src/kits/app/Application.cpp +++ b/src/kits/app/Application.cpp @@ -1044,8 +1044,6 @@ BApplication::DispatchMessage(BMessage* message, BHandler* handler) return; } - message->PrintToStream(); - switch (message->what) { case B_ARGV_RECEIVED: _ArgvReceived(message); From 8180539313400693e1cf17a9059f8212c7d7b010 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Mon, 4 Jan 2016 21:05:10 +0100 Subject: [PATCH 074/242] IMAP: setting flags, and body fetching works now. * The direct methods in BMailProtocol now forward the request to the looper; it's no longer the mail_daemon's responsibility to know anything about that protocol. * It's in desperate need of refactoring, but it doesn't hurt to add it to the repository as is. --- headers/os/add-ons/mail_daemon/MailProtocol.h | 15 +- .../imap/IMAPConnectionWorker.cpp | 111 +++++- .../imap/IMAPConnectionWorker.h | 9 +- .../inbound_protocols/imap/IMAPFolder.cpp | 372 ++++++++++++++---- .../inbound_protocols/imap/IMAPFolder.h | 61 ++- .../inbound_protocols/imap/IMAPMailbox.cpp | 4 +- .../inbound_protocols/imap/IMAPProtocol.cpp | 111 +++++- .../inbound_protocols/imap/IMAPProtocol.h | 21 +- .../imap/imap_lib/Commands.cpp | 4 +- .../inbound_protocols/pop3/POP3.cpp | 7 +- .../mail_daemon/inbound_protocols/pop3/POP3.h | 8 +- src/apps/mail/MailWindow.cpp | 5 +- src/kits/mail/MailProtocol.cpp | 49 ++- src/kits/mail/mail_util.cpp | 14 +- src/servers/mail/MailDaemonApplication.cpp | 14 +- 15 files changed, 631 insertions(+), 174 deletions(-) diff --git a/headers/os/add-ons/mail_daemon/MailProtocol.h b/headers/os/add-ons/mail_daemon/MailProtocol.h index 19f2250b7b..6ae1dffb7b 100644 --- a/headers/os/add-ons/mail_daemon/MailProtocol.h +++ b/headers/os/add-ons/mail_daemon/MailProtocol.h @@ -1,5 +1,5 @@ /* - * Copyright 2004-2015, Haiku, Inc. All Rights Reserved. + * Copyright 2004-2016, Haiku, Inc. All Rights Reserved. * Copyright 2001 Dr. Zoidberg Enterprises. All rights reserved. * Copyright 2011 Clemens Zeidler. All rights reserved. * @@ -136,13 +136,22 @@ public: virtual void MessageReceived(BMessage* message); virtual status_t SyncMessages() = 0; - virtual status_t FetchBody(const entry_ref& ref) = 0; + virtual status_t FetchBody(const entry_ref& ref, + BMessenger* replyTo); virtual status_t MarkMessageAsRead(const entry_ref& ref, read_flags flags = B_READ); - virtual status_t DeleteMessage(const entry_ref& ref) = 0; + virtual status_t DeleteMessage(const entry_ref& ref); virtual status_t AppendMessage(const entry_ref& ref); + static void ReplyBodyFetched(const BMessenger& replyTo, + const entry_ref& ref, status_t status); + protected: + virtual status_t HandleFetchBody(const entry_ref& ref, + const BMessenger& replyTo) = 0; + + virtual status_t HandleDeleteMessage(const entry_ref& ref) = 0; + void NotiyMailboxSynchronized(status_t status); }; diff --git a/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPConnectionWorker.cpp b/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPConnectionWorker.cpp index 7a758f8f25..76869ac1d2 100644 --- a/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPConnectionWorker.cpp +++ b/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPConnectionWorker.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2011-2013, Axel Dörfler, axeld@pinc-software.de. + * Copyright 2011-2016, Axel Dörfler, axeld@pinc-software.de. * Distributed under the terms of the MIT License. */ @@ -7,6 +7,7 @@ #include "IMAPConnectionWorker.h" #include +#include #include @@ -141,12 +142,13 @@ public: class FetchBodiesCommand : public SyncCommand, public IMAP::FetchListener { public: FetchBodiesCommand(IMAPFolder& folder, IMAPMailbox& mailbox, - std::vector& entries) + MessageUIDList& entries, const BMessenger* replyTo = NULL) : fFolder(folder), fMailbox(mailbox), fEntries(entries) { + folder.RegisterPendingBodies(entries, replyTo); } virtual status_t Process(IMAPConnectionWorker& worker) @@ -160,18 +162,23 @@ public: fEntries.erase(fEntries.begin()); status_t status = WorkerPrivate(worker).SelectMailbox(fFolder); + if (status == B_OK) { + printf("IMAP: fetch body for %" B_PRIu32 "\n", fUID); + // Since RFC3501 does not specify whether the FETCH response may + // alter the order of the message data items we request, we cannot + // request more than a single UID at a time, or else we may not be + // able to assign the data to the correct message beforehand. + IMAP::FetchCommand fetch(fUID, fUID, IMAP::kFetchBody); + fetch.SetListener(this); + + status = protocol.ProcessCommand(fetch); + } + if (status == B_OK) + status = fFetchStatus; if (status != B_OK) - return status; + fFolder.StoringBodyFailed(fRef, fUID, status); - printf("IMAP: fetch body for %" B_PRIu32 "\n", fUID); - // Since RFC3501 does not specify whether the FETCH response may - // alter the order of the message data items we request, we cannot - // request more than a single UID at a time, or else we may not be - // able to assign the data to the correct message beforehand. - IMAP::FetchCommand fetch(fUID, fUID, IMAP::kFetchBody); - fetch.SetListener(this); - - return protocol.ProcessCommand(fetch); + return status; } virtual bool IsDone() const @@ -194,7 +201,7 @@ public: private: IMAPFolder& fFolder; IMAPMailbox& fMailbox; - std::vector fEntries; + MessageUIDList fEntries; uint32 fUID; entry_ref fRef; BFile fFile; @@ -362,6 +369,9 @@ public: if (entries[i].uid > fFolder->LastUID()) { fTotalBytes += entries[i].size; fUIDsToFetch.push_back(entries[i].uid); + } else { + fFolder->UpdateMessageFlags(entries[i].uid, + entries[i].flags); } } @@ -413,6 +423,50 @@ private: }; +class UpdateFlagsCommand : public WorkerCommand { +public: + UpdateFlagsCommand(IMAPFolder& folder, IMAPMailbox& mailbox, + MessageUIDList& entries, uint32 flags) + : + fFolder(folder), + fMailbox(mailbox), + fEntries(entries), + fFlags(flags) + { + } + + virtual status_t Process(IMAPConnectionWorker& worker) + { + if (fEntries.empty()) + return B_OK; + + fUID = *fEntries.begin(); + fEntries.erase(fEntries.begin()); + + status_t status = WorkerPrivate(worker).SelectMailbox(fFolder); + if (status == B_OK) { + IMAP::Protocol& protocol = WorkerPrivate(worker).Protocol(); + IMAP::SetFlagsCommand set(fUID, fFlags); + status = protocol.ProcessCommand(set); + } + + return status; + } + + virtual bool IsDone() const + { + return fEntries.empty(); + } + +private: + IMAPFolder& fFolder; + IMAPMailbox& fMailbox; + MessageUIDList fEntries; + uint32 fUID; + uint32 fFlags; +}; + + struct CommandDelete { inline void operator()(WorkerCommand* command) @@ -567,9 +621,34 @@ IMAPConnectionWorker::EnqueueCheckMailboxes() status_t -IMAPConnectionWorker::EnqueueRetrieveMail(entry_ref& ref) +IMAPConnectionWorker::EnqueueFetchBody(IMAPFolder& folder, uint32 uid, + const BMessenger& replyTo) { - return B_OK; + IMAPMailbox* mailbox = _MailboxFor(folder); + if (mailbox == NULL) + return B_ENTRY_NOT_FOUND; + + std::vector uids; + uids.push_back(uid); + + return _EnqueueCommand(new FetchBodiesCommand(folder, *mailbox, uids, + &replyTo)); +} + + +status_t +IMAPConnectionWorker::EnqueueUpdateFlags(IMAPFolder& folder, uint32 uid, + uint32 flags) +{ + IMAPMailbox* mailbox = _MailboxFor(folder); + if (mailbox == NULL) + return B_ENTRY_NOT_FOUND; + + std::vector uids; + uids.push_back(uid); + + return _EnqueueCommand(new UpdateFlagsCommand(folder, *mailbox, uids, + flags)); } @@ -595,6 +674,8 @@ IMAPConnectionWorker::MessageExpungeReceived(uint32 index) if (fSelectedBox == NULL) return; + BLocker locker(this); + IMAPMailbox* mailbox = _MailboxFor(*fSelectedBox); if (mailbox != NULL) { mailbox->RemoveMessageEntry(index); diff --git a/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPConnectionWorker.h b/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPConnectionWorker.h index 7c6314639e..a259a43520 100644 --- a/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPConnectionWorker.h +++ b/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPConnectionWorker.h @@ -1,5 +1,5 @@ /* - * Copyright 2011-2013, Axel Dörfler, axeld@pinc-software.de. + * Copyright 2011-2016, Axel Dörfler, axeld@pinc-software.de. * Distributed under the terms of the MIT License. */ #ifndef IMAP_CONNECTION_WORKER_H @@ -9,7 +9,6 @@ #include #include -//#include "Commands.h" #include "Protocol.h" @@ -20,7 +19,6 @@ class Settings; class WorkerCommand; class WorkerPrivate; - typedef BObjectList WorkerCommandList; @@ -46,7 +44,10 @@ public: status_t EnqueueCheckSubscribedFolders(); status_t EnqueueCheckMailboxes(); - status_t EnqueueRetrieveMail(entry_ref& ref); + status_t EnqueueFetchBody(IMAPFolder& folder, + uint32 uid, const BMessenger& replyTo); + status_t EnqueueUpdateFlags(IMAPFolder& folder, + uint32 uid, uint32 flags); // Handler listener virtual void MessageExistsReceived(uint32 index); diff --git a/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPFolder.cpp b/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPFolder.cpp index a7c4c92a65..0ae442d9a7 100644 --- a/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPFolder.cpp +++ b/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPFolder.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2012-2013, Axel Dörfler, axeld@pinc-software.de. + * Copyright 2012-2016, Axel Dörfler, axeld@pinc-software.de. * Distributed under the terms of the MIT License. */ @@ -13,10 +13,11 @@ #include #include #include +#include #include #include -#include "Commands.h" +#include #include "IMAPProtocol.h" @@ -91,16 +92,37 @@ IMAPFolder::IMAPFolder(IMAPProtocol& protocol, const BString& mailboxName, fRef(ref), fMailboxName(mailboxName), fUIDValidity(UINT32_MAX), - fLastUID(0) + fLastUID(0), + fListener(NULL) +{ + mutex_init(&fLock, "imap folder lock"); +} + + +IMAPFolder::~IMAPFolder() +{ +} + + +status_t +IMAPFolder::Init() { // Initialize from folder attributes - BNode node(&ref); - if (node.InitCheck() != B_OK) - return; + BNode node(&fRef); + status_t status = node.InitCheck(); + if (status != B_OK) + return status; + + node_ref nodeRef; + status = node.GetNodeRef(&nodeRef); + if (status != B_OK) + return status; + + fNodeID = nodeRef.node; BString originalMailboxName; if (node.ReadAttrString(kMailboxNameAttribute, &originalMailboxName) == B_OK - && originalMailboxName != mailboxName) { + && originalMailboxName != fMailboxName) { // TODO: mailbox name has changed } @@ -110,24 +132,20 @@ IMAPFolder::IMAPFolder(IMAPProtocol& protocol, const BString& mailboxName, fLastUID); attr_info info; - status_t status = node.GetAttrInfo(kStateAttribute, &info); + status = node.GetAttrInfo(kStateAttribute, &info); if (status == B_OK) { struct entry { uint32 uid; uint32 flags; } _PACKED; struct entry* entries = (struct entry*)malloc(info.size); - if (entries == NULL) { - // TODO: indicate B_NO_MEMORY - return; - } + if (entries == NULL) + return B_NO_MEMORY; ssize_t bytesRead = node.ReadAttr(kStateAttribute, B_RAW_TYPE, 0, entries, info.size); - if (bytesRead != info.size) { - // TODO: indicate read error resp. corrupted data - return; - } + if (bytesRead != info.size) + return B_BAD_DATA; for (size_t i = 0; i < info.size / sizeof(entry); i++) { uint32 uid = B_BENDIAN_TO_HOST_INT32(entries[i].uid); @@ -137,21 +155,20 @@ IMAPFolder::IMAPFolder(IMAPProtocol& protocol, const BString& mailboxName, } } - // Initialize current state from actual folder - // TODO: this should be done in another thread - //_InitializeFolderState(); -} - - -IMAPFolder::~IMAPFolder() -{ + return B_OK; } void IMAPFolder::SetListener(FolderListener* listener) { + ASSERT(fListener == NULL); + fListener = listener; + + // Initialize current state from actual folder + // TODO: this should be done in another thread + _InitializeFolderState(); } @@ -169,20 +186,33 @@ IMAPFolder::SetUIDValidity(uint32 uidValidity) status_t -IMAPFolder::GetMessageEntryRef(uint32 uid, entry_ref& ref) const +IMAPFolder::GetMessageEntryRef(uint32 uid, entry_ref& ref) { - UIDToRefMap::const_iterator found = fRefMap.find(uid); - if (found == fRefMap.end()) + MutexLocker locker(fLock); + return _GetMessageEntryRef(uid, ref); +} + + +status_t +IMAPFolder::GetMessageUID(const entry_ref& ref, uint32& uid) const +{ + BNode node(&ref); + status_t status = node.InitCheck(); + if (status != B_OK) + return status; + + uid = _ReadUniqueID(node); + if (uid == 0) return B_ENTRY_NOT_FOUND; - ref = found->second; return B_OK; } uint32 -IMAPFolder::MessageFlags(uint32 uid) const +IMAPFolder::MessageFlags(uint32 uid) { + MutexLocker locker(fLock); UIDToFlagsMap::const_iterator found = fFlagsMap.find(uid); if (found == fFlagsMap.end()) return 0; @@ -191,13 +221,71 @@ IMAPFolder::MessageFlags(uint32 uid) const } +void +IMAPFolder::UpdateMessageFlags(uint32 uid, uint32 mailboxFlags) +{ + if (uid > LastUID()) + return; + + entry_ref ref; + BNode node; + + while (true) { + status_t status = GetMessageEntryRef(uid, ref); + if (status == B_ENTRY_NOT_FOUND) { + // The message does not exist anymore locally, delete it on the server + // TODO: copy it to the trash directory first! + fProtocol.UpdateMessageFlags(*this, uid, IMAP::kDeleted); + return; + } + if (status == B_OK) + status = node.SetTo(&ref); + if (status == B_TIMED_OUT) + continue; + if (status != B_OK) + return; + + break; + } + + uint32 previousFlags = MessageFlags(uid); + uint32 currentFlags = previousFlags; + if (_MailToIMAPFlags(node, currentFlags) != B_OK) + return; + + // Compare flags to previous/current flags, and update either the + // message on the server, or the message locally (or even both) + + uint32 nextFlags = mailboxFlags; + _TestMessageFlags(previousFlags, mailboxFlags, currentFlags, + IMAP::kSeen, nextFlags); + _TestMessageFlags(previousFlags, mailboxFlags, currentFlags, + IMAP::kAnswered, nextFlags); + + if (nextFlags != previousFlags) + _WriteFlags(node, nextFlags); + if (currentFlags != nextFlags) { + // Update mail message attributes + BMessage attributes; + _IMAPToMailFlags(nextFlags, attributes); + node << attributes; + + fFlagsMap[uid] = nextFlags; + } + if (mailboxFlags != nextFlags) { + // Update server flags + fProtocol.UpdateMessageFlags(*this, uid, nextFlags); + } +} + + /*! Stores the given \a stream into a temporary file using the provided BFile object. A new file will be created, and the \a ref object will point to it. The file will remain open when this method exits without an error. \a length will reflect how many bytes are left to read in case there - were an error. + was an error. */ status_t IMAPFolder::StoreMessage(uint32 fetchFlags, BDataIO& stream, @@ -228,16 +316,13 @@ void IMAPFolder::MessageStored(entry_ref& ref, BFile& file, uint32 fetchFlags, uint32 uid, uint32 flags) { + _WriteUniqueIDValidity(file); _WriteUniqueID(file, uid); if ((fetchFlags & IMAP::kFetchFlags) != 0) _WriteFlags(file, flags); - // TODO: add some utility function for this in libmail.so BMessage attributes; - if ((flags & IMAP::kAnswered) != 0) - attributes.AddString(B_MAIL_ATTR_STATUS, "Answered"); - else if ((flags & IMAP::kSeen) != 0) - attributes.AddString(B_MAIL_ATTR_STATUS, "Read"); + _IMAPToMailFlags(flags, attributes); fProtocol.MessageStored(*this, ref, file, fetchFlags, attributes); file.Unset(); @@ -258,6 +343,29 @@ IMAPFolder::MessageStored(entry_ref& ref, BFile& file, uint32 fetchFlags, } +/*! Pushes the refs for the pending bodies to the pending bodies list. + This allows to prevent retrieving bodies more than once. +*/ +void +IMAPFolder::RegisterPendingBodies(IMAP::MessageUIDList& uids, + const BMessenger* replyTo) +{ + MutexLocker locker(fLock); + + MessengerList messengers; + if (replyTo != NULL) + messengers.push_back(*replyTo); + + IMAP::MessageUIDList::const_iterator iterator = uids.begin(); + for (; iterator != uids.end(); iterator++) { + if (replyTo != NULL) + fPendingBodies[*iterator].push_back(*replyTo); + else + fPendingBodies[*iterator].begin(); + } +} + + /*! Appends the given \a stream as body to the message file for the specified unique ID. The file will remain open when this method exits without an error. @@ -293,6 +401,15 @@ IMAPFolder::BodyStored(entry_ref& ref, BFile& file, uint32 uid) BMessage attributes; fProtocol.MessageStored(*this, ref, file, IMAP::kFetchBody, attributes); file.Unset(); + + _NotifyStoredBody(ref, uid, B_OK); +} + + +void +IMAPFolder::StoringBodyFailed(const entry_ref& ref, uint32 uid, status_t error) +{ + _NotifyStoredBody(ref, uid, error); } @@ -302,15 +419,6 @@ IMAPFolder::DeleteMessage(uint32 uid) } -/*! Called when the flags of a message changed on the server. This will update - the flags for the local file. -*/ -void -IMAPFolder::SetMessageFlags(uint32 uid, uint32 flags) -{ -} - - void IMAPFolder::MessageReceived(BMessage* message) { @@ -320,12 +428,7 @@ IMAPFolder::MessageReceived(BMessage* message) void IMAPFolder::_InitializeFolderState() { - // Create set of the last known UID state - if an entry is found, it - // is being removed from the list. The remaining entries were deleted. - std::set lastUIDs; - UIDToFlagsMap::iterator iterator = fFlagsMap.begin(); - for (; iterator != fFlagsMap.end(); iterator++) - lastUIDs.insert(iterator->first); + fInitializing = true; BDirectory directory(&fRef); BEntry entry; @@ -336,30 +439,42 @@ IMAPFolder::_InitializeFolderState() || node.SetTo(&entry) != B_OK) continue; + uint32 uidValidity = _ReadUniqueIDValidity(node); + if (uidValidity != fUIDValidity) { + // TODO: add file to mailbox + continue; + } uint32 uid = _ReadUniqueID(node); uint32 flags = _ReadFlags(node); - // TODO: make sure a listener exists at this point! - std::set::iterator found = lastUIDs.find(uid); - if (found != lastUIDs.end()) { - // The message is still around - lastUIDs.erase(found); - - uint32 flagsFound = MessageFlags(uid); - if (flagsFound != flags) { - // Its flags have changed locally, and need to be updated - fListener->MessageFlagsChanged(_Token(uid), ref, - flagsFound, flags); - } - } else { - // This is a new message - // TODO: the token must be the originating token! - uid = fListener->MessageAdded(_Token(uid), ref); - _WriteUniqueID(node, uid); - } + MutexLocker locker(fLock); fRefMap.insert(std::make_pair(uid, ref)); + fFlagsMap.insert(std::make_pair(uid, flags)); + +// // TODO: make sure a listener exists at this point! +// std::set::iterator found = lastUIDs.find(uid); +// if (found != lastUIDs.end()) { +// // The message is still around +// lastUIDs.erase(found); +// +// uint32 flagsFound = MessageFlags(uid); +// if (flagsFound != flags) { +// // Its flags have changed locally, and need to be updated +// fListener->MessageFlagsChanged(_Token(uid), ref, +// flagsFound, flags); +// } +// } else { +// // This is a new message +// // TODO: the token must be the originating token! +// uid = fListener->MessageAdded(_Token(uid), ref); +// _WriteUniqueID(node, uid); +// } +// + fRefMap.insert(std::make_pair(uid, ref)); } + + fInitializing = false; } @@ -375,8 +490,99 @@ IMAPFolder::_Token(uint32 uid) const } +void +IMAPFolder::_NotifyStoredBody(const entry_ref& ref, uint32 uid, status_t status) +{ + MutexLocker locker(fLock); + MessengerMap::iterator found = fPendingBodies.find(uid); + if (found != fPendingBodies.end()) { + MessengerList messengers = found->second; + fPendingBodies.erase(found); + locker.Unlock(); + + MessengerList::iterator iterator = messengers.begin(); + for (; iterator != messengers.end(); iterator++) + BInboundMailProtocol::ReplyBodyFetched(*iterator, ref, status); + } +} + + +status_t +IMAPFolder::_GetMessageEntryRef(uint32 uid, entry_ref& ref) const +{ + UIDToRefMap::const_iterator found = fRefMap.find(uid); + if (found == fRefMap.end()) + return fInitializing ? B_TIMED_OUT : B_ENTRY_NOT_FOUND; + + ref = found->second; + return B_OK; +} + + +void +IMAPFolder::_IMAPToMailFlags(uint32 flags, BMessage& attributes) +{ + // TODO: add some utility function for this in libmail.so + if ((flags & IMAP::kAnswered) != 0) + attributes.AddString(B_MAIL_ATTR_STATUS, "Answered"); + else if ((flags & IMAP::kFlagged) != 0) + attributes.AddString(B_MAIL_ATTR_STATUS, "Starred"); + else if ((flags & IMAP::kSeen) != 0) + attributes.AddString(B_MAIL_ATTR_STATUS, "Read"); +} + + +status_t +IMAPFolder::_MailToIMAPFlags(BNode& node, uint32& flags) +{ + BString mailStatus; + status_t status = node.ReadAttrString(B_MAIL_ATTR_STATUS, &mailStatus); + if (status != B_OK) + return status; + + flags &= ~(IMAP::kAnswered | IMAP::kSeen); + + // TODO: add some utility function for this in libmail.so + if (mailStatus == "Answered") + flags |= IMAP::kAnswered | IMAP::kSeen; + else if (mailStatus == "Read") + flags |= IMAP::kSeen; + else if (mailStatus == "Starred") + flags |= IMAP::kFlagged | IMAP::kSeen; + + return B_OK; +} + + +void +IMAPFolder::_TestMessageFlags(uint32 previousFlags, uint32 mailboxFlags, + uint32 currentFlags, uint32 testFlag, uint32& nextFlags) +{ + if ((previousFlags & testFlag) != (mailboxFlags & testFlag)) { + if ((previousFlags & testFlag) == (currentFlags & testFlag)) { + // The flags on the mailbox changed, update local flags + nextFlags &= ~testFlag; + nextFlags |= mailboxFlags & testFlag; + } else { + // Both flags changed. Since we don't have the means to do + // conflict resolution, we use a best effort mechanism + nextFlags |= testFlag; + } + return; + } + + // Previous message flags, and mailbox flags are identical, see + // if the user changed the flag locally + if ((currentFlags & testFlag) != (previousFlags & testFlag)) { + // Flag changed, update mailbox + nextFlags &= ~testFlag; + nextFlags |= currentFlags & testFlag; + } +} + + uint32 -IMAPFolder::_ReadUniqueID(BNode& node) +IMAPFolder::_ReadUniqueID(BNode& node) const { // For compatibility we must assume that the UID is stored as a string BString string; @@ -388,8 +594,9 @@ IMAPFolder::_ReadUniqueID(BNode& node) status_t -IMAPFolder::_WriteUniqueID(BNode& node, uint32 uid) +IMAPFolder::_WriteUniqueID(BNode& node, uint32 uid) const { + // For compatibility we must assume that the UID is stored as a string BString string; string << uid; @@ -398,21 +605,36 @@ IMAPFolder::_WriteUniqueID(BNode& node, uint32 uid) uint32 -IMAPFolder::_ReadFlags(BNode& node) +IMAPFolder::_ReadUniqueIDValidity(BNode& node) const +{ + + return _ReadUInt32(node, kUIDValidityAttribute); +} + + +status_t +IMAPFolder::_WriteUniqueIDValidity(BNode& node) const +{ + return _WriteUInt32(node, kUIDValidityAttribute, fUIDValidity); +} + + +uint32 +IMAPFolder::_ReadFlags(BNode& node) const { return _ReadUInt32(node, kFlagsAttribute); } status_t -IMAPFolder::_WriteFlags(BNode& node, uint32 flags) +IMAPFolder::_WriteFlags(BNode& node, uint32 flags) const { return _WriteUInt32(node, kFlagsAttribute, flags); } uint32 -IMAPFolder::_ReadUInt32(BNode& node, const char* attribute) +IMAPFolder::_ReadUInt32(BNode& node, const char* attribute) const { uint32 value; ssize_t bytesRead = node.ReadAttr(attribute, B_UINT32_TYPE, 0, @@ -425,7 +647,7 @@ IMAPFolder::_ReadUInt32(BNode& node, const char* attribute) status_t -IMAPFolder::_WriteUInt32(BNode& node, const char* attribute, uint32 value) +IMAPFolder::_WriteUInt32(BNode& node, const char* attribute, uint32 value) const { ssize_t bytesWritten = node.WriteAttr(attribute, B_UINT32_TYPE, 0, &value, sizeof(uint32)); @@ -437,7 +659,7 @@ IMAPFolder::_WriteUInt32(BNode& node, const char* attribute, uint32 value) status_t -IMAPFolder::_WriteStream(BFile& file, BDataIO& stream, size_t& length) +IMAPFolder::_WriteStream(BFile& file, BDataIO& stream, size_t& length) const { char buffer[65535]; while (length > 0) { diff --git a/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPFolder.h b/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPFolder.h index f818cd814c..3ffa96e079 100644 --- a/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPFolder.h +++ b/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPFolder.h @@ -1,5 +1,5 @@ /* - * Copyright 2012-2015, Axel Dörfler, axeld@pinc-software.de. + * Copyright 2012-2016, Axel Dörfler, axeld@pinc-software.de. * Distributed under the terms of the MIT License. */ #ifndef IMAP_FOLDER_H @@ -14,6 +14,10 @@ #include #include +#include + +#include "Commands.h" + class BFile; class IMAPProtocol; @@ -50,16 +54,23 @@ public: const entry_ref& ref); virtual ~IMAPFolder(); + status_t Init(); + const BString& MailboxName() const { return fMailboxName; } + ino_t NodeID() const { return fNodeID; } void SetListener(FolderListener* listener); void SetUIDValidity(uint32 uidValidity); uint32 LastUID() const { return fLastUID; } - status_t GetMessageEntryRef(uint32 uid, - entry_ref& ref) const; - uint32 MessageFlags(uint32 uid) const; + status_t GetMessageEntryRef(uint32 uid, entry_ref& ref); + status_t GetMessageUID(const entry_ref& ref, + uint32& uid) const; + uint32 MessageFlags(uint32 uid); + + void UpdateMessageFlags(uint32 uid, + uint32 mailboxFlags); status_t StoreMessage(uint32 fetchFlags, BDataIO& stream, size_t& length, entry_ref& ref, @@ -68,49 +79,75 @@ public: uint32 fetchFlags, uint32 uid, uint32 flags); + void RegisterPendingBodies( + IMAP::MessageUIDList& uids, + const BMessenger* replyTo); status_t StoreBody(uint32 uid, BDataIO& stream, size_t& length, entry_ref& ref, BFile& file); void BodyStored(entry_ref& ref, BFile& file, uint32 uid); + void StoringBodyFailed(const entry_ref& ref, + uint32 uid, status_t error); void DeleteMessage(uint32 uid); - void SetMessageFlags(uint32 uid, uint32 flags); virtual void MessageReceived(BMessage* message); private: void _InitializeFolderState(); const MessageToken _Token(uint32 uid) const; - uint32 _ReadUniqueID(BNode& node); - status_t _WriteUniqueID(BNode& node, uint32 uid); - uint32 _ReadFlags(BNode& node); - status_t _WriteFlags(BNode& node, uint32 flags); + void _NotifyStoredBody(const entry_ref& ref, + uint32 uid, status_t status); + status_t _GetMessageEntryRef(uint32 uid, + entry_ref& ref) const; - uint32 _ReadUInt32(BNode& node, const char* attribute); + void _IMAPToMailFlags(uint32 flags, + BMessage& attributes); + status_t _MailToIMAPFlags(BNode& node, uint32& flags); + void _TestMessageFlags(uint32 previousFlags, + uint32 mailboxFlags, uint32 currentFlags, + uint32 testFlag, uint32& nextFlags); + + uint32 _ReadUniqueID(BNode& node) const; + status_t _WriteUniqueID(BNode& node, uint32 uid) const; + uint32 _ReadUniqueIDValidity(BNode& node) const; + status_t _WriteUniqueIDValidity(BNode& node) const; + uint32 _ReadFlags(BNode& node) const; + status_t _WriteFlags(BNode& node, uint32 flags) const; + + uint32 _ReadUInt32(BNode& node, + const char* attribute) const; status_t _WriteUInt32(BNode& node, - const char* attribute, uint32 value); + const char* attribute, uint32 value) const; status_t _WriteStream(BFile& file, BDataIO& stream, - size_t& length); + size_t& length) const; private: + typedef std::vector MessengerList; #if __GNUC__ >= 4 typedef __gnu_cxx::hash_map UIDToFlagsMap; typedef __gnu_cxx::hash_map UIDToRefMap; + typedef __gnu_cxx::hash_map MessengerMap; #else typedef std::hash_map UIDToFlagsMap; typedef std::hash_map UIDToRefMap; + typedef std::hash_map MessengerMap; #endif IMAPProtocol& fProtocol; const entry_ref fRef; BString fMailboxName; + ino_t fNodeID; uint32 fUIDValidity; uint32 fLastUID; FolderListener* fListener; + mutex fLock; + bool fInitializing; UIDToRefMap fRefMap; UIDToFlagsMap fFlagsMap; + MessengerMap fPendingBodies; }; diff --git a/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPMailbox.cpp b/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPMailbox.cpp index deaf958c43..4a8603ff73 100644 --- a/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPMailbox.cpp +++ b/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPMailbox.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2013, Axel Dörfler, axeld@pinc-software.de. + * Copyright 2013-2016, Axel Dörfler, axeld@pinc-software.de. * Distributed under the terms of the MIT License. */ @@ -86,7 +86,7 @@ IMAPMailbox::MessageAdded(const MessageToken& fromToken, const entry_ref& ref) { printf("IMAP: message added %s, uid %" B_PRIu32 "\n", ref.name, fromToken.uid); - return 0; + return fromToken.uid; } diff --git a/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPProtocol.cpp b/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPProtocol.cpp index fc81fdf275..b25ba73301 100644 --- a/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPProtocol.cpp +++ b/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPProtocol.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2013-2015, Axel Dörfler, axeld@pinc-software.de. + * Copyright 2013-2016, Axel Dörfler, axeld@pinc-software.de. * Distributed under the terms of the MIT License. */ @@ -7,6 +7,7 @@ #include "IMAPProtocol.h" #include +#include #include "IMAPConnectionWorker.h" #include "IMAPFolder.h" @@ -27,6 +28,8 @@ IMAPProtocol::IMAPProtocol(const BMailAccountSettings& settings) destination.Path(), strerror(status)); } + mutex_init(&fWorkerLock, "imap worker lock"); + PostMessage(B_READY_TO_RUN); } @@ -61,6 +64,8 @@ IMAPProtocol::CheckSubscribedFolders(IMAP::Protocol& protocol, bool idle) if (idle) workersWanted = std::min(fSettings.MaxConnections(), totalMailboxes); + MutexLocker locker(fWorkerLock); + if (newFolders.IsEmpty() && fWorkers.CountItems() == workersWanted) { // Nothing to do - we've already distributed everything return B_OK; @@ -70,6 +75,7 @@ IMAPProtocol::CheckSubscribedFolders(IMAP::Protocol& protocol, bool idle) for (int32 i = 0; i < fWorkers.CountItems(); i++) { fWorkers.ItemAt(i)->RemoveAllMailboxes(); } + fWorkerMap.clear(); // Create/remove connection workers as allowed and needed while (fWorkers.CountItems() < workersWanted) { @@ -104,7 +110,11 @@ IMAPProtocol::CheckSubscribedFolders(IMAP::Protocol& protocol, bool idle) FolderMap::iterator iterator = fFolders.begin(); int32 index = 0; for (; iterator != fFolders.end(); iterator++) { - fWorkers.ItemAt(index)->AddMailbox(iterator->second); + IMAPConnectionWorker* worker = fWorkers.ItemAt(index); + IMAPFolder* folder = iterator->second; + worker->AddMailbox(folder); + fWorkerMap.insert(std::make_pair(folder, worker)); + index = (index + 1) % fWorkers.CountItems(); } @@ -116,13 +126,21 @@ IMAPProtocol::CheckSubscribedFolders(IMAP::Protocol& protocol, bool idle) void IMAPProtocol::WorkerQuit(IMAPConnectionWorker* worker) { + MutexLocker locker(fWorkerLock); fWorkers.RemoveItem(worker); + + WorkerMap::iterator iterator = fWorkerMap.begin(); + while (iterator != fWorkerMap.end()) { + WorkerMap::iterator removed = iterator++; + if (removed->second == worker) + fWorkerMap.erase(removed); + } } void -IMAPProtocol::MessageStored(IMAPFolder& folder, entry_ref& ref, BFile& stream, - uint32 fetchFlags, BMessage& attributes) +IMAPProtocol::MessageStored(IMAPFolder& folder, entry_ref& ref, + BFile& stream, uint32 fetchFlags, BMessage& attributes) { if ((fetchFlags & (IMAP::kFetchHeader | IMAP::kFetchBody)) == (IMAP::kFetchHeader | IMAP::kFetchBody)) { @@ -135,11 +153,26 @@ IMAPProtocol::MessageStored(IMAPFolder& folder, entry_ref& ref, BFile& stream, } +status_t +IMAPProtocol::UpdateMessageFlags(IMAPFolder& folder, uint32 uid, uint32 flags) +{ + MutexLocker locker(fWorkerLock); + + WorkerMap::const_iterator found = fWorkerMap.find(&folder); + if (found == fWorkerMap.end()) + return B_ERROR; + + IMAPConnectionWorker* worker = found->second; + return worker->EnqueueUpdateFlags(folder, uid, flags); +} + + status_t IMAPProtocol::SyncMessages() { puts("IMAP: sync"); + MutexLocker locker(fWorkerLock); if (fWorkers.IsEmpty()) { // Create main (and possibly initial) connection worker IMAPConnectionWorker* worker = new IMAPConnectionWorker(*this, @@ -157,14 +190,6 @@ IMAPProtocol::SyncMessages() } -status_t -IMAPProtocol::FetchBody(const entry_ref& ref) -{ - printf("IMAP: fetch body %s\n", ref.name); - return B_ERROR; -} - - status_t IMAPProtocol::MarkMessageAsRead(const entry_ref& ref, read_flags flags) { @@ -173,14 +198,6 @@ IMAPProtocol::MarkMessageAsRead(const entry_ref& ref, read_flags flags) } -status_t -IMAPProtocol::DeleteMessage(const entry_ref& ref) -{ - printf("IMAP: delete message %s\n", ref.name); - return B_ERROR; -} - - status_t IMAPProtocol::AppendMessage(const entry_ref& ref) { @@ -204,6 +221,38 @@ IMAPProtocol::MessageReceived(BMessage* message) } +status_t +IMAPProtocol::HandleFetchBody(const entry_ref& ref, const BMessenger& replyTo) +{ + printf("IMAP: fetch body %s\n", ref.name); + MutexLocker locker(fWorkerLock); + + IMAPFolder* folder = _FolderFor(ref.directory); + if (folder == NULL) + return B_ENTRY_NOT_FOUND; + + uint32 uid; + status_t status = folder->GetMessageUID(ref, uid); + if (status != B_OK) + return status; + + WorkerMap::const_iterator found = fWorkerMap.find(folder); + if (found == fWorkerMap.end()) + return B_ERROR; + + IMAPConnectionWorker* worker = found->second; + return worker->EnqueueFetchBody(*folder, uid, replyTo); +} + + +status_t +IMAPProtocol::HandleDeleteMessage(const entry_ref& ref) +{ + printf("IMAP: delete message %s\n", ref.name); + return B_ERROR; +} + + void IMAPProtocol::ReadyToRun() { @@ -239,7 +288,27 @@ IMAPProtocol::_CreateFolder(const BString& mailbox, const BString& separator) return NULL; } - return new IMAPFolder(*this, mailbox, ref); + IMAPFolder* folder = new IMAPFolder(*this, mailbox, ref); + status = folder->Init(); + if (status != B_OK) { + fprintf(stderr, "Initializing folder %s failed: %s\n", path.Path(), + strerror(status)); + return NULL; + } + + fFolderNodeMap.insert(std::make_pair(folder->NodeID(), folder)); + return folder; +} + + +IMAPFolder* +IMAPProtocol::_FolderFor(ino_t directory) +{ + FolderNodeMap::const_iterator found = fFolderNodeMap.find(directory); + if (found != fFolderNodeMap.end()) + return found->second; + + return NULL; } diff --git a/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPProtocol.h b/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPProtocol.h index fb3d1441aa..57ab5816d6 100644 --- a/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPProtocol.h +++ b/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPProtocol.h @@ -1,5 +1,5 @@ /* - * Copyright 2013, Axel Dörfler, axeld@pinc-software.de. + * Copyright 2013-2016, Axel Dörfler, axeld@pinc-software.de. * Distributed under the terms of the MIT License. */ #ifndef IMAP_PROTOCOL_H @@ -11,6 +11,9 @@ #include #include +#include + +#include "Commands.h" #include "Settings.h" @@ -38,27 +41,39 @@ public: entry_ref& ref, BFile& stream, uint32 fetchFlags, BMessage& attributes); + status_t UpdateMessageFlags(IMAPFolder& folder, + uint32 uid, uint32 flags); + virtual status_t SyncMessages(); - virtual status_t FetchBody(const entry_ref& ref); virtual status_t MarkMessageAsRead(const entry_ref& ref, read_flags flags = B_READ); - virtual status_t DeleteMessage(const entry_ref& ref); virtual status_t AppendMessage(const entry_ref& ref); virtual void MessageReceived(BMessage* message); protected: + virtual status_t HandleFetchBody(const entry_ref& ref, + const BMessenger& replyTo); + virtual status_t HandleDeleteMessage(const entry_ref& ref); + void ReadyToRun(); private: IMAPFolder* _CreateFolder(const BString& mailbox, const BString& separator); + IMAPFolder* _FolderFor(ino_t directory); status_t _EnqueueCheckMailboxes(); protected: + typedef std::map WorkerMap; + typedef std::map FolderNodeMap; + Settings fSettings; + mutex fWorkerLock; BObjectList fWorkers; + WorkerMap fWorkerMap; FolderMap fFolders; + FolderNodeMap fFolderNodeMap; }; diff --git a/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/Commands.cpp b/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/Commands.cpp index bb4abbf1d8..31cf6e459d 100644 --- a/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/Commands.cpp +++ b/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/Commands.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2011-2015, Haiku, Inc. All rights reserved. + * Copyright 2011-2016, Haiku, Inc. All rights reserved. * Copyright 2011, Clemens Zeidler * Distributed under the terms of the MIT License. */ @@ -473,7 +473,7 @@ SetFlagsCommand::SetFlagsCommand(uint32 uid, uint32 flags) BString SetFlagsCommand::CommandString() { - BString command = "STORE "; + BString command = "UID STORE "; command << fUID << " FLAGS (" << GenerateFlagString(fFlags) << ")"; return command; diff --git a/src/add-ons/mail_daemon/inbound_protocols/pop3/POP3.cpp b/src/add-ons/mail_daemon/inbound_protocols/pop3/POP3.cpp index f06dd9f11c..4ecdfc525a 100644 --- a/src/add-ons/mail_daemon/inbound_protocols/pop3/POP3.cpp +++ b/src/add-ons/mail_daemon/inbound_protocols/pop3/POP3.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2007-2015, Haiku, Inc. All rights reserved. + * Copyright 2007-2016, Haiku, Inc. All rights reserved. * Copyright 2001-2002 Dr. Zoidberg Enterprises. All rights reserved. * Copyright 2011, Clemens Zeidler * @@ -253,7 +253,7 @@ POP3Protocol::SyncMessages() status_t -POP3Protocol::FetchBody(const entry_ref& ref) +POP3Protocol::HandleFetchBody(const entry_ref& ref, const BMessenger& replyTo) { ResetProgress("Fetch body"); SetTotalItems(1); @@ -303,6 +303,7 @@ POP3Protocol::FetchBody(const entry_ref& ref) BMessage attributes; NotifyBodyFetched(ref, file, attributes); + ReplyBodyFetched(replyTo, ref, B_OK); if (!leaveOnServer) Delete(toRetrieve); @@ -316,7 +317,7 @@ POP3Protocol::FetchBody(const entry_ref& ref) status_t -POP3Protocol::DeleteMessage(const entry_ref& ref) +POP3Protocol::HandleDeleteMessage(const entry_ref& ref) { status_t error = Connect(); if (error < B_OK) diff --git a/src/add-ons/mail_daemon/inbound_protocols/pop3/POP3.h b/src/add-ons/mail_daemon/inbound_protocols/pop3/POP3.h index f83e9918e5..c4cf020300 100644 --- a/src/add-ons/mail_daemon/inbound_protocols/pop3/POP3.h +++ b/src/add-ons/mail_daemon/inbound_protocols/pop3/POP3.h @@ -1,5 +1,5 @@ /* - * Copyright 2007-2013, Haiku Inc. All Rights Reserved. + * Copyright 2007-2016, Haiku Inc. All Rights Reserved. * Copyright 2001-2002 Dr. Zoidberg Enterprises. All rights reserved. * Copyright 2011, Clemens Zeidler * @@ -35,14 +35,16 @@ public: status_t Disconnect(); status_t SyncMessages(); - status_t FetchBody(const entry_ref& ref); - status_t DeleteMessage(const entry_ref& ref); status_t Retrieve(int32 message, BPositionIO* to); status_t GetHeader(int32 message, BPositionIO* to); void Delete(int32 index); protected: + virtual status_t HandleFetchBody(const entry_ref& ref, + const BMessenger& replyTo); + virtual status_t HandleDeleteMessage(const entry_ref& ref); + // pop3 methods status_t Open(const char* server, int port, int protocol); diff --git a/src/apps/mail/MailWindow.cpp b/src/apps/mail/MailWindow.cpp index 27ed9118e7..b29e1a15c5 100644 --- a/src/apps/mail/MailWindow.cpp +++ b/src/apps/mail/MailWindow.cpp @@ -1036,6 +1036,7 @@ TMailWindow::MessageReceived(BMessage* msg) { status_t status = msg->FindInt32("status"); if (status != B_OK) { + fprintf(stderr, "Body could not be fetched: %s\n", strerror(status)); PostMessage(B_QUIT_REQUESTED); break; } @@ -2862,7 +2863,9 @@ TMailWindow::OpenMessage(const entry_ref* ref, uint32 characterSetForDecoding) if (strcmp(mimeType, B_PARTIAL_MAIL_TYPE) == 0) { BMessenger listener(this); - BMailDaemon().FetchBody(*ref, &listener); + status_t status = BMailDaemon().FetchBody(*ref, &listener); + if (status != B_OK) + fprintf(stderr, "Could not fetch body: %s\n", strerror(status)); fileInfo.GetType(mimeType); _SetDownloading(true); } else diff --git a/src/kits/mail/MailProtocol.cpp b/src/kits/mail/MailProtocol.cpp index f73d959cad..eb3bcc1698 100644 --- a/src/kits/mail/MailProtocol.cpp +++ b/src/kits/mail/MailProtocol.cpp @@ -1,10 +1,9 @@ /* - * Copyright 2011-2015, Haiku, Inc. All rights reserved. + * Copyright 2011-2016, Haiku, Inc. All rights reserved. * Copyright 2001-2003 Dr. Zoidberg Enterprises. All rights reserved. */ -//#include #include #include @@ -415,17 +414,15 @@ BInboundMailProtocol::MessageReceived(BMessage* message) case kMsgFetchBody: { entry_ref ref; - message->FindRef("ref", &ref); - status_t status = FetchBody(ref); - - BMessenger target; - if (message->FindMessenger("target", &target) != B_OK) + if (message->FindRef("ref", &ref) != B_OK) break; - BMessage message(B_MAIL_BODY_FETCHED); - message.AddInt32("status", status); - message.AddRef("ref", &ref); - target.SendMessage(&message); + BMessenger target; + message->FindMessenger("target", &target); + + status_t status = HandleFetchBody(ref, target); + if (status != B_OK) + ReplyBodyFetched(target, ref, status); break; } @@ -461,6 +458,18 @@ BInboundMailProtocol::MessageReceived(BMessage* message) } +status_t +BInboundMailProtocol::FetchBody(const entry_ref& ref, BMessenger* replyTo) +{ + BMessage message(kMsgFetchBody); + message.AddRef("ref", &ref); + if (replyTo != NULL) + message.AddMessenger("target", *replyTo); + + return BMessenger(this).SendMessage(&message); +} + + status_t BInboundMailProtocol::MarkMessageAsRead(const entry_ref& ref, read_flags flag) { @@ -469,6 +478,13 @@ BInboundMailProtocol::MarkMessageAsRead(const entry_ref& ref, read_flags flag) } +status_t +BInboundMailProtocol::DeleteMessage(const entry_ref& ref) +{ + return B_ERROR; +} + + status_t BInboundMailProtocol::AppendMessage(const entry_ref& ref) { @@ -476,6 +492,17 @@ BInboundMailProtocol::AppendMessage(const entry_ref& ref) } +/*static*/ void +BInboundMailProtocol::ReplyBodyFetched(const BMessenger& replyTo, + const entry_ref& ref, status_t status) +{ + BMessage message(B_MAIL_BODY_FETCHED); + message.AddInt32("status", status); + message.AddRef("ref", &ref); + replyTo.SendMessage(&message); +} + + void BInboundMailProtocol::NotiyMailboxSynchronized(status_t status) { diff --git a/src/kits/mail/mail_util.cpp b/src/kits/mail/mail_util.cpp index 05bb4e7efe..8fec8828d4 100644 --- a/src/kits/mail/mail_util.cpp +++ b/src/kits/mail/mail_util.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2011, Haiku, Inc. All rights reserved. + * Copyright 2011-2016, Haiku, Inc. All rights reserved. * Copyright 2001-2003 Dr. Zoidberg Enterprises. All rights reserved. */ @@ -159,13 +159,13 @@ write_read_attr(BNode& node, read_flags flag) < 0) return B_ERROR; - // manage the status string only if it currently has a "read" status + // Manage the status string only if it currently has a known state BString currentStatus; - if (node.ReadAttrString(B_MAIL_ATTR_STATUS, ¤tStatus) == B_OK) { - if (currentStatus.ICompare("New") != 0 - && currentStatus.ICompare("Read") != 0 - && currentStatus.ICompare("Seen") != 0) - return B_OK; + if (node.ReadAttrString(B_MAIL_ATTR_STATUS, ¤tStatus) == B_OK + && currentStatus.ICompare("New") != 0 + && currentStatus.ICompare("Read") != 0 + && currentStatus.ICompare("Seen") != 0) { + return B_OK; } const char* statusString = flag == B_READ ? "Read" diff --git a/src/servers/mail/MailDaemonApplication.cpp b/src/servers/mail/MailDaemonApplication.cpp index dc1d2fe39b..0a9c486e6c 100644 --- a/src/servers/mail/MailDaemonApplication.cpp +++ b/src/servers/mail/MailDaemonApplication.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2007-2015, Haiku, Inc. All rights reserved. + * Copyright 2007-2016, Haiku, Inc. All rights reserved. * Copyright 2001-2002 Dr. Zoidberg Enterprises. All rights reserved. * Copyright 2011, Clemens Zeidler * Distributed under the terms of the MIT License. @@ -67,16 +67,6 @@ public: { } - status_t FetchBody(const entry_ref& ref, BMessenger* replyTo) - { - BMessage message(kMsgFetchBody); - message.AddRef("ref", &ref); - if (replyTo != NULL) - message.AddMessenger("target", *replyTo); - - return SendMessage(&message); - } - status_t MarkAsRead(const entry_ref& ref, read_flags flag) { BMessage message(kMsgMarkMessageAsRead); @@ -248,7 +238,7 @@ MailDaemonApplication::RefsReceived(BMessage* message) if (message->FindMessenger("target", &target) != B_OK) replyTo = NULL; - InboundMessenger(protocol).FetchBody(ref, replyTo); + protocol->FetchBody(ref, replyTo); } } From 32276e776290170a7da22864dec9a11d3b95eb81 Mon Sep 17 00:00:00 2001 From: Rudolf Cornelissen Date: Tue, 5 Jan 2016 21:20:00 +0100 Subject: [PATCH 075/242] via driver: fixed kerneldriver crashing system because of failing area mapping --- src/add-ons/kernel/drivers/graphics/via/driver.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/add-ons/kernel/drivers/graphics/via/driver.c b/src/add-ons/kernel/drivers/graphics/via/driver.c index 5b572647e5..31f044e869 100644 --- a/src/add-ons/kernel/drivers/graphics/via/driver.c +++ b/src/add-ons/kernel/drivers/graphics/via/driver.c @@ -4,7 +4,7 @@ Other authors: Mark Watson; - Rudolf Cornelissen 3/2002-4/2006. + Rudolf Cornelissen 3/2002-1/2016. */ /* standard kernel driver stuff */ @@ -418,7 +418,7 @@ static status_t map_device(device_info *di) rom_area = map_physical_memory( buffer, - (void *)di->pcii.u.h0.rom_base_pci, + di->pcii.u.h0.rom_base_pci, di->pcii.u.h0.rom_size, B_ANY_KERNEL_ADDRESS, B_READ_AREA, @@ -441,7 +441,7 @@ static status_t map_device(device_info *di) /* ROM was not assigned an adress, fetch it from ISA legacy memory map! */ rom_area = map_physical_memory( buffer, - (void *)0x000c0000, + 0x000c0000, 65536, B_ANY_KERNEL_ADDRESS, B_READ_AREA, @@ -477,7 +477,7 @@ static status_t map_device(device_info *di) si->fb_area = map_physical_memory( buffer, /* WARNING: Nvidia needs to map framebuffer as viewed from PCI space! */ - (void *) di->pcii.u.h0.base_registers_pci[frame_buffer], + di->pcii.u.h0.base_registers_pci[frame_buffer], di->pcii.u.h0.base_register_sizes[frame_buffer], B_ANY_KERNEL_BLOCK_ADDRESS | B_MTR_WC, B_READ_AREA + B_WRITE_AREA, @@ -488,7 +488,7 @@ static status_t map_device(device_info *di) si->fb_area = map_physical_memory( buffer, /* WARNING: Nvidia needs to map framebuffer as viewed from PCI space! */ - (void *) di->pcii.u.h0.base_registers_pci[frame_buffer], + di->pcii.u.h0.base_registers_pci[frame_buffer], di->pcii.u.h0.base_register_sizes[frame_buffer], B_ANY_KERNEL_BLOCK_ADDRESS, B_READ_AREA + B_WRITE_AREA, From b0c69e8490312c7dacdce7429c5f811c4037c4e9 Mon Sep 17 00:00:00 2001 From: Rudolf Cornelissen Date: Tue, 5 Jan 2016 23:49:00 +0100 Subject: [PATCH 076/242] nVidia driver: added option to block EDID resolution restrictions (check_edid) --- .../private/graphics/nvidia/DriverInterface.h | 3 +- .../accelerants/nvidia/InitAccelerant.c | 6 ++-- .../accelerants/nvidia/ProposeDisplayMode.c | 36 ++++++++++--------- .../accelerants/nvidia/engine/nv_general.c | 4 +-- .../drivers/graphics/nvidia/README.html | 10 +++++- .../drivers/graphics/nvidia/UPDATE.html | 5 +-- .../kernel/drivers/graphics/nvidia/driver.c | 5 ++- .../drivers/graphics/nvidia/nvidia.settings | 1 + 8 files changed, 44 insertions(+), 26 deletions(-) diff --git a/headers/private/graphics/nvidia/DriverInterface.h b/headers/private/graphics/nvidia/DriverInterface.h index 4c94ab2e9f..3ea2b63f31 100644 --- a/headers/private/graphics/nvidia/DriverInterface.h +++ b/headers/private/graphics/nvidia/DriverInterface.h @@ -5,7 +5,7 @@ Other authors: Mark Watson; Apsed; - Rudolf Cornelissen 10/2002-12/2015. + Rudolf Cornelissen 10/2002-1/2016. */ #ifndef DRIVERINTERFACE_H @@ -245,6 +245,7 @@ typedef struct { // apsed, see comments in nvidia.settings bool block_acc; uint32 gpu_clk; uint32 ram_clk; + bool check_edid; } nv_settings; /* monitor info gathered via EDID */ diff --git a/src/add-ons/accelerants/nvidia/InitAccelerant.c b/src/add-ons/accelerants/nvidia/InitAccelerant.c index 9c241b40c8..e2fb8e255f 100644 --- a/src/add-ons/accelerants/nvidia/InitAccelerant.c +++ b/src/add-ons/accelerants/nvidia/InitAccelerant.c @@ -4,7 +4,7 @@ Other authors: Mark Watson, - Rudolf Cornelissen 10/2002-12/2015. + Rudolf Cornelissen 10/2002-1/2016. */ #define MODULE_BIT 0x00800000 @@ -42,8 +42,8 @@ static status_t init_common(int the_fd) { si->settings.logmask, si->settings.memory, si->settings.hardcursor, si->settings.usebios, si->settings.switchhead, si->settings.force_pci)); LOG(4,("init_common: dumprom %d, unhide_fw %d, pgm_panel %d, dma_acc %d, tv_output %d, vga_on_tv %d\n", si->settings.dumprom, si->settings.unhide_fw, si->settings.pgm_panel, si->settings.dma_acc, si->settings.tv_output, si->settings.vga_on_tv)); - LOG(4,("init_common: force_sync %d, gpu_clk %dMhz, ram_clk %dMhz, force_ws %d, block_acc %d\n", - si->settings.force_sync, si->settings.gpu_clk, si->settings.ram_clk, si->settings.force_ws, si->settings.block_acc)); + LOG(4,("init_common: force_sync %d, gpu_clk %dMhz, ram_clk %dMhz, force_ws %d, block_acc %d, check_edid %d\n", + si->settings.force_sync, si->settings.gpu_clk, si->settings.ram_clk, si->settings.force_ws, si->settings.block_acc, si->settings.check_edid)); /*Check for R4.5.0 and if it is running, use work around*/ { diff --git a/src/add-ons/accelerants/nvidia/ProposeDisplayMode.c b/src/add-ons/accelerants/nvidia/ProposeDisplayMode.c index f08094c89b..edd69180ee 100644 --- a/src/add-ons/accelerants/nvidia/ProposeDisplayMode.c +++ b/src/add-ons/accelerants/nvidia/ProposeDisplayMode.c @@ -4,7 +4,7 @@ Other authors for NV driver: Mark Watson, - Rudolf Cornelissen 9/2002-12/2015 + Rudolf Cornelissen 9/2002-1/2016 */ #define MODULE_BIT 0x00400000 @@ -316,22 +316,26 @@ PROPOSE_DISPLAY_MODE(display_mode *target, const display_mode *low, const displa } } - /* check if screen(s) can display the requested resolution (if we have it's EDID info) - note: - allowing 2 pixels more for horizontal display for the 1366 mode, since multiples of 8 - are required for the CRTCs horizontal timing programming) */ - if (si->ps.crtc1_screen.have_native_edid) { - if ((target->timing.h_display - 2) > si->ps.crtc1_screen.timing.h_display - || target->timing.v_display > si->ps.crtc1_screen.timing.v_display) { - LOG(4, ("PROPOSEMODE: screen at crtc1 can't display requested resolution, aborted.\n")); - return B_ERROR; + /* only limit modelist if user did not explicitly block this via nv.settings + (because of errors in monitor's EDID information returned) */ + if (si->settings.check_edid) { + /* check if screen(s) can display the requested resolution (if we have it's EDID info) + note: + allowing 2 pixels more for horizontal display for the 1366 mode, since multiples of 8 + are required for the CRTCs horizontal timing programming) */ + if (si->ps.crtc1_screen.have_native_edid) { + if ((target->timing.h_display - 2) > si->ps.crtc1_screen.timing.h_display + || target->timing.v_display > si->ps.crtc1_screen.timing.v_display) { + LOG(4, ("PROPOSEMODE: screen at crtc1 can't display requested resolution, aborted.\n")); + return B_ERROR; + } } - } - if (si->ps.crtc2_screen.have_native_edid) { - if ((target->timing.h_display - 2) > si->ps.crtc2_screen.timing.h_display - || target->timing.v_display > si->ps.crtc2_screen.timing.v_display) { - LOG(4, ("PROPOSEMODE: screen at crtc2 can't display requested resolution, aborted.\n")); - return B_ERROR; + if (si->ps.crtc2_screen.have_native_edid) { + if ((target->timing.h_display - 2) > si->ps.crtc2_screen.timing.h_display + || target->timing.v_display > si->ps.crtc2_screen.timing.v_display) { + LOG(4, ("PROPOSEMODE: screen at crtc2 can't display requested resolution, aborted.\n")); + return B_ERROR; + } } } diff --git a/src/add-ons/accelerants/nvidia/engine/nv_general.c b/src/add-ons/accelerants/nvidia/engine/nv_general.c index 0b33922d51..ee94571db7 100644 --- a/src/add-ons/accelerants/nvidia/engine/nv_general.c +++ b/src/add-ons/accelerants/nvidia/engine/nv_general.c @@ -1,7 +1,7 @@ /* Authors: Mark Watson 12/1999, Apsed, - Rudolf Cornelissen 10/2002-6/2010 + Rudolf Cornelissen 10/2002-1/2016 tst.. */ @@ -92,7 +92,7 @@ status_t nv_general_powerup() { status_t status; - LOG(1,("POWERUP: Haiku nVidia Accelerant 1.09 running.\n")); + LOG(1,("POWERUP: Haiku nVidia Accelerant 1.10 running.\n")); /* log VBLANK INT usability status */ if (si->ps.int_assigned) diff --git a/src/add-ons/kernel/drivers/graphics/nvidia/README.html b/src/add-ons/kernel/drivers/graphics/nvidia/README.html index 44fe6666f3..e1440bfd11 100644 --- a/src/add-ons/kernel/drivers/graphics/nvidia/README.html +++ b/src/add-ons/kernel/drivers/graphics/nvidia/README.html @@ -254,10 +254,18 @@ The acceleration engine is disabled.
      • On Haiku the acceleration engine is not used at all.
      +
    • check_edid:
      +This option lets you disable adherence to your monitor's reported capabilities via EDID. It happens very rarely that especially older monitors report their capabilities in a non-correct way, making the driver believe it has less capabilities than it actually has. +
        +
      • false:
        + check_edid false prevents the driver from blocking modes your monitor does not support according to the EDID information it returns to the driver. The driver still fetches the EDID information from your monitor, and still checks it's aspect ratio. +
      • true: (default setting)
        + Keep it set to check_edid true, unless you have determined that your monitor supports higher resolution modes than the modes the driver lets you choose from currently. +


    Rudolf Cornelissen.
    -

    (Page last updated on January 4, 2016)

    +

    (Page last updated on January 5, 2016)

    diff --git a/src/add-ons/kernel/drivers/graphics/nvidia/UPDATE.html b/src/add-ons/kernel/drivers/graphics/nvidia/UPDATE.html index ee2a08dfd9..7ce908724d 100644 --- a/src/add-ons/kernel/drivers/graphics/nvidia/UPDATE.html +++ b/src/add-ons/kernel/drivers/graphics/nvidia/UPDATE.html @@ -4,7 +4,7 @@

    Changes done for each driverversion:

    -

    head (Haiku repository 1.09, Rudolf)

    +

    head (Haiku repository 1.10, Rudolf)

    • Fixed driver assuming enabling AGP mode succeeded on some occasions if it did not block it itself. Blocking AGP mode completely via the AGP busmanager (option 'block_agp') resulted in a crashing acceleration engine because it was setup for AGP transfers instead of using PCI transfers. Error was solved with help from user kraton.
    • Fixed shared_info struct problem occuring when 3D 'accelerant' is used (tested Alpha 4.1): the TVencoder type definition list apparantly gets some memory assigned these days when done inside the definition of shared_info. Moved encoder list outside the shared_info definition. @@ -34,7 +34,8 @@
    • Added dithering for laptop panels (if they are connected to DAC1 only for now). Gradients should now display much more fluently on 18bit depth panels (no more 'colorbands');
    • Fixed black screen on (some?) NV44 cards like Geforce 6100, 6150 and 6200 types;
    • Modified 'force_ws' option to force aspect 16:9 instead of 16:10 so both aspect widescreen modes are settable; -
    • Added basic support for Haiku's native ScreenPrefs panel for dualhead modes. No TVout currently, and switched dualhead mode is not remembered over reboots nor is it coupled with workspaces (so unlike as it is with Dualhead Setup). +
    • Added basic support for Haiku's native ScreenPrefs panel for dualhead modes. No TVout currently, and switched dualhead mode is not remembered over reboots nor is it coupled with workspaces (so unlike as it is with Dualhead Setup); +
    • Added new nv.setting called 'check_edid' that forces higher resolution modes to be available on monitors that don't report their EDID info correctly (if option is set to 'false'). Only use this new option if appropriate of course, too high resolution modes will not be liked by your monitor(s)!

    nv_driver 0.80 (Rudolf)

      diff --git a/src/add-ons/kernel/drivers/graphics/nvidia/driver.c b/src/add-ons/kernel/drivers/graphics/nvidia/driver.c index 9420b76c43..34e586f20f 100644 --- a/src/add-ons/kernel/drivers/graphics/nvidia/driver.c +++ b/src/add-ons/kernel/drivers/graphics/nvidia/driver.c @@ -4,7 +4,7 @@ Other authors: Mark Watson; - Rudolf Cornelissen 3/2002-6/2010. + Rudolf Cornelissen 3/2002-1/2016. */ @@ -391,6 +391,7 @@ static nv_settings sSettings = { // see comments in nvidia.settings false, // block_acc 0, // gpu_clk 0, // ram_clk + true, // check_edid }; @@ -1460,6 +1461,8 @@ init_driver(void) "force_ws", false, false); sSettings.block_acc = get_driver_boolean_parameter(settings, "block_acc", false, false); + sSettings.check_edid = get_driver_boolean_parameter(settings, + "check_edid", true, true); item = get_driver_parameter(settings, "gpu_clk", "0", "0"); value = strtoul(item, &end, 0); diff --git a/src/add-ons/kernel/drivers/graphics/nvidia/nvidia.settings b/src/add-ons/kernel/drivers/graphics/nvidia/nvidia.settings index c57a21ac62..250e781919 100644 --- a/src/add-ons/kernel/drivers/graphics/nvidia/nvidia.settings +++ b/src/add-ons/kernel/drivers/graphics/nvidia/nvidia.settings @@ -30,6 +30,7 @@ pgm_panel false # if false don't program DVI and laptop panel pixelclocks (refr vga_on_tv false # if true enables VGA output on the head outputting to TV #gpu_clk 150 # in Mhz, (tries to) override default GPU clockspeed (be carefull!!!) #ram_clk 150 # in Mhz, (tries to) override default cardRAM clockspeed (be carefull!!!) +check_edid true # if true blocks resolutions beyond monitor(s) capabilities #--------- that's all. From beddc8eefa12b83e06b959605bda94a6a9ec83ed Mon Sep 17 00:00:00 2001 From: Markus Himmel Date: Mon, 4 Jan 2016 23:06:28 +0100 Subject: [PATCH 077/242] MediaPlayer: Add missing null check Signed-off-by: Dario Casalinuovo --- src/apps/mediaplayer/Controller.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/apps/mediaplayer/Controller.cpp b/src/apps/mediaplayer/Controller.cpp index 5176a3d97f..f555cc8d89 100644 --- a/src/apps/mediaplayer/Controller.cpp +++ b/src/apps/mediaplayer/Controller.cpp @@ -302,7 +302,8 @@ Controller::SetTo(const PlaylistItemRef& item) trackSupplierDeleter.Detach(); // prevent blocking the creation of new overlay buffers - fVideoView->DisableOverlay(); + if (fVideoView) + fVideoView->DisableOverlay(); // get video properties (if there is video at all) bool useOverlays = fVideoView ? fVideoView->UseOverlays() : true; From 1c68b67a36bddb3f444094c305c6a5f3868d77ee Mon Sep 17 00:00:00 2001 From: Markus Himmel Date: Mon, 4 Jan 2016 23:08:04 +0100 Subject: [PATCH 078/242] MediaPlayer: Show total playlist length Signed-off-by: Dario Casalinuovo --- .../mediaplayer/playlist/FilePlaylistItem.cpp | 18 +- .../mediaplayer/playlist/FilePlaylistItem.h | 2 +- src/apps/mediaplayer/playlist/PlaylistItem.h | 5 +- .../mediaplayer/playlist/PlaylistWindow.cpp | 187 +++++++++++++++++- .../mediaplayer/playlist/PlaylistWindow.h | 34 +++- 5 files changed, 236 insertions(+), 10 deletions(-) diff --git a/src/apps/mediaplayer/playlist/FilePlaylistItem.cpp b/src/apps/mediaplayer/playlist/FilePlaylistItem.cpp index 4b1cafd7d0..9279fe19ee 100644 --- a/src/apps/mediaplayer/playlist/FilePlaylistItem.cpp +++ b/src/apps/mediaplayer/playlist/FilePlaylistItem.cpp @@ -190,7 +190,13 @@ status_t FilePlaylistItem::SetAttribute(const Attribute& attribute, const int64& value) { - return B_NOT_SUPPORTED; + switch (attribute) { + case ATTR_INT64_DURATION: + return _SetAttribute("Media:Length", B_INT64_TYPE, &value, + sizeof(int64)); + default: + return B_NOT_SUPPORTED; + } } @@ -198,7 +204,13 @@ status_t FilePlaylistItem::GetAttribute(const Attribute& attribute, int64& value) const { - return B_NOT_SUPPORTED; + switch (attribute) { + case ATTR_INT64_DURATION: + return _GetAttribute("Media:Length", B_INT64_TYPE, &value, + sizeof(int64)); + default: + return B_NOT_SUPPORTED; + } } @@ -407,7 +419,7 @@ FilePlaylistItem::_SetAttribute(const char* attrName, type_code type, status_t FilePlaylistItem::_GetAttribute(const char* attrName, type_code type, - void* data, size_t size) + void* data, size_t size) const { BEntry entry(&fRefs[0], true); BNode node(&entry); diff --git a/src/apps/mediaplayer/playlist/FilePlaylistItem.h b/src/apps/mediaplayer/playlist/FilePlaylistItem.h index a0c4da42fb..fb72f9e802 100644 --- a/src/apps/mediaplayer/playlist/FilePlaylistItem.h +++ b/src/apps/mediaplayer/playlist/FilePlaylistItem.h @@ -67,7 +67,7 @@ private: size_t size); status_t _GetAttribute(const char* attrName, type_code type, void* data, - size_t size); + size_t size) const; status_t _MoveIntoTrash(vector* refs, vector* namesInTrash); status_t _RestoreFromTrash(vector* refs, diff --git a/src/apps/mediaplayer/playlist/PlaylistItem.h b/src/apps/mediaplayer/playlist/PlaylistItem.h index b896df5b77..73de81aa31 100644 --- a/src/apps/mediaplayer/playlist/PlaylistItem.h +++ b/src/apps/mediaplayer/playlist/PlaylistItem.h @@ -49,11 +49,12 @@ public: ATTR_STRING_TITLE = 'titl', ATTR_STRING_AUDIO_BITRATE = 'abtr', ATTR_STRING_VIDEO_BITRATE = 'vbtr', - ATTR_STRING_DURATION = 'drtn', ATTR_INT32_TRACK = 'trck', ATTR_INT32_YEAR = 'year', - ATTR_INT32_RATING = 'rtng' + ATTR_INT32_RATING = 'rtng', + + ATTR_INT64_DURATION = 'drtn' } Attribute; virtual status_t SetAttribute(const Attribute& attribute, diff --git a/src/apps/mediaplayer/playlist/PlaylistWindow.cpp b/src/apps/mediaplayer/playlist/PlaylistWindow.cpp index 08ce627449..fbea517e45 100644 --- a/src/apps/mediaplayer/playlist/PlaylistWindow.cpp +++ b/src/apps/mediaplayer/playlist/PlaylistWindow.cpp @@ -22,6 +22,8 @@ #include #include #include +#include +#include #include #include #include @@ -31,12 +33,16 @@ #include #include #include +#include +#include "AudioTrackSupplier.h" #include "CommandStack.h" +#include "DurationToString.h" #include "MainApp.h" #include "PlaylistListView.h" #include "RWLocker.h" - +#include "TrackSupplier.h" +#include "VideoTrackSupplier.h" #undef B_TRANSLATION_CONTEXT #define B_TRANSLATION_CONTEXT "MediaPlayer-PlaylistWindow" @@ -82,7 +88,8 @@ PlaylistWindow::PlaylistWindow(BRect frame, Playlist* playlist, fPlaylist(playlist), fLocker(new RWLocker("command stack lock")), fCommandStack(new CommandStack(fLocker)), - fCommandStackListener(this) + fCommandStackListener(this), + fDurationListener(new DurationListener(*this)) { frame = Bounds(); @@ -90,6 +97,7 @@ PlaylistWindow::PlaylistWindow(BRect frame, Playlist* playlist, // will adjust frame to account for menubar frame.right -= B_V_SCROLL_BAR_WIDTH; + frame.bottom -= B_H_SCROLL_BAR_HEIGHT; fListView = new PlaylistListView(frame, playlist, controller, fCommandStack); @@ -104,7 +112,23 @@ PlaylistWindow::PlaylistWindow(BRect frame, Playlist* playlist, // make it so the frame of the menubar is also the frame of // the scroll bar (appears to be) scrollBar->MoveBy(0, -1); - scrollBar->ResizeBy(0, -(B_H_SCROLL_BAR_HEIGHT - 2)); + scrollBar->ResizeBy(0, 2); + } + + frame.top += frame.Height(); + frame.bottom += B_H_SCROLL_BAR_HEIGHT; + + fTotalDuration = new BStringView(frame, "fDuration", "", + B_FOLLOW_BOTTOM | B_FOLLOW_LEFT_RIGHT); + AddChild(fTotalDuration); + + _UpdateTotalDuration(0); + + { + BAutolock _(fPlaylist); + + _QueryInitialDurations(); + fPlaylist->AddListener(fDurationListener); } fCommandStack->AddListener(&fCommandStackListener); @@ -121,6 +145,9 @@ PlaylistWindow::~PlaylistWindow() fCommandStack->RemoveListener(&fCommandStackListener); delete fCommandStack; delete fLocker; + + fPlaylist->RemoveListener(fDurationListener); + BMessenger(fDurationListener).SendMessage(B_QUIT_REQUESTED); } @@ -422,3 +449,157 @@ PlaylistWindow::_SavePlaylist(BEntry& origEntry, BEntry& tempEntry, info.SetType("application/x-vnd.haiku-playlist"); } + +void +PlaylistWindow::_QueryInitialDurations() +{ + BAutolock lock(fPlaylist); + + BMessage addMessage(MSG_PLAYLIST_ITEM_ADDED); + for (int32 i = 0; i < fPlaylist->CountItems(); i++) { + addMessage.AddPointer("item", fPlaylist->ItemAt(i)); + addMessage.AddInt32("index", i); + } + + BMessenger(fDurationListener).SendMessage(&addMessage); +} + + +void +PlaylistWindow::_UpdateTotalDuration(bigtime_t duration) +{ + BAutolock lock(this); + + char buffer[64]; + duration /= 1000000; + duration_to_string(duration, buffer, sizeof(buffer)); + + BString text; + text.SetToFormat(B_TRANSLATE("Total duration : %s"), buffer); + + fTotalDuration->SetText(text.String()); +} + + +// #pragma mark - + + +PlaylistWindow::DurationListener::DurationListener(PlaylistWindow& parent) + : + PlaylistObserver(this), + fKnown(20, true), + fTotalDuration(0), + fParent(parent) +{ + Run(); +} + + +PlaylistWindow::DurationListener::~DurationListener() +{ +} + + +void +PlaylistWindow::DurationListener::MessageReceived(BMessage* message) +{ + switch (message->what) { + case MSG_PLAYLIST_ITEM_ADDED: + { + void* item; + int32 index; + + int32 currentItem = 0; + while (message->FindPointer("item", currentItem, &item) == B_OK + && message->FindInt32("index", currentItem, &index) == B_OK) { + _HandleItemAdded(static_cast(item), index); + ++currentItem; + } + + break; + } + + case MSG_PLAYLIST_ITEM_REMOVED: + { + int32 index; + + if (message->FindInt32("index", &index) == B_OK) { + _HandleItemRemoved(index); + } + + break; + } + + default: + BLooper::MessageReceived(message); + break; + } +} + + +bigtime_t +PlaylistWindow::DurationListener::TotalDuration() +{ + return fTotalDuration; +} + + +void +PlaylistWindow::DurationListener::_HandleItemAdded(PlaylistItem* item, + int32 index) +{ + bigtime_t duration = _DetermineItemDuration(item); + fTotalDuration += duration; + fParent._UpdateTotalDuration(fTotalDuration); + fKnown.AddItem(new bigtime_t(duration), index); +} + + +void +PlaylistWindow::DurationListener::_HandleItemRemoved(int32 index) +{ + bigtime_t* deleted = fKnown.RemoveItemAt(index); + fTotalDuration -= *deleted; + fParent._UpdateTotalDuration(fTotalDuration); + + delete deleted; +} + + +bigtime_t +PlaylistWindow::DurationListener::_DetermineItemDuration(PlaylistItem* item) +{ + bigtime_t duration; + if (item->GetAttribute(PlaylistItem::ATTR_INT64_DURATION, duration) == B_OK) + return duration; + + // We have to find out the duration ourselves + if (FilePlaylistItem* file = dynamic_cast(item)) { + // We are dealing with a file + BMediaFile mediaFile(&file->Ref()); + + if (mediaFile.InitCheck() != B_OK || mediaFile.CountTracks() < 1) + return 0; + + duration = mediaFile.TrackAt(0)->Duration(); + } else { + // Not a file, so fall back to the generic TrackSupplier solution + TrackSupplier* supplier = item->CreateTrackSupplier(); + + AudioTrackSupplier* au = supplier->CreateAudioTrackForIndex(0); + VideoTrackSupplier* vi = supplier->CreateVideoTrackForIndex(0); + + duration = max_c(au == NULL ? 0 : au->Duration(), + vi == NULL ? 0 : vi->Duration()); + + delete vi; + delete au; + delete supplier; + } + + // Store the duration for later use + item->SetAttribute(PlaylistItem::ATTR_INT64_DURATION, duration); + + return duration; +} + diff --git a/src/apps/mediaplayer/playlist/PlaylistWindow.h b/src/apps/mediaplayer/playlist/PlaylistWindow.h index 2372385d91..6b70e76c4e 100644 --- a/src/apps/mediaplayer/playlist/PlaylistWindow.h +++ b/src/apps/mediaplayer/playlist/PlaylistWindow.h @@ -11,8 +11,10 @@ #include +#include #include +#include "PlaylistObserver.h" #include "ListenerAdapter.h" @@ -21,11 +23,11 @@ class BMenuItem; class CommandStack; class Controller; class Notifier; -class Playlist; class PlaylistListView; class RWLocker; class BButton; class BFilePanel; +class BStringView; enum { @@ -53,12 +55,39 @@ public: virtual void MessageReceived(BMessage* message); private: + + class DurationListener : public PlaylistObserver, public BLooper { + public: + + DurationListener(PlaylistWindow& parent); + ~DurationListener(); + + void MessageReceived(BMessage* message); + + bigtime_t TotalDuration(); + + private: + void _HandleItemAdded(PlaylistItem* item, + int32 index); + void _HandleItemRemoved(int32 index); + bigtime_t _DetermineItemDuration(PlaylistItem* item); + + BObjectList + fKnown; + bigtime_t fTotalDuration; + PlaylistWindow& fParent; + }; + + friend class DurationListener; + void _CreateMenu(BRect& frame); void _ObjectChanged(const Notifier* object); void _SavePlaylist(const BMessage* filePanelMessage); void _SavePlaylist(const entry_ref& ref); void _SavePlaylist(BEntry& origEntry, BEntry& tempEntry, const char* finalName); + void _QueryInitialDurations(); + void _UpdateTotalDuration(bigtime_t duration); Playlist* fPlaylist; PlaylistListView* fListView; @@ -72,6 +101,9 @@ private: ListenerAdapter fCommandStackListener; entry_ref fSavedPlaylistRef; + + DurationListener* fDurationListener; + BStringView* fTotalDuration; }; From 466081d08a9933dd508b2e8d8bcfe42140e0b1b7 Mon Sep 17 00:00:00 2001 From: Phil Costin Date: Sun, 14 Jun 2015 00:34:56 +0100 Subject: [PATCH 079/242] When realloc(address, size) returns NULL, address must be freed manually. Signed-off-by: Dario Casalinuovo --- src/add-ons/kernel/network/stack/interfaces.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/add-ons/kernel/network/stack/interfaces.cpp b/src/add-ons/kernel/network/stack/interfaces.cpp index ab2fa2d52a..fb13c5cfca 100644 --- a/src/add-ons/kernel/network/stack/interfaces.cpp +++ b/src/add-ons/kernel/network/stack/interfaces.cpp @@ -410,9 +410,14 @@ InterfaceAddress::Prepare(sockaddr** _address, size_t size) sockaddr* address = *_address; if (address == NULL || size > address->sa_len) { - address = (sockaddr*)realloc(address, size); - if (address == NULL) + sockaddr* resized = (sockaddr*)realloc(address, size); + + if (resized == NULL) { + free(address); return NULL; + } + + address = resized; } address->sa_len = size; From 6f5971cf52bcab0f9cfcc203bdc8b62e3c9d8fec Mon Sep 17 00:00:00 2001 From: Dario Casalinuovo Date: Wed, 6 Jan 2016 12:46:22 +0100 Subject: [PATCH 080/242] Follow-up fix for #12152 from axeld suggestions --- src/add-ons/kernel/network/stack/interfaces.cpp | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/src/add-ons/kernel/network/stack/interfaces.cpp b/src/add-ons/kernel/network/stack/interfaces.cpp index fb13c5cfca..f7f6a4dcf7 100644 --- a/src/add-ons/kernel/network/stack/interfaces.cpp +++ b/src/add-ons/kernel/network/stack/interfaces.cpp @@ -409,16 +409,8 @@ InterfaceAddress::Prepare(sockaddr** _address, size_t size) sockaddr* address = *_address; - if (address == NULL || size > address->sa_len) { - sockaddr* resized = (sockaddr*)realloc(address, size); - - if (resized == NULL) { - free(address); - return NULL; - } - - address = resized; - } + if (address == NULL || size > address->sa_len) + address = (sockaddr*)realloc(address, size); address->sa_len = size; From 32d85aaa97466fd87b2b169496eaa8a922960b92 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Revol?= Date: Wed, 6 Jan 2016 13:29:59 +0100 Subject: [PATCH 081/242] Add an App_Dropbox icon A blend of App_Expander_2 and Folder_Virtual for the colors. Could be used for Dropbox clients like Orphilia. --- data/artwork/icons/App_Dropbox | Bin 0 -> 19208 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 data/artwork/icons/App_Dropbox diff --git a/data/artwork/icons/App_Dropbox b/data/artwork/icons/App_Dropbox new file mode 100644 index 0000000000000000000000000000000000000000..6217a48c3da5f41828bc7f8e2511e5a2e185e12e GIT binary patch literal 19208 zcmeHO4UCk<8J_i&pQ}FyVnwU%8rzC!6@P+OtGjm|++mIbfuvMHS?>0@)xF(wcjeDN z#8`{UkBagaDn(EcO_gejX~>?S6h#dNu%@<&SYuifQ_|L$THEXM%zX3hd>^yhIpuPV z+$3|~eb3A{-^}~G?>q0zd^>LZcK@>RV51`CiVswzA+rFmlA zK>U9xat$({trCL+cr$ReT_vgm_)=g;dwA1?39=ow^)|9<=U73U?`8hL!!wDFB&04x zzCF>Jog+H4sZ0U4qE3jp$WiY)3fBe51>|$fw?`DlSBqPGyqOnb|@i+u_q0trg-lP{eCJuB4aLH6oAj zt~DloJ$XRU<@Q8~9+Mm~<|sFEZU%|2)y_uxuHWhTSJO-9*JZ@)-sLhrsQq(REcBc>unW=GrLnU^tQS7tcjFqt-?B|Qwd zX%iZUJgm&*f!mnb=(iILU|#TW$qXZ@6z2V0G@ois`j!!e;ORrPycH3u``O9p zNVN7(pMPdrNKYP6#JD|CiI};L#B9JAU5T+pmK1IjIUHGPd^E~Pl8!7jegiQ6Pn;1X z|7Tu=Y%`e^9xjPtWEl!Y!X&7PYR!!`bvwT}K5QjN*Ol0^RV-OY`I zH9iHnsrAam2{9YEP3!OWaDSqpDi4EG%o z{UUj^k)LMN&f-AouKqrd$^Q7y(Xn^IxIkOwe0VzEjcVs z4RloRnxUynMNj!FHd#UZM}+dHlWlssP}1iDfzqej(F+Bu^#51IlJv{htRVd(Liuy4 zS?z}Sq3BfhM&zv!|6E-6;Hvhp4Bw+Yf2E2+&u_0;LHzl`ymT@zW@AotiAzsKy$BSD zZi0z!#7z2#gYIV-=UF6{%h!m-xN~{SDX4c8vTd4SYdo^hrwKYLBhJ%=hUN)P>>(YN zj>`O~X=a)`NG;iPHiu%-y##+;I&>=Pxpqh|LTw$=i%{7iIem5>XP2r zu?b3V>_l)fr4R8QLnGhz+K~bbZOEwJwp}Q?XXO&DsU#xyHF(6O+rLD!R1j@wy8ESW z50ECn;ZQr7RJTtMW18yfS&s{oC^GA4)8PMukh#5~VuOKV%7mt|8t(wE=6ak88m4p` zaK;{0*!4B>dw{9;o*Y=P=>vNw%5AY>AHQ^6_3pQe$K?i0UHJZMF|-qZ=bcy_*J$(J(Qzf=c>K2R+T4on zY+GACSwNW(+XvnmE6nRm${U>RC3BtGw0Z|clghLwbE!f!^!i8>0RB_DMO!xSn##dC%G6>`m}pxTfaUz z>eKlBYbUMRw>>srH2rSZ-P5Oz zU7vJs*m>YE=u@AE2j)SLQXhr~;~m}R%RO+LE`eRxZ8C85-6p3iwd(BG^X?wb!#`Pn z^WXk4a$9lv_jeRFUh;hGwSDo&YwNp;V#toyf3ajY{pPyskGmqy>$8tHdwPCtW?}c5 z54sP7o=`+> zSX}()n+uj7cye8=an$_1=Y6<F`efH3n{rh9*e)m7i|9tPp*xjRF`D5eCEyYN4V&a_lKA@t%e}4Og zaa^O-Z(M9B`t-Xt9tK7Kzg8->71pm*J@uZ2eP>U8sd`6j|IAOGIrEb(vC+dvE`BQe z>*Bx%#vQnN`ERLI@j*)(s8n6gHe7Bf6=!9)l?ajUJIpbfc z4pa#yy#dXwyem=i#-H*rqIT!xq- z1NR8oF}7KSEoyVO?i}D8Srzu^%;WzX{rV@#-8xEu{m7TW^~s#vc8}(gZL)Xr$d@-v z(tbEb@2kGhPMEAC4$`ey(xG@e_SjOHSweKAGSS(od}?MYohr!hG1peG zAYKotx{wkF1Khf#fS5EX6oe95bwK#6LqXX{;lNE&xbsa?NN@z-Ug#a(C1~JWU^cS2 zv#hp6gJd0peyaLGvW_oSlEty(w1?lh3!klIPTYrnP<}V%3VDu~ z@3y6%qD;$=_3&DmC_Bo~l!rdVpgh9z<8cDp=a+G&vg;VK3cv6$aVoWv(*R%D*^kTo zc8(3;jXpj!fKLNX-e?@!XxPqdufDI*lMA`*O-Yb6@I9_ zl*7M*9WC|rfK6A@gU3-$Ifm_sTz^&P#$`@9=XSRD&aiW%_%>D51HQqhu7yD5fwaSztCw=9a-9^zafTbS^$6v{Fe) z_<*tRm|5m%EE~}E-eQL9>~hSEM46456mT0eJkPe__j`DW8Is{MLwl9X&_S!s(!S$l zg(D}M(bwMMgiDfgoLqo18z-D$Y_gwM27k!IOPp{W<8wl_kenQ{y6HP=8ZkMz#Ax-f zdny>k#6+>s6&#KjO*=BqQ{fnmj!aPy45(j+O4(wx!RVBYvY}=0b3D968D3bTj6?Jt zoEM`-`Exg)vHm!%KTeYip#^c*pCoO9QuUUb!z6HaEu@*Jd;P@vaSD=HVrq zp%?Jo9A6=AhHDMuS4_UisIN6ph}0iILkPVWK+{F~#L&M=V#tvEPN457IdTJNTE0&S z4ac8f%p>@|W9G=+N~3-F%+PWqGvv$rNU`rodDt<6eiEJSt*M1kYq_cA2Pm^mEotDk zDdd(i_!18-muMjqJ}q4ROIo Date: Wed, 6 Jan 2016 14:23:48 +0100 Subject: [PATCH 082/242] Revert "Follow-up fix for #12152 from axeld suggestions" This reverts commit 6f5971cf52bcab0f9cfcc203bdc8b62e3c9d8fec. * Sorry there was a misunderstanding in the Ticket and IRC. --- src/add-ons/kernel/network/stack/interfaces.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/add-ons/kernel/network/stack/interfaces.cpp b/src/add-ons/kernel/network/stack/interfaces.cpp index f7f6a4dcf7..fb13c5cfca 100644 --- a/src/add-ons/kernel/network/stack/interfaces.cpp +++ b/src/add-ons/kernel/network/stack/interfaces.cpp @@ -409,8 +409,16 @@ InterfaceAddress::Prepare(sockaddr** _address, size_t size) sockaddr* address = *_address; - if (address == NULL || size > address->sa_len) - address = (sockaddr*)realloc(address, size); + if (address == NULL || size > address->sa_len) { + sockaddr* resized = (sockaddr*)realloc(address, size); + + if (resized == NULL) { + free(address); + return NULL; + } + + address = resized; + } address->sa_len = size; From 135a195875965fa31f1d64d9fa4102d1f3ee80b2 Mon Sep 17 00:00:00 2001 From: Dario Casalinuovo Date: Wed, 6 Jan 2016 14:31:32 +0100 Subject: [PATCH 083/242] InterfaceAddress: The real fix. --- src/add-ons/kernel/network/stack/interfaces.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/add-ons/kernel/network/stack/interfaces.cpp b/src/add-ons/kernel/network/stack/interfaces.cpp index fb13c5cfca..75cbd8c1bf 100644 --- a/src/add-ons/kernel/network/stack/interfaces.cpp +++ b/src/add-ons/kernel/network/stack/interfaces.cpp @@ -411,7 +411,6 @@ InterfaceAddress::Prepare(sockaddr** _address, size_t size) if (address == NULL || size > address->sa_len) { sockaddr* resized = (sockaddr*)realloc(address, size); - if (resized == NULL) { free(address); return NULL; From 678f8a7b5d906878730ea64a56b93264107e22d3 Mon Sep 17 00:00:00 2001 From: looncraz Date: Wed, 6 Jan 2016 12:44:41 -0600 Subject: [PATCH 084/242] Tracker: Fix column title colors following Set*UIColor merge. Repair regression where low color for text drawing was not set properly. Do not use tinted color for default color state. Prior to this, the hinting font would not respond to being pressed and the column title background was the wrong color initially, but correct after resizing (but then wrong again after a redraw on exposure). In addition, the initial tint values used for the view color were unused, so I removed them. Signed-off-by: Augustin Cavalier --- src/kits/tracker/TitleView.cpp | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/kits/tracker/TitleView.cpp b/src/kits/tracker/TitleView.cpp index 9314bcab63..22b027dd22 100644 --- a/src/kits/tracker/TitleView.cpp +++ b/src/kits/tracker/TitleView.cpp @@ -56,7 +56,6 @@ All rights reserved. #define APP_SERVER_CLEARS_BACKGROUND 1 - static void _DrawLine(BPoseView* view, BPoint from, BPoint to) { @@ -101,10 +100,10 @@ BTitleView::BTitleView(BPoseView* view) fPreviousLeftClickTime(0), fTrackingState(NULL) { - SetHighUIColor(B_PANEL_BACKGROUND_COLOR, 0.88f); - SetLowUIColor(B_PANEL_BACKGROUND_COLOR, 0.88f); + SetHighUIColor(B_PANEL_BACKGROUND_COLOR); + SetLowUIColor(B_PANEL_BACKGROUND_COLOR); #if APP_SERVER_CLEARS_BACKGROUND - SetViewUIColor(B_PANEL_BACKGROUND_COLOR, 0.88f); + SetViewUIColor(B_PANEL_BACKGROUND_COLOR); #else SetViewColor(B_TRANSPARENT_COLOR); #endif @@ -229,7 +228,8 @@ BTitleView::Draw(BRect /*updateRect*/, bool useOffscreen, bool updateOnly, view->StrokeLine(bounds.LeftBottom(), bounds.RightBottom()); bounds.bottom--; - be_control_look->DrawButtonBackground(view, bounds, bounds, HighColor(), 0, + rgb_color baseColor = ui_color(B_PANEL_BACKGROUND_COLOR); + be_control_look->DrawButtonBackground(view, bounds, bounds, baseColor, 0, BControlLook::B_TOP_BORDER | BControlLook::B_BOTTOM_BORDER); int32 count = fTitleList.CountItems(); @@ -470,15 +470,15 @@ BColumnTitle::Draw(BView* view, bool pressed) font_height height; view->GetFontHeight(&height); BPoint loc(0, bounds.top + ceilf(height.ascent) + 2); + rgb_color baseColor = ui_color(B_PANEL_BACKGROUND_COLOR); if (pressed) { bounds.bottom--; BRect rect(bounds); rect.right--; - rgb_color base = tint_color(ui_color(B_PANEL_BACKGROUND_COLOR), - B_DARKEN_1_TINT); + baseColor = tint_color(baseColor, B_DARKEN_1_TINT); - be_control_look->DrawButtonBackground(view, rect, rect, base, 0, + be_control_look->DrawButtonBackground(view, rect, rect, baseColor, 0, BControlLook::B_TOP_BORDER | BControlLook::B_BOTTOM_BORDER); } @@ -503,8 +503,8 @@ BColumnTitle::Draw(BView* view, bool pressed) break; } - view->SetHighUIColor(B_PANEL_TEXT_COLOR, 0.8f); - view->SetLowUIColor(B_PANEL_BACKGROUND_COLOR, pressed ? 1.1 : 1.0); + view->SetHighUIColor(B_PANEL_TEXT_COLOR, pressed ? B_DARKEN_1_TINT : 1.0f); + view->SetLowColor(baseColor); view->DrawString(titleString.String(), loc); // show sort columns From cef0a7b2621c207c7fe13e8b07f488665a85d484 Mon Sep 17 00:00:00 2001 From: looncraz Date: Tue, 5 Jan 2016 17:49:42 -0600 Subject: [PATCH 085/242] Deskbar: Correct StatusView colors following Set*UIColor merge. Previous colors matched the menu background color, but should have been darkened. The tint value was not being updated for the SetViewUIColor call construction, therefore the tint parameter was still B_NO_TINT. Signed-off-by: Augustin Cavalier --- src/apps/deskbar/StatusView.cpp | 4 +--- src/apps/deskbar/TimeView.cpp | 4 +--- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/src/apps/deskbar/StatusView.cpp b/src/apps/deskbar/StatusView.cpp index 4b4746e20e..89913dc54a 100644 --- a/src/apps/deskbar/StatusView.cpp +++ b/src/apps/deskbar/StatusView.cpp @@ -167,10 +167,8 @@ TReplicantTray::AttachedToWindow() { BView::AttachedToWindow(); - float tint = B_NO_TINT; - if (be_control_look != NULL) { - SetViewUIColor(Parent()->ViewUIColor(&tint), tint); + AdoptParentColors(); } else { SetViewUIColor(B_MENU_BACKGROUND_COLOR, B_DARKEN_1_TINT); } diff --git a/src/apps/deskbar/TimeView.cpp b/src/apps/deskbar/TimeView.cpp index 98fafb4e02..7c0803469b 100644 --- a/src/apps/deskbar/TimeView.cpp +++ b/src/apps/deskbar/TimeView.cpp @@ -135,11 +135,9 @@ TTimeView::AttachedToWindow() fCurrentTime = time(NULL); SetFont(be_plain_font); - float tint = B_NO_TINT; - if (Parent()) { fParent = Parent(); - SetViewUIColor(Parent()->ViewUIColor(&tint), tint); + AdoptParentColors(); } else SetViewUIColor(B_PANEL_BACKGROUND_COLOR); From 1d11475790d26d2c0e3cda3f3e8ad12218cb72b6 Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Wed, 6 Jan 2016 15:08:34 -0500 Subject: [PATCH 086/242] BAboutWindow: Put the AboutView and StripeView into BPrivate. To avoid name clashes. Possibly fixes the HaikuDepot crashes. --- headers/private/interface/AboutWindow.h | 4 +++- src/kits/interface/AboutWindow.cpp | 6 +++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/headers/private/interface/AboutWindow.h b/headers/private/interface/AboutWindow.h index 225483f82f..749174a25f 100644 --- a/headers/private/interface/AboutWindow.h +++ b/headers/private/interface/AboutWindow.h @@ -15,7 +15,9 @@ #include +namespace BPrivate { class AboutView; +} class BBitmap; class BPoint; @@ -72,7 +74,7 @@ private: virtual void _ReservedAboutWindow1(); private: - AboutView* fAboutView; + BPrivate::AboutView* fAboutView; // FBC Padding uint32 _reserved[20]; diff --git a/src/kits/interface/AboutWindow.cpp b/src/kits/interface/AboutWindow.cpp index a5f32c31a6..3f683995b2 100644 --- a/src/kits/interface/AboutWindow.cpp +++ b/src/kits/interface/AboutWindow.cpp @@ -48,6 +48,8 @@ using BPrivate::gSystemCatalog; #define B_TRANSLATION_CONTEXT "AboutWindow" +namespace BPrivate { + class StripeView : public BView { public: StripeView(BBitmap* icon); @@ -371,6 +373,8 @@ AboutView::SetVersion(const char* version) return B_OK; } +} // namespace BPrivate + // #pragma mark - BAboutWindow @@ -390,7 +394,7 @@ BAboutWindow::BAboutWindow(const char* appName, const char* signature) title.ReplaceFirst("%app%", appName); SetTitle(title.String()); - fAboutView = new AboutView(appName, signature); + fAboutView = new BPrivate::AboutView(appName, signature); AddChild(fAboutView); MoveTo(AboutPosition(Frame().Width(), Frame().Height())); From ec02769a58bb58b4bb20394d6f8107a3c53de15f Mon Sep 17 00:00:00 2001 From: Dario Casalinuovo Date: Wed, 6 Jan 2016 22:37:35 +0100 Subject: [PATCH 087/242] media_server: Replace ping/pong with notifications --- src/kits/media/MediaRoster.cpp | 9 ---- src/servers/media/AppManager.cpp | 67 ------------------------------ src/servers/media/AppManager.h | 6 --- src/servers/media/media_server.cpp | 35 +++++++++------- 4 files changed, 21 insertions(+), 96 deletions(-) diff --git a/src/kits/media/MediaRoster.cpp b/src/kits/media/MediaRoster.cpp index 95b37e6cb1..61d8509b38 100644 --- a/src/kits/media/MediaRoster.cpp +++ b/src/kits/media/MediaRoster.cpp @@ -3385,15 +3385,6 @@ void BMediaRoster::MessageReceived(BMessage* message) { switch (message->what) { - case 'PING': - { - // media_server plays ping-pong with the BMediaRosters - // to detect dead teams. Normal communication uses ports. - static BMessage pong('PONG'); - message->SendReply(&pong, static_cast(NULL), 2000000); - return; - } - case MEDIA_ROSTER_REQUEST_NOTIFICATIONS: { RosterNotification notification; diff --git a/src/servers/media/AppManager.cpp b/src/servers/media/AppManager.cpp index e998f7cec2..761ddef7c8 100644 --- a/src/servers/media/AppManager.cpp +++ b/src/servers/media/AppManager.cpp @@ -50,17 +50,11 @@ AppManager::AppManager() : BLocker("media app manager") { - fQuit = create_sem(0, "big brother waits"); - fBigBrother = spawn_thread(_BigBrotherEntry, "big brother is watching you", - B_NORMAL_PRIORITY, this); - resume_thread(fBigBrother); } AppManager::~AppManager() { - delete_sem(fQuit); - wait_for_thread(fBigBrother, NULL); } @@ -167,64 +161,3 @@ AppManager::_CleanupTeam(team_id team) gBufferManager->CleanupTeam(team); gNotificationManager->CleanupTeam(team); } - - -void -AppManager::_TeamDied(team_id team) -{ - UnregisterTeam(team); -} - - -status_t -AppManager::_BigBrotherEntry(void* self) -{ - static_cast(self)->_BigBrother(); - return 0; -} - - -/*! The BigBrother thread send ping messages to the BMediaRoster of - all currently running teams. If the reply times out or is wrong, - the team cleanup function _TeamDied() will be called. -*/ -void -AppManager::_BigBrother() -{ - status_t status = B_TIMED_OUT; - - do { - if (!Lock()) - break; - - bool startOver = false; - AppMap::iterator iterator = fMap.begin(); - for (; iterator != fMap.end(); iterator++) { - // No need to send the alive message - // if the team died. - if (iterator->second.IsValid() == true) { - BMessage ping('PING'); - BMessage reply; - reply.what = 0; - status = iterator->second.SendMessage(&ping, &reply, 5000000, - 2000000); - if (status != B_OK || reply.what != 'PONG') { - startOver = true; - break; - } - } else { - startOver = true; - break; - } - } - - if (startOver == true) { - Unlock(); - _TeamDied(iterator->first); - continue; - } - - Unlock(); - status = acquire_sem_etc(fQuit, 1, B_RELATIVE_TIMEOUT, 2000000); - } while (status == B_TIMED_OUT || status == B_INTERRUPTED); -} diff --git a/src/servers/media/AppManager.h b/src/servers/media/AppManager.h index 1f865a4218..0bc57fb239 100644 --- a/src/servers/media/AppManager.h +++ b/src/servers/media/AppManager.h @@ -30,17 +30,11 @@ public: private: void _CleanupTeam(team_id team); - void _TeamDied(team_id team); - - static status_t _BigBrotherEntry(void* self); - void _BigBrother(); private: typedef std::map AppMap; AppMap fMap; - thread_id fBigBrother; - sem_id fQuit; }; diff --git a/src/servers/media/media_server.cpp b/src/servers/media/media_server.cpp index 241c1148e5..f4d7dd60dc 100644 --- a/src/servers/media/media_server.cpp +++ b/src/servers/media/media_server.cpp @@ -43,7 +43,6 @@ char __dont_remove_copyright_from_binary[] = "Copyright (c) 2002, 2003 " #include #include #include -#include #include #include @@ -114,15 +113,13 @@ ServerApp::ServerApp() this); resume_thread(fControlThread); - BMediaRoster* roster = BMediaRoster::Roster(); - if (roster->StartWatching(BMessenger(this, this), - B_MEDIA_SERVER_QUIT) != B_OK) { - TRACE("ServerApp: can't watch for B_MEDIA_SERVER_QUIT"); + if (be_roster->StartWatching(BMessenger(this, this), + B_REQUEST_QUIT) != B_OK) { + TRACE("ServerApp: Can't find the registrar."); } } - ServerApp::~ServerApp() { TRACE("ServerApp::~ServerApp()\n"); @@ -130,17 +127,14 @@ ServerApp::~ServerApp() delete_port(fControlPort); wait_for_thread(fControlThread, NULL); + if (be_roster->StopWatching(BMessenger(this, this)) != B_OK) + TRACE("ServerApp: Can't unregister roster notifications."); + delete gNotificationManager; delete gBufferManager; delete gAppManager; delete gNodeManager; delete gMediaFilesManager; - - BMediaRoster* roster = BMediaRoster::CurrentRoster(); - if (roster->StopWatching(BMessenger(this, this), - B_MEDIA_SERVER_QUIT) != B_OK) { - TRACE("ServerApp: can't unwatch for B_MEDIA_SERVER_QUIT"); - } } @@ -944,9 +938,22 @@ ServerApp::MessageReceived(BMessage* msg) gMediaFilesManager->HandleAddSystemBeepEvent(msg); break; - case B_MEDIA_SERVER_QUIT: - gNodeManager->CleanupDormantFlavorInfos(); + case B_SOME_APP_QUIT: + { + BString mimeSig; + if (msg->FindString("be:signature", &mimeSig) != B_OK) + return; + + if (mimeSig == B_MEDIA_ADDON_SERVER_SIGNATURE) + gNodeManager->CleanupDormantFlavorInfos(); + + team_id id; + if (msg->FindInt32("team", &id) == B_OK + && gAppManager->HasTeam(id)) { + gAppManager->UnregisterTeam(id); + } break; + } default: BApplication::MessageReceived(msg); From be1b88453cb62413367f43c8a118b1279000d0e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Revol?= Date: Thu, 7 Jan 2016 01:17:50 +0100 Subject: [PATCH 088/242] draggers: print usage on unknown arguments also handle on/off as arguments. --- src/bin/draggers.cpp | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/src/bin/draggers.cpp b/src/bin/draggers.cpp index 895e0a8943..53f3a4d8ce 100644 --- a/src/bin/draggers.cpp +++ b/src/bin/draggers.cpp @@ -9,6 +9,14 @@ #include +int usage(int ret) +{ + fprintf(stderr, "draggers [show|hide]\n"); + fprintf(stderr, "Shows/sets draggers state\n"); + return ret; +} + + int main(int argc, char **argv) { int i; @@ -19,18 +27,20 @@ int main(int argc, char **argv) } for (i = 1; i < argc; i++) { if (!strncmp(argv[i], "-h", 2)) { - printf("draggers [show|hide]\n"); - printf("Shows/sets draggers state\n"); - return 0; + return usage(0); } if (!strcmp(argv[i], "1") || !strncmp(argv[i], "en", 2) - || !strncmp(argv[i], "sh", 2)) + || !strncmp(argv[i], "sh", 2) + || !strncmp(argv[i], "on", 2)) BDragger::ShowAllDraggers(); else if (!strcmp(argv[i], "0") || !strncmp(argv[i], "di", 2) - || !strncmp(argv[i], "hi", 2)) + || !strncmp(argv[i], "hi", 2) + || !strncmp(argv[i], "of", 2)) BDragger::HideAllDraggers(); + else + return usage(1); } return 0; } From 82af81ac2e32fc3e9c2d543a204e78e5531d8d80 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Revol?= Date: Thu, 7 Jan 2016 01:19:10 +0100 Subject: [PATCH 089/242] draggers: fix header --- src/bin/draggers.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/bin/draggers.cpp b/src/bin/draggers.cpp index 53f3a4d8ce..ea26006337 100644 --- a/src/bin/draggers.cpp +++ b/src/bin/draggers.cpp @@ -1,6 +1,10 @@ +/* + * Copyright 2016, François Revol, . All rights reserved. + * Distributed under the terms of the MIT License. + */ + /* * draggers - show/hide draggers from CLI - * (c) 2004, François Revol - revol@free.fr */ #include From 5dc097412d9071e67003786322dd1222b72803fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Revol?= Date: Thu, 7 Jan 2016 01:58:27 +0100 Subject: [PATCH 090/242] dragger: use EXIT_SUCCESS/EXIT_FAILURE macros for clarity --- src/bin/draggers.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/bin/draggers.cpp b/src/bin/draggers.cpp index ea26006337..8e86cea58f 100644 --- a/src/bin/draggers.cpp +++ b/src/bin/draggers.cpp @@ -8,6 +8,7 @@ */ #include +#include #include #include #include @@ -27,11 +28,11 @@ int main(int argc, char **argv) BApplication app("application/x-vnd.Haiku-draggers"); if (argc < 2) { printf("%s\n", BDragger::AreDraggersDrawn()?"shown":"hidden"); - return 0; + return EXIT_SUCCESS; } for (i = 1; i < argc; i++) { if (!strncmp(argv[i], "-h", 2)) { - return usage(0); + return usage(EXIT_SUCCESS); } if (!strcmp(argv[i], "1") || !strncmp(argv[i], "en", 2) @@ -44,7 +45,7 @@ int main(int argc, char **argv) || !strncmp(argv[i], "of", 2)) BDragger::HideAllDraggers(); else - return usage(1); + return usage(EXIT_FAILURE); } - return 0; + return EXIT_SUCCESS; } From 8487f27d5b4793613c31866db36cf40d5d14bca2 Mon Sep 17 00:00:00 2001 From: Dario Casalinuovo Date: Thu, 7 Jan 2016 02:08:16 +0100 Subject: [PATCH 091/242] PlaylistWindow: Add missing NULL check --- src/apps/mediaplayer/playlist/PlaylistWindow.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/apps/mediaplayer/playlist/PlaylistWindow.cpp b/src/apps/mediaplayer/playlist/PlaylistWindow.cpp index fbea517e45..c99e971ac5 100644 --- a/src/apps/mediaplayer/playlist/PlaylistWindow.cpp +++ b/src/apps/mediaplayer/playlist/PlaylistWindow.cpp @@ -559,6 +559,9 @@ void PlaylistWindow::DurationListener::_HandleItemRemoved(int32 index) { bigtime_t* deleted = fKnown.RemoveItemAt(index); + if (deleted == NULL) + return; + fTotalDuration -= *deleted; fParent._UpdateTotalDuration(fTotalDuration); From c9bd4d84b9992c986063f5cfebf92787324e0276 Mon Sep 17 00:00:00 2001 From: looncraz Date: Wed, 6 Jan 2016 20:25:39 -0600 Subject: [PATCH 092/242] Interface Kit: Correct button colors. What appeared to be multiple issues was just one issue: BButton was drawing the control background color for its border, whereas the previous system drew the control low color, which was the parent's view color. Neither is correct, no border should be drawn at all. This made it appear that the default button was larger than it was and also made it appear that some apps had a "white" border around the buttons. In addition, BButton can now use the default BControl color behavior and BButton exclusively adopt either parental or system colors without worrying about the case in which another view has set the button's view color manually. Signed-off-by: Augustin Cavalier --- src/kits/interface/Button.cpp | 21 +++------------------ src/kits/interface/Control.cpp | 6 ++++-- src/kits/interface/ControlLook.cpp | 5 +---- 3 files changed, 8 insertions(+), 24 deletions(-) diff --git a/src/kits/interface/Button.cpp b/src/kits/interface/Button.cpp index 68b2884cc8..ab728e5355 100644 --- a/src/kits/interface/Button.cpp +++ b/src/kits/interface/Button.cpp @@ -132,14 +132,11 @@ BButton::Archive(BMessage* data, bool deep) const void BButton::Draw(BRect updateRect) { - // Allow improved customization & integration - float buttonTint = B_DARKEN_1_TINT; - if (ViewUIColor() != B_CONTROL_BACKGROUND_COLOR) - buttonTint = B_NO_TINT; - BRect rect(Bounds()); rgb_color background = LowColor(); - rgb_color base = tint_color(ViewColor(), buttonTint); + + // Darken default control color to match default panel color. + rgb_color base = tint_color(ui_color(B_CONTROL_BACKGROUND_COLOR), 1.115); uint32 flags = be_control_look->Flags(this); if (_Flag(FLAG_DEFAULT)) flags |= BControlLook::B_DEFAULT_BUTTON; @@ -232,18 +229,6 @@ void BButton::AttachedToWindow() { BControl::AttachedToWindow(); - SetViewUIColor(B_CONTROL_BACKGROUND_COLOR); - - // Ensure BButton's low color is the parent's VIEW color. - // We don't want to adopt the standard control lowcolor. - if (Parent() != NULL) { - float tint = B_NO_TINT; - color_which which = ViewUIColor(&tint); - if (which != B_NO_COLOR) - SetLowUIColor(which, tint); - else - SetLowColor(ViewColor()); - } if (IsDefault()) Window()->SetDefaultButton(this); diff --git a/src/kits/interface/Control.cpp b/src/kits/interface/Control.cpp index 1882e8bf7a..3009da4593 100644 --- a/src/kits/interface/Control.cpp +++ b/src/kits/interface/Control.cpp @@ -153,8 +153,10 @@ BControl::AttachedToWindow() { AdoptParentColors(); - if (ViewColor() == B_TRANSPARENT_COLOR) - SetViewUIColor(B_PANEL_BACKGROUND_COLOR); + if (ViewColor() == B_TRANSPARENT_COLOR + || Parent() == NULL) { + AdoptSystemColors(); + } // Force view color as low color if (Parent() != NULL) { diff --git a/src/kits/interface/ControlLook.cpp b/src/kits/interface/ControlLook.cpp index dfeb6e3fb5..e4c3152518 100644 --- a/src/kits/interface/ControlLook.cpp +++ b/src/kits/interface/ControlLook.cpp @@ -2159,10 +2159,7 @@ BControlLook::_DrawButtonFrame(BView* view, BRect& rect, brightness * ((flags & B_DISABLED) != 0 ? 1.0 : 0.9), flags); // draw default button indicator - view->SetHighColor(background); - view->FillRect(rect); - view->SetHighColor(base); - view->StrokeRoundRect(rect, leftTopRadius, leftTopRadius); + // Allow a 1-pixel border of the background to come through. rect.InsetBy(1, 1); view->SetHighColor(defaultIndicatorColor); From 8c63feccbb00279f501ac0f79b38f053e65a316d Mon Sep 17 00:00:00 2001 From: Automatic Committer Date: Thu, 7 Jan 2016 05:20:25 +0100 Subject: [PATCH 093/242] Update pci.ids from pciids.sourceforge.net --- src/data/ids/pci.ids | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/data/ids/pci.ids b/src/data/ids/pci.ids index 00c157be90..26eda0bb1f 100644 --- a/src/data/ids/pci.ids +++ b/src/data/ids/pci.ids @@ -1,8 +1,8 @@ # # List of PCI ID's # -# Version: 2015.12.25 -# Date: 2015-12-25 03:15:01 +# Version: 2016.01.02 +# Date: 2016-01-02 03:15:02 # # Maintained by Albert Pool, Martin Mares, and other volunteers from # the PCI ID Project at http://pci-ids.ucw.cz/. @@ -10334,6 +10334,7 @@ 1344 GM108M [GeForce 845M] 1346 GM108M [GeForce 930M] 1347 GM108M [GeForce 940M] + 134d GM108M [GeForce 940MX] 137a GM108GLM [Quadro K620M] 137d GM108M [GeForce 940A] 1380 GM107 [GeForce GTX 750 Ti] @@ -10383,6 +10384,7 @@ 1401 GM206 [GeForce GTX 960] 1402 GM206 [GeForce GTX 950] 1407 GM206 [GeForce GTX 750 v2] + 1427 GM206M [GeForce GTX 965M] 1617 GM204M [GeForce GTX 980M] 1618 GM204M [GeForce GTX 970M] 1619 GM204M [GeForce GTX 965M] @@ -21620,14 +21622,14 @@ 1025 1016 Travelmate 612 TX 1043 8027 TUSL2-C Mainboard 104d 80df Vaio PCG-FX403 - 8086 4532 D815EEA2 mainboard + 8086 4532 Desktop Board D815EEA2/D815EFV 8086 4557 D815EGEW Mainboard 1131 82815 815 Chipset AGP Bridge 1132 82815 Chipset Graphics Controller (CGC) 1025 1016 Travelmate 612 TX 103c 2001 e-pc 40 104d 80df Vaio PCG-FX403 - 8086 4532 D815EEA2 Mainboard + 8086 4532 Desktop Board D815EEA2/D815EFV 8086 4541 D815EEA Motherboard 8086 4557 D815EGEW Mainboard 1161 82806AA PCI64 Hub Advanced Programmable Interrupt Controller @@ -22672,7 +22674,7 @@ 104d 80df Vaio PCG-FX403 147b 0505 BL7 motherboard 147b 0507 TH7II-RAID - 8086 4532 D815EEA2 mainboard + 8086 4532 Desktop Board D815EEA2/D815EFV 8086 4557 D815EGEW Mainboard 8086 5744 S845WD1-E mainboard 2443 82801BA/BAM SMBus Controller @@ -22687,7 +22689,7 @@ 147b 0505 BL7 motherboard 147b 0507 TH7II-RAID 15d9 3280 Supermicro P4SBE Mainboard - 8086 4532 D815EEA2 mainboard + 8086 4532 Desktop Board D815EEA2/D815EFV 8086 4557 D815EGEW Mainboard 8086 5744 S845WD1-E mainboard 2444 82801BA/BAM UHCI USB 1.1 Controller #2 @@ -22700,7 +22702,7 @@ 104d 80df Vaio PCG-FX403 147b 0505 BL7 motherboard 147b 0507 TH7II-RAID - 8086 4532 D815EEA2 mainboard + 8086 4532 Desktop Board D815EEA2/D815EFV 8086 5744 S845WD1-E mainboard 2445 82801BA/BAM AC'97 Audio Controller 0e11 000b Compaq Deskpro EN Audio @@ -22714,6 +22716,7 @@ 147b 0505 BL7 motherboard 147b 0507 TH7II-RAID 8086 4557 D815EGEW Mainboard + 8086 4656 Desktop Board D815EFV 2446 82801BA/BAM AC'97 Modem Controller 1025 1016 Travelmate 612 TX 104d 80df Vaio PCG-FX403 @@ -22783,7 +22786,7 @@ 147b 0505 BL7 motherboard 147b 0507 TH7II-RAID 15d9 3280 Supermicro P4SBE Mainboard - 8086 4532 D815EEA2 mainboard + 8086 4532 Desktop Board D815EEA2/D815EFV 8086 4557 D815EGEW Mainboard 8086 5744 S845WD1-E mainboard 244c 82801BAM ISA Bridge (LPC) From 37dd17a4a7a11d3b03e20c8ca1bf98186d2cd9f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Revol?= Date: Thu, 7 Jan 2016 16:33:25 +0100 Subject: [PATCH 094/242] Fix shadows on Misc_Erlenmeyer and App_FLUID --- data/artwork/icons/App_FLUID | Bin 21425 -> 21425 bytes data/artwork/icons/Misc_Erlenmeyer | Bin 13795 -> 13795 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/data/artwork/icons/App_FLUID b/data/artwork/icons/App_FLUID index 7a2a58f7357cc814cd174c5083627c7cbdb40f09..9124858496f61c9b1cfb12988ec81f86f22f14a2 100644 GIT binary patch delta 150 zcmdnEoN?oF#tm;7Cx2yBQI2q8V8{UC04S{iq(gvM!KolWGp|G;Gml}i4U>WvL=>bl z1&BeaYk(MCb$)3H!{jz5H64(#AO#?WAPq2uHyo4m^YT)YOHxx97#SGBX!8Z8hXDYh C(IWi- delta 149 zcmdnEoN?oF#tm;7*-V@m7#N%;zh+cZb^tOnfY<;^b2t^`XXceCWaa^tfFyzHOqdk3 z9{mb-diX07D3AhCZC&k@*T@7_onKnQP}{i75v;t9NlgW0Tn$7agAb4va7xb4%S%lz RNljs3WQ3s27nmLf0063~Cb9qk diff --git a/data/artwork/icons/Misc_Erlenmeyer b/data/artwork/icons/Misc_Erlenmeyer index 5a96414a634398c79cc2ca22a4e3cbc6c54cc3f2..15cce987fd2328bf517d3b1f060ccc4d8a6b5bd8 100644 GIT binary patch delta 148 zcmaEy{WyEWTgJ&>8C8@coER7~fH(k3YXIpGAXacH$j{6xQOL|=m~6wOpal^HsZ0T4 zkm?#BMpvC*TEZ~7jY&-hWGqMlNFhiAOyLd3 Date: Thu, 7 Jan 2016 18:13:47 +0100 Subject: [PATCH 095/242] Add listfont to the minimum image definition --- build/jam/images/definitions/minimum | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/jam/images/definitions/minimum b/build/jam/images/definitions/minimum index 0ba75d0aea..93c1d4272f 100644 --- a/build/jam/images/definitions/minimum +++ b/build/jam/images/definitions/minimum @@ -13,7 +13,7 @@ SYSTEM_BIN = [ FFilterByBuildFeatures hd hey ideinfo@ide idestatus@ide ifconfig iroster isvolume kernel_debugger keymap keystore - launch_roster linkcatkeys listarea listattr listimage listdev + launch_roster linkcatkeys listarea listattr listimage listdev listfont listport listres listsem listusb locale logger login lsindex makebootable message mimeset mkfs mkindex modifiers mount mountvolume From b5387eff2b1c71f491b9463bf7ab4e4fb74dd983 Mon Sep 17 00:00:00 2001 From: Markus Himmel Date: Thu, 7 Jan 2016 12:06:20 +0100 Subject: [PATCH 096/242] MediaPlayer: Show individual track length in playlist window Signed-off-by: Dario Casalinuovo --- .../mediaplayer/playlist/FilePlaylistItem.cpp | 13 ++++++ .../mediaplayer/playlist/FilePlaylistItem.h | 3 ++ .../mediaplayer/playlist/PlaylistItem.cpp | 35 +++++++++++++++ src/apps/mediaplayer/playlist/PlaylistItem.h | 3 ++ .../mediaplayer/playlist/PlaylistListView.cpp | 16 ++++++- .../mediaplayer/playlist/PlaylistWindow.cpp | 45 +------------------ .../mediaplayer/playlist/PlaylistWindow.h | 1 - 7 files changed, 70 insertions(+), 46 deletions(-) diff --git a/src/apps/mediaplayer/playlist/FilePlaylistItem.cpp b/src/apps/mediaplayer/playlist/FilePlaylistItem.cpp index 9279fe19ee..976cff41c0 100644 --- a/src/apps/mediaplayer/playlist/FilePlaylistItem.cpp +++ b/src/apps/mediaplayer/playlist/FilePlaylistItem.cpp @@ -13,6 +13,7 @@ #include #include #include +#include #include #include @@ -398,6 +399,18 @@ FilePlaylistItem::ImageRef() const } +bigtime_t +FilePlaylistItem::_CalculateDuration() const +{ + BMediaFile mediaFile(&Ref()); + + if (mediaFile.InitCheck() != B_OK || mediaFile.CountTracks() < 1) + return 0; + + return mediaFile.TrackAt(0)->Duration(); +} + + status_t FilePlaylistItem::_SetAttribute(const char* attrName, type_code type, const void* data, size_t size) diff --git a/src/apps/mediaplayer/playlist/FilePlaylistItem.h b/src/apps/mediaplayer/playlist/FilePlaylistItem.h index fb72f9e802..5ca3e431ca 100644 --- a/src/apps/mediaplayer/playlist/FilePlaylistItem.h +++ b/src/apps/mediaplayer/playlist/FilePlaylistItem.h @@ -61,6 +61,9 @@ public: status_t AddImageRef(const entry_ref& ref); const entry_ref& ImageRef() const; +protected: + virtual bigtime_t _CalculateDuration() const; + private: status_t _SetAttribute(const char* attrName, type_code type, const void* data, diff --git a/src/apps/mediaplayer/playlist/PlaylistItem.cpp b/src/apps/mediaplayer/playlist/PlaylistItem.cpp index fde90a89c8..e3ec718dc1 100644 --- a/src/apps/mediaplayer/playlist/PlaylistItem.cpp +++ b/src/apps/mediaplayer/playlist/PlaylistItem.cpp @@ -10,6 +10,9 @@ #include #include +#include "AudioTrackSupplier.h" +#include "TrackSupplier.h" +#include "VideoTrackSupplier.h" #undef B_TRANSLATION_CONTEXT #define B_TRANSLATION_CONTEXT "MediaPlayer-PlaylistItem" @@ -107,6 +110,19 @@ PlaylistItem::TrackNumber() const } +bigtime_t +PlaylistItem::Duration() +{ + bigtime_t duration; + if (GetAttribute(ATTR_INT64_DURATION, duration) != B_OK) { + duration = this->_CalculateDuration(); + SetAttribute(ATTR_INT64_DURATION, duration); + } + + return duration; +} + + void PlaylistItem::SetPlaybackFailed() { @@ -143,3 +159,22 @@ PlaylistItem::_NotifyListeners() const } } + +bigtime_t PlaylistItem::_CalculateDuration() const +{ + // To be overridden in subclasses with more efficient methods + TrackSupplier* supplier = CreateTrackSupplier(); + + AudioTrackSupplier* au = supplier->CreateAudioTrackForIndex(0); + VideoTrackSupplier* vi = supplier->CreateVideoTrackForIndex(0); + + bigtime_t duration = max_c(au == NULL ? 0 : au->Duration(), + vi == NULL ? 0 : vi->Duration()); + + delete vi; + delete au; + delete supplier; + + return duration; +} + diff --git a/src/apps/mediaplayer/playlist/PlaylistItem.h b/src/apps/mediaplayer/playlist/PlaylistItem.h index 73de81aa31..5c7e94cf32 100644 --- a/src/apps/mediaplayer/playlist/PlaylistItem.h +++ b/src/apps/mediaplayer/playlist/PlaylistItem.h @@ -80,6 +80,8 @@ public: int32 TrackNumber() const; + bigtime_t Duration(); + // methods virtual BString LocationURI() const = 0; virtual status_t GetIcon(BBitmap* bitmap, @@ -101,6 +103,7 @@ public: protected: void _NotifyListeners() const; + virtual bigtime_t _CalculateDuration() const; private: BList fListeners; diff --git a/src/apps/mediaplayer/playlist/PlaylistListView.cpp b/src/apps/mediaplayer/playlist/PlaylistListView.cpp index d7dc9d8213..005a7d5492 100644 --- a/src/apps/mediaplayer/playlist/PlaylistListView.cpp +++ b/src/apps/mediaplayer/playlist/PlaylistListView.cpp @@ -21,6 +21,7 @@ #include "Controller.h" #include "ControllerObserver.h" #include "CopyPLItemsCommand.h" +#include "DurationToString.h" #include "ImportPLItemsCommand.h" #include "ListViews.h" #include "MovePLItemsCommand.h" @@ -132,9 +133,22 @@ PlaylistListView::Item::Draw(BView* owner, BRect frame, const font_height& fh, float playbackMarkSize = playback_mark_size(fh); float textOffset = text_offset(fh); + char buffer[64]; + bigtime_t duration = fItem->Duration(); + duration /= 1000000; + duration_to_string(duration, buffer, sizeof(buffer)); + + BString truncatedDuration(buffer); + owner->TruncateString(&truncatedDuration, B_TRUNCATE_END, + frame.Width() - playbackMarkSize - textOffset); + float truncatedWidth = owner->StringWidth(truncatedDuration.String()); + owner->DrawString(truncatedDuration.String(), + BPoint(frame.right - truncatedWidth, + floorf(frame.top + frame.bottom + fh.ascent) / 2 - 1)); + BString truncatedString(text); owner->TruncateString(&truncatedString, B_TRUNCATE_MIDDLE, - frame.Width() - playbackMarkSize - textOffset); + frame.Width() - playbackMarkSize - textOffset - truncatedWidth); owner->DrawString(truncatedString.String(), BPoint(frame.left + playbackMarkSize + textOffset, floorf(frame.top + frame.bottom + fh.ascent) / 2 - 1)); diff --git a/src/apps/mediaplayer/playlist/PlaylistWindow.cpp b/src/apps/mediaplayer/playlist/PlaylistWindow.cpp index c99e971ac5..824a3cc72f 100644 --- a/src/apps/mediaplayer/playlist/PlaylistWindow.cpp +++ b/src/apps/mediaplayer/playlist/PlaylistWindow.cpp @@ -22,8 +22,6 @@ #include #include #include -#include -#include #include #include #include @@ -35,14 +33,11 @@ #include #include -#include "AudioTrackSupplier.h" #include "CommandStack.h" #include "DurationToString.h" #include "MainApp.h" #include "PlaylistListView.h" #include "RWLocker.h" -#include "TrackSupplier.h" -#include "VideoTrackSupplier.h" #undef B_TRANSLATION_CONTEXT #define B_TRANSLATION_CONTEXT "MediaPlayer-PlaylistWindow" @@ -548,7 +543,7 @@ void PlaylistWindow::DurationListener::_HandleItemAdded(PlaylistItem* item, int32 index) { - bigtime_t duration = _DetermineItemDuration(item); + bigtime_t duration = item->Duration(); fTotalDuration += duration; fParent._UpdateTotalDuration(fTotalDuration); fKnown.AddItem(new bigtime_t(duration), index); @@ -568,41 +563,3 @@ PlaylistWindow::DurationListener::_HandleItemRemoved(int32 index) delete deleted; } - -bigtime_t -PlaylistWindow::DurationListener::_DetermineItemDuration(PlaylistItem* item) -{ - bigtime_t duration; - if (item->GetAttribute(PlaylistItem::ATTR_INT64_DURATION, duration) == B_OK) - return duration; - - // We have to find out the duration ourselves - if (FilePlaylistItem* file = dynamic_cast(item)) { - // We are dealing with a file - BMediaFile mediaFile(&file->Ref()); - - if (mediaFile.InitCheck() != B_OK || mediaFile.CountTracks() < 1) - return 0; - - duration = mediaFile.TrackAt(0)->Duration(); - } else { - // Not a file, so fall back to the generic TrackSupplier solution - TrackSupplier* supplier = item->CreateTrackSupplier(); - - AudioTrackSupplier* au = supplier->CreateAudioTrackForIndex(0); - VideoTrackSupplier* vi = supplier->CreateVideoTrackForIndex(0); - - duration = max_c(au == NULL ? 0 : au->Duration(), - vi == NULL ? 0 : vi->Duration()); - - delete vi; - delete au; - delete supplier; - } - - // Store the duration for later use - item->SetAttribute(PlaylistItem::ATTR_INT64_DURATION, duration); - - return duration; -} - diff --git a/src/apps/mediaplayer/playlist/PlaylistWindow.h b/src/apps/mediaplayer/playlist/PlaylistWindow.h index 6b70e76c4e..4ca65a7c1f 100644 --- a/src/apps/mediaplayer/playlist/PlaylistWindow.h +++ b/src/apps/mediaplayer/playlist/PlaylistWindow.h @@ -70,7 +70,6 @@ private: void _HandleItemAdded(PlaylistItem* item, int32 index); void _HandleItemRemoved(int32 index); - bigtime_t _DetermineItemDuration(PlaylistItem* item); BObjectList fKnown; From ecec5d0e7c8a9a7d97758b905d34440be151bd01 Mon Sep 17 00:00:00 2001 From: Markus Himmel Date: Thu, 7 Jan 2016 13:35:01 +0100 Subject: [PATCH 097/242] MediaPlayer: Playlist window visual fixes Signed-off-by: Dario Casalinuovo --- src/apps/mediaplayer/playlist/PlaylistWindow.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/apps/mediaplayer/playlist/PlaylistWindow.cpp b/src/apps/mediaplayer/playlist/PlaylistWindow.cpp index 824a3cc72f..379dc88613 100644 --- a/src/apps/mediaplayer/playlist/PlaylistWindow.cpp +++ b/src/apps/mediaplayer/playlist/PlaylistWindow.cpp @@ -115,6 +115,8 @@ PlaylistWindow::PlaylistWindow(BRect frame, Playlist* playlist, fTotalDuration = new BStringView(frame, "fDuration", "", B_FOLLOW_BOTTOM | B_FOLLOW_LEFT_RIGHT); + fTotalDuration->SetAlignment(B_ALIGN_RIGHT); + fTotalDuration->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); AddChild(fTotalDuration); _UpdateTotalDuration(0); @@ -470,7 +472,7 @@ PlaylistWindow::_UpdateTotalDuration(bigtime_t duration) duration_to_string(duration, buffer, sizeof(buffer)); BString text; - text.SetToFormat(B_TRANSLATE("Total duration : %s"), buffer); + text.SetToFormat(B_TRANSLATE("Total duration: %s"), buffer); fTotalDuration->SetText(text.String()); } From b50be529bbd94b7de1113903279b2fe34bfbc74b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Revol?= Date: Thu, 7 Jan 2016 21:04:11 +0100 Subject: [PATCH 098/242] Add dpms tool to regular image --- build/jam/images/definitions/regular | 1 + 1 file changed, 1 insertion(+) diff --git a/build/jam/images/definitions/regular b/build/jam/images/definitions/regular index dca1b9ea87..9c3f086b2f 100644 --- a/build/jam/images/definitions/regular +++ b/build/jam/images/definitions/regular @@ -6,6 +6,7 @@ include [ FDirName $(HAIKU_BUILD_RULES_DIR) images definitions minimum ] ; SYSTEM_BIN += [ FFilterByBuildFeatures cddb_lookup clipboard CortexAddOnHost + dpms FirstBootPrompt fwcontrol@x86 installsound mail2mbox mbox2mail mkdos mount_nfs From dc422da1a5d50c362f5042b7e50ee529a78f6d60 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Revol?= Date: Thu, 7 Jan 2016 21:10:50 +0100 Subject: [PATCH 099/242] WindowShade: fix build --- src/bin/WindowShade.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bin/WindowShade.cpp b/src/bin/WindowShade.cpp index df98488132..8e7a29f164 100644 --- a/src/bin/WindowShade.cpp +++ b/src/bin/WindowShade.cpp @@ -43,7 +43,7 @@ static struct option const kLongOptions[] = { I(control_text_color, B_CONTROL_TEXT_COLOR), I(control_border_color, B_CONTROL_BORDER_COLOR), I(control_highlight_color, B_CONTROL_HIGHLIGHT_COLOR), - I(control_mark_color, B_CONTROL_MARK_COLOR) + I(control_mark_color, B_CONTROL_MARK_COLOR), I(navigation_base_color, B_NAVIGATION_BASE_COLOR), I(navigation_pulse_color, B_NAVIGATION_PULSE_COLOR), I(shine_color, B_SHINE_COLOR), From ec684513fe7a242f59aea520f6e3305cac5cfa04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Revol?= Date: Thu, 7 Jan 2016 21:12:17 +0100 Subject: [PATCH 100/242] WindowShade: add to regular image --- build/jam/images/definitions/regular | 1 + 1 file changed, 1 insertion(+) diff --git a/build/jam/images/definitions/regular b/build/jam/images/definitions/regular index 9c3f086b2f..c5df1b2ec6 100644 --- a/build/jam/images/definitions/regular +++ b/build/jam/images/definitions/regular @@ -13,6 +13,7 @@ SYSTEM_BIN += [ FFilterByBuildFeatures play playfile playsound playwav screenshot setdecor spamdbm translate + WindowShade ] ; SYSTEM_APPS += [ FFilterByBuildFeatures From 8dde46a47f17f35a1242f3d3f62ec29402a49b1d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Revol?= Date: Thu, 7 Jan 2016 21:13:18 +0100 Subject: [PATCH 101/242] Add a Misc_Birthday_Cake icon to celebrate hrev50000 \o/ --- data/artwork/icons/Misc_Birthday_Cake | Bin 0 -> 22811 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 data/artwork/icons/Misc_Birthday_Cake diff --git a/data/artwork/icons/Misc_Birthday_Cake b/data/artwork/icons/Misc_Birthday_Cake new file mode 100644 index 0000000000000000000000000000000000000000..d51bba1e0cc57747654ea5c190f676976c6b848f GIT binary patch literal 22811 zcmeHP3v?9K8J;C11`G-)1p(W&q5`J8wNitbY$8FPk%w{wOJcGyE6Hx$U0!0_pjO-B zBT`NUZH1z8uu6^Cimi_g^jNT3g`*bqSPwp`wDo9;wWSM4dcy`qJDEtvLRtSh+2MTRfT#SQO!z?s(wTOC7cxo zHl}E^;wZ)fwDdE`N;EFe24UwMhy#nCl5fnMJ*%A0$Fl$zMU{tEv!_>ucs~HCHxk?C z89iM12;lqyc}7ncJ_A^HiBFv|!|I29U5zCADKdz2T&C|zJX+HfhSUus(NI$tTVgcF zBGDusJIV|r88VD!q$;Fpq`@JpG#H6$6&g@5ABh!%vO;VTyI?bRu@tESNpw*gi$=q> z$#5O#LD2?l8)FGRp4iQwh|kCT{ff8<^Wde6xF?>gkjS$xVufD`ToyJWluayF6LkPOo>4$9nw!1m#pqE%eX#yy`KLSN~{a*Cey zdEZv1aWfbIJ8nkWBs<(Eb5?Fa$Lx${WJqL+eQxmzJ#SaK2SD}|`TeQ(XkMGN+9qK6{nhTZcC zn|b{d>Z_hha6crZD+F}GQVN$syaECGal`qj=T{+Un!I#{AZ8-< zLedpN;j@723Zd|y0@oFSIMX{wUJ7wg;+8_NVKUb2QU@9vjY{_q`%Ix8^b3@|pxcop zRYmg$1uJ?2U`Lt$z(hwRjaJQ$1PP*}?s(2-{|^rCTlUs{ThYoeC-h`Zp;(vI^~XJX z5{kl}x?l1h>Ur5a>2;BNe>Z>Rz8vsRF4s|BI=RGJkoqC%SblW_M5rB0-OjP*3i&LW2YeJM2MXi8Z>esa!zDF>Z*x|MTV+c6}n-0BXToj zPVbI zPT>+)Vz&Z(Hei8h*wpq)**Ew80MBf=M&>N{=1UE!YN!^ivL(y+B2{TYphp1sW#Ma# z%@=u~kc8Mp&S&CnNEE-yTXp*)50o++Hp{%VOz^e|&usXZ%vD3$m&2?+Bzt0ys)ZVI zjm8&!V#X5wW#MbAi!Ta?!fTZ|pZ6o}LZaAJ-j>N1rOSqtHuE;g7w_3{ugq0Lhp$bt zg&LAQ9Yj(s)R2$m_~I%y&czpnBg8FoKJQ2BK%&@HzAKY2N|y~OZRWcqUu?{VWIzxu zcH<6Ttj*LWbN0mAs)ZVIZ;mhWb&k!K5VH^-g+x(jF8&Jd(D`CRN|`w;@Lo04rOx|< zvY``i>;lS`qSR^0o&?jvZ|>Ll@>stn2mHkwi!p-Vc!R+iFFoGqhG%X?PDaw>4TTQ} zuE!e+F9)v28^oC|M-u(GKt$2gym-Uf&IG9LAY8Tp!1*M3XSL=*;6$pvDOPmPK zy}B52OwG^k|87X#uQa_5VNbvhYeu3(b!jU6M&PBwEN^c}?*Qk)y$oC=VGxNE~*CVe$PPHF}yd60=J1h^% zTy1{%Tk9GBIjP8&-8x9 zy0YjEs8M5eqJsS;H8&;>ph_15vLV5{*msj9Y7DKJ(>x z=6h@6d~aPjea2MIkc*HCnVgVDyjQM`HOAuXu>KbO<7Y;vpq}3uspZsbM#@dt%iR@? zHHcR238klD6h9N%hTq7TTZxF1(B{*F#EA5Dqa+biN1oe zE8{hFkucsD-i6wJX3UkIVI^nGOU>Mwae+lDe+dm4`1gT{ar?VIQn*9nwT(521f*pc zl}ZGzhh)4any8P(n`)Ag7{ejPQF}^xbNJOE@$sfA6B6FF@U--!kyF#L`uaqe-!JfL zDNQbG4qLbQE+QOnjx~xgD4IyLAsmk+gBimIra%sU=t-dyzY0Zh^Acim+njnynW<3y zWqnJb$Om68iXWS9Y00URe|3WFl-l6dbsdfi2_HIiC`~CJxjKDe{gd@NGpA7L^k?@^ zFz2_k_@})RA8ragyTFtt+uojjck$x?XN6kQ5J`rmLhaeJC+DGjdZ_EG*B@B<(!-@( z9H5O)ob*=WqRqd)sif-u?ZsnGf0+uk{y)#3Plc*(s2e2}>cD{m=^Z5oyEi^%;&ceI zcm5<3dCS@XB}$_{?w;P0pYN$r+-msOsM}E6PeeWl_1Lr8D3N_UdT#O5r^T$3sZr|F zVoP%vx?4xA!O_wgrPmtiFUXX}s42bug_+V=Ii*k1i_-Wiy%}dEcMtW)UkLSR)rvoI zM}E|$&Pw=MP6_JrVwp9J@o%4g=R*uZQaK7Q_CT$nFCoTn^Y!g5AZu3q2uR2IYKYr& z{osIpidsmI88C|M1A-97JR2Ct%FEcE^YxP0Ru{Uq&yN8Y_4`@db39se-#j%dP^$o|33(%ZK7EeZNITVNRx~@VQr>jU}U0&kEz%34C zWE5|vSe23G;SVWvv3?D81q}uEDF*2pfyDXbL9FU@gLsLJ_jTb_61R=G9N%ik7R3#I z#2>s0e<*O5%{S&g_XGz>qeR655J|Ao~z&kAK&p2$h zp!+{U4a#p}Jego+j_q~bh%zNV*2A#YMSZ3IXSxCw(iLR74t30$X%nZSF2~KZ3Azp; zC$~*}%dYRXiAgr@wu$+`>9X?hD|8#;_X`}?_7Ag?@z}z!FqPVxW)vHpXE%w4SUedP z=E#9;W{$cY`F&S>FJ`Hq%u;sL1#&I?p#LR=yy|+xvuD~7`^;P_h65MA(Y;it?>h4E zQ9Ms_shgY!kL*Q1ZhWQ09ed&IZF}K^r3##zIL7WePUt`U__ht0YiDsno6p9{P?ULb z0!QvCdm57$CqI<9!wI#?=7bLxC*+kU!ClA5m)A-tdz%qH*j6GAQ@f6nO6Z3lD=CL< zs}&6Mw=|LF&L1PR*uUqZwdtOVuj;Zz03%W6<M`DK9JOlLa3xamRY- z18uGtms?!%M*HZ^CM*{O7@uztV0^~l`Ev;ZI#Qq)S7H072h+d%XwwB*gXx?p3De7& zlJy3i-f|L>@J3w`Pj`hWwU{P;Gp+$SQ*!>d3%OP47~h(9i7AzvmL(az%_CTq__4X4 z0PjAG)mhsh22a_xL1&}PYa7JlLa#tBkp;h5;?C;BUtU2@IL(?7V>yyvNZUEQ;PX^xbmLCTq{-U)Ai{@v92olh@+ zvF0zSbs{fS_=2sc6khjemD%UQ^qfcL%sdiOruf{SR$?F5S^HD|eSWt6=~$F`?N9%h zWq(?fWgprv3qC^Pj$3o>Pw6==x5hnm#-Hxn?k%@R{harxg=9c;JTUu#8;%hY9c#itJgta~?+Kee52}N)$mdEs>h~9+nQ@tpn$Md2n+dG5h zc0X?FR!iKWh>X}2@u%@?Z~OF3(!+1Nx{jR5K9?hY6W>|O5x-){wj7N?nHOo#L8-is zOOMa8?3|nh|AxdJ($KL(8qLTej7lXwe#yNyJ;q*}{$tnO8wYQAEw%RGZMEV9j9ek4N>*UScZ?wv10#OQs=S4^~Pp}YhVT| zV=`BsdF2JG2KV|?>g#Qxiw`|HCH2G^i&qqXIJ0!XrhD!k0sNC*i>4G^U2dk=wT@lz zz2(vJtt c+uaKMnZmm3hhJA_9$bFs^i^ZV90@D`1@s7mTL1t6 literal 0 HcmV?d00001 From 5692356be23e49fc23bfa7695103b0c544cd6789 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Revol?= Date: Thu, 7 Jan 2016 21:38:19 +0100 Subject: [PATCH 102/242] usb_disk: add the Zip icon not used yet, my USB Zip drive seems to have gone to the mechanical valhalla. --- .../drivers/disk/usb/usb_disk/usb_disk.cpp | 59 +++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/src/add-ons/kernel/drivers/disk/usb/usb_disk/usb_disk.cpp b/src/add-ons/kernel/drivers/disk/usb/usb_disk/usb_disk.cpp index e9f562e6bb..7454b4c873 100644 --- a/src/add-ons/kernel/drivers/disk/usb/usb_disk/usb_disk.cpp +++ b/src/add-ons/kernel/drivers/disk/usb/usb_disk/usb_disk.cpp @@ -338,6 +338,65 @@ const unsigned char kMobileIcon[] = { 0xff, 0x01, 0x17, 0x81, 0x00, 0x04 }; +const unsigned char kZipIcon[] = { + 0x6e, 0x63, 0x69, 0x66, 0x0d, 0x03, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, + 0x00, 0x6a, 0x02, 0x00, 0x06, 0x02, 0x38, 0x6a, 0xad, 0x38, 0xeb, 0x7a, + 0xbb, 0x77, 0x73, 0x3a, 0xde, 0x88, 0x48, 0xce, 0xdc, 0x4a, 0x75, 0xed, + 0x00, 0x1e, 0x31, 0x8d, 0xff, 0x27, 0x29, 0x91, 0x02, 0x00, 0x06, 0x02, + 0x38, 0x6a, 0xad, 0x38, 0xeb, 0x7a, 0xbb, 0x77, 0x73, 0x3a, 0xde, 0x88, + 0x48, 0xce, 0xdc, 0x4a, 0x75, 0xed, 0x00, 0x8a, 0x8a, 0x8a, 0xff, 0x0f, + 0x0d, 0x7a, 0x05, 0x7d, 0x02, 0x00, 0x06, 0x02, 0x39, 0xc6, 0x30, 0x36, + 0xa8, 0x1b, 0xb9, 0x51, 0xe6, 0x3c, 0x5b, 0xb3, 0x4b, 0x4d, 0xa8, 0x4a, + 0x1a, 0xa1, 0x00, 0x16, 0x34, 0x77, 0xff, 0x23, 0x23, 0x84, 0x02, 0x00, + 0x06, 0x02, 0xb7, 0x16, 0xa4, 0xba, 0x87, 0xfe, 0x3c, 0xb2, 0x07, 0xb9, + 0x49, 0xed, 0x48, 0x87, 0xd8, 0x4a, 0x1e, 0x62, 0x01, 0x15, 0x37, 0xca, + 0xfe, 0x5e, 0x5e, 0xf8, 0x02, 0x00, 0x06, 0x02, 0xb7, 0x16, 0xa4, 0xba, + 0x87, 0xfe, 0x3c, 0xb2, 0x07, 0xb9, 0x49, 0xed, 0x48, 0x87, 0xd8, 0x4a, + 0x1e, 0x62, 0x00, 0x24, 0x36, 0x95, 0xfe, 0x17, 0x14, 0x80, 0x02, 0x00, + 0x16, 0x05, 0x36, 0xef, 0x60, 0x38, 0xe2, 0xe5, 0xbd, 0x22, 0x41, 0x3b, + 0x2f, 0xce, 0x4a, 0x0e, 0x78, 0x4a, 0x5a, 0x6c, 0x00, 0xb8, 0x38, 0xe6, + 0x77, 0xb8, 0xbd, 0xd2, 0xff, 0x93, 0x02, 0x00, 0x16, 0x05, 0x34, 0x0a, + 0x8f, 0x38, 0xd2, 0xa2, 0xba, 0xb4, 0xc5, 0x35, 0xe9, 0xec, 0x49, 0xfd, + 0x24, 0x4a, 0x64, 0x62, 0x00, 0xe1, 0x38, 0xff, 0x75, 0xd7, 0xba, 0xf3, + 0xfd, 0xd0, 0x02, 0x00, 0x16, 0x02, 0x36, 0x67, 0xbe, 0x39, 0xdd, 0xbc, + 0xbe, 0x50, 0x04, 0x3a, 0xe0, 0x9f, 0x4b, 0x85, 0x01, 0x49, 0x2a, 0x3f, + 0x00, 0xff, 0xff, 0xd8, 0x03, 0x38, 0x6d, 0xbe, 0x02, 0x00, 0x16, 0x02, + 0x3c, 0x40, 0xef, 0x3b, 0x82, 0xd1, 0xba, 0xeb, 0x42, 0x3b, 0xbf, 0x4d, + 0x4a, 0xa7, 0xce, 0x49, 0x5d, 0xc1, 0xff, 0x01, 0x00, 0x4a, 0x12, 0x0a, + 0x05, 0x44, 0x5a, 0x44, 0x40, 0x5e, 0x40, 0x5f, 0x45, 0x49, 0x5a, 0x0a, + 0x06, 0x45, 0x58, 0x5c, 0x42, 0x5c, 0x40, 0x3d, 0x34, 0xb5, 0x6b, 0xc2, + 0x2e, 0xb5, 0x63, 0xc3, 0xbb, 0x0a, 0x04, 0x44, 0x58, 0x26, 0x4a, 0x26, + 0x47, 0x44, 0x54, 0x0a, 0x04, 0x44, 0x59, 0x5c, 0x42, 0x5c, 0x3e, 0x44, + 0x54, 0x0a, 0x05, 0x44, 0x56, 0x5c, 0x40, 0x3d, 0x34, 0xb5, 0x6b, 0xc2, + 0x2e, 0xb5, 0x43, 0xc3, 0x3b, 0x0a, 0x04, 0x2a, 0x4c, 0x3f, 0x56, 0x3f, + 0x53, 0x2a, 0x4a, 0x0a, 0x04, 0x2a, 0x4b, 0x39, 0x52, 0x39, 0x50, 0x2a, + 0x4a, 0x0a, 0x04, 0x31, 0x42, 0x45, 0x4c, 0x3f, 0x53, 0x2a, 0x4a, 0x0a, + 0x04, 0x3f, 0x49, 0x38, 0x50, 0x2a, 0x4a, 0x31, 0x43, 0x0a, 0x04, 0x3f, + 0x36, 0x57, 0x3e, 0x49, 0x4b, 0x32, 0x40, 0x08, 0x02, 0x3c, 0x3b, 0x4d, + 0x43, 0x00, 0x02, 0x3b, 0x3b, 0x31, 0x36, 0x43, 0x3f, 0x48, 0x3d, 0x3f, + 0x36, 0xc4, 0x82, 0xbf, 0xc7, 0x00, 0x02, 0x3e, 0x3c, 0xbc, 0x58, 0xbd, + 0x93, 0x47, 0x3e, 0x45, 0x44, 0x3d, 0x43, 0x4d, 0x45, 0x02, 0x04, 0x39, + 0x3b, 0x39, 0x3d, 0x39, 0x39, 0x3c, 0x38, 0x3b, 0x38, 0x3e, 0x38, 0x3e, + 0x3a, 0x3f, 0x3a, 0x41, 0x37, 0x3c, 0x3d, 0x3c, 0x42, 0x3c, 0x40, 0x02, + 0x04, 0x46, 0x3c, 0x46, 0x3e, 0x46, 0x3a, 0x48, 0x3a, 0x46, 0x3a, 0x4a, + 0x3a, 0x4a, 0x3c, 0x4a, 0x3a, 0x4a, 0x3e, 0x48, 0x3e, 0x4a, 0x3e, 0x46, + 0x3e, 0x0a, 0x04, 0x45, 0x42, 0x42, 0x45, 0x45, 0x47, 0x48, 0x44, 0x0a, + 0x03, 0x4e, 0x43, 0x4d, 0x3f, 0x48, 0x44, 0x0a, 0x04, 0x32, 0x4b, 0x36, + 0x48, 0x32, 0x46, 0x2e, 0x4a, 0x0d, 0x0a, 0x01, 0x01, 0x00, 0x20, 0x1e, + 0x20, 0x0a, 0x00, 0x01, 0x01, 0x30, 0x1e, 0x20, 0x01, 0x17, 0x84, 0x00, + 0x04, 0x0a, 0x02, 0x01, 0x02, 0x20, 0x1e, 0x20, 0x0a, 0x05, 0x01, 0x03, + 0x20, 0x1e, 0x20, 0x0a, 0x06, 0x01, 0x04, 0x20, 0x1e, 0x20, 0x0a, 0x03, + 0x01, 0x05, 0x20, 0x1e, 0x20, 0x0a, 0x07, 0x01, 0x07, 0x20, 0x1e, 0x20, + 0x0a, 0x08, 0x01, 0x06, 0x20, 0x1e, 0x20, 0x0a, 0x09, 0x01, 0x08, 0x20, + 0x1e, 0x20, 0x0a, 0x0a, 0x01, 0x09, 0x20, 0x1e, 0x20, 0x0a, 0x0c, 0x03, + 0x0a, 0x0b, 0x0c, 0x1a, 0x40, 0x1d, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x3f, 0x9d, 0xc9, 0xc2, 0x91, 0x98, 0x43, 0x6d, 0xc2, 0x20, 0xff, + 0x01, 0x17, 0x81, 0x00, 0x04, 0x0a, 0x0c, 0x04, 0x0d, 0x0e, 0x0f, 0x10, + 0x0a, 0x3f, 0xff, 0xbd, 0x34, 0xaf, 0xbc, 0xb4, 0xe0, 0x2c, 0x3f, 0xbc, + 0x62, 0x3e, 0x74, 0x62, 0x41, 0xfe, 0xe7, 0x20, 0xff, 0x0a, 0x02, 0x01, + 0x11, 0x20, 0x1e, 0x20 +}; + device_icon kKeyIconData = { (int32)sizeof(kDeviceIcon), (void *)kDeviceIcon }; device_icon kCDIconData = { (int32)sizeof(kCDIcon), (void *)kCDIcon }; device_icon kMSIconData = { (int32)sizeof(kMemoryStickIcon), From 39d6c466d8217dcb3004074f29c27c60f0fa1ac1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Revol?= Date: Thu, 7 Jan 2016 22:46:58 +0100 Subject: [PATCH 103/242] dev-perso: remove unused password stuff --- 3rdparty/mmu_man/scripts/dev-perso | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/3rdparty/mmu_man/scripts/dev-perso b/3rdparty/mmu_man/scripts/dev-perso index bd9ecad908..e849854ce1 100755 --- a/3rdparty/mmu_man/scripts/dev-perso +++ b/3rdparty/mmu_man/scripts/dev-perso @@ -23,10 +23,6 @@ # - edit DRLIST below to include your own possible devroots # (ie. where you have subfolders for your own projects) # or export DEVROOT before sourcing dev-perso. -# - optionally edit PWLIST below to where you possibly have a -# PASSWDS/ folder with passwords stored as plain text. -# (not really a good idea though :) It's exported -# for use by project's .profile # - optionally force EDITOR globally (for all projects) # - for each project create a .profile in the subfolder, # which might include commands like the following, but can remain empty. @@ -38,9 +34,6 @@ # # force CVSROOT for this project # export CVSROOT='...' # -# # shortcut to display password file for this svn -# alias pass="cat $PASSWDS/myself.developer.berlios.de.pass" -# # # change to the source tree # cd trunk # # ease use of cd @@ -61,13 +54,6 @@ if [ -z "$DEVROOT" ]; then fi export DEVROOT -# automagically find password files -PWLIST="/Data /fat32 $HOME" -for d in $PWLIST; do - test -d "$d/PASSWDS" && PASSWDS="$d/PASSWDS" && break; -done -export PASSWDS - # svn sometimes forgets about vi and wants me to use nano... #export EDITOR=vim From 804718bbfbfe7b2b25f8af696c734755f8f57062 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Revol?= Date: Thu, 7 Jan 2016 23:19:16 +0100 Subject: [PATCH 104/242] dev-perso: check for git first --- 3rdparty/mmu_man/scripts/dev-perso | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/3rdparty/mmu_man/scripts/dev-perso b/3rdparty/mmu_man/scripts/dev-perso index e849854ce1..4d6f497c2a 100755 --- a/3rdparty/mmu_man/scripts/dev-perso +++ b/3rdparty/mmu_man/scripts/dev-perso @@ -140,10 +140,10 @@ dev() { test -z "$EDITOR" -a -z "$SVN_EDITOR" && export EDITOR=vim # make sure the update action is the first found in history. + test -z "$DEVUPCMD" -a -d .git && DEVUPCMD="git pull" test -z "$DEVUPCMD" -a -d .svn && DEVUPCMD="svn up" test -z "$DEVUPCMD" -a -d .bzr && DEVUPCMD="bzr update" test -z "$DEVUPCMD" -a -d .hg && DEVUPCMD="hg pull" - test -z "$DEVUPCMD" -a -d .git && DEVUPCMD="git pull" test -z "$DEVUPCMD" -a -d CVS && DEVUPCMD="cvs up -d" test -z "$DEVUPCMD" -a \( -f _FOSSIL_ -o -f .fslckout \) && DEVUPCMD="fossil update" test -z "$DEVUPCMD" -a -n "$P4PORT" && DEVUPCMD="p4 sync" From d780e243ad3f1ce3b550c373e598bee3715b8195 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Revol?= Date: Thu, 7 Jan 2016 23:23:11 +0100 Subject: [PATCH 105/242] dev-perso: check for a TODO list and print first 5 items --- 3rdparty/mmu_man/scripts/dev-perso | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/3rdparty/mmu_man/scripts/dev-perso b/3rdparty/mmu_man/scripts/dev-perso index 4d6f497c2a..b5a786d252 100755 --- a/3rdparty/mmu_man/scripts/dev-perso +++ b/3rdparty/mmu_man/scripts/dev-perso @@ -131,9 +131,15 @@ dev() { ;; esac + # check for a TODO list + for f in TODO TODO.org; do + test -e "$f" && grep '^* ' "$f" | grep --color=always ' TODO ' | head -5 && break + done + DEVUPCMD="" # source the specific profile file + # (which will likely cd to the checkout directory) test -f .profile && . .profile # if no editor defined, set one From 316ac9de9ff9f165932435e8f12ab145bf22de6e Mon Sep 17 00:00:00 2001 From: Humdinger Date: Fri, 8 Jan 2016 16:46:46 +0100 Subject: [PATCH 106/242] Added MIME tpe for WonderBrush images The MIME type that's created by WonderBrush contains an out-of-date sniffer rule. Archived BMessages used to start with '1BOF', now it's 'HMF1'. That's why newer WonderBrush images aren't identified as such. The new sniffer rule should detect both old and new files. --- src/data/mime_db/image/x-wonderbrush | 38 ++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 src/data/mime_db/image/x-wonderbrush diff --git a/src/data/mime_db/image/x-wonderbrush b/src/data/mime_db/image/x-wonderbrush new file mode 100644 index 0000000000..2d5adbcc0d --- /dev/null +++ b/src/data/mime_db/image/x-wonderbrush @@ -0,0 +1,38 @@ +resource(0, "BEOS:TYPE") #'MIMS' "application/x-vnd.Be-meta-mime"; + +resource(1, "META:TYPE") "image/x-wonderbrush"; + +resource(2, "META:SNIFF_RULE") #'CSTR' array { + "0.9 ('HMF1' | '1BOF') ([0:364]"layer") ([8:375]'HMF1' | [8:375]'1BOF')" +}; + +resource(3, "META:S:DESC") #'MSDC' "WonderBrush image"; + +resource(4, "META:L:DESC") #'MLDC' "Image format containing layers and objects in flattened BMessage, WonderBrush native image"; + +resource(5, "META:PREF_APP") #'MSIG' "application/x.vnd-YellowBites.WonderBrush"; + +resource(6, "META:EXTENS") message(234) { + "extensions" = "wbi", + "extensions" = "WonderBrush", + "type" = "image/x-wonderbrush" +}; + +resource(7, "META:ICON") #'VICN' array { + $"6E6369660605010200060338D2F73CD163BF82B23B84A94B88504870C900FFCE" + $"89BDFFEACEFFFFDAB3020106023E49240000000000003CAAAA4940004A30007C" + $"E28A55FFFFCD970401920200060235A2F5BB95C53FF7DD3A033A432AA54A4CB2" + $"007F004CF5D6058003FFF5B3080606AE0BB40BBF4D33C3AEB75CC172BDEFC606" + $"C13EC804CA27BD82C117B920C51BBB40BF06B8073AB6BC0605AE02B57D3EB9B9" + $"C3EFB7BB44BBB751BD75C936CA8DC1B0402F0A093B593D5BBFCDC93D455BC516" + $"C5F060465B435D4544510A045A425E3F5A3D5740020ABB1EBB84BB1EBB84BB1E" + $"BB84B887BD35B983BC31B77BBE48B807C04AB6C3C023B939C072BDB542BAB8C1" + $"2FC013C00845BF73C0DEBFC5C2C7BF0DC455BEB4C4DFBF99C41FBE5BC52BBDDB" + $"C3C6BE1BC690BD9B4ABBDDC672BC29C0FCBB91BD823BBF6639BB9D3DB9D2BE4E" + $"BA61BE702EBE0102024841C3C6C017C215C030C323C12F45C0FC4CC1620202C6" + $"5DBE74C6D2BE67C5EDBE81C653BF0DC5C4BEDAC6DDBF400A0A562454284F2853" + $"2B5130562D5B30592B5D2858280A0A03020203000A0001011001178400040A02" + $"0101000A0001001001178400040A010100000A0403040506000A000107123ECC" + $"CC0000000000003ECCCCC466664830EF01178200040A050107023ECCCC000000" + $"0000003ECCCCC466664830EF0A00010730172801178200040A050107201728" +}; From 2a390953d3342fb4e6e04217c654675c9680e3e7 Mon Sep 17 00:00:00 2001 From: Humdinger Date: Fri, 8 Jan 2016 17:16:44 +0100 Subject: [PATCH 107/242] Fixing WonderBrush MIME type. ...and the build. Sorry about that. --- src/data/mime_db/image/x-wonderbrush | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/data/mime_db/image/x-wonderbrush b/src/data/mime_db/image/x-wonderbrush index 2d5adbcc0d..4ec33ae59d 100644 --- a/src/data/mime_db/image/x-wonderbrush +++ b/src/data/mime_db/image/x-wonderbrush @@ -1,10 +1,9 @@ + resource(0, "BEOS:TYPE") #'MIMS' "application/x-vnd.Be-meta-mime"; resource(1, "META:TYPE") "image/x-wonderbrush"; -resource(2, "META:SNIFF_RULE") #'CSTR' array { - "0.9 ('HMF1' | '1BOF') ([0:364]"layer") ([8:375]'HMF1' | [8:375]'1BOF')" -}; +resource(2, "META:SNIFF_RULE") "0.9 ('HMF1' | '1BOF') ([0:364]\"layer\") ([8:375]'HMF1' | [8:375]'1BOF')"; resource(3, "META:S:DESC") #'MSDC' "WonderBrush image"; From 59b0036e71fa70bdd0fcf6ffe1f191fdb386ba64 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Thu, 7 Jan 2016 21:05:51 +0100 Subject: [PATCH 108/242] Printers: Workaround for broken print server connection. * The actual problem is that the launch_daemon does not notice the manual launch of system services (because of the missing registrar that provides that service). * So not checking if the print server is running actually solves the issue; otherwise the launch_daemon starts its own server, that will then get shut down, as there already is a print server (the one launched by the Printers preferences). * Closes ticket #12531. --- src/preferences/printers/Globals.cpp | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/preferences/printers/Globals.cpp b/src/preferences/printers/Globals.cpp index ebc14ddc97..99af7a7435 100644 --- a/src/preferences/printers/Globals.cpp +++ b/src/preferences/printers/Globals.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2010, Haiku. + * Copyright 2001-2016, Haiku. * Distributed under the terms of the MIT License. * * Authors: @@ -39,10 +39,6 @@ ActivePrinterName() status_t GetPrinterServerMessenger(BMessenger& msgr) { - // If print server is not yet running, start it - if (!be_roster->IsRunning(PSRV_SIGNATURE_TYPE)) - be_roster->Launch(PSRV_SIGNATURE_TYPE); - msgr = BMessenger(PSRV_SIGNATURE_TYPE); return msgr.IsValid() ? B_OK : B_ERROR; } From fd5d0900dac1683c13bdc07ad398437654da3805 Mon Sep 17 00:00:00 2001 From: Viktor Muntzing Date: Fri, 8 Jan 2016 16:26:17 -0600 Subject: [PATCH 109/242] index_server: Fix obvious memory leak in CLuceneDataBase Signed-off-by: Alexander von Gluck IV --- src/add-ons/index_server/fulltext/CLuceneDataBase.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/add-ons/index_server/fulltext/CLuceneDataBase.cpp b/src/add-ons/index_server/fulltext/CLuceneDataBase.cpp index e60db9c089..4d306e737f 100644 --- a/src/add-ons/index_server/fulltext/CLuceneDataBase.cpp +++ b/src/add-ons/index_server/fulltext/CLuceneDataBase.cpp @@ -35,9 +35,10 @@ wchar_t* to_wchar(const char *str) int size = strlen(str) * sizeof(wchar_t) ; wchar_t *wStr = new wchar_t[size] ; - if (mbstowcs(wStr, str, size) == -1) + if (mbstowcs(wStr, str, size) == -1) { + delete[] wStr ; return NULL ; - else + } else return wStr ; } From 5dee82df489b276ceb4f01eee496ea90bc1ba63a Mon Sep 17 00:00:00 2001 From: autonielx Date: Sat, 9 Jan 2016 06:52:35 +0100 Subject: [PATCH 110/242] Update translations from Pootle --- .../catalogs/add-ons/input_server/devices/keyboard/ru.catkeys | 4 ++-- data/catalogs/apps/terminal/be.catkeys | 3 +-- data/catalogs/apps/terminal/de.catkeys | 3 +-- data/catalogs/apps/terminal/es.catkeys | 3 +-- data/catalogs/apps/terminal/fi.catkeys | 3 +-- data/catalogs/apps/terminal/fr.catkeys | 3 +-- data/catalogs/apps/terminal/hr.catkeys | 3 +-- data/catalogs/apps/terminal/hu.catkeys | 3 +-- data/catalogs/apps/terminal/it.catkeys | 3 +-- data/catalogs/apps/terminal/ja.catkeys | 3 +-- data/catalogs/apps/terminal/lt.catkeys | 3 +-- data/catalogs/apps/terminal/nl.catkeys | 3 +-- data/catalogs/apps/terminal/pl.catkeys | 3 +-- data/catalogs/apps/terminal/pt_BR.catkeys | 3 +-- data/catalogs/apps/terminal/ro.catkeys | 3 +-- data/catalogs/apps/terminal/ru.catkeys | 3 +-- data/catalogs/apps/terminal/sk.catkeys | 3 +-- data/catalogs/apps/terminal/sl.catkeys | 3 +-- data/catalogs/apps/terminal/sv.catkeys | 3 +-- data/catalogs/apps/terminal/uk.catkeys | 3 +-- data/catalogs/apps/terminal/zh_Hans.catkeys | 3 +-- 21 files changed, 22 insertions(+), 42 deletions(-) diff --git a/data/catalogs/add-ons/input_server/devices/keyboard/ru.catkeys b/data/catalogs/add-ons/input_server/devices/keyboard/ru.catkeys index e789f9881b..bf3d86d92a 100644 --- a/data/catalogs/add-ons/input_server/devices/keyboard/ru.catkeys +++ b/data/catalogs/add-ons/input_server/devices/keyboard/ru.catkeys @@ -1,7 +1,7 @@ 1 russian x-vnd.Haiku-KeyboardInputServerDevice 2536418998 Kill application Team monitor Убить приложение -Quit application Team monitor Завершить приложение -Select an application from the list above and click one of the buttons 'Kill application' and 'Quit application' in order to close it.\n\nHold CONTROL+ALT+DELETE for %ld seconds to reboot. Team monitor Чтобы закрыть приложение выберите его из списка и нажмите на кнопку 'Убить приложение' или 'Завершить приложение'.\n\nЗажмите CONTROL+ALT+DELETE на %ld секунд для перезагрузки. +Quit application Team monitor Выйти из приложения +Select an application from the list above and click one of the buttons 'Kill application' and 'Quit application' in order to close it.\n\nHold CONTROL+ALT+DELETE for %ld seconds to reboot. Team monitor Чтобы закрыть приложение выберите его из списка и нажмите на кнопку 'Убить приложение' или 'Выйти из приложения'.\n\nЗажмите CONTROL+ALT+DELETE на %ld секунд для перезагрузки. If the application will not quit you may have to kill it. Team monitor Если приложение не завершится, возможно вам понадобится убить его. Force reboot Team monitor Перезагрузить принудительно Team monitor Team monitor Монитор процессов diff --git a/data/catalogs/apps/terminal/be.catkeys b/data/catalogs/apps/terminal/be.catkeys index b3c3b662ef..87c0b947a9 100644 --- a/data/catalogs/apps/terminal/be.catkeys +++ b/data/catalogs/apps/terminal/be.catkeys @@ -1,4 +1,4 @@ -1 belarusian x-vnd.Haiku-Terminal 3268992666 +1 belarusian x-vnd.Haiku-Terminal 4155859181 Not found. Terminal TermWindow Не знойдзена. Switch Terminals Terminal TermWindow Пераключыць Тэрміналы Change directory Terminal TermView Змяніць дырэкторыю @@ -74,7 +74,6 @@ Close Terminal TermWindow Закрыць Text Terminal AppearancePrefView Тэкст Clear all Terminal TermWindow Ачысціць усё Text encoding Terminal TermWindow Кадоўка тэксту -size Terminal TermView памер Close window Terminal TermWindow Закрыць вакно Copy absolute path Terminal TermView Капіяваць абсалютны шлях Set tab title Terminal TermWindow Прызначыць імя ўкладкі diff --git a/data/catalogs/apps/terminal/de.catkeys b/data/catalogs/apps/terminal/de.catkeys index 908c1c0400..0230fcda91 100644 --- a/data/catalogs/apps/terminal/de.catkeys +++ b/data/catalogs/apps/terminal/de.catkeys @@ -1,4 +1,4 @@ -1 german x-vnd.Haiku-Terminal 2093402207 +1 german x-vnd.Haiku-Terminal 2980268722 Not found. Terminal TermWindow Nicht gefunden. Switch Terminals Terminal TermWindow Terminals wechseln Change directory Terminal TermView Zum Ordner wechseln @@ -83,7 +83,6 @@ Close Terminal TermWindow Schließen Text Terminal AppearancePrefView Text Clear all Terminal TermWindow Bildschirm leeren Text encoding Terminal TermWindow Kodierung -size Terminal TermView Größe Close window Terminal TermWindow Fenster schließen Copy absolute path Terminal TermView Absoluten Pfad kopieren Save as default Terminal TermWindow Als Standardwerte speichern diff --git a/data/catalogs/apps/terminal/es.catkeys b/data/catalogs/apps/terminal/es.catkeys index dd6ad54f79..88cdcc05c5 100644 --- a/data/catalogs/apps/terminal/es.catkeys +++ b/data/catalogs/apps/terminal/es.catkeys @@ -1,4 +1,4 @@ -1 spanish; castilian x-vnd.Haiku-Terminal 2153796150 +1 spanish; castilian x-vnd.Haiku-Terminal 3040662665 Not found. Terminal TermWindow No encontrado. Switch Terminals Terminal TermWindow Intercambiar Terminales Change directory Terminal TermView Cambiar directorio @@ -78,7 +78,6 @@ Close Terminal TermWindow Cerrar Text Terminal AppearancePrefView Texto Clear all Terminal TermWindow Limpiar todo Text encoding Terminal TermWindow Codificación de texto -size Terminal TermView tamaño Close window Terminal TermWindow Cerrar ventana Copy absolute path Terminal TermView Copiar ruta absoluta Set tab title Terminal TermWindow Fijar el título de la ventana diff --git a/data/catalogs/apps/terminal/fi.catkeys b/data/catalogs/apps/terminal/fi.catkeys index 34d50a0c83..40be80c5b1 100644 --- a/data/catalogs/apps/terminal/fi.catkeys +++ b/data/catalogs/apps/terminal/fi.catkeys @@ -1,4 +1,4 @@ -1 finnish x-vnd.Haiku-Terminal 2093402207 +1 finnish x-vnd.Haiku-Terminal 2980268722 Not found. Terminal TermWindow Ei löytynyt. Switch Terminals Terminal TermWindow Vaihda pääteikkunoita Change directory Terminal TermView Vaihda hakemistoa @@ -83,7 +83,6 @@ Close Terminal TermWindow Sulje Text Terminal AppearancePrefView Teksti Clear all Terminal TermWindow Tyhjennä kaikki Text encoding Terminal TermWindow Tekstikoodaus -size Terminal TermView koko Close window Terminal TermWindow Sulje ikkuna Copy absolute path Terminal TermView Kopioi absoluuttinen polku Save as default Terminal TermWindow Tallenna oletuksena diff --git a/data/catalogs/apps/terminal/fr.catkeys b/data/catalogs/apps/terminal/fr.catkeys index f16b18206f..1f243c74ed 100644 --- a/data/catalogs/apps/terminal/fr.catkeys +++ b/data/catalogs/apps/terminal/fr.catkeys @@ -1,4 +1,4 @@ -1 french x-vnd.Haiku-Terminal 2093402207 +1 french x-vnd.Haiku-Terminal 2980268722 Not found. Terminal TermWindow Non trouvé. Switch Terminals Terminal TermWindow Inverser les Terminaux Change directory Terminal TermView Changer de répertoire @@ -83,7 +83,6 @@ Close Terminal TermWindow Fermer Text Terminal AppearancePrefView Texte Clear all Terminal TermWindow Effacer tout Text encoding Terminal TermWindow Encodage texte -size Terminal TermView taille Close window Terminal TermWindow Fermer la fenêtre Copy absolute path Terminal TermView Copier le chemin absolu Save as default Terminal TermWindow Enregistrer comme valeur par défaut diff --git a/data/catalogs/apps/terminal/hr.catkeys b/data/catalogs/apps/terminal/hr.catkeys index 9617f91228..f4eb23dd25 100644 --- a/data/catalogs/apps/terminal/hr.catkeys +++ b/data/catalogs/apps/terminal/hr.catkeys @@ -1,4 +1,4 @@ -1 croatian x-vnd.Haiku-Terminal 1500922367 +1 croatian x-vnd.Haiku-Terminal 2387788882 Not found. Terminal TermWindow Nije pronađeno. Switch Terminals Terminal TermWindow Zamjeni terminale Change directory Terminal TermView Promijeni direktorij @@ -65,7 +65,6 @@ Close Terminal TermWindow Zatvori Text Terminal AppearancePrefView Tekst Clear all Terminal TermWindow Očisti sve Text encoding Terminal TermWindow Enkodiranje teksta -size Terminal TermView velična Close window Terminal TermWindow Zatvori prozor Set tab title Terminal TermWindow Postavi naslov kartice Settings… Terminal TermWindow Postavke... diff --git a/data/catalogs/apps/terminal/hu.catkeys b/data/catalogs/apps/terminal/hu.catkeys index 72bf07af26..3b7f5bbe18 100644 --- a/data/catalogs/apps/terminal/hu.catkeys +++ b/data/catalogs/apps/terminal/hu.catkeys @@ -1,4 +1,4 @@ -1 hungarian x-vnd.Haiku-Terminal 1112752202 +1 hungarian x-vnd.Haiku-Terminal 1999618717 Not found. Terminal TermWindow Nem található. Switch Terminals Terminal TermWindow Terminálok közti váltás Change directory Terminal TermView Mappa váltása @@ -83,7 +83,6 @@ Close Terminal TermWindow Bezárás Text Terminal AppearancePrefView Szöveg Clear all Terminal TermWindow Összes törlése Text encoding Terminal TermWindow Szöveg kódolása -size Terminal TermView méret Close window Terminal TermWindow Ablak bezárása Copy absolute path Terminal TermView Teljes útvonal másolása Save as default Terminal TermWindow Beállítás alapértelmezettként diff --git a/data/catalogs/apps/terminal/it.catkeys b/data/catalogs/apps/terminal/it.catkeys index 69c078ec42..2bd4c7b2e7 100644 --- a/data/catalogs/apps/terminal/it.catkeys +++ b/data/catalogs/apps/terminal/it.catkeys @@ -1,4 +1,4 @@ -1 italian x-vnd.Haiku-Terminal 1506238602 +1 italian x-vnd.Haiku-Terminal 2393105117 Not found. Terminal TermWindow Non trovato. Switch Terminals Terminal TermWindow Scambia Terminali Change directory Terminal TermView Cambia directory @@ -56,7 +56,6 @@ Close Terminal TermWindow Chiudi Text Terminal AppearancePrefView Testo Clear all Terminal TermWindow Ripulisci tutto Text encoding Terminal TermWindow Codifica del testo -size Terminal TermView dimensione Close window Terminal TermWindow chiudi finestra Set tab title Terminal TermWindow Imposta titolo scheda Settings… Terminal TermWindow Impostazioni… diff --git a/data/catalogs/apps/terminal/ja.catkeys b/data/catalogs/apps/terminal/ja.catkeys index 3b4babb169..80361f6153 100644 --- a/data/catalogs/apps/terminal/ja.catkeys +++ b/data/catalogs/apps/terminal/ja.catkeys @@ -1,4 +1,4 @@ -1 japanese x-vnd.Haiku-Terminal 2093402207 +1 japanese x-vnd.Haiku-Terminal 2980268722 Not found. Terminal TermWindow これ以上見つかりません。 Switch Terminals Terminal TermWindow ターミナルを切替える Change directory Terminal TermView ディレクトリを変更 @@ -83,7 +83,6 @@ Close Terminal TermWindow 閉じる Text Terminal AppearancePrefView テキスト Clear all Terminal TermWindow すべて消去 Text encoding Terminal TermWindow テキストエンコーディング -size Terminal TermView サイズ Close window Terminal TermWindow ウィンドウを閉じる Copy absolute path Terminal TermView 絶対パスをコピー Save as default Terminal TermWindow デフォルトとして保存 diff --git a/data/catalogs/apps/terminal/lt.catkeys b/data/catalogs/apps/terminal/lt.catkeys index 4d402e874f..d633d0c50c 100644 --- a/data/catalogs/apps/terminal/lt.catkeys +++ b/data/catalogs/apps/terminal/lt.catkeys @@ -1,4 +1,4 @@ -1 lithuanian x-vnd.Haiku-Terminal 3268992666 +1 lithuanian x-vnd.Haiku-Terminal 4155859181 Not found. Terminal TermWindow Nerasta. Switch Terminals Terminal TermWindow Pereiti į kitą terminalą Change directory Terminal TermView Keisti aplanką @@ -74,7 +74,6 @@ Close Terminal TermWindow Užverti Text Terminal AppearancePrefView Teksto Clear all Terminal TermWindow Išvalyti viską Text encoding Terminal TermWindow Teksto koduotė -size Terminal TermView dydis Close window Terminal TermWindow Užverti langą Copy absolute path Terminal TermView Kopijuoti absoliutųjį kelią Set tab title Terminal TermWindow Keisti kortelės antraštę diff --git a/data/catalogs/apps/terminal/nl.catkeys b/data/catalogs/apps/terminal/nl.catkeys index 3503ac6fb9..0497dfba16 100644 --- a/data/catalogs/apps/terminal/nl.catkeys +++ b/data/catalogs/apps/terminal/nl.catkeys @@ -1,4 +1,4 @@ -1 dutch; flemish x-vnd.Haiku-Terminal 2336803971 +1 dutch; flemish x-vnd.Haiku-Terminal 3223670486 Not found. Terminal TermWindow Niet gevonden. Switch Terminals Terminal TermWindow Wissel van Terminal Change directory Terminal TermView Directory veranderen @@ -60,7 +60,6 @@ Close Terminal TermWindow Sluiten Text Terminal AppearancePrefView Tekst Clear all Terminal TermWindow Alles wissen Text encoding Terminal TermWindow Tekstcodering -size Terminal TermView grootte Close window Terminal TermWindow Venster sluiten Set tab title Terminal TermWindow De tabtitel instellen Settings… Terminal TermWindow Instellingen... diff --git a/data/catalogs/apps/terminal/pl.catkeys b/data/catalogs/apps/terminal/pl.catkeys index 09ddf39684..5d7713a062 100644 --- a/data/catalogs/apps/terminal/pl.catkeys +++ b/data/catalogs/apps/terminal/pl.catkeys @@ -1,4 +1,4 @@ -1 polish x-vnd.Haiku-Terminal 2093402207 +1 polish x-vnd.Haiku-Terminal 2980268722 Not found. Terminal TermWindow Nie znaleziono. Switch Terminals Terminal TermWindow Przełącz terminal Change directory Terminal TermView Zmień katalog @@ -83,7 +83,6 @@ Close Terminal TermWindow Zamknij Text Terminal AppearancePrefView Tekst Clear all Terminal TermWindow Wyczyść wszystko Text encoding Terminal TermWindow Kodowanie tekstu -size Terminal TermView rozmiar Close window Terminal TermWindow Zamknij okno Copy absolute path Terminal TermView Kopiuj ścieżkę absolutną Save as default Terminal TermWindow Zapisz jako domyślny diff --git a/data/catalogs/apps/terminal/pt_BR.catkeys b/data/catalogs/apps/terminal/pt_BR.catkeys index f420c2814b..045c5905d7 100644 --- a/data/catalogs/apps/terminal/pt_BR.catkeys +++ b/data/catalogs/apps/terminal/pt_BR.catkeys @@ -1,4 +1,4 @@ -1 portuguese (brazil) x-vnd.Haiku-Terminal 2093402207 +1 portuguese (brazil) x-vnd.Haiku-Terminal 2980268722 Not found. Terminal TermWindow Não localizado. Switch Terminals Terminal TermWindow Alternar Terminais Change directory Terminal TermView Mudar de pasta @@ -83,7 +83,6 @@ Close Terminal TermWindow Fechar Text Terminal AppearancePrefView Texto Clear all Terminal TermWindow Limpar tudo Text encoding Terminal TermWindow Codificação de texto -size Terminal TermView tamanho Close window Terminal TermWindow Fechar janela Copy absolute path Terminal TermView Copiar caminho absoluto Save as default Terminal TermWindow Salvar como padrão diff --git a/data/catalogs/apps/terminal/ro.catkeys b/data/catalogs/apps/terminal/ro.catkeys index 59bb01c59c..b3de96423b 100644 --- a/data/catalogs/apps/terminal/ro.catkeys +++ b/data/catalogs/apps/terminal/ro.catkeys @@ -1,4 +1,4 @@ -1 romanian x-vnd.Haiku-Terminal 2093402207 +1 romanian x-vnd.Haiku-Terminal 2980268722 Not found. Terminal TermWindow Nu a fost găsit. Switch Terminals Terminal TermWindow Comută terminale Change directory Terminal TermView Modifică dosar @@ -83,7 +83,6 @@ Close Terminal TermWindow Închide Text Terminal AppearancePrefView Text Clear all Terminal TermWindow Eliberează tot Text encoding Terminal TermWindow Codificare text -size Terminal TermView dimensiune Close window Terminal TermWindow Închide fereastră Copy absolute path Terminal TermView Copiază calea absolută Save as default Terminal TermWindow Salvează ca implicit diff --git a/data/catalogs/apps/terminal/ru.catkeys b/data/catalogs/apps/terminal/ru.catkeys index 7d006ae6e0..1a024668ca 100644 --- a/data/catalogs/apps/terminal/ru.catkeys +++ b/data/catalogs/apps/terminal/ru.catkeys @@ -1,4 +1,4 @@ -1 russian x-vnd.Haiku-Terminal 2090807552 +1 russian x-vnd.Haiku-Terminal 2977674067 Not found. Terminal TermWindow Текст не найден Switch Terminals Terminal TermWindow Переключить терминалы Change directory Terminal TermView Сменить каталог @@ -83,7 +83,6 @@ Close Terminal TermWindow Закрыть Text Terminal AppearancePrefView Текста Clear all Terminal TermWindow Очистить всё Text encoding Terminal TermWindow Кодировка -size Terminal TermView размер Close window Terminal TermWindow Закрыть окно Copy absolute path Terminal TermView Скопировать абсолютный адрес Set tab title Terminal TermWindow Переименовть вкладку diff --git a/data/catalogs/apps/terminal/sk.catkeys b/data/catalogs/apps/terminal/sk.catkeys index 2fb0da0264..ef586fce33 100644 --- a/data/catalogs/apps/terminal/sk.catkeys +++ b/data/catalogs/apps/terminal/sk.catkeys @@ -1,4 +1,4 @@ -1 slovak x-vnd.Haiku-Terminal 2985977525 +1 slovak x-vnd.Haiku-Terminal 3872844040 Not found. Terminal TermWindow Nenájdené. Switch Terminals Terminal TermWindow Prepnúť terminály Change directory Terminal TermView Zmeniť adresár @@ -72,7 +72,6 @@ Close Terminal TermWindow Zatvoriť Text Terminal AppearancePrefView Text Clear all Terminal TermWindow Vyčistiť všetko Text encoding Terminal TermWindow Kódovanie textu -size Terminal TermView veľkosť Close window Terminal TermWindow Zatvoriť okno Set tab title Terminal TermWindow Nastaviť titulok okna Settings… Terminal TermWindow Nastavenia… diff --git a/data/catalogs/apps/terminal/sl.catkeys b/data/catalogs/apps/terminal/sl.catkeys index 304843ee88..927b9109f6 100644 --- a/data/catalogs/apps/terminal/sl.catkeys +++ b/data/catalogs/apps/terminal/sl.catkeys @@ -1,4 +1,4 @@ -1 slovenian x-vnd.Haiku-Terminal 2500449006 +1 slovenian x-vnd.Haiku-Terminal 3387315521 Not found. Terminal TermWindow Ni mogoče najti. Change directory Terminal TermView Zamenjaj imenik Cursor Terminal AppearancePrefView Kurzor @@ -38,7 +38,6 @@ Slate Terminal colors scheme Tabla Text under cursor Terminal AppearancePrefView Besedilo pod kurzorjem Use bright instead of bold text Terminal AppearancePrefView Uporabi svetlo besedilo namesto krepkega Text encoding Terminal TermWindow Kodiranje besedila -size Terminal TermView velikost Close window Terminal TermWindow Zapri okno Copy absolute path Terminal TermView Kopiraj absolutno pot Set tab title Terminal TermWindow Nastavi naslov jezička diff --git a/data/catalogs/apps/terminal/sv.catkeys b/data/catalogs/apps/terminal/sv.catkeys index f13c18e3f3..9c23f93fae 100644 --- a/data/catalogs/apps/terminal/sv.catkeys +++ b/data/catalogs/apps/terminal/sv.catkeys @@ -1,4 +1,4 @@ -1 swedish x-vnd.Haiku-Terminal 2696855708 +1 swedish x-vnd.Haiku-Terminal 3583722223 Not found. Terminal TermWindow Hittades ej. Switch Terminals Terminal TermWindow Växla terminal Change directory Terminal TermView Byt katalog @@ -83,7 +83,6 @@ Close Terminal TermWindow Stäng Text Terminal AppearancePrefView Text Clear all Terminal TermWindow Rensa allt Text encoding Terminal TermWindow Teckenuppsättning -size Terminal TermView storlek Close window Terminal TermWindow Stäng fönster Copy absolute path Terminal TermView Kopiera absolut sökväg Set tab title Terminal TermWindow Ange fliktitel diff --git a/data/catalogs/apps/terminal/uk.catkeys b/data/catalogs/apps/terminal/uk.catkeys index 69e444bd64..fcb0f16664 100644 --- a/data/catalogs/apps/terminal/uk.catkeys +++ b/data/catalogs/apps/terminal/uk.catkeys @@ -1,4 +1,4 @@ -1 ukrainian x-vnd.Haiku-Terminal 3268992666 +1 ukrainian x-vnd.Haiku-Terminal 4155859181 Not found. Terminal TermWindow Не знайдено. Switch Terminals Terminal TermWindow Перемкнути термінали Change directory Terminal TermView Змінити каталог @@ -74,7 +74,6 @@ Close Terminal TermWindow Закрити Text Terminal AppearancePrefView Текст Clear all Terminal TermWindow Очистити все Text encoding Terminal TermWindow Кодування тексту -size Terminal TermView розмір Close window Terminal TermWindow Закрити вікно Copy absolute path Terminal TermView Зкопіювати абсолютну адресу Set tab title Terminal TermWindow Встановити ім'я вкладки diff --git a/data/catalogs/apps/terminal/zh_Hans.catkeys b/data/catalogs/apps/terminal/zh_Hans.catkeys index c83b0da53d..1331657671 100644 --- a/data/catalogs/apps/terminal/zh_Hans.catkeys +++ b/data/catalogs/apps/terminal/zh_Hans.catkeys @@ -1,4 +1,4 @@ -1 english x-vnd.Haiku-Terminal 2093402207 +1 english x-vnd.Haiku-Terminal 2980268722 Not found. Terminal TermWindow 未找到。 Switch Terminals Terminal TermWindow 切换终端 Change directory Terminal TermView 更改目录 @@ -83,7 +83,6 @@ Close Terminal TermWindow 关闭 Text Terminal AppearancePrefView 文本 Clear all Terminal TermWindow 清空 Text encoding Terminal TermWindow 文字编码 -size Terminal TermView 大小 Close window Terminal TermWindow 关闭窗口 Copy absolute path Terminal TermView 复制绝对路径 Save as default Terminal TermWindow 默认保存 From 054c81664abdc380c5384b132ad36ce4af8fdc06 Mon Sep 17 00:00:00 2001 From: looncraz Date: Sat, 9 Jan 2016 16:08:42 -0600 Subject: [PATCH 111/242] MediaPlayer PositionToolTip Color Previously the layout would crush the default colors of BStringView preventing BStringView from calling AdoptParentColors() on its own, so we must call it manually. In addition, the default tooltip view should fully adopt tooltip colors so that any colors will default to the desired foreground color (which is the same as the tooltip text color). Fixes #12573. Signed-off-by: Jessica Hamilton --- src/apps/mediaplayer/interface/PositionToolTip.cpp | 1 + src/kits/interface/ToolTipManager.cpp | 1 + 2 files changed, 2 insertions(+) diff --git a/src/apps/mediaplayer/interface/PositionToolTip.cpp b/src/apps/mediaplayer/interface/PositionToolTip.cpp index 667baae679..698727ba70 100644 --- a/src/apps/mediaplayer/interface/PositionToolTip.cpp +++ b/src/apps/mediaplayer/interface/PositionToolTip.cpp @@ -30,6 +30,7 @@ public: virtual void AttachedToWindow() { BStringView::AttachedToWindow(); + AdoptParentColors(); Update(-1, -1); } diff --git a/src/kits/interface/ToolTipManager.cpp b/src/kits/interface/ToolTipManager.cpp index 7f4d8a5da9..ad0f8024f8 100644 --- a/src/kits/interface/ToolTipManager.cpp +++ b/src/kits/interface/ToolTipManager.cpp @@ -67,6 +67,7 @@ ToolTipView::ToolTipView(BToolTip* tip) { fToolTip->AcquireReference(); SetViewUIColor(B_TOOL_TIP_BACKGROUND_COLOR); + SetHighUIColor(B_TOOL_TIP_TEXT_COLOR); BGroupLayout* layout = new BGroupLayout(B_VERTICAL); layout->SetInsets(5, 5, 5, 5); From 0e15d112eaa91a429885aff31b2f60caf0b882ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Revol?= Date: Sat, 9 Jan 2016 23:58:46 +0100 Subject: [PATCH 112/242] screeninfo: iterate using BScreen::SetToNext() Note it leaves the current object valid on error, so you can't use IsValid() as the for loop test. --- src/bin/screeninfo.cpp | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/src/bin/screeninfo.cpp b/src/bin/screeninfo.cpp index 88850ae957..206b6c7252 100644 --- a/src/bin/screeninfo.cpp +++ b/src/bin/screeninfo.cpp @@ -12,20 +12,16 @@ #include -// screen_id currently locked to 1 screen -// TODO: This should likely be provided by our API -#define MAX_SCREENS 1 - - int main() { // BScreen usage requires BApplication for AppServerLink BApplication app("application/x-vnd.Haiku-screen_info"); - for (int id = 0; id < MAX_SCREENS; id++) { - screen_id screenIndex = {id}; - BScreen screen(screenIndex); + BScreen screen(B_MAIN_SCREEN_ID); + + do { + screen_id screenIndex = screen.ID(); accelerant_device_info info; // At the moment, screen.ID() is always 0; @@ -39,7 +35,7 @@ main() printf(" chipset: %s\n", info.chipset); printf(" serial: %s\n", info.serial_no); } - } + } while (screen.SetToNext() == B_OK); return 0; } From 1150f8cbd4c0db8290a98df8c8d23764f40ccfa0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Revol?= Date: Sun, 10 Jan 2016 00:09:11 +0100 Subject: [PATCH 113/242] screeninfo: fix warning --- src/bin/screeninfo.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bin/screeninfo.cpp b/src/bin/screeninfo.cpp index 206b6c7252..ff2a06f886 100644 --- a/src/bin/screeninfo.cpp +++ b/src/bin/screeninfo.cpp @@ -30,7 +30,7 @@ main() printf(" unavailable\n"); } else { printf(" attached\n"); - printf(" version: %u\n", info.version); + printf(" version: %" B_PRId32 "\n", info.version); printf(" name: %s\n", info.name); printf(" chipset: %s\n", info.chipset); printf(" serial: %s\n", info.serial_no); From ed749c6221a6d4449ed644a8550e96e49ed8ae86 Mon Sep 17 00:00:00 2001 From: Jessica Hamilton Date: Sun, 10 Jan 2016 17:41:06 +1300 Subject: [PATCH 114/242] BView::AdoptViewColors: handle not yet attached to a Window. As per API documentation, a BView caches the configured view colours when not yet attached to the app_server via its window. So check if we're attached to a window, and if we are, then and only then do we attempt to lock/unlock our looper. This fixes uses of AdoptViewColors and AdoptParentColors when the view isn't yet attached to a window. --- src/kits/interface/View.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/kits/interface/View.cpp b/src/kits/interface/View.cpp index 21b563f1c0..cf03b8fad2 100644 --- a/src/kits/interface/View.cpp +++ b/src/kits/interface/View.cpp @@ -2609,7 +2609,7 @@ BView::AdoptSystemColors() void BView::AdoptViewColors(BView* view) { - if (view == NULL || !view->LockLooper()) + if (view == NULL || (view->Window() != NULL && !view->LockLooper())) return; float tint = B_NO_TINT; @@ -2638,7 +2638,8 @@ BView::AdoptViewColors(BView* view) else SetHighColor(view->HighColor()); - view->UnlockLooper(); + if (view->Window() != NULL) + view->UnlockLooper(); } From 5d7e699adecea32b34c3d16cc3b3b897a067a44e Mon Sep 17 00:00:00 2001 From: Jessica Hamilton Date: Sun, 10 Jan 2016 17:49:06 +1300 Subject: [PATCH 115/242] package_daemon: fix regressions from Set*UIColor merge. Also use Set*UIColor where appropriate. --- src/servers/package/ProblemWindow.cpp | 11 +++++------ src/servers/package/ProblemWindow.h | 2 +- src/servers/package/ResultWindow.cpp | 8 +++++--- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/src/servers/package/ProblemWindow.cpp b/src/servers/package/ProblemWindow.cpp index 4d6846b4a4..7b40ea78c7 100644 --- a/src/servers/package/ProblemWindow.cpp +++ b/src/servers/package/ProblemWindow.cpp @@ -210,25 +210,22 @@ ProblemWindow::_ClearProblemsGui() void ProblemWindow::_AddProblemsGui(BSolver* solver) { - rgb_color evenBackground = ui_color(B_LIST_BACKGROUND_COLOR); - rgb_color oddBackground = tint_color(evenBackground, 1.04); - int32 problemCount = solver->CountProblems(); for (int32 i = 0; i < problemCount; i++) { _AddProblem(solver->ProblemAt(i), - (i & 1) == 0 ? evenBackground : oddBackground); + (i & 1) == 0 ? B_NO_TINT : 1.04); } } void ProblemWindow::_AddProblem(BSolverProblem* problem, - const rgb_color& backgroundColor) + const float backgroundTint) { BGroupView* problemGroup = new BGroupView(B_VERTICAL); fContainerView->AddChild(problemGroup); problemGroup->GroupLayout()->SetInsets(B_USE_SMALL_INSETS); - problemGroup->SetViewColor(backgroundColor); + problemGroup->SetViewUIColor(B_LIST_BACKGROUND_COLOR, backgroundTint); BStringView* problemView = new BStringView(NULL, problem->ToString()); problemGroup->AddChild(problemView); @@ -236,6 +233,7 @@ ProblemWindow::_AddProblem(BSolverProblem* problem, problemView->GetFont(&problemFont); problemFont.SetFace(B_BOLD_FACE); problemView->SetFont(&problemFont); + problemView->AdoptParentColors(); int32 solutionCount = problem->CountSolutions(); for (int32 k = 0; k < solutionCount; k++) { @@ -257,6 +255,7 @@ ProblemWindow::_AddProblem(BSolverProblem* problem, BString().SetToFormat("- %s", _SolutionElementText(element).String())); elementsGroup->AddView(elementView); + elementView->AdoptParentColors(); } fSolutions[solutionButton] = Solution(problem, solution); diff --git a/src/servers/package/ProblemWindow.h b/src/servers/package/ProblemWindow.h index 3ae3ef2904..af990e61a9 100644 --- a/src/servers/package/ProblemWindow.h +++ b/src/servers/package/ProblemWindow.h @@ -56,7 +56,7 @@ private: void _ClearProblemsGui(); void _AddProblemsGui(BSolver* solver); void _AddProblem(BSolverProblem* problem, - const rgb_color& backgroundColor); + const float backgroundTint); BString _SolutionElementText( const BSolverProblemSolutionElement* element) const; diff --git a/src/servers/package/ResultWindow.cpp b/src/servers/package/ResultWindow.cpp index bc6099f7ef..39253b45e3 100644 --- a/src/servers/package/ResultWindow.cpp +++ b/src/servers/package/ResultWindow.cpp @@ -89,15 +89,16 @@ ResultWindow::AddLocationChanges(const char* location, locationGroup->GroupLayout()->SetInsets(B_USE_SMALL_INSETS); - rgb_color background = ui_color(B_LIST_BACKGROUND_COLOR); + float backgroundTint = B_NO_TINT; if ((fContainerView->CountChildren() & 1) != 0) - background = tint_color(background, 1.04); - locationGroup->SetViewColor(background); + backgroundTint = 1.04; + locationGroup->SetViewUIColor(B_LIST_BACKGROUND_COLOR, backgroundTint); BStringView* locationView = new BStringView(NULL, BString().SetToFormat("in %s:", location)); locationGroup->AddChild(locationView); locationView->SetExplicitMaxSize(BSize(B_SIZE_UNLIMITED, B_SIZE_UNSET)); + locationView->AdoptParentColors(); BFont locationFont; locationView->GetFont(&locationFont); locationFont.SetFace(B_BOLD_FACE); @@ -207,6 +208,7 @@ ResultWindow::_AddPackages(BGroupLayout* packagesGroup, BStringView* packageView = new BStringView(NULL, text); packagesGroup->AddView(packageView); packageView->SetExplicitMaxSize(BSize(B_SIZE_UNLIMITED, B_SIZE_UNSET)); + packageView->AdoptParentColors(); packagesAdded = true; } From 5bc6713473dc9716e5e98fea143355a7c6f10994 Mon Sep 17 00:00:00 2001 From: looncraz Date: Sat, 9 Jan 2016 14:29:17 -0600 Subject: [PATCH 116/242] DiskProbe DataView Color Previously the DataView relied on the default colors, which layout now overrides more uniformly. The document colors are more appropriate. After the addition of the layout changes, the DataView would adopt system panel colors. Fixes #12572. Signed-off-by: Jessica Hamilton --- src/apps/diskprobe/DataView.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/apps/diskprobe/DataView.cpp b/src/apps/diskprobe/DataView.cpp index 7072f1f5ee..c2df0556ff 100644 --- a/src/apps/diskprobe/DataView.cpp +++ b/src/apps/diskprobe/DataView.cpp @@ -141,6 +141,10 @@ DataView::AttachedToWindow() MakeFocus(true); // this seems to be necessary - if we don't do this here, // the view is sometimes focus, but IsFocus() returns false... + + SetViewUIColor(B_DOCUMENT_BACKGROUND_COLOR); + SetLowUIColor(ViewUIColor()); + SetHighUIColor(B_DOCUMENT_TEXT_COLOR); } From f9f16ddb2c0960ebcf3bc49fa9e30388ff7503c8 Mon Sep 17 00:00:00 2001 From: looncraz Date: Sat, 9 Jan 2016 15:58:44 -0600 Subject: [PATCH 117/242] BAbstractSpinner Colors Adopted parent colors for the text view - should not have done so. Disabled colors were incorrect, so I also corrected those in this patch. Fixes #12574. Signed-off-by: Jessica Hamilton --- headers/private/interface/AbstractSpinner.h | 1 + src/kits/interface/AbstractSpinner.cpp | 43 ++++++++++----------- 2 files changed, 21 insertions(+), 23 deletions(-) diff --git a/headers/private/interface/AbstractSpinner.h b/headers/private/interface/AbstractSpinner.h index e822299d37..8326f48c7e 100644 --- a/headers/private/interface/AbstractSpinner.h +++ b/headers/private/interface/AbstractSpinner.h @@ -59,6 +59,7 @@ public: virtual void Draw(BRect updateRect); virtual void FrameResized(float width, float height); virtual void ValueChanged(); + virtual void MessageReceived(BMessage* message); virtual void Decrement() = 0; virtual void Increment() = 0; diff --git a/src/kits/interface/AbstractSpinner.cpp b/src/kits/interface/AbstractSpinner.cpp index f426b5e220..ecccc88e64 100644 --- a/src/kits/interface/AbstractSpinner.cpp +++ b/src/kits/interface/AbstractSpinner.cpp @@ -545,7 +545,6 @@ SpinnerTextView::AttachedToWindow() { fParent = static_cast(Parent()); - AdoptParentColors(); BTextView::AttachedToWindow(); } @@ -1069,6 +1068,16 @@ BAbstractSpinner::ValueChanged() } +void +BAbstractSpinner::MessageReceived(BMessage* message) +{ + if (!IsEnabled() && message->what == B_COLORS_UPDATED) + _UpdateTextViewColors(false); + + BControl::MessageReceived(message); +} + + void BAbstractSpinner::MakeFocus(bool focus) { @@ -1585,36 +1594,24 @@ BAbstractSpinner::_UpdateFrame() void BAbstractSpinner::_UpdateTextViewColors(bool enable) { - rgb_color textColor; - BFont font; - - fTextView->GetFontAndColor(0, &font); - - if (enable) - textColor = ui_color(B_DOCUMENT_TEXT_COLOR); - else { - textColor = tint_color(ui_color(B_PANEL_BACKGROUND_COLOR), - B_DISABLED_LABEL_TINT); - } - - fTextView->SetFontAndColor(&font, B_FONT_ALL, &textColor); + // Mimick BTextControl's appearance. + rgb_color textColor = ui_color(B_DOCUMENT_TEXT_COLOR); if (enable) { fTextView->SetViewUIColor(B_DOCUMENT_BACKGROUND_COLOR); fTextView->SetLowUIColor(ViewUIColor()); } else { - color_which which = ViewUIColor(); + rgb_color color = ui_color(B_DOCUMENT_BACKGROUND_COLOR); + color = disable_color(ViewColor(), color); + textColor = disable_color(textColor, ViewColor()); - if (which != B_NO_COLOR) { - fTextView->SetViewUIColor(which, B_LIGHTEN_2_TINT); - fTextView->SetLowUIColor(which, B_LIGHTEN_2_TINT); - } else { - rgb_color color = tint_color(ViewColor(), B_LIGHTEN_2_TINT); - fTextView->SetViewColor(color); - fTextView->SetLowColor(color); - } + fTextView->SetViewColor(color); + fTextView->SetLowColor(color); } + BFont font; + fTextView->GetFontAndColor(0, &font); + fTextView->SetFontAndColor(&font, B_FONT_ALL, &textColor); } From ba662795b32ec87c47d800ec75b910e0ad478e00 Mon Sep 17 00:00:00 2001 From: Adrien Destugues Date: Sun, 10 Jan 2016 10:16:44 +0100 Subject: [PATCH 118/242] Update git and pkgconfig. --- build/jam/repositories/HaikuPorts/x86_gcc2 | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/build/jam/repositories/HaikuPorts/x86_gcc2 b/build/jam/repositories/HaikuPorts/x86_gcc2 index 97a70043c1..7db011960d 100644 --- a/build/jam/repositories/HaikuPorts/x86_gcc2 +++ b/build/jam/repositories/HaikuPorts/x86_gcc2 @@ -148,12 +148,12 @@ RemotePackageRepository HaikuPorts giddy3-1.4-1 giflib-5.0.5-2 giflib_devel-5.0.5-2 - git-2.2.2-2 - git_arch-2.2.2-2 - git_cvs-2.2.2-2 - git_daemon-2.2.2-2 - git_email-2.2.2-2 - git_svn-2.2.2-2 + git-2.7.0-2 + git_arch-2.7.0-2 + git_cvs-2.7.0-2 + git_daemon-2.7.0-2 + git_email-2.7.0-2 + git_svn-2.7.0-2 glew-1.11.0-1 glew_devel-1.11.0-1 glew_util-1.11.0-1 @@ -403,7 +403,7 @@ RemotePackageRepository HaikuPorts physfs-2.0.3-2 physfs_devel-2.0.3-2 pipepanic-0.1.3-3 - pkgconfig-0.27.1-1 + pkgconfig-0.29-1 popt-1.16-1 popt_devel-1.16-1 postgresql-9.3.5-2 From 5fc0898757beb6b5407ac6ca2204f55167ac07a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Date: Sun, 10 Jan 2016 10:55:28 +0100 Subject: [PATCH 119/242] Remove gcc5 packages. * update_package_requires uses the latest version available, so haiku package would then require a version 5.x of libgcc. * Be sure to check that gcc_syslibs is installed and not gcc5_syslibs. --- build/jam/repositories/HaikuPorts/x86 | 4 ---- build/jam/repositories/HaikuPorts/x86_64 | 4 ---- build/jam/repositories/HaikuPorts/x86_gcc2 | 4 ---- 3 files changed, 12 deletions(-) diff --git a/build/jam/repositories/HaikuPorts/x86 b/build/jam/repositories/HaikuPorts/x86 index 120f8a6858..d8f0fbaf1d 100644 --- a/build/jam/repositories/HaikuPorts/x86 +++ b/build/jam/repositories/HaikuPorts/x86 @@ -100,9 +100,6 @@ RemotePackageRepository HaikuPorts gcc-4.8.5_2015_07_11-2 gcc_syslibs-4.8.5_2015_07_11-2 gcc_syslibs_devel-4.8.5_2015_07_11-2 - gcc5-5.3.0_2015_07_27-1 - gcc5_syslibs-5.3.0_2015_07_27-1 - gcc5_syslibs_devel-5.3.0_2015_07_27-1 gettext-0.19.4-1 gettext_libintl-0.19.4-1 giflib-5.1.1-1 @@ -449,7 +446,6 @@ RemotePackageRepository HaikuPorts freetype gawk gcc - gcc5 gcc_x86_gcc2 gettext giflib diff --git a/build/jam/repositories/HaikuPorts/x86_64 b/build/jam/repositories/HaikuPorts/x86_64 index e0e605bd94..f8c382f216 100644 --- a/build/jam/repositories/HaikuPorts/x86_64 +++ b/build/jam/repositories/HaikuPorts/x86_64 @@ -111,9 +111,6 @@ RemotePackageRepository HaikuPorts gcc-4.8.5_2015_07_11-1 gcc_syslibs-4.8.5_2015_07_11-1 gcc_syslibs_devel-4.8.5_2015_07_11-1 - gcc5-5.3.0_2015_07_27-1 - gcc5_syslibs-5.3.0_2015_07_27-1 - gcc5_syslibs_devel-5.3.0_2015_07_27-1 gettext-0.19.6-2 gettext_libintl-0.19.6-2 giflib-5.1.0-1 @@ -442,7 +439,6 @@ RemotePackageRepository HaikuPorts fribidi gawk gcc - gcc5 gettext giflib git diff --git a/build/jam/repositories/HaikuPorts/x86_gcc2 b/build/jam/repositories/HaikuPorts/x86_gcc2 index 7db011960d..18fadda107 100644 --- a/build/jam/repositories/HaikuPorts/x86_gcc2 +++ b/build/jam/repositories/HaikuPorts/x86_gcc2 @@ -628,9 +628,6 @@ RemotePackageRepository HaikuPorts gcc_x86-4.8.5_2015_07_11-2 gcc_x86_syslibs-4.8.5_2015_07_11-2 gcc_x86_syslibs_devel-4.8.5_2015_07_11-2 - gcc5_x86-5.3.0_2015_07_27-1 - gcc5_x86_syslibs-5.3.0_2015_07_27-1 - gcc5_x86_syslibs_devel-5.3.0_2015_07_27-1 gcc6809_x86-4.6.1-2 gdk_pixbuf_x86-2.31.5-1 gdk_pixbuf_x86_devel-2.31.5-1 @@ -1062,7 +1059,6 @@ RemotePackageRepository HaikuPorts gcal gcc gcc_x86 - gcc5_x86 gcc6809_x86 getconf getopt From 8e2c2be808542a7a88dd1d90aaa8518e6b1f056a Mon Sep 17 00:00:00 2001 From: Humdinger Date: Sun, 10 Jan 2016 17:52:32 +0100 Subject: [PATCH 120/242] Updated lbreakout2, slimevolley packages. Fixed requirement of lib:libsdl_net_1.2 makes them installable. --- build/jam/repositories/HaikuPorts/x86_gcc2 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build/jam/repositories/HaikuPorts/x86_gcc2 b/build/jam/repositories/HaikuPorts/x86_gcc2 index 18fadda107..032be83d8b 100644 --- a/build/jam/repositories/HaikuPorts/x86_gcc2 +++ b/build/jam/repositories/HaikuPorts/x86_gcc2 @@ -204,7 +204,7 @@ RemotePackageRepository HaikuPorts keymapswitcher-1.2.7.11-1 lame-3.99.5-3 lame_devel-3.99.5-3 - lbreakout2-2.6.4-2 + lbreakout2-2.6.4-3 lcms-2.5-1 lcms_devel-2.5-1 less-451-4 @@ -468,7 +468,7 @@ RemotePackageRepository HaikuPorts slang-2.2.4-1 slang_devel-2.2.4-1 slayer-0.9-2 - slimevolley-2.4.2-3 + slimevolley-2.4.2-4 smjpeg-0.2.1-1 smjpeg_devel-0.2.1-1 smpeg-0.4.5-3 From dd1c7180263692dc1d6e16209b8c2e114db2f9e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Date: Sun, 10 Jan 2016 19:24:16 +0100 Subject: [PATCH 121/242] Update libwebp packages. * added libwebp5 packages for compatibility. * updated library soname of the build feature. --- build/jam/BuildFeatures | 2 +- build/jam/repositories/HaikuPorts/x86 | 13 +++++++++---- build/jam/repositories/HaikuPorts/x86_64 | 7 +++++-- build/jam/repositories/HaikuPorts/x86_gcc2 | 13 +++++++++---- 4 files changed, 24 insertions(+), 11 deletions(-) diff --git a/build/jam/BuildFeatures b/build/jam/BuildFeatures index 54042f9a4b..e70a411ad4 100644 --- a/build/jam/BuildFeatures +++ b/build/jam/BuildFeatures @@ -527,7 +527,7 @@ if [ IsPackageAvailable libwebp_devel ] { runtime: lib file: devel libwebp_devel depends: base - library: $(developLibDir)/libwebp.so.5 + library: $(developLibDir)/libwebp.so.6 headers: $(developHeadersDir) $(developHeadersDir)/webp ; diff --git a/build/jam/repositories/HaikuPorts/x86 b/build/jam/repositories/HaikuPorts/x86 index d8f0fbaf1d..dddd2068ad 100644 --- a/build/jam/repositories/HaikuPorts/x86 +++ b/build/jam/repositories/HaikuPorts/x86 @@ -201,8 +201,10 @@ RemotePackageRepository HaikuPorts libvorbis_devel-1.3.5-1 libvpx-1.0.0-2 libvpx_devel-1.0.0-2 - libwebp-0.4.1-2 - libwebp_devel-0.4.1-2 + libwebp-0.5.0-1 + libwebp_devel-0.5.0-1 + libwebp5-0.4.4-1 + libwebp5_devel-0.4.4-1 libxml2-2.9.3-2 libxml2_devel-2.9.3-2 libxml2_python-2.9.3-2 @@ -373,8 +375,10 @@ RemotePackageRepository HaikuPorts libvorbis_x86_gcc2_devel-1.3.5-1 libvpx_x86_gcc2-1.0.0-2 libvpx_x86_gcc2_devel-1.0.0-2 - libwebp_x86_gcc2-0.4.1-2 - libwebp_x86_gcc2_devel-0.4.1-2 + libwebp_x86_gcc2-0.5.0-1 + libwebp_x86_gcc2_devel-0.5.0-1 + libwebp5_x86_gcc2-0.4.4-1 + libwebp5_x86_gcc2_devel-0.4.4-1 libxml2_x86_gcc2-2.9.2-1 libxml2_x86_gcc2_devel-2.9.2-1 mesa_x86_gcc2-7.9.2-5 @@ -500,6 +504,7 @@ RemotePackageRepository HaikuPorts libvorbis libvpx libwebp + libwebp5 libxml2 libxslt llvm diff --git a/build/jam/repositories/HaikuPorts/x86_64 b/build/jam/repositories/HaikuPorts/x86_64 index f8c382f216..d7a18e73cc 100644 --- a/build/jam/repositories/HaikuPorts/x86_64 +++ b/build/jam/repositories/HaikuPorts/x86_64 @@ -262,8 +262,10 @@ RemotePackageRepository HaikuPorts libvorbis_devel-1.3.5-2 libvpx-1.0.0-2 libvpx_devel-1.0.0-2 - libwebp-0.4.1-2 - libwebp_devel-0.4.1-2 + libwebp-0.5.0-1 + libwebp_devel-0.5.0-1 + libwebp5-0.4.4-1 + libwebp5_devel-0.4.4-1 libxml2-2.9.3-1 libxml2_devel-2.9.3-1 libxml2_python-2.9.3-1 @@ -518,6 +520,7 @@ RemotePackageRepository HaikuPorts libusb libusb_compat libwebp + libwebp5 libxml2 libxslt llvm diff --git a/build/jam/repositories/HaikuPorts/x86_gcc2 b/build/jam/repositories/HaikuPorts/x86_gcc2 index 032be83d8b..5d139b12c8 100644 --- a/build/jam/repositories/HaikuPorts/x86_gcc2 +++ b/build/jam/repositories/HaikuPorts/x86_gcc2 @@ -313,8 +313,10 @@ RemotePackageRepository HaikuPorts libvorbis_devel-1.3.5-1 libvpx-1.0.0-2 libvpx_devel-1.0.0-2 - libwebp-0.4.1-2 - libwebp_devel-0.4.1-2 + libwebp-0.5.0-1 + libwebp_devel-0.5.0-1 + libwebp5-0.4.4-1 + libwebp5_devel-0.4.4-1 libxau-1.0.8-2 libxcb-1.6-2 libxml2-2.8.0-9 @@ -780,8 +782,10 @@ RemotePackageRepository HaikuPorts libvorbis_x86_devel-1.3.5-2 libvpx_x86-1.0.0-2 libvpx_x86_devel-1.0.0-2 - libwebp_x86-0.4.1-2 - libwebp_x86_devel-0.4.1-2 + libwebp_x86-0.5.0-1 + libwebp_x86_devel-0.5.0-1 + libwebp5_x86-0.4.4-1 + libwebp5_x86_devel-0.4.4-1 libxml2_x86-2.9.2-1 libxml2_x86_devel-2.9.2-1 libxslt_x86-1.1.28-5 @@ -1208,6 +1212,7 @@ RemotePackageRepository HaikuPorts libvorbis_x86 libvpx libwebp + libwebp5 libxau libxcb libxml2 From 405208a7825b27a9b14d8ff14e7e3c4bb22148b8 Mon Sep 17 00:00:00 2001 From: looncraz Date: Sat, 9 Jan 2016 11:31:18 -0600 Subject: [PATCH 122/242] PowerStatus background tint Recent changes require us to adopt the tint value for PowerStatus's low color as well as the ViewUIColor. This repairs the issue where the replicant's background color was lighter than the Deskbar's tray color. Fixes #12566. Signed-off-by: Jessica Hamilton --- src/apps/powerstatus/PowerStatusView.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/apps/powerstatus/PowerStatusView.cpp b/src/apps/powerstatus/PowerStatusView.cpp index 0b1b4aa3b1..ef09bc2f10 100644 --- a/src/apps/powerstatus/PowerStatusView.cpp +++ b/src/apps/powerstatus/PowerStatusView.cpp @@ -120,10 +120,13 @@ PowerStatusView::AttachedToWindow() BView::AttachedToWindow(); AdoptParentColors(); - if (ViewUIColor() == B_NO_COLOR) + float tint = B_NO_TINT; + color_which which = ViewUIColor(&tint); + + if (which == B_NO_COLOR) SetLowUIColor(B_PANEL_BACKGROUND_COLOR); else - SetLowUIColor(ViewUIColor()); + SetLowUIColor(which, tint); Update(); } From d2d239f4c46bc6a0767a7af6ced60af7ff0237bd Mon Sep 17 00:00:00 2001 From: looncraz Date: Sat, 9 Jan 2016 13:13:21 -0600 Subject: [PATCH 123/242] Improve BButton Color Adaptability View color now shows through, so we keep the view color in sync with the parent to act as the button background color. The low color is used to determine the button color. The high color is used to determine the button label color. The default low and high colors are the control background and text colors, respectfully. To maintain the identical appearance as before, the default control background color is tinted to match the default panel background color. As the color has a gradient applied anyway, no one will notice a difference while playing with custom control colors. Fixes #12568. Signed-off-by: Jessica Hamilton --- src/kits/interface/Button.cpp | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/kits/interface/Button.cpp b/src/kits/interface/Button.cpp index ab728e5355..6d3fd4bba9 100644 --- a/src/kits/interface/Button.cpp +++ b/src/kits/interface/Button.cpp @@ -133,10 +133,10 @@ void BButton::Draw(BRect updateRect) { BRect rect(Bounds()); - rgb_color background = LowColor(); + rgb_color background = ViewColor(); + rgb_color base = LowColor(); + rgb_color textColor = HighColor(); - // Darken default control color to match default panel color. - rgb_color base = tint_color(ui_color(B_CONTROL_BACKGROUND_COLOR), 1.115); uint32 flags = be_control_look->Flags(this); if (_Flag(FLAG_DEFAULT)) flags |= BControlLook::B_DEFAULT_BUTTON; @@ -163,8 +163,9 @@ BButton::Draw(BRect updateRect) (Value() == B_CONTROL_OFF ? B_INACTIVE_ICON_BITMAP : B_ACTIVE_ICON_BITMAP) | (IsEnabled() ? 0 : B_DISABLED_ICON_BITMAP)); - be_control_look->DrawLabel(this, Label(), icon, rect, updateRect, - base, flags, BAlignment(B_ALIGN_CENTER, B_ALIGN_MIDDLE)); + + be_control_look->DrawLabel(this, Label(), icon, rect, updateRect, base, + flags, BAlignment(B_ALIGN_CENTER, B_ALIGN_MIDDLE), &textColor); } @@ -230,6 +231,10 @@ BButton::AttachedToWindow() { BControl::AttachedToWindow(); + // Tint default control background color to match default panel background. + SetLowUIColor(B_CONTROL_BACKGROUND_COLOR, 1.115); + SetHighUIColor(B_CONTROL_TEXT_COLOR); + if (IsDefault()) Window()->SetDefaultButton(this); } From 79a091e7dd3e512ead9019a690fcf1c145e56d94 Mon Sep 17 00:00:00 2001 From: looncraz Date: Thu, 7 Jan 2016 20:08:35 -0600 Subject: [PATCH 124/242] Correct Tracker QueryPoseView Column Resize Appearance PoseView's ColumnRedraw fills exposed areas in manually in an offscreen view using the PoseView's LowColor. As QueryPoseView uses a custom view color it is necessary for the low color to match, otherwise resizing a column will draw the untinted document background color. Fixes #12569. Signed-off-by: Jessica Hamilton --- src/kits/tracker/QueryPoseView.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/kits/tracker/QueryPoseView.cpp b/src/kits/tracker/QueryPoseView.cpp index 2953bcdece..bafe85fa0e 100644 --- a/src/kits/tracker/QueryPoseView.cpp +++ b/src/kits/tracker/QueryPoseView.cpp @@ -144,6 +144,7 @@ BQueryPoseView::AttachedToWindow() { _inherited::AttachedToWindow(); SetViewUIColor(B_DOCUMENT_BACKGROUND_COLOR, B_DARKEN_1_TINT); + SetLowUIColor(B_DOCUMENT_BACKGROUND_COLOR, B_DARKEN_1_TINT); } From afd7c879ee5dc48d3ef6df23fc9496ef0fc31144 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Revol?= Date: Mon, 11 Jan 2016 00:34:24 +0100 Subject: [PATCH 125/242] add an App_SDL icon for SDL apps --- data/artwork/icons/App_SDL | Bin 0 -> 23680 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 data/artwork/icons/App_SDL diff --git a/data/artwork/icons/App_SDL b/data/artwork/icons/App_SDL new file mode 100644 index 0000000000000000000000000000000000000000..5ecdaaaa8d0172e01af46ace46b12e6c2f3bcda6 GIT binary patch literal 23680 zcmeHOdvsLA9ljw7;ZZ;oLB+Ba3sESI6%~=Pn;3aWcnB1!ax|}vtR&eq8{{F<)dMZ1 z2q-96U$lsVXl+r?u~<#4SinlfLtC*@%&GlDTJ4EFKB#)S{k}UhcjsoU>5rlf98%vp|JHnSRre!QcamAb2Xh%B7p ztWL*?A=<2X7v~_Zw7E$R`gPWB!ohhX-dH@!sm`<+)34-lcb-6@sIqa@jLB0Aa_~EZ z+8dSEW;gsS=UAWxIl7+km$||EVV%s4U8-5Srk!<;;BC+WF^4dI9Xt$4Fg--^q^Q-V5 z1K0T_&iWFniQhLQ?(*9U2MfcMmC^YDh_W(L9rk!G245jmw&afW4DgtX+KAt518Dc5 zZVYL>@`4a5TiXi-k1e}0l{X)2OS0@(dmI9ww3O*nVmLHfj=qO{_gAahJ8P;XtxhQ5%I-D%(saK+>=#--08(V`ff7Pd^7f z1{PZ~umule%K+7t#l*lFz)cK{0&ZfU47iDbJH2uIe(`>ZyA04lO9twqHO=HNgkxbN znL7IAZ|<2v{ zMaq*-OG$}sb7!R)fK5k1K<1tq2q?8AfDdd-Ku`2#(Fx#h1`P%kodAV1Dbop1_%z@; z0b)$YVMH~#pxY(x63`6?A~6UQO!xG^0bg4H7326r!+jEWZKf*@T>0yPSqW8$M%YP4`^ePMFMV^*4AQ^VQu>eKL2RXOiVI4b zsc}K!mt%aB^h<%W4__qtV#wdDD^X3-|Cz+SxZq0P7nYTb*fw`lT3EK}D8!$+X9n>< zWhwr*@mRLvH|0gVmH{I*FH-nKoYTdx@TI_Y@e^l#5!EFAKT6ycKl7s6aCx(M(FDOW zFtcU6;LAFRn1jlfbhbxuE*I@?JzgBmg@T}#UFjz*C0;DFq--;uo}!{yDJmBHH2Nz_ zipAuw82@=~s=vbGl8-Xd6hJLT)hXj|))lB?9KXNXAaR#6uEmhDq`S)bcfW!`Bm030 z(sVwmqGvpQHzw(^>qt7jtfyc6zF-lz6#f%<4qM@y)<2XmQ`bKfJ_h6K_M-5cfb(~% zySfXQN%#*-+!a1wD5dZNDeGK9f0Kd}vQKLwnLFwxk*;S34%S(6(16FW<-im&DBoPv z)R3X@e4NucPmkD!`3cv|9K$RG#)eCZUZdSOAukuC)ne{n5-D~}~i;?)WL z3nmoz)AOd5Tp;MMyTVV4KasuPl9ye0URz!mFIaTPq~v@ya3N2z%B1k|!1-IP{VIGR zFcUA^ym9=FX@|sJUg!lqUd+~^0!or5AyWfA{&0}_0^M4^>=v2mIpOnM(&J0CRKQTy z!oZP??^>c|(^1fnxu;+JzQ9q{$?h%VJ{Xa$aj+kYZX9%EHK<&Z(~U#nw*%LWL*btR z*NuZXYaQlea#|}T?ivT4%}K6%Yz#3j92oVD{4IA-+*9*Kn$=sjahx9woGs%>0QhXQ zHE3tZW6HS^=ZB%q1I{*%c67m#+$H(jcI4rh*9CN^w-FZ%zzN6gC~nLfZ~zY6fb)fD z<7kPq-z>B>`OiIc1KNV(WSG#zHMNx>qcDe@uRC z1@ACbj@$^m2*+`>eB=hS%s6?cVzf1A)lA$aqEMeVzgh6+ro#MN*A2({IL`Ar&VVy< z&<-f@s~Ivn7BoJEYXV}kQ!@blTBC4$!=%SeRXBxzALn$1Q#kh;bcG|%`UR><;d)`7 z#65*8^cLDEB~{$0ACQ&(mnRd+ODadDrLd)QpjFY**yid^ z;%F`u9JcIAohv+s<0C3ox3DrCb0#Cbx8dtQ{lse{eEcEMy%Dbr1@soPy9&_Vg?a6b+n}z+jCqHiTlp^*cyL^ox?y^RDODjvt<~n83 z$|zG~Cov6ov6;~CF(PA|nh+<)Vw#ZJ3^PqgZH8sR!Km*k9>ySF$5`G(smt0*rI_v9 zb$?6TR9jLW31eT;HotueBXvPlY^mudr`_3=BOix3EQ^?SFXyVFf~Tr4ULb*z)3?k0=kYb119d<&-cy4dWn}+mc(MNPada4 zKnLv|)YX<$$10+=RV8(iXtlHGmBD9T`@zoOlF-a9&-Ghdzqs#jU;5y@$AWKnEB#CM z?6-orH2&TLxgoR-tFF%v2?-aLEJ+NRxF8X&sECER*}@VJ)-9|FyFc-nMYy&mS}E>9 z(L}1}gli*pft1^4@fFubtIkC~icHZ$5#Z3MRm^}`gqZwlu3igWHK#pzuLn}qM}9As zn1MUlOlmit%vRND9SEMYW7&vReOzS^Et_~z2$F8tJ9V&B_AwP}5@(IMxeb*4 zxOJi0cK}kWKHl7+RhC-yXH8h{66f7e^l481KZ zp;NmKCOUM=Ql~}~y!BxJ)%$~8@7aF&uCj*UmOE~Le(+Nb^}lvjj_7{a)v1k7TsV?C z6@T%0l7*o~;I<*=D+eE-~(9bq3tL+MtPBA)qy2EsdVVTg%EG`ZC* zl&9z5!o+dw(!JGMG1pC}jP6i$OGTf%>58h0uiY1Hyn4_Xqxb9y{&Vk#Yd^}_Uq5i^ zmlCaA0C_usnm{BkvMLqR^}Epwbx#I?f4DN(+i6NT=kS<W?G#i6_2>lRxytPpLbPbEf#iBMA_@cgn){8>iy^V7hF15MKW?ZE&h;szG zfoxQ@9i%Tz19oS{FV1wFk&g@6`bGpD7hfGYW;V7S^ab>xz`4qsjb(HFPklFg{rkEL z=#&8G5le%wl(@T{5~vMVI9$|lH*|Qw;=aOZzA zBDnj)gv~wouYMk7;aX<}CPN|4t*wjkp*aCl`4P@3A+jIt?G_4(&}-+@Kx9jc087bj2|LF-}S0{zSd zvseG_s=WZT+{2o(Zhg+G6aqxwj?Pt|nFvzhYh8bQuVus_KNKE_*0zZ2&5u*$) z8-F_CXA%@Y6^9!V?4Kltp4%ga*}Y2)mr0T$BSIP!k=wh#Y0fczyFN4OxX&LVampIp0qGlrM~~<0Tbf)r);l6olGfP*EFeFpEUT;%qbhanoAe= z8@UJ5@%nR8zy3fA(!02mHzj}(C0!i7tQUHcU-`A4k2~5gQR#R1WNnc{^P`4zq305u zGld?${F_40ZE5g(C7ujDbYEWRVYcYOLWoEDq({4>>Kq?u2DF=oQ zeYJ@?I}p_rYPbYvqKC^mCVKeCITL=j#FO+e2k_`&vduRwFFWwI{M(P3yDh1C6!UHk zHMouYvSFfzkvE;?48u7SHFJTRC`e~fcgp@rYN#L{HO#DCTBtsxg&#<@A1fzsoS`mw ztnk2#Gx8N@+KhJOWuj#+Jr16TnncZIp{CL~(E|u=_AhI*4=p5h8JyNatJ57Bmlo6I z(ih{LunK=Jy%&RAiIg0OpDD4-4PTo~%`e=_D^5jy(1VQ^NNBa?TFO=D4 zyWnw5_*f-uYB|SbGhEIwC2UdPrckpW4Stuzlc9!B;}JuaTw<6b=%0z7_{>lz`P8OV gnn}kX)UTEq>VwA&9V$PMA?Pwhs_+F>JEm>_2Nffk0RR91 literal 0 HcmV?d00001 From 1d162e3bde528acfa9d078018f28b67e094172f9 Mon Sep 17 00:00:00 2001 From: Humdinger Date: Mon, 11 Jan 2016 19:21:35 +0100 Subject: [PATCH 126/242] Updated vim packages, thanks to KapiX. --- build/jam/repositories/HaikuPorts/x86 | 2 +- build/jam/repositories/HaikuPorts/x86_64 | 2 +- build/jam/repositories/HaikuPorts/x86_gcc2 | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/build/jam/repositories/HaikuPorts/x86 b/build/jam/repositories/HaikuPorts/x86 index dddd2068ad..4b90758796 100644 --- a/build/jam/repositories/HaikuPorts/x86 +++ b/build/jam/repositories/HaikuPorts/x86 @@ -310,7 +310,7 @@ RemotePackageRepository HaikuPorts unrar-5.3.2-1 unzip-6.0-2 vision-0.9.7.r949-3 - vim-7.4-1 + vim-7.4-5 wget-1.17.1-1 which-2.21-1 wpa_supplicant-2.0-4 diff --git a/build/jam/repositories/HaikuPorts/x86_64 b/build/jam/repositories/HaikuPorts/x86_64 index d7a18e73cc..b3aa35eac0 100644 --- a/build/jam/repositories/HaikuPorts/x86_64 +++ b/build/jam/repositories/HaikuPorts/x86_64 @@ -379,7 +379,7 @@ RemotePackageRepository HaikuPorts ubertuber-0.9.11-1 unrar-5.3.4-1 unzip-6.0-2 - vim-7.4-3 + vim-7.4-5 vision-0.9.7.r949-3 wget-1.17.1-1 which-2.21-1 diff --git a/build/jam/repositories/HaikuPorts/x86_gcc2 b/build/jam/repositories/HaikuPorts/x86_gcc2 index 5d139b12c8..9eee028436 100644 --- a/build/jam/repositories/HaikuPorts/x86_gcc2 +++ b/build/jam/repositories/HaikuPorts/x86_gcc2 @@ -511,7 +511,7 @@ RemotePackageRepository HaikuPorts vasm-1.7c-1 vcdimager-0.7.24-2 vcdimager_devel-0.7.24-2 - vim-7.4-3 + vim-7.4-5 virtualbox_guest_additions-4.3.53_svn-7 vision-0.9.7.r949-2 vlc-0.8.6i-1 From 567781bf34d323c8c596407802fb438372207fc7 Mon Sep 17 00:00:00 2001 From: Humdinger Date: Tue, 12 Jan 2016 10:11:10 +0100 Subject: [PATCH 127/242] Updated packages to Clipdinger 0.5.1 Additionally to more robust pasting to sprunge (now checks if the service is operational) the required curl version is now the one that's actually in the HaikuPorts repo, 7.45.0. Clipdinger 0.5 depended on a newer version, which rendered it uninstallable with only the default HaikuPorts repo. There's a messaging issue that results in pasting to sprunge twice, which I'm still investigating. Releasing now, as it's not a debilitating bug. --- build/jam/repositories/HaikuPorts/x86 | 2 +- build/jam/repositories/HaikuPorts/x86_64 | 2 +- build/jam/repositories/HaikuPorts/x86_gcc2 | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/build/jam/repositories/HaikuPorts/x86 b/build/jam/repositories/HaikuPorts/x86 index 4b90758796..0abfad545a 100644 --- a/build/jam/repositories/HaikuPorts/x86 +++ b/build/jam/repositories/HaikuPorts/x86 @@ -64,7 +64,7 @@ RemotePackageRepository HaikuPorts cdrtools_devel-3.01~a27-1 clang-3.4-3 clang_analysis-3.4-3 - clipdinger-0.5-1 + clipdinger-0.5.1-1 cmake-3.3.1-1 coreutils-8.24-1 cpio-2.10-1 diff --git a/build/jam/repositories/HaikuPorts/x86_64 b/build/jam/repositories/HaikuPorts/x86_64 index b3aa35eac0..bf6964991c 100644 --- a/build/jam/repositories/HaikuPorts/x86_64 +++ b/build/jam/repositories/HaikuPorts/x86_64 @@ -66,7 +66,7 @@ RemotePackageRepository HaikuPorts cdrtools_devel-3.02~a04-1 clang-3.5.1-1 clang_analysis-3.5.1-1 - clipdinger-0.5-1 + clipdinger-0.5.1-1 cmake-3.3.2-3 coreutils-8.24-1 cpio-2.12-1 diff --git a/build/jam/repositories/HaikuPorts/x86_gcc2 b/build/jam/repositories/HaikuPorts/x86_gcc2 index 9eee028436..d6bae9fb6e 100644 --- a/build/jam/repositories/HaikuPorts/x86_gcc2 +++ b/build/jam/repositories/HaikuPorts/x86_gcc2 @@ -77,7 +77,7 @@ RemotePackageRepository HaikuPorts cdrtools-3.02~a04-1 cdrtools_devel-3.02~a04-1 chat-20100903-2 - clipdinger-0.5-1 + clipdinger-0.5.1-1 clockwerk-git-3 cpctools-0.3.0-2 criticalmass-2.2-1 From 270f0f2f4abf61adf40c681124f21c797ebfe1f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Mon, 11 Jan 2016 21:10:25 +0100 Subject: [PATCH 128/242] launch_daemon: Don't get the token from the registrar. * It doesn't work, and BMessenger also only uses the preferred token. * I haven't investigated why it doesn't work yet, though. --- src/servers/launch/Job.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/servers/launch/Job.cpp b/src/servers/launch/Job.cpp index c5aec04832..a742518a9a 100644 --- a/src/servers/launch/Job.cpp +++ b/src/servers/launch/Job.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2015, Axel Dörfler, axeld@pinc-software.de. + * Copyright 2015-2016, Axel Dörfler, axeld@pinc-software.de. * Distributed under the terms of the MIT License. */ @@ -686,7 +686,7 @@ Job::_Launch(const char* signature, entry_ref* ref, int argCount, { thread_id mainThread = -1; status_t result = BRoster::Private().Launch(signature, ref, NULL, argCount, - args, environment, &fTeam, &mainThread, &fDefaultPort, &fToken, true); + args, environment, &fTeam, &mainThread, &fDefaultPort, NULL, true); if (result == B_OK) { result = _CreateAndTransferPorts(); From 90fd6af0b63f546c47d84121359cdc88cadc1caf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Tue, 12 Jan 2016 15:55:36 +0100 Subject: [PATCH 129/242] launch_daemon: Added ability to enable/disable a job. * Instead of just starting/stopping it. * Also available via the launch_roster command. --- headers/private/app/LaunchDaemonDefs.h | 3 ++- headers/private/app/LaunchRoster.h | 3 ++- src/bin/launch_roster.cpp | 24 ++++++++++++++--- src/kits/app/LaunchRoster.cpp | 21 ++++++++++++++- src/servers/launch/LaunchDaemon.cpp | 37 +++++++++++++++++++++++++- 5 files changed, 81 insertions(+), 7 deletions(-) diff --git a/headers/private/app/LaunchDaemonDefs.h b/headers/private/app/LaunchDaemonDefs.h index e3e1a5e515..78980a819c 100644 --- a/headers/private/app/LaunchDaemonDefs.h +++ b/headers/private/app/LaunchDaemonDefs.h @@ -1,5 +1,5 @@ /* - * Copyright 2015, Haiku, Inc. All Rights Reserved. + * Copyright 2015-2016, Haiku, Inc. All Rights Reserved. * Distributed under the terms of the MIT License. * * Authors: @@ -27,6 +27,7 @@ enum { B_GET_LAUNCH_DATA = 'lnda', B_LAUNCH_TARGET = 'lntg', B_LAUNCH_JOB = 'lnjo', + B_ENABLE_LAUNCH_JOB = 'lnje', B_STOP_LAUNCH_JOB = 'lnsj', B_LAUNCH_SESSION = 'lnse', B_REGISTER_SESSION_DAEMON = 'lnrs', diff --git a/headers/private/app/LaunchRoster.h b/headers/private/app/LaunchRoster.h index 46332de246..9b2459518b 100644 --- a/headers/private/app/LaunchRoster.h +++ b/headers/private/app/LaunchRoster.h @@ -1,5 +1,5 @@ /* - * Copyright 2015 Haiku, Inc. All rights reserved. + * Copyright 2015-2016 Haiku, Inc. All rights reserved. * Distributed under the terms of the MIT License. */ #ifndef _LAUNCH_ROSTER_H @@ -36,6 +36,7 @@ public: status_t Start(const char* name); status_t Stop(const char* name, bool force = false); + status_t SetEnabled(const char* name, bool enabled); status_t StartSession(const char* login); diff --git a/src/bin/launch_roster.cpp b/src/bin/launch_roster.cpp index f66a6f1e6b..9a04bfc4dd 100644 --- a/src/bin/launch_roster.cpp +++ b/src/bin/launch_roster.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2015, Axel Dörfler, axeld@pinc-software.de. + * Copyright 2015-2016, Axel Dörfler, axeld@pinc-software.de. * Distributed under the terms of the MIT License. */ @@ -113,6 +113,19 @@ stop_job(const char* name) } +static void +enable_job(const char* name, bool enable) +{ + BLaunchRoster roster; + status_t status = roster.SetEnabled(name, enable); + if (status != B_OK) { + fprintf(stderr, "%s: %s job \"%s\" failed: %s\n", kProgramName, + enable ? "Enabling" : "Disabling", name, strerror(status)); + exit(EXIT_FAILURE); + } +} + + static void usage(int status) { @@ -160,10 +173,11 @@ main(int argc, char** argv) list_jobs(verbose); } else if (strcmp(command, "list-targets") == 0) { list_targets(verbose); + } else if (argc == optind + 1) { + // For convenience (the "info" command can be omitted) + get_info(command); } else { // All commands that need a name following - if (argc == optind + 1) - usage(1); const char* name = argv[argc - 1]; @@ -173,6 +187,10 @@ main(int argc, char** argv) start_job(name); } else if (strcmp(command, "stop") == 0) { stop_job(name); + } else if (strcmp(command, "enable") == 0) { + enable_job(name, true); + } else if (strcmp(command, "disable") == 0) { + enable_job(name, false); } else { fprintf(stderr, "%s: Unknown command \"%s\".\n", kProgramName, command); diff --git a/src/kits/app/LaunchRoster.cpp b/src/kits/app/LaunchRoster.cpp index b990d0ed08..4f887cdfe8 100644 --- a/src/kits/app/LaunchRoster.cpp +++ b/src/kits/app/LaunchRoster.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2015 Haiku, Inc. All rights reserved. + * Copyright 2015-2016 Haiku, Inc. All rights reserved. * Distributed under the terms of the MIT License. * * Authors: @@ -202,6 +202,25 @@ BLaunchRoster::Stop(const char* name, bool force) } +status_t +BLaunchRoster::SetEnabled(const char* name, bool enable) +{ + if (name == NULL) + return B_BAD_VALUE; + + BMessage request(B_ENABLE_LAUNCH_JOB); + status_t status = request.AddInt32("user", getuid()); + if (status == B_OK) + status = request.AddString("name", name); + if (status == B_OK) + status = request.AddBool("enable", enable); + if (status != B_OK) + return status; + + return _SendRequest(request); +} + + status_t BLaunchRoster::StartSession(const char* login) { diff --git a/src/servers/launch/LaunchDaemon.cpp b/src/servers/launch/LaunchDaemon.cpp index b8e029f065..6e9cc8d411 100644 --- a/src/servers/launch/LaunchDaemon.cpp +++ b/src/servers/launch/LaunchDaemon.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2015, Axel Dörfler, axeld@pinc-software.de. + * Copyright 2015-2016, Axel Dörfler, axeld@pinc-software.de. * Distributed under the terms of the MIT License. */ @@ -154,6 +154,7 @@ private: void _HandleGetLaunchData(BMessage* message); void _HandleLaunchTarget(BMessage* message); void _HandleLaunchJob(BMessage* message); + void _HandleEnableLaunchJob(BMessage* message); void _HandleStopLaunchJob(BMessage* message); void _HandleLaunchSession(BMessage* message); void _HandleRegisterSessionDaemon(BMessage* message); @@ -555,6 +556,9 @@ LaunchDaemon::MessageReceived(BMessage* message) case B_LAUNCH_JOB: _HandleLaunchJob(message); break; + case B_ENABLE_LAUNCH_JOB: + _HandleEnableLaunchJob(message); + break; case B_STOP_LAUNCH_JOB: _HandleStopLaunchJob(message); break; @@ -765,6 +769,37 @@ LaunchDaemon::_HandleLaunchJob(BMessage* message) } +void +LaunchDaemon::_HandleEnableLaunchJob(BMessage* message) +{ + uid_t user = _GetUserID(message); + if (user < 0) + return; + + const char* name = message->GetString("name"); + bool enable = message->GetBool("enable"); + + Job* job = FindJob(name); + if (job == NULL) { + Session* session = FindSession(user); + if (session != NULL) { + // Forward request to user launch_daemon + if (session->Daemon().SendMessage(message) == B_OK) + return; + } + + BMessage reply(B_NAME_NOT_FOUND); + message->SendReply(&reply); + return; + } + + job->SetEnabled(enable); + + BMessage reply((uint32)B_OK); + message->SendReply(&reply); +} + + void LaunchDaemon::_HandleStopLaunchJob(BMessage* message) { From 4f39c588183f2e665b92befe36b87c21d62c5c81 Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Tue, 12 Jan 2016 12:12:07 -0500 Subject: [PATCH 130/242] Deskbar: Get rid of the "Restart Tracker" menu item. Now that launch_daemon automatically restarts Tracker and Deskbar when they crash, this is not needed anymore. --- src/apps/deskbar/BarApp.cpp | 7 ------- src/apps/deskbar/BarApp.h | 1 - src/apps/deskbar/DeskbarMenu.cpp | 7 ------- 3 files changed, 15 deletions(-) diff --git a/src/apps/deskbar/BarApp.cpp b/src/apps/deskbar/BarApp.cpp index ed1c6f22bb..d196bd8e04 100644 --- a/src/apps/deskbar/BarApp.cpp +++ b/src/apps/deskbar/BarApp.cpp @@ -643,13 +643,6 @@ TBarApp::MessageReceived(BMessage* message) run_be_about(); break; - case kRestartTracker: - { - BRoster roster; - roster.Launch(kTrackerSignature); - break; - } - case B_LOCALE_CHANGED: { BLocaleRoster::Default()->Refresh(); diff --git a/src/apps/deskbar/BarApp.h b/src/apps/deskbar/BarApp.h index 5a1465770f..362b62db0b 100644 --- a/src/apps/deskbar/BarApp.h +++ b/src/apps/deskbar/BarApp.h @@ -60,7 +60,6 @@ const uint32 kAddTeam = 'AdTm'; const uint32 kRemoveTeam = 'RmTm'; const uint32 kRestart = 'Rtrt'; const uint32 kShutDown = 'ShDn'; -const uint32 kRestartTracker = 'Trak'; // from roster_private.h const uint32 kShutdownSystem = 301; diff --git a/src/apps/deskbar/DeskbarMenu.cpp b/src/apps/deskbar/DeskbarMenu.cpp index c8587f1a8d..a360c7557b 100644 --- a/src/apps/deskbar/DeskbarMenu.cpp +++ b/src/apps/deskbar/DeskbarMenu.cpp @@ -236,13 +236,6 @@ TDeskbarMenu::AddStandardDeskbarMenuItems() dragging = fBarView->Dragging(); BMenuItem* item; - BRoster roster; - if (!roster.IsRunning(kTrackerSignature)) { - item = new BMenuItem(B_TRANSLATE("Restart Tracker"), - new BMessage(kRestartTracker)); - AddItem(item); - AddSeparatorItem(); - } // One of them is used if HAIKU_DISTRO_COMPATIBILITY_OFFICIAL, and the other if // not. However, we want both of them to end up in the catalog, so we have to From 03b1819c0434960fe696b69b0172bbfbb2ad9b57 Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Tue, 12 Jan 2016 12:19:31 -0500 Subject: [PATCH 131/242] Tracker: Get rid of the "Restart Deskbar" menu item. Now that launch_daemon automatically restarts Tracker and Deskbar when they crash, this is not needed anymore. --- src/kits/tracker/Commands.h | 1 - src/kits/tracker/ContainerWindow.cpp | 9 +-------- src/kits/tracker/DeskWindow.cpp | 9 --------- 3 files changed, 1 insertion(+), 18 deletions(-) diff --git a/src/kits/tracker/Commands.h b/src/kits/tracker/Commands.h index 1f4596e9ec..664ee1d04a 100644 --- a/src/kits/tracker/Commands.h +++ b/src/kits/tracker/Commands.h @@ -80,7 +80,6 @@ const uint32 kLoadAddOn = 'Tlda'; const uint32 kEmptyTrash = 'Tetr'; const uint32 kAddPrinter = 'Tadp'; const uint32 kMakeActivePrinter = 'Tmap'; -const uint32 kRestartDeskbar = 'DBar'; const uint32 kRunAutomounterSettings = 'Tram'; diff --git a/src/kits/tracker/ContainerWindow.cpp b/src/kits/tracker/ContainerWindow.cpp index 4a7432aeea..4838140322 100644 --- a/src/kits/tracker/ContainerWindow.cpp +++ b/src/kits/tracker/ContainerWindow.cpp @@ -53,11 +53,11 @@ All rights reserved. #include #include #include +#include #include #include #include #include -#include #include #include @@ -1480,13 +1480,6 @@ BContainerWindow::MessageReceived(BMessage* message) (new FindWindow())->Show(); break; - case kRestartDeskbar: - { - BRoster roster; - roster.Launch(kDeskbarSignature); - break; - } - case kQuitTracker: be_app->PostMessage(B_QUIT_REQUESTED); break; diff --git a/src/kits/tracker/DeskWindow.cpp b/src/kits/tracker/DeskWindow.cpp index 40ff654c2e..808211cbb2 100644 --- a/src/kits/tracker/DeskWindow.cpp +++ b/src/kits/tracker/DeskWindow.cpp @@ -46,12 +46,10 @@ All rights reserved. #include #include #include -#include #include #include #include #include -#include #include #include @@ -440,13 +438,6 @@ BDeskWindow::CreatePoseView(Model* model) void BDeskWindow::AddWindowContextMenus(BMenu* menu) { - BRoster roster; - if (!roster.IsRunning(kDeskbarSignature)) { - menu->AddItem(new BMenuItem(B_TRANSLATE("Restart Deskbar"), - new BMessage(kRestartDeskbar))); - menu->AddSeparatorItem(); - } - TemplatesMenu* tempateMenu = new TemplatesMenu(PoseView(), B_TRANSLATE("New")); From e2dfcf7094c1baeded0958ebf10b13eddf1b00ae Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Tue, 12 Jan 2016 14:12:11 -0500 Subject: [PATCH 132/242] BShelf: Fix crash in the case that view is NULL. Also correct some formatting. Fixes #12584. --- src/kits/interface/Shelf.cpp | 43 ++++++++++++++++++------------------ 1 file changed, 22 insertions(+), 21 deletions(-) diff --git a/src/kits/interface/Shelf.cpp b/src/kits/interface/Shelf.cpp index 7d215dd5e4..5ffc5c8946 100644 --- a/src/kits/interface/Shelf.cpp +++ b/src/kits/interface/Shelf.cpp @@ -294,11 +294,11 @@ replicant_data::Archive(BMessage* msg) { status_t result = B_OK; BMessage archive; - if (view) + if (view) result = view->Archive(&archive); else if (zombie_view) result = zombie_view->Archive(&archive); - + if (result != B_OK) return result; @@ -307,7 +307,7 @@ replicant_data::Archive(BMessage* msg) msg->AddMessage("message", &archive); if (view) pos = view->Frame().LeftTop(); - else if (zombie_view) + else if (zombie_view) pos = zombie_view->Frame().LeftTop(); msg->AddPoint("position", pos); @@ -1298,16 +1298,16 @@ BShelf::_AddReplicant(BMessage *data, BPoint *location, uint32 uniqueID) // Instantiate the object, if this fails we have a zombie image_id image = -1; BArchivable *archivable = _InstantiateObject(data, &image); - + BView *view = NULL; - + if (archivable != NULL) { view = dynamic_cast(archivable); - + if (view == NULL) return send_reply(data, B_ERROR, uniqueID); } - + BDragger* dragger = NULL; BView* replicant = NULL; BDragger::relation relation = BDragger::TARGET_UNKNOWN; @@ -1448,7 +1448,7 @@ BShelf::_CreateZombie(BMessage *data, BDragger *&dragger) if (data->WasDropped()) { BPoint offset; BPoint dropPoint = data->DropPoint(&offset); - + frame.OffsetTo(fContainerView->ConvertFromScreen(dropPoint) - offset); zombie = new _BZombieReplicantView_(frame, B_ERROR); @@ -1498,14 +1498,15 @@ BShelf::_GetProperty(BMessage *msg, BMessage *reply) for (int32 i = 0; i < CountReplicants(); i++) { BView *view = NULL; ReplicantAt(i, &view, &ID, &err); - if (err == B_OK) { - if (view->Name() != NULL && - strlen(view->Name()) == strlen(name) && !strcmp(view->Name(), name)) { - replicant = view; - break; - } - err = B_NAME_NOT_FOUND; + if (err != B_OK || view == NULL) + continue; + if (view->Name() != NULL && + strlen(view->Name()) == strlen(name) && + !strcmp(view->Name(), name)) { + replicant = view; + break; } + err = B_NAME_NOT_FOUND; } break; } @@ -1516,13 +1517,13 @@ BShelf::_GetProperty(BMessage *msg, BMessage *reply) for (int32 i = 0; i < CountReplicants(); i++) { BView *view = NULL; ReplicantAt(i, &view, &ID, &err); - if (err == B_OK) { - if (ID == id) { - replicant = view; - break; - } - err = B_NAME_NOT_FOUND; + if (err != B_OK || view == NULL) + continue; + if (ID == id) { + replicant = view; + break; } + err = B_NAME_NOT_FOUND; } break; } From d3fc049b78692724ac3e82b175ef22e1250e3c7f Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Tue, 12 Jan 2016 14:58:26 -0500 Subject: [PATCH 133/242] BShelf: Use BString for comparing strings. Recommended by Jessica on the Commits ML. --- src/kits/interface/Shelf.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/kits/interface/Shelf.cpp b/src/kits/interface/Shelf.cpp index 5ffc5c8946..f7fba55fbc 100644 --- a/src/kits/interface/Shelf.cpp +++ b/src/kits/interface/Shelf.cpp @@ -1500,9 +1500,7 @@ BShelf::_GetProperty(BMessage *msg, BMessage *reply) ReplicantAt(i, &view, &ID, &err); if (err != B_OK || view == NULL) continue; - if (view->Name() != NULL && - strlen(view->Name()) == strlen(name) && - !strcmp(view->Name(), name)) { + if (BString(view->Name()) == name) { replicant = view; break; } From a99deff476c965c22b7935c35aa42a74f228f9d0 Mon Sep 17 00:00:00 2001 From: looncraz Date: Sun, 10 Jan 2016 14:41:11 -0600 Subject: [PATCH 134/242] Tracker Desktop Icons Using Wrong Text Color Was using the panel color without checking if we were the desktop view. This corrects the reported issue where icon label outlines would look incorrect. Signed-off-by: Jessica Hamilton --- src/kits/tracker/TextWidget.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/kits/tracker/TextWidget.cpp b/src/kits/tracker/TextWidget.cpp index 676239519f..ae8f35d9a5 100644 --- a/src/kits/tracker/TextWidget.cpp +++ b/src/kits/tracker/TextWidget.cpp @@ -576,6 +576,9 @@ BTextWidget::Draw(BRect eraseRect, BRect textRect, float, BPoseView* view, drawView->GetFont(&font); rgb_color textColor = ui_color(B_PANEL_TEXT_COLOR); + if (view->IsDesktopWindow()) + textColor = view->DeskTextColor(); + if (textColor.Brightness() < 100) { // dark text on light outline rgb_color glowColor = ui_color(B_SHINE_COLOR); From faf00c7fa86768b87cc250f71819c5241654da46 Mon Sep 17 00:00:00 2001 From: looncraz Date: Sun, 10 Jan 2016 16:38:09 -0600 Subject: [PATCH 135/242] ControlLook - Desktop Labels Enforce use of proper colors in DrawLabel() when on the desktop. This repairs an issue where the text looks wrong in ActivityMonitor when it is a desktop replicant and likely other unreported issues. Fixes #12576. Signed-off-by: Jessica Hamilton --- src/kits/interface/ControlLook.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/kits/interface/ControlLook.cpp b/src/kits/interface/ControlLook.cpp index e4c3152518..931baf155c 100644 --- a/src/kits/interface/ControlLook.cpp +++ b/src/kits/interface/ControlLook.cpp @@ -1822,6 +1822,17 @@ BControlLook::DrawLabel(BView* view, const char* label, const rgb_color& base, drawing_mode oldMode = view->DrawingMode(); if (isDesktop) { + // Enforce proper use of desktop label colors. + if(low.Brightness() < 100) { + if (textColor == NULL) + color = make_color(255, 255, 255); + glowColor = make_color(0, 0, 0); + } else { + if (textColor == NULL) + color = make_color(0, 0, 0); + glowColor = make_color(255, 255, 255); + } + // drawing occurs on the desktop if (fCachedWorkspace != current_workspace()) { int8 indice = 0; From 29fdf47d664d268fbbc640dfd1f469a3ba0b8386 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Date: Tue, 12 Jan 2016 22:19:53 +0100 Subject: [PATCH 136/242] Update giflib packages. --- build/jam/repositories/HaikuPorts/x86 | 8 ++++---- build/jam/repositories/HaikuPorts/x86_64 | 4 ++-- build/jam/repositories/HaikuPorts/x86_gcc2 | 8 ++++---- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/build/jam/repositories/HaikuPorts/x86 b/build/jam/repositories/HaikuPorts/x86 index 0abfad545a..1cba13670f 100644 --- a/build/jam/repositories/HaikuPorts/x86 +++ b/build/jam/repositories/HaikuPorts/x86 @@ -102,8 +102,8 @@ RemotePackageRepository HaikuPorts gcc_syslibs_devel-4.8.5_2015_07_11-2 gettext-0.19.4-1 gettext_libintl-0.19.4-1 - giflib-5.1.1-1 - giflib_devel-5.1.1-1 + giflib-5.1.2-1 + giflib_devel-5.1.2-1 giflib6-5.0.5-2 giflib6_devel-5.0.5-2 git-2.2.2-3 @@ -338,8 +338,8 @@ RemotePackageRepository HaikuPorts gcc_x86_gcc2_syslibs_devel-2.95.3_2014_07_26-1 gettext_x86_gcc2-0.18.1.1-6 gettext_x86_gcc2_libintl-0.18.1.1-6 - giflib_x86_gcc2-5.1.0-1 - giflib_x86_gcc2_devel-5.1.0-1 + giflib_x86_gcc2-5.1.2-1 + giflib_x86_gcc2_devel-5.1.2-1 glew_x86_gcc2-1.11.0-1 glew_x86_gcc2_devel-1.11.0-1 glew_x86_gcc2_util-1.11.0-1 diff --git a/build/jam/repositories/HaikuPorts/x86_64 b/build/jam/repositories/HaikuPorts/x86_64 index bf6964991c..bcd0372904 100644 --- a/build/jam/repositories/HaikuPorts/x86_64 +++ b/build/jam/repositories/HaikuPorts/x86_64 @@ -113,8 +113,8 @@ RemotePackageRepository HaikuPorts gcc_syslibs_devel-4.8.5_2015_07_11-1 gettext-0.19.6-2 gettext_libintl-0.19.6-2 - giflib-5.1.0-1 - giflib_devel-5.1.0-1 + giflib-5.1.2-1 + giflib_devel-5.1.2-1 git-2.2.2-2 git_arch-2.2.2-2 git_cvs-2.2.2-2 diff --git a/build/jam/repositories/HaikuPorts/x86_gcc2 b/build/jam/repositories/HaikuPorts/x86_gcc2 index d6bae9fb6e..5e4451d857 100644 --- a/build/jam/repositories/HaikuPorts/x86_gcc2 +++ b/build/jam/repositories/HaikuPorts/x86_gcc2 @@ -146,8 +146,8 @@ RemotePackageRepository HaikuPorts gettext_libintl-0.18.1.1-6 gdb-6.3-1 giddy3-1.4-1 - giflib-5.0.5-2 - giflib_devel-5.0.5-2 + giflib-5.1.2-1 + giflib_devel-5.1.2-1 git-2.7.0-2 git_arch-2.7.0-2 git_cvs-2.7.0-2 @@ -635,8 +635,8 @@ RemotePackageRepository HaikuPorts gdk_pixbuf_x86_devel-2.31.5-1 gettext_x86-0.18.1.1-6 gettext_x86_libintl-0.18.1.1-6 - giflib_x86-5.1.0-1 - giflib_x86_devel-5.1.0-1 + giflib_x86-5.1.2-1 + giflib_x86_devel-5.1.2-1 glew_x86-1.11.0-1 glew_x86_devel-1.11.0-1 glew_x86_util-1.11.0-1 From 1a40c81cfeb07e9ddeb27dd8c89be39a74b2bf24 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Date: Tue, 12 Jan 2016 22:36:16 +0100 Subject: [PATCH 137/242] Update icu packages to 56.1. * Add icu55 packages for compatibility with version 55. --- build/jam/repositories/HaikuPorts/x86 | 13 +++++++++---- build/jam/repositories/HaikuPorts/x86_64 | 7 +++++-- build/jam/repositories/HaikuPorts/x86_gcc2 | 13 +++++++++---- 3 files changed, 23 insertions(+), 10 deletions(-) diff --git a/build/jam/repositories/HaikuPorts/x86 b/build/jam/repositories/HaikuPorts/x86 index 1cba13670f..69b78b54c9 100644 --- a/build/jam/repositories/HaikuPorts/x86 +++ b/build/jam/repositories/HaikuPorts/x86 @@ -132,10 +132,12 @@ RemotePackageRepository HaikuPorts haikuwebkit_devel-1.5.1-1 help2man-1.46.6-1 htmldoc-1.8.27-3 - icu-55.1-6 - icu_devel-55.1-6 + icu-56.1-1 + icu_devel-56.1-1 icu54-54.1-1 icu54_devel-54.1-1 + icu55-55.1-1 + icu55_devel-55.1-1 intltool-0.40.6-4 jam-2.5_2012_10_12-2 jasper-1.900.1-4 @@ -347,10 +349,12 @@ RemotePackageRepository HaikuPorts glib2_x86_gcc2_devel-2.38.1-4 glu_x86_gcc2-9.0.0-2 glu_x86_gcc2_devel-9.0.0-2 - icu_x86_gcc2-55.1-6 - icu_x86_gcc2_devel-55.1-6 + icu_x86_gcc2-56.1-1 + icu_x86_gcc2_devel-56.1-1 icu54_x86_gcc2-54.1-1 icu54_x86_gcc2_devel-54.1-1 + icu55_x86_gcc2-55.1-1 + icu55_x86_gcc2_devel-55.1-1 jasper_x86_gcc2-1.900.1-4 jasper_x86_gcc2_devel-1.900.1-4 jpeg_x86_gcc2-9-3 @@ -468,6 +472,7 @@ RemotePackageRepository HaikuPorts htmldoc icu icu54 + icu55 intltool jam jasper diff --git a/build/jam/repositories/HaikuPorts/x86_64 b/build/jam/repositories/HaikuPorts/x86_64 index bcd0372904..bb1eca6e33 100644 --- a/build/jam/repositories/HaikuPorts/x86_64 +++ b/build/jam/repositories/HaikuPorts/x86_64 @@ -150,10 +150,12 @@ RemotePackageRepository HaikuPorts harfbuzz_devel-1.1.1-1 help2man-1.46.6-1 htmldoc-1.8.27-3 - icu-55.1-6 - icu_devel-55.1-6 + icu-56.1-1 + icu_devel-56.1-1 icu54-54.1-2 icu54_devel-54.1-2 + icu55-55.1-1 + icu55_devel-55.1-1 intltool-0.40.6-4 itstool-2.0.2-1 jam-2.5_2012_10_12-2 @@ -463,6 +465,7 @@ RemotePackageRepository HaikuPorts htmldoc icu icu54 + icu55 intltool itstool jam diff --git a/build/jam/repositories/HaikuPorts/x86_gcc2 b/build/jam/repositories/HaikuPorts/x86_gcc2 index 5e4451d857..41ab7170f0 100644 --- a/build/jam/repositories/HaikuPorts/x86_gcc2 +++ b/build/jam/repositories/HaikuPorts/x86_gcc2 @@ -185,8 +185,10 @@ RemotePackageRepository HaikuPorts html_parser-3.71-1 hubbub-0.3.0-1 hubbub_devel-0.3.0-1 - icu-55.1-1 - icu_devel-55.1-1 + icu-56.1-1 + icu_devel-56.1-1 + icu55-55.1-1 + icu55_devel-55.1-1 imagemagick-6.8.9_8-1 imagemagick_devel-6.8.9_8-1 intltool-0.40.6-4 @@ -659,8 +661,10 @@ RemotePackageRepository HaikuPorts haikuwebkit_x86_devel-1.5.1-1 harfbuzz_x86-0.9.39-1 harfbuzz_x86_devel-0.9.39-1 - icu_x86-55.1-1 - icu_x86_devel-55.1-1 + icu_x86-56.1-1 + icu_x86_devel-56.1-1 + icu55_x86-55.1-1 + icu55_x86_devel-55.1-1 ilmbase_x86-2.2.0-1 ilmbase_x86_devel-2.2.0-1 jasper_x86-1.900.1-4 @@ -1104,6 +1108,7 @@ RemotePackageRepository HaikuPorts html_parser hubbub icu + icu55 ilmbase_x86 imagemagick intltool From 14de50bad73c7a6d8bf2b88a5b9a4317eb867cb3 Mon Sep 17 00:00:00 2001 From: Rudolf Cornelissen Date: Wed, 13 Jan 2016 00:59:42 +0100 Subject: [PATCH 138/242] VIA gfx driver:K8M800 now works (fixed PLL), fixed info in GetDeviceInfo --- .../private/graphics/via/DriverInterface.h | 10 +- headers/private/graphics/via/macros.h | 13 +- src/add-ons/accelerants/via/GetDeviceInfo.c | 78 ++------ src/add-ons/accelerants/via/engine/dac.c | 166 +++++++++++++++++- src/add-ons/accelerants/via/engine/general.c | 17 +- .../kernel/drivers/graphics/via/README.html | 21 ++- .../kernel/drivers/graphics/via/UPDATE.html | 8 +- 7 files changed, 208 insertions(+), 105 deletions(-) diff --git a/headers/private/graphics/via/DriverInterface.h b/headers/private/graphics/via/DriverInterface.h index b90cb92706..5fecfd2e57 100644 --- a/headers/private/graphics/via/DriverInterface.h +++ b/headers/private/graphics/via/DriverInterface.h @@ -5,7 +5,7 @@ Other authors: Mark Watson; Apsed; - Rudolf Cornelissen 10/2002-9/2005. + Rudolf Cornelissen 10/2002-1/2016. */ #ifndef DRIVERINTERFACE_H @@ -174,12 +174,12 @@ typedef struct { /* card info - information gathered from PINS (and other sources) */ enum { // card_type in order of date of VIA chip design (fixme: check order) - CLE3122 = 0, - CLE3022, + VT3122 = 0, + VT3022, VT7205, VT3205, - VT7204, - VT3204, + VT3108, + VT3204NC, NV04, NV05, NV05M64, diff --git a/headers/private/graphics/via/macros.h b/headers/private/graphics/via/macros.h index e6f0816d2b..41fa989630 100644 --- a/headers/private/graphics/via/macros.h +++ b/headers/private/graphics/via/macros.h @@ -653,13 +653,16 @@ #define ENSEQX_MSIZE_CLE266 0x34 #define ENSEQX_MSIZE_OTHER 0x39 #define ENSEQX_PLL_RESET 0x40 -#define ENSEQX_0x44 0x44 -#define ENSEQX_0x45 0x45 -#define ENSEQX_PPLL_P_OTH 0x44 -#define ENSEQX_PPLL_M_OTH 0x45 -#define ENSEQX_PPLL_N_OTH 0x46 +#define ENSEQX_PPLL2_MP_CLE 0x44 +#define ENSEQX_PPLL2_N_CLE 0x45 +#define ENSEQX_PPLL_N_OTH 0x44 +#define ENSEQX_PPLL_P_OTH 0x45 +#define ENSEQX_PPLL_M_OTH 0x46 #define ENSEQX_PPLL_MP_CLE 0x46 #define ENSEQX_PPLL_N_CLE 0x47 +#define ENSEQX_PPLL2_N_OTH 0x4a +#define ENSEQX_PPLL2_P_OTH 0x4b +#define ENSEQX_PPLL2_M_OTH 0x4c /* VIA GRAPHICS indexed registers */ /* VGA standard registers: */ diff --git a/src/add-ons/accelerants/via/GetDeviceInfo.c b/src/add-ons/accelerants/via/GetDeviceInfo.c index bc18184fbc..817c515d79 100644 --- a/src/add-ons/accelerants/via/GetDeviceInfo.c +++ b/src/add-ons/accelerants/via/GetDeviceInfo.c @@ -1,6 +1,6 @@ /* Author: - Rudolf Cornelissen 7/2004-11/2004 + Rudolf Cornelissen 7/2004-1/2016 */ #define MODULE_BIT 0x04000000 @@ -15,77 +15,23 @@ status_t GET_ACCELERANT_DEVICE_INFO(accelerant_device_info * adi) /* no info on version is provided, so presumably this is for my info */ adi->version = 1; - sprintf(adi->name, "nVidia chipset"); + sprintf(adi->name, "VIA chipset"); switch (si->ps.card_type) { - case NV04: - sprintf(adi->chipset, "NV04"); + case VT3022: + sprintf(adi->chipset, "CLE266 Unichrome Pro (VT3022)"); break; - case NV05: - sprintf(adi->chipset, "NV05"); + case VT3108: + sprintf(adi->chipset, "K8M800 Unichrome Pro (VT3108)"); break; - case NV05M64: - sprintf(adi->chipset, "NV05 model 64"); + case VT3122: + sprintf(adi->chipset, "CLE266 Unichrome Pro (VT3122)"); break; - case NV06: - sprintf(adi->chipset, "NV06"); + case VT3205: + sprintf(adi->chipset, "KM400 Unichrome (VT3205)"); break; - case NV10: - sprintf(adi->chipset, "NV10"); - break; - case NV11: - case NV11M: - sprintf(adi->chipset, "NV11"); - break; - case NV15: - sprintf(adi->chipset, "NV15"); - break; - case NV17: - case NV17M: - sprintf(adi->chipset, "NV17"); - break; - case NV18: - case NV18M: - sprintf(adi->chipset, "NV18"); - break; - case NV20: - sprintf(adi->chipset, "NV20"); - break; - case NV25: - sprintf(adi->chipset, "NV25"); - break; - case NV28: - sprintf(adi->chipset, "NV28"); - break; - case NV30: - sprintf(adi->chipset, "NV30"); - break; - case NV31: - sprintf(adi->chipset, "NV31"); - break; - case NV34: - sprintf(adi->chipset, "NV34"); - break; - case NV35: - sprintf(adi->chipset, "NV35"); - break; - case NV36: - sprintf(adi->chipset, "NV36"); - break; - case NV38: - sprintf(adi->chipset, "NV38"); - break; - case NV40: - sprintf(adi->chipset, "NV40"); - break; - case NV41: - sprintf(adi->chipset, "NV41"); - break; - case NV43: - sprintf(adi->chipset, "NV43"); - break; - case NV45: - sprintf(adi->chipset, "NV45"); + case VT7205: + sprintf(adi->chipset, "KM400 Unichrome (VT7205)"); break; default: sprintf(adi->chipset, "unknown"); diff --git a/src/add-ons/accelerants/via/engine/dac.c b/src/add-ons/accelerants/via/engine/dac.c index e3a380f98a..2dd47e954a 100644 --- a/src/add-ons/accelerants/via/engine/dac.c +++ b/src/add-ons/accelerants/via/engine/dac.c @@ -1,6 +1,6 @@ /* program the DAC */ /* Author: - Rudolf Cornelissen 12/2003-7/2005 + Rudolf Cornelissen 12/2003-1/2016 */ #define MODULE_BIT 0x00010000 @@ -9,6 +9,8 @@ static status_t cle266_km400_dac_pix_pll_find( display_mode target,float * calc_pclk,uint8 * m_result,uint8 * n_result,uint8 * p_result, uint8 test); +static status_t k8m800_dac_pix_pll_find( + display_mode target,float * calc_pclk,uint8 * m_result,uint8 * n_result,uint8 * p_result, uint8 test); /* see if an analog VGA monitor is connected to connector #1 */ bool eng_dac_crt_connected(void) @@ -195,9 +197,9 @@ status_t eng_dac_set_pix_pll(display_mode target) else { /* fixme: preliminary, still needs to be confirmed */ - SEQW(PPLL_N_OTH, (n & 0x7f)); - SEQW(PPLL_M_OTH, (m & 0x3f)); - SEQW(PPLL_P_OTH, (p & 0x03)); + SEQW(PPLL_N_OTH, (n & 0xff)); + SEQW(PPLL_M_OTH, (m & 0x1f)); + SEQW(PPLL_P_OTH, (p & 0x03) << 2); } /* reset primary pixelPLL (playing it safe) */ @@ -237,8 +239,11 @@ status_t eng_dac_pix_pll_find (display_mode target,float * calc_pclk,uint8 * m_result,uint8 * n_result,uint8 * p_result, uint8 test) { //fixme: add K8M800 calcs if needed.. - switch (si->ps.card_type) { - default: return cle266_km400_dac_pix_pll_find(target, calc_pclk, m_result, n_result, p_result, test); + switch (si->ps.card_arch) { + case K8M800: + return k8m800_dac_pix_pll_find(target, calc_pclk, m_result, n_result, p_result, test); + default: + return cle266_km400_dac_pix_pll_find(target, calc_pclk, m_result, n_result, p_result, test); } return B_ERROR; } @@ -390,6 +395,155 @@ static status_t cle266_km400_dac_pix_pll_find( return B_OK; } +/* find nearest valid pixel PLL setting */ +static status_t k8m800_dac_pix_pll_find( + display_mode target,float * calc_pclk,uint8 * m_result,uint8 * n_result,uint8 * p_result, uint8 test) +{ + int m = 0, n = 0, p = 0/*, m_max*/; + float error, error_best = 999999999; + int best[3]; + float f_vco, max_pclk; + float req_pclk = target.timing.pixel_clock/1000.0; + + /* determine the max. reference-frequency postscaler setting for the + * current card (see G100, G200 and G400 specs). */ +/* switch(si->ps.card_type) + { + case G100: + LOG(4,("DAC: G100 restrictions apply\n")); + m_max = 7; + break; + case G200: + LOG(4,("DAC: G200 restrictions apply\n")); + m_max = 7; + break; + default: + LOG(4,("DAC: G400/G400MAX restrictions apply\n")); + m_max = 32; + break; + } +*/ + LOG(4,("DAC: K8M800 restrictions apply\n")); + + /* determine the max. pixelclock for the current videomode */ + switch (target.space) + { + case B_CMAP8: + max_pclk = si->ps.max_dac1_clock_8; + break; + case B_RGB15_LITTLE: + case B_RGB16_LITTLE: + max_pclk = si->ps.max_dac1_clock_16; + break; + case B_RGB24_LITTLE: + max_pclk = si->ps.max_dac1_clock_24; + break; + case B_RGB32_LITTLE: + max_pclk = si->ps.max_dac1_clock_32; + break; + default: + /* use fail-safe value */ + max_pclk = si->ps.max_dac1_clock_32; + break; + } + /* if some dualhead mode is active, an extra restriction might apply */ + if ((target.flags & DUALHEAD_BITS) && (target.space == B_RGB32_LITTLE)) + max_pclk = si->ps.max_dac1_clock_32dh; + + /* Make sure the requested pixelclock is within the PLL's operational limits */ + /* lower limit is min_pixel_vco divided by highest postscaler-factor */ + if (req_pclk < (si->ps.min_pixel_vco / 8.0)) + { + LOG(4,("DAC: clamping pixclock: requested %fMHz, set to %fMHz\n", + req_pclk, (float)(si->ps.min_pixel_vco / 8.0))); + req_pclk = (si->ps.min_pixel_vco / 8.0); + } + /* upper limit is given by pins in combination with current active mode */ + if (req_pclk > max_pclk) + { + LOG(4,("DAC: clamping pixclock: requested %fMHz, set to %fMHz\n", + req_pclk, (float)max_pclk)); + req_pclk = max_pclk; + } + + /* iterate through all valid PLL postscaler settings */ + for (p = 0x01; p < 0x10; p = p << 1) + { + /* calculate the needed VCO frequency for this postscaler setting */ + f_vco = req_pclk * p; + + /* check if this is within range of the VCO specs */ + if ((f_vco >= si->ps.min_pixel_vco) && (f_vco <= si->ps.max_pixel_vco)) + { + /* iterate trough all valid reference-frequency postscaler settings */ + /* (checked agains xf86 unichrome driver) */ + //fixme: 32 and 33 probably ok as well.. + for (m = 2; m <= 31; m++) + { + /* check if phase-discriminator will be within operational limits */ + //fixme: check specs, settings as is now seems safe btw.. + if (((si->ps.f_ref / m) < 2.0) || ((si->ps.f_ref / m) > 3.6)) continue; + + /* calculate VCO postscaler setting for current setup.. */ + n = (int)(((f_vco * m) / si->ps.f_ref) + 0.5); + + /* ..and check for validity */ + /* (checked agains xf86 unichrome driver) */ + if ((n < 2) || (n > 257)) continue; + + /* find error in frequency this setting gives */ + error = fabs(req_pclk - (((si->ps.f_ref / m) * n) / p)); + + /* note the setting if best yet */ + if (error < error_best) + { + error_best = error; + best[0]=m; + best[1]=n; + best[2]=p; + } + } + } + } + + /* setup the scalers programming values for found optimum setting */ + m = best[0]; + n = best[1]; + p = best[2]; + + /* log the VCO frequency found */ + f_vco = ((si->ps.f_ref / m) * n); + + LOG(2,("DAC: pix VCO frequency found %fMhz\n", f_vco)); + + /* return the results */ + *calc_pclk = (f_vco / p); + *m_result = m - 2; + *n_result = n - 2; + switch(p) + { + case 1: + p = 0x00; + break; + case 2: + p = 0x01; + break; + case 4: + p = 0x02; + break; + case 8: + p = 0x03; + break; + } + *p_result = p; + + /* display the found pixelclock values */ + LOG(2,("DAC: pix PLL check: requested %fMHz got %fMHz, mnp 0x%02x 0x%02x 0x%02x\n", + req_pclk, *calc_pclk, *m_result, *n_result, *p_result)); + + return B_OK; +} + /* find nearest valid system PLL setting */ status_t eng_dac_sys_pll_find( float req_sclk, float* calc_sclk, uint8* m_result, uint8* n_result, uint8* p_result, uint8 test) diff --git a/src/add-ons/accelerants/via/engine/general.c b/src/add-ons/accelerants/via/engine/general.c index e79c6fd9b6..e2f42a4663 100644 --- a/src/add-ons/accelerants/via/engine/general.c +++ b/src/add-ons/accelerants/via/engine/general.c @@ -1,7 +1,7 @@ /* Authors: Mark Watson 12/1999, Apsed, - Rudolf Cornelissen 10/2002-4/2006 + Rudolf Cornelissen 10/2002-1/2016 */ #define MODULE_BIT 0x00008000 @@ -90,7 +90,7 @@ status_t eng_general_powerup() { status_t status; - LOG(1,("POWERUP: Haiku VIA Accelerant 0.16 running.\n")); + LOG(1,("POWERUP: Haiku VIA Accelerant 0.17 running.\n")); /* preset no laptop */ si->ps.laptop = false; @@ -100,22 +100,21 @@ status_t eng_general_powerup() { /* Vendor Via */ case 0x30221106: - si->ps.card_type = CLE3022; + si->ps.card_type = VT3022; si->ps.card_arch = CLE266; - LOG(4,("POWERUP: Detected VIA CLE266 Unichrome Pro (CLE3022)\n")); + LOG(4,("POWERUP: Detected VIA CLE266 Unichrome Pro (VT3022)\n")); status = engxx_general_powerup(); break; case 0x31081106: - //fixme: card_type unknown.. - si->ps.card_type = VT3204; + si->ps.card_type = VT3108; si->ps.card_arch = K8M800; - LOG(4,("POWERUP: Detected VIA K8M800 Unichrome Pro (unknown chiptype)\n")); + LOG(4,("POWERUP: Detected VIA K8M800 Unichrome Pro (VT3108)\n")); status = engxx_general_powerup(); break; case 0x31221106: - si->ps.card_type = CLE3122; + si->ps.card_type = VT3122; si->ps.card_arch = CLE266; - LOG(4,("POWERUP: Detected VIA CLE266 Unichrome Pro (CLE3122)\n")); + LOG(4,("POWERUP: Detected VIA CLE266 Unichrome Pro (VT3122)\n")); status = engxx_general_powerup(); break; case 0x32051106: diff --git a/src/add-ons/kernel/drivers/graphics/via/README.html b/src/add-ons/kernel/drivers/graphics/via/README.html index 99bc981395..f25dd30b09 100644 --- a/src/add-ons/kernel/drivers/graphics/via/README.html +++ b/src/add-ons/kernel/drivers/graphics/via/README.html @@ -14,10 +14,9 @@ You use this software at your own risk! Although I don't expect it to damage you
      • KM400 Unichrome (VT3205)
      • KM400 Unichrome (VT7205) -
      • CLE266 Unichrome Pro (CLE3022) -
      • CLE266 Unichrome Pro (CLE3122) -
      • K8M800 Unichrome Pro (VT3204) -
      • K8M800 Unichrome Pro (VT7204) +
      • CLE266 Unichrome Pro (VT3022) +
      • CLE266 Unichrome Pro (VT3122) +
      • K8M800 Unichrome Pro (VT3108)


      @@ -39,8 +38,8 @@ You use this software at your own risk! Although I don't expect it to damage you

      Installation:


      -In contrary to what I have said before you don't need to de-install official Be drivers for this driver to work correctly. This driver will install in the user part of the BeOS, so not in the system part where the official drivers are.
      -BeOS first checks (during boot) if there are 'user-addons' that should be loaded for a device. If not, it loads it's own drivers (if any). You can select which driver should be loaded by hitting the spacebar as soon as the BeOS 'icons' screen appears. If you select disable user addons the system will load it's own drivers. If you don't do anything, the system will load the Haiku VIA unichrome (pro) graphics driver.
      +You don't need to de-install official drivers for this driver to work correctly. This driver will install in the user part of Haiku, so not in the system part where the official drivers are.
      +Haiku first checks (during boot) if there are 'user-addons' that should be loaded for a device. If not, it loads it's own drivers (if any). You can select which driver should be loaded by hitting the spacebar just before the Haiku 'icons' screen appears. If you select disable user addons the system will load it's own drivers. If you don't do anything, the system will load the Haiku VIA unichrome (pro) graphics driver.

      Note: This might turn out to be handy if you run into trouble upon testing the driver, or if you are 'tweaking' the via.settings file...


      @@ -58,10 +57,10 @@ Unzip the zip file that contains the driver to the root folder. Now reboot and y
      Currently there's no uninstall script included. Just do it manually:

      -Delete the via.accelerant file in home/config/add-ons/accelerants/
      -Delete the via.driver file in home/config/add-ons/kernel/drivers/bin/
      +Delete the via.accelerant file in home/config/non-packaged/add-ons/accelerants/
      +Delete the via.driver file in home/config/non-packaged/add-ons/kernel/drivers/bin/
      Delete the via.settings file in home/config/settings/kernel/drivers/
      -Delete the via.driver shortcut in home/config/add-ons/kernel/drivers/dev/graphics/ which pointed to the file via.driver.
      +Delete the via.driver shortcut in home/config/non-packaged/add-ons/kernel/drivers/dev/graphics/ which pointed to the file via.driver.

      You have to reboot in order to apply the original configuration.

      @@ -155,7 +154,7 @@ With the pgm_panel true setting, the driver will fix your panel

      -Rudolf Cornelissen. -

      (Page last updated on September 29, 2005)

      +Rudolf Cornelissen.
      +

      (Page last updated on January 13, 2016)

      diff --git a/src/add-ons/kernel/drivers/graphics/via/UPDATE.html b/src/add-ons/kernel/drivers/graphics/via/UPDATE.html index 0232010349..5618356548 100644 --- a/src/add-ons/kernel/drivers/graphics/via/UPDATE.html +++ b/src/add-ons/kernel/drivers/graphics/via/UPDATE.html @@ -4,7 +4,7 @@

      Changes done for each driverversion:

      -

      via_driver (SVN 0.16, Rudolf)

      +

      via_driver (Haiku repository 0.17, Rudolf)

      • Initial setup based on nVidia driver 0.30;
      • Kerneldriver uses MTR-WC mapping where available; @@ -20,7 +20,9 @@
      • Added primary head pixelPLL programming (refreshrate is now set);
      • Added switch to 'enhanced mode' making the driver independant from a preset VESA mode;
      • Added video overlay support; -
      • Finalized virtualscreen panning granularity constraints programming. +
      • Finalized virtualscreen panning granularity constraints programming; +
      • Added returning correct information in GET_ACCELERANT_DEVICE_INFO (displayed in Haiku screenprefs panel); +
      • Fixed wrong PLL registerdefines for K8M800 and added seperate pixelPLL calculation routine: K8M800 now works correctly whereas previously you'd have a black screen (tested different resolutions, refreshrates and colordepths).

      Still todo:

        @@ -31,6 +33,6 @@


        Rudolf Cornelissen. -

        (Page last updated on September 29, 2005)

        +

        (Page last updated on January 13, 2016)

        From 63df190c0ed7e385a17b31e500c253e95c187081 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Date: Wed, 13 Jan 2016 02:44:16 +0100 Subject: [PATCH 139/242] Add giflib6 package for x86_gcc2. * It should provide what's needed by libwebp on this architecture. --- build/jam/repositories/HaikuPorts/x86_gcc2 | 3 +++ 1 file changed, 3 insertions(+) diff --git a/build/jam/repositories/HaikuPorts/x86_gcc2 b/build/jam/repositories/HaikuPorts/x86_gcc2 index 41ab7170f0..38ee7fd702 100644 --- a/build/jam/repositories/HaikuPorts/x86_gcc2 +++ b/build/jam/repositories/HaikuPorts/x86_gcc2 @@ -148,6 +148,8 @@ RemotePackageRepository HaikuPorts giddy3-1.4-1 giflib-5.1.2-1 giflib_devel-5.1.2-1 + giflib6-5.0.5-2 + giflib6_devel-5.0.5-2 git-2.7.0-2 git_arch-2.7.0-2 git_cvs-2.7.0-2 @@ -1075,6 +1077,7 @@ RemotePackageRepository HaikuPorts gdb gdk_pixbuf_x86 giflib + giflib6 git glew glib2 From 56af4c7c2be3431c7721de1de5452383950e2cb2 Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Wed, 13 Jan 2016 10:14:03 -0500 Subject: [PATCH 140/242] BShelf: Use strcmp(). --- src/kits/interface/Shelf.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/kits/interface/Shelf.cpp b/src/kits/interface/Shelf.cpp index f7fba55fbc..5aa9671268 100644 --- a/src/kits/interface/Shelf.cpp +++ b/src/kits/interface/Shelf.cpp @@ -1500,7 +1500,7 @@ BShelf::_GetProperty(BMessage *msg, BMessage *reply) ReplicantAt(i, &view, &ID, &err); if (err != B_OK || view == NULL) continue; - if (BString(view->Name()) == name) { + if (view->Name() != NULL && strcmp(view->Name(), name) == 0) { replicant = view; break; } From cf78be3fd1510b675be82e4f19e1930d865ffc29 Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Wed, 13 Jan 2016 16:02:59 -0500 Subject: [PATCH 141/242] TouchpadPrefView: Remove debugging message from destructor. --- src/preferences/touchpad/TouchpadPrefView.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/preferences/touchpad/TouchpadPrefView.cpp b/src/preferences/touchpad/TouchpadPrefView.cpp index 5ebe979746..be40878437 100644 --- a/src/preferences/touchpad/TouchpadPrefView.cpp +++ b/src/preferences/touchpad/TouchpadPrefView.cpp @@ -60,7 +60,6 @@ TouchpadView::TouchpadView(BRect frame) TouchpadView::~TouchpadView() { -puts("GONE!"); delete fOffScreenBitmap; } From 0ccd1db15c42a5d38d1609be2668f87fc6f5f2c6 Mon Sep 17 00:00:00 2001 From: Julian Harnath Date: Wed, 13 Jan 2016 23:50:31 +0100 Subject: [PATCH 142/242] app_server: fix lines which are pixel dots, in layers * Painter::StrokeLine() has an optimization for lines which are single pixel dots, i.e. identical start and end point and pen size 1: it sets the pixel directly in the buffer, completely bypassing the AGG base renderer. This is a problem when inside a layer since this also bypasses the low-level offset in the base renderer (which moves drawing coordinates into the layer bitmap), causing an out-of-bounds access. * Fixes #12587 --- src/servers/app/drawing/Painter/Painter.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/servers/app/drawing/Painter/Painter.cpp b/src/servers/app/drawing/Painter/Painter.cpp index e382b8dfd4..845e7e3e91 100644 --- a/src/servers/app/drawing/Painter/Painter.cpp +++ b/src/servers/app/drawing/Painter/Painter.cpp @@ -510,7 +510,10 @@ Painter::StrokeLine(BPoint a, BPoint b) // special case dots if (fPenSize == 1.0 && !fSubpixelPrecise && fIdentityTransform) { if (fClippingRegion->Contains(a)) { - fPixelFormat.blend_pixel((int)a.x, (int)a.y, fRenderer.color(), + int dotX = (int)a.x; + int dotY = (int)a.y; + fBaseRenderer.translate_to_base_ren(dotX, dotY); + fPixelFormat.blend_pixel(dotX, dotY, fRenderer.color(), 255); } } else { From 85ff70f435afdc62f95f46e6502ee0b59f8b293c Mon Sep 17 00:00:00 2001 From: Automatic Committer Date: Thu, 14 Jan 2016 05:20:26 +0100 Subject: [PATCH 143/242] Update pci.ids from pciids.sourceforge.net --- src/data/ids/pci.ids | 68 ++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 63 insertions(+), 5 deletions(-) diff --git a/src/data/ids/pci.ids b/src/data/ids/pci.ids index 26eda0bb1f..f6715dd743 100644 --- a/src/data/ids/pci.ids +++ b/src/data/ids/pci.ids @@ -1,8 +1,8 @@ # # List of PCI ID's # -# Version: 2016.01.02 -# Date: 2016-01-02 03:15:02 +# Version: 2016.01.10 +# Date: 2016-01-10 03:15:01 # # Maintained by Albert Pool, Martin Mares, and other volunteers from # the PCI ID Project at http://pci-ids.ucw.cz/. @@ -2780,10 +2780,12 @@ 6929 Tonga XT GL [FirePro S7150] 692b Tonga PRO GL [FirePro W7100] 692f Tonga XTV GL [FirePro S7150V] - 6938 Amethyst XT [Radeon R9 M295X Mac Edition / R9 380X] + 6938 Tonga XT / Amethyst XT [Radeon R9 380X / R9 M295X Mac Edition] + 174b e308 Radeon R9 380X Nitro 4G D5 6939 Tonga PRO [Radeon R9 285/380] 148c 9380 Radeon R9 380 - 174b e308 NITRO Radeon R9 380 4G D5 +# Make naming scheme consistent + 174b e308 Radeon R9 380 Nitro 4G D5 700f RS100 AGP Bridge 7010 RS200/RS250 AGP Bridge 7100 R520 [Radeon X1800 XT] @@ -3670,7 +3672,7 @@ 1014 049a PCIe3 x16 SAS RAID Internal Adapter 6Gb (57EE) 1014 04c7 PCIe3 x 8 Cache SAS RAID Internal Adapter 6GB(2CCA) 1014 04c8 PCIe3 x 8 Cache SAS RAID Internal Adapter 6GB(2CD2) - 1014 0c49 PCIe3 x 8 Cache SAS RAID Internal Adapter 6GB(2CCD) + 1014 04c9 PCIe3 x 8 Cache SAS RAID Internal Adapter 6GB(2CCD) 044b GenWQE Accelerator Adapter 04aa Flash Adapter 90 (PCIe2 0.9TB) 04da PCI-E IPR SAS+ Adapter (ASIC) @@ -6095,6 +6097,7 @@ 1093 National Instruments 0160 PCI-DIO-96 0162 PCI-MIO-16XE-50 + 0fe1 PXI-8320 1150 PCI-6533 (PCI-DIO-32HS) 1170 PCI-MIO-16XE-10 1180 PCI-MIO-16E-1 @@ -6186,7 +6189,10 @@ 7004 PXI-6551 700b PXI-5421 700c PCI-5421 + 701a VXIpc-87xB + 701b VXIpc-770 7023 PXI-2593 + 7027 PCI-MXI-2 Universal 702c PXI-7831R 702d PCI-7831R 702e PXI-7811R @@ -6455,6 +6461,7 @@ 731d PXI-2536 7322 PXIe-6124 7327 PXI-6529 + 732c VXI-8360T 7331 PXIe-5602 7332 PXIe-5601 7333 PXI-5900 @@ -6594,6 +6601,7 @@ 75e5 PXI-6683 75e6 PXI-6683H 75ef PXIe-5632 + 761c VXI-8360LT 761f PXI-2540 7620 PXIe-2540 7621 PXI-2541 @@ -6624,6 +6632,7 @@ 76a3 PXIe-6535B 76a4 PXIe-6536B 76a5 PXIe-6537B + 783e PXI-8368 9020 PXI-2501 9030 PXI-2503 9040 PXI-2527 @@ -6633,6 +6642,7 @@ 9080 PXI-2580 9090 PCI-4021 90a0 PXI-4021 + a001 PCI-MXI-2 b001 PCI-1408 b011 PXI-1408 b021 PCI-1424 @@ -6722,7 +6732,9 @@ 1093 762b PXIe-4138 1093 762c PXIe-4144 1093 762d PXIe-4145 + 1093 762e PXIe-5606 1093 7644 PXIe-4841 + 1093 764a PCIe-8237R-S 1093 7658 PXIe-5162 (4CH) 1093 76ab PXIe-4322 1093 76ad PXIe-4112 @@ -6730,14 +6742,25 @@ 1093 76b5 PXIe-7971R 1093 76b6 PXIe-7972R 1093 76b7 PXIe-7975R + 1093 76b8 PXIe-5696 + 1093 76b9 PXIe-5654 1093 76c8 PXIe-6614 1093 76c9 PXIe-6612 1093 76cb PXIe-5646R 1093 76cc PXIe-5162 (2CH) + 1093 76ce CVS-1459 1093 76d0 PXIe-5160 (2CH) 1093 76d1 PXIe-5160 (4CH) 1093 76dc PXIe-4610 + 1093 76ec PXIe-2524 + 1093 76ed PXIe-2525 + 1093 76ee PXIe-2526 + 1093 76ef PXIe-2737 + 1093 76f0 PXIe-2738 + 1093 76f1 PXIe-2739 1093 76fb PCIe-1473R-LX110 + 1093 76fc PXIe-5105 + 1093 76fd PXIe-5114 1093 76fe PXIe-5644R 1093 76ff PXIe-5644R 1093 7700 PXIe-5644R @@ -6746,24 +6769,49 @@ 1093 7703 PXIe-5645R 1093 770c PXIe-4139 1093 7711 PXIe-4464 + 1093 7712 PXIe-4463 1093 7716 PCIe-6612 + 1093 771d Unconfigured CA4 Switch 1093 771e PXIe-4339 1093 7735 cRIO-9033 + 1093 773e PXIe-5624R 1093 774b cRIO-9031 1093 774d cRIO-9034 1093 7755 cRIO-9030 + 1093 7768 PXIe-2747 + 1093 7769 PXIe-2748 + 1093 776a PXIe-2746 1093 7777 PXIe-7976R 1093 7782 PXIe-5646R 1093 7783 PXIe-5646R 1093 7784 PXIe-5646R + 1093 7790 PXIe-5170R (4CH) + 1093 7791 PXIe-5170R (8CH) + 1093 7793 PXIe-5171R (8CH) 1093 77a5 PXIe-6345 1093 77a6 PXIe-6355 1093 77a7 PXIe-6365 1093 77a8 PXIe-6375 + 1093 77aa CVS-1458 + 1093 77ad IC-3173 1093 77b4 PXIe-7820R 1093 77b5 PXIe-7821R 1093 77b6 PXIe-7822R 1093 77b9 cRIO-9038 + 1093 77ba PXIe-4136 + 1093 77bb PXIe-4137 + 1093 77c0 PXIe-5624R + 1093 77c1 PXIe-5624R + 1093 77c2 PXIe-5624R + 1093 77ca PXIe-6738 + 1093 77cb PXIe-6739 + 1093 77db cRIO-9035 + 1093 77dc cRIO-9036 + 1093 77dd cRIO-9039 + 1093 7802 PXIe-4302 + 1093 7803 PXIe-4303 + 1093 7805 PXIe-4305 + 1093 788e PXIe-4304 c801 PCI-GPIB c811 PCI-GPIB+ c821 PXI-GPIB @@ -6801,6 +6849,13 @@ e251 PXI-8460 (2 ports) e261 PCI-CAN/DS e271 PXI-8462 + f110 VMEpc-650 + f120 VXIpc-650 + fe00 VXIpc-87x + fe41 VXIpc-860 + fe51 VXIpc-74x + fe61 VXIpc-850 + fe70 VXIpc-880 1094 First International Computers [FIC] # nee CMD Technology Inc 1095 Silicon Image, Inc. @@ -7174,6 +7229,7 @@ 8747 PEX 8747 48-Lane, 5-Port PCI Express Gen 3 (8.0 GT/s) Switch # This is the Non-Transparent-Bridge Virtualized Port as presented by the PLX PEX 8732 chip, the physical bridges show up at 10b5:8732 87b0 PEX 8732 32-lane, 8-Port PCI Express Gen 3 (8.0 GT/s) Switch + 1093 7761 PXIe-8830mc 9016 PLX 9016 8-port serial controller 9030 PCI9030 32-bit 33MHz PCI <-> IOBus Bridge 10b5 2695 Hilscher CIF50-PB/DPS Profibus @@ -17464,6 +17520,8 @@ 0209 MT27700 Family [ConnectX-4 Flash Recovery] 020b MT27710 Family [ConnectX-4 Lx Flash Recovery] 020d MT28800 Family [ConnectX-5 Flash Recovery] + 0262 MT27710 [ConnectX-4 Lx Programmable] EN + 0263 MT27710 [ConnectX-4 Lx Programmable Virtual Function] EN 1002 MT25400 Family [ConnectX-2 Virtual Function] 1003 MT27500 Family [ConnectX-3] 103c 1777 InfiniBand FDR/EN 10/40Gb Dual Port 544FLR-QSFP Adapter (Rev Cx) From 7e267cd3b5339e05a97588f125d30f4d87130e64 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Tue, 12 Jan 2016 21:44:22 +0100 Subject: [PATCH 144/242] StyledEdit: Make default window size depend on font size. --- src/apps/stylededit/StyledEditApp.cpp | 52 ++++++++++++++++----------- 1 file changed, 32 insertions(+), 20 deletions(-) diff --git a/src/apps/stylededit/StyledEditApp.cpp b/src/apps/stylededit/StyledEditApp.cpp index 0460af8d18..66b9b46ddf 100644 --- a/src/apps/stylededit/StyledEditApp.cpp +++ b/src/apps/stylededit/StyledEditApp.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2002-2010, Haiku, Inc. All Rights Reserved. + * Copyright 2002-2016, Haiku, Inc. All Rights Reserved. * Distributed under the terms of the MIT License. * * Authors: @@ -32,7 +32,9 @@ using namespace BPrivate; -BRect gWindowRect(7 - 15, 26 - 15, 507, 426); +static BRect sWindowRect(7, 26, 507, 426); +static float sCascadeOffset = 15; +static BPoint sTopLeft = BPoint(7, 26); namespace @@ -42,15 +44,15 @@ namespace { BScreen screen; BRect screenBorder = screen.Frame(); - float left = gWindowRect.left + 15; - if (left + gWindowRect.Width() > screenBorder.right) - left = 7; + float left = sWindowRect.left + sCascadeOffset; + if (left + sWindowRect.Width() > screenBorder.right) + left = sTopLeft.x; - float top = gWindowRect.top + 15; - if (top + gWindowRect.Height() > screenBorder.bottom) - top = 26; + float top = sWindowRect.top + sCascadeOffset; + if (top + sWindowRect.Height() > screenBorder.bottom) + top = sTopLeft.y; - gWindowRect.OffsetTo(BPoint(left, top)); + sWindowRect.OffsetTo(BPoint(left, top)); } @@ -60,19 +62,19 @@ namespace BScreen screen; BRect screenBorder = screen.Frame(); - float left = gWindowRect.left - 15; - if (left < 7) { - left = screenBorder.right - gWindowRect.Width() - 7; - left = left - ((int)left % 15) + 7; + float left = sWindowRect.left - sCascadeOffset; + if (left < sTopLeft.x) { + left = screenBorder.right - sWindowRect.Width() - sTopLeft.x; + left = left - ((int)left % (int)sCascadeOffset) + sTopLeft.x; } - float top = gWindowRect.top - 15; - if (top < 26) { - top = screenBorder.bottom - gWindowRect.Height() - 26; - top = top - ((int)left % 15) + 26; + float top = sWindowRect.top - sCascadeOffset; + if (top < sTopLeft.y) { + top = screenBorder.bottom - sWindowRect.Height() - sTopLeft.y; + top = top - ((int)left % (int)sCascadeOffset) + sTopLeft.y; } - gWindowRect.OffsetTo(BPoint(left, top)); + sWindowRect.OffsetTo(BPoint(left, top)); } } @@ -130,6 +132,16 @@ StyledEditApp::StyledEditApp() fWindowCount = 0; fNextUntitledWindow = 1; fBadArguments = false; + + float factor = be_plain_font->Size() / 12.0f; + sCascadeOffset *= factor; + sTopLeft.x *= factor; + sTopLeft.y *= factor; + sWindowRect.left *= factor; + sWindowRect.top *= factor; + sWindowRect.right *= factor; + sWindowRect.bottom *= factor; + sWindowRect.PrintToStream(); } @@ -171,8 +183,8 @@ StyledEditApp::MessageReceived(BMessage* message) void StyledEditApp::OpenDocument() { + new StyledEditWindow(sWindowRect, fNextUntitledWindow++, fOpenAsEncoding); cascade(); - new StyledEditWindow(gWindowRect, fNextUntitledWindow++, fOpenAsEncoding); fWindowCount++; } @@ -224,8 +236,8 @@ StyledEditApp::OpenDocument(entry_ref* ref, BMessage* message) } } + document = new StyledEditWindow(sWindowRect, ref, fOpenAsEncoding); cascade(); - document = new StyledEditWindow(gWindowRect, ref, fOpenAsEncoding); if (message != NULL) document->PostMessage(message); From 94834e20a884cb892b14d16da372eeba3104c743 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Wed, 13 Jan 2016 21:45:21 +0100 Subject: [PATCH 145/242] E-mail: Use BPathFinder to collect add-ons. --- src/preferences/mail/FilterList.cpp | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/src/preferences/mail/FilterList.cpp b/src/preferences/mail/FilterList.cpp index cba4df06da..b3dea672cf 100644 --- a/src/preferences/mail/FilterList.cpp +++ b/src/preferences/mail/FilterList.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2011-2015, Haiku, Inc. All rights reserved. + * Copyright 2011-2016, Haiku, Inc. All rights reserved. * Copyright 2011, Clemens Zeidler * Distributed under the terms of the MIT License. */ @@ -11,7 +11,7 @@ #include #include -#include +#include #include @@ -35,19 +35,14 @@ FilterList::Reload() std::set knownNames; - directory_which which[] = {B_USER_ADDONS_DIRECTORY, - B_SYSTEM_ADDONS_DIRECTORY}; - for (size_t i = 0; i < sizeof(which) / sizeof(which[0]); i++) { - BPath path; - status_t status = find_directory(which[i], &path); - if (status != B_OK) - continue; + BString subPath("mail_daemon/"); + subPath << (fDirection == kIncoming + ? "inbound_filters" : "outbound_filters"); - path.Append("mail_daemon"); - if (fDirection == kIncoming) - path.Append("inbound_filters"); - else - path.Append("outbound_filters"); + BStringList paths; + BPathFinder().FindPaths(B_FIND_PATH_ADD_ONS_DIRECTORY, subPath, paths); + for (int32 i = 0; i < paths.CountStrings(); i++) { + BPath path(paths.StringAt(i)); BDirectory dir(path.Path()); if (dir.InitCheck() != B_OK) From ecd3b5d5f113401d9ca27a54a44a583c555cd8fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Wed, 13 Jan 2016 22:21:34 +0100 Subject: [PATCH 146/242] E-mail: Fixed view deletion order. * The FiltersConfigView now ensures that its current filter is deleted before itself, as the filter's add-in would already be unloaded at that point. * This fixes crashing when leaving the filter config view. --- src/preferences/mail/FilterConfigView.cpp | 32 ++++++++++++++--------- src/preferences/mail/FilterConfigView.h | 6 ++--- 2 files changed, 22 insertions(+), 16 deletions(-) diff --git a/src/preferences/mail/FilterConfigView.cpp b/src/preferences/mail/FilterConfigView.cpp index dce75cdab6..2d46068587 100644 --- a/src/preferences/mail/FilterConfigView.cpp +++ b/src/preferences/mail/FilterConfigView.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2007-2015, Haiku, Inc. All rights reserved. + * Copyright 2007-2016, Haiku, Inc. All rights reserved. * Copyright 2001-2002 Dr. Zoidberg Enterprises. All rights reserved. * Copyright 2011, Clemens Zeidler * Distributed under the terms of the MIT License. @@ -211,7 +211,7 @@ private: FiltersConfigView::FiltersConfigView(BMailAccountSettings& account) : - BBox("filters"), + BGroupView(B_VERTICAL), fAccount(account), fDirection(kIncoming), fInboundFilters(kIncoming), @@ -219,8 +219,11 @@ FiltersConfigView::FiltersConfigView(BMailAccountSettings& account) fFilterView(NULL), fCurrentIndex(-1) { + BBox* box = new BBox("filters"); + AddChild(box); + BView* contents = new BView(NULL, 0); - AddChild(contents); + box->AddChild(contents); BMessage* msg = new BMessage(kMsgChainSelected); msg->AddInt32("direction", kIncoming); @@ -236,7 +239,7 @@ FiltersConfigView::FiltersConfigView(BMailAccountSettings& account) fChainsField = new BMenuField(NULL, NULL, menu); fChainsField->ResizeToPreferred(); - SetLabel(fChainsField); + box->SetLabel(fChainsField); fListView = new DragListView(NULL, B_SINGLE_SELECTION_LIST, new BMessage(kMsgFilterMoved)); @@ -264,18 +267,23 @@ FiltersConfigView::FiltersConfigView(BMailAccountSettings& account) FiltersConfigView::~FiltersConfigView() { + // We need to remove the filter manually, as their add-on + // is not available anymore in the parent destructor. + if (fFilterView != NULL) { + RemoveChild(fFilterView); + delete fFilterView; + } } void FiltersConfigView::_SelectFilter(int32 index) { - if (Parent()) - Parent()->Hide(); + Hide(); // remove old config view - if (fFilterView) { - Parent()->RemoveChild(fFilterView); + if (fFilterView != NULL) { + RemoveChild(fFilterView); _SaveConfig(fCurrentIndex); delete fFilterView; fFilterView = NULL; @@ -293,15 +301,13 @@ FiltersConfigView::_SelectFilter(int32 index) fFilterView = new FilterSettingsView( filters->DescriptiveName(filterSettings->AddOnRef(), fAccount, NULL), view); - Parent()->AddChild(fFilterView); + AddChild(fFilterView); } } } fCurrentIndex = index; - - if (Parent()) - Parent()->Show(); + Show(); } @@ -433,7 +439,7 @@ FiltersConfigView::MessageReceived(BMessage *msg) if (!_MailSettings()->MoveFilterSettings(from, to)) { BAlert* alert = new BAlert("E-mail", B_TRANSLATE("The filter could not be moved. Deleting " - "filter."), B_TRANSLATE("OK")); + "filter."), B_TRANSLATE("OK")); alert->SetFlags(alert->Flags() | B_CLOSE_ON_ESCAPE); alert->Go(); fListView->RemoveItem(to); diff --git a/src/preferences/mail/FilterConfigView.h b/src/preferences/mail/FilterConfigView.h index 5c31e8c5c1..9dad80a652 100644 --- a/src/preferences/mail/FilterConfigView.h +++ b/src/preferences/mail/FilterConfigView.h @@ -1,5 +1,5 @@ /* - * Copyright 2007-2012, Haiku, Inc. All rights reserved. + * Copyright 2007-2016, Haiku, Inc. All rights reserved. * Copyright 2001-2002 Dr. Zoidberg Enterprises. All rights reserved. * Copyright 2011, Clemens Zeidler * Distributed under the terms of the MIT License. @@ -10,8 +10,8 @@ #include -#include #include +#include #include #include #include @@ -23,7 +23,7 @@ class FilterSettingsView; -class FiltersConfigView : public BBox { +class FiltersConfigView : public BGroupView { public: FiltersConfigView( BMailAccountSettings& account); From 4681e405efa2a920340782b9bb545ba304c2eb5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Wed, 13 Jan 2016 22:24:07 +0100 Subject: [PATCH 147/242] MatchHeader: Fixed crash with action, use tooltips. * When an action was already set, a menu item was being selected before the menu had been created -- must have happened on some refactoring. * Use tooltips rather than fill the header/value text controls with some help texts. --- .../match_header/ConfigView.cpp | 30 ++++++++++--------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/src/add-ons/mail_daemon/inbound_filters/match_header/ConfigView.cpp b/src/add-ons/mail_daemon/inbound_filters/match_header/ConfigView.cpp index 7f3172e442..1d8ba84aaa 100644 --- a/src/add-ons/mail_daemon/inbound_filters/match_header/ConfigView.cpp +++ b/src/add-ons/mail_daemon/inbound_filters/match_header/ConfigView.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2004-2012, Haiku, Inc. All rights reserved. + * Copyright 2004-2016, Haiku, Inc. All rights reserved. * Copyright 2001 Dr. Zoidberg Enterprises. All rights reserved. * * Distributed under the terms of the MIT License. @@ -70,13 +70,14 @@ RuleFilterConfig::RuleFilterConfig(const BMailAddOnSettings& addOnSettings) MatchHeaderSettings settings(addOnSettings); fAction = settings.Action(); - fAttributeControl = new BTextControl("attr", B_TRANSLATE("If"), - B_TRANSLATE("header (e.g. Subject)"), NULL); + fAttributeControl = new BTextControl("attr", B_TRANSLATE("If"), NULL, NULL); + fAttributeControl->SetToolTip( + B_TRANSLATE("Header field (e.g. Subject, From, ...)")); fAttributeControl->SetText(settings.Attribute()); - fRegexControl = new BTextControl("regex", B_TRANSLATE("has"), - B_TRANSLATE("value (use REGEX: in front of regular expressions like " - "*spam*)"), NULL); + fRegexControl = new BTextControl("regex", B_TRANSLATE("has"), NULL, NULL); + fRegexControl->SetToolTip(B_TRANSLATE("Wildcard value like \"*spam*\".\n" + "Prefix with \"REGEX:\" in order to use regular expressions.")); fRegexControl->SetText(settings.Expression()); fFileControl = new FileControl("arg", NULL, @@ -108,14 +109,8 @@ RuleFilterConfig::RuleFilterConfig(const BMailAddOnSettings& addOnSettings) item->SetMarked(true); } - fAccountField = new BMenuField("reply", "Foo", fAccountMenu); - if (fAction >= 0) { - BMenuItem* item = fActionMenu->ItemAt(fAction); - if (item != NULL) { - item->SetMarked(true); - MessageReceived(item->Message()); - } - } + fAccountField = new BMenuField("reply", B_TRANSLATE("Account"), + fAccountMenu); // Popuplate action menu @@ -140,6 +135,13 @@ RuleFilterConfig::RuleFilterConfig(const BMailAddOnSettings& addOnSettings) BMenuField* actionField = new BMenuField("action", B_TRANSLATE("Then"), fActionMenu); + if (fAction >= 0) { + BMenuItem* item = fActionMenu->ItemAt(fAction); + if (item != NULL) { + item->SetMarked(true); + MessageReceived(item->Message()); + } + } // Build layout From 618cc43b64d2acb8614c7f49eaadf8028d606539 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Thu, 14 Jan 2016 20:42:48 +0100 Subject: [PATCH 148/242] IMAP: New folders will now adopt default mail attributes. * Added a function CopyMailFolderAttributes() that copies the attribute layout from the text/x-email default query folder. * This using the new CopyAttributes() method in libshared that is pretty much a copy of a similar method from copyattr. However, I did not replace the latter, as that one allows for more fine grained error reporting (and attribute filtering). * Closes ticket #3498. --- headers/private/mail/mail_util.h | 4 +- headers/private/shared/AttributeUtilities.h | 24 +++++++ .../inbound_protocols/imap/IMAPProtocol.cpp | 4 ++ src/kits/mail/Jamfile | 2 +- src/kits/mail/mail_util.cpp | 20 ++++++ src/kits/shared/AttributeUtilities.cpp | 66 +++++++++++++++++++ src/kits/shared/Jamfile | 1 + 7 files changed, 119 insertions(+), 2 deletions(-) create mode 100644 headers/private/shared/AttributeUtilities.h create mode 100644 src/kits/shared/AttributeUtilities.cpp diff --git a/headers/private/mail/mail_util.h b/headers/private/mail/mail_util.h index 021d069636..eafcda9406 100644 --- a/headers/private/mail/mail_util.h +++ b/headers/private/mail/mail_util.h @@ -1,5 +1,5 @@ /* - * Copyright 2011, Haiku, Inc. All rights reserved. + * Copyright 2011-2016, Haiku, Inc. All rights reserved. * Copyright 2001-2003 Dr. Zoidberg Enterprises. All rights reserved. */ #ifndef ZOIDBERG_GARGOYLE_MAIL_UTIL_H @@ -102,5 +102,7 @@ void extract_address_name(BString &address); void get_address_list(BList &list, const char *string, void (*cleanupFunc)(BString &) = NULL); +status_t CopyMailFolderAttributes(const char* targetPath); + #endif /* ZOIDBERG_GARGOYLE_MAIL_UTIL_H */ diff --git a/headers/private/shared/AttributeUtilities.h b/headers/private/shared/AttributeUtilities.h new file mode 100644 index 0000000000..85bb3dc9a1 --- /dev/null +++ b/headers/private/shared/AttributeUtilities.h @@ -0,0 +1,24 @@ +/* + * Copyright 2016 Haiku Inc. All rights reserved. + * Distributed under the terms of the MIT License. + */ +#ifndef ATTRIBUTE_UTILITIES_H +#define ATTRIBUTE_UTILITIES_H + + +#include + + +class BNode; + + +namespace BPrivate { + + +status_t CopyAttributes(BNode& source, BNode& destination); + + +} // namespace BPrivate + + +#endif // ATTRIBUTE_UTILITIES_H diff --git a/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPProtocol.cpp b/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPProtocol.cpp index b25ba73301..8ad0f54f2b 100644 --- a/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPProtocol.cpp +++ b/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPProtocol.cpp @@ -13,6 +13,8 @@ #include "IMAPFolder.h" #include "Utilities.h" +#include + IMAPProtocol::IMAPProtocol(const BMailAccountSettings& settings) : @@ -280,6 +282,8 @@ IMAPProtocol::_CreateFolder(const BString& mailbox, const BString& separator) return NULL; } + CopyMailFolderAttributes(path.Path()); + entry_ref ref; status = get_ref_for_path(path.Path(), &ref); if (status != B_OK) { diff --git a/src/kits/mail/Jamfile b/src/kits/mail/Jamfile index 7eb8a177a4..9d8b93e865 100644 --- a/src/kits/mail/Jamfile +++ b/src/kits/mail/Jamfile @@ -58,7 +58,7 @@ for architectureObject in [ MultiArchSubDirSetup ] { SharedLibrary $(libmail) : $(sources) : - be bnetapi textencoding tracker + be bnetapi textencoding tracker libshared.a [ TargetLibstdc++ ] $(TARGET_NETWORK_LIBS) $(TARGET_SELECT_UNAME_ETC_LIB) diff --git a/src/kits/mail/mail_util.cpp b/src/kits/mail/mail_util.cpp index 8fec8828d4..1ae92c7ac8 100644 --- a/src/kits/mail/mail_util.cpp +++ b/src/kits/mail/mail_util.cpp @@ -14,14 +14,17 @@ #include #include +#include #include #include #include +#include #include #include #include +#include #include #include @@ -1547,3 +1550,20 @@ get_address_list(BList &list, const char *string, } } + +status_t +CopyMailFolderAttributes(const char* targetPath) +{ + BPath path; + status_t status = find_directory(B_USER_SETTINGS_DIRECTORY, &path); + if (status != B_OK) + return status; + + path.Append("Tracker"); + path.Append("DefaultQueryTemplates"); + path.Append("text_x-email"); + + BNode source(path.Path()); + BNode target(targetPath); + return BPrivate::CopyAttributes(source, target); +} diff --git a/src/kits/shared/AttributeUtilities.cpp b/src/kits/shared/AttributeUtilities.cpp new file mode 100644 index 0000000000..76f6f27eb4 --- /dev/null +++ b/src/kits/shared/AttributeUtilities.cpp @@ -0,0 +1,66 @@ +/* + * Copyright 2005-2009, Ingo Weinhold, ingo_weinhold@gmx.de. + * Copyright 2016, Axel Dörfler, axeld@pinc-software.de. + * Distributed under the terms of the MIT License. + */ + + +#include "AttributeUtilities.h" + +#include +#include +#include + + +static const int kCopyBufferSize = 64 * 1024; + // 64 KB + + +namespace BPrivate { + + +status_t +CopyAttributes(BNode& source, BNode& destination) +{ + char attrName[B_ATTR_NAME_LENGTH]; + while (source.GetNextAttrName(attrName) == B_OK) { + // get attr info + attr_info attrInfo; + status_t status = source.GetAttrInfo(attrName, &attrInfo); + if (status != B_OK) + return status; + + // copy the attribute + char buffer[kCopyBufferSize]; + off_t offset = 0; + off_t bytesLeft = attrInfo.size; + + // Go at least once through the loop, so that an empty attribute will be + // created as well + do { + size_t toRead = kCopyBufferSize; + if ((off_t)toRead > bytesLeft) + toRead = bytesLeft; + + // read + ssize_t bytesRead = source.ReadAttr(attrName, attrInfo.type, + offset, buffer, toRead); + if (bytesRead < 0) + return bytesRead; + + // write + ssize_t bytesWritten = destination.WriteAttr(attrName, + attrInfo.type, offset, buffer, bytesRead); + if (bytesWritten < 0) + return bytesWritten; + + bytesLeft -= bytesRead; + offset += bytesRead; + } while (bytesLeft > 0); + } + return B_OK; +} + + +} // namespace BPrivate + diff --git a/src/kits/shared/Jamfile b/src/kits/shared/Jamfile index fed99a5342..a5a2daebb7 100644 --- a/src/kits/shared/Jamfile +++ b/src/kits/shared/Jamfile @@ -29,6 +29,7 @@ for architectureObject in [ MultiArchSubDirSetup ] { StaticLibrary [ MultiArchDefaultGristFiles libshared.a ] : AboutMenuItem.cpp ArgumentVector.cpp + AttributeUtilities.cpp CalendarView.cpp ColorQuantizer.cpp CommandPipe.cpp From aeaf68cf4b1bb8ad055e341a9ee7ba3b7589b02d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Thu, 14 Jan 2016 20:46:38 +0100 Subject: [PATCH 149/242] IMAP: Extra local messages are now deleted. * When a message on the server is deleted, it will now be deleted locally, too. --- .../imap/IMAPConnectionWorker.cpp | 5 ++- .../inbound_protocols/imap/IMAPFolder.cpp | 45 +++++++++++++++++-- .../inbound_protocols/imap/IMAPFolder.h | 9 +++- 3 files changed, 53 insertions(+), 6 deletions(-) diff --git a/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPConnectionWorker.cpp b/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPConnectionWorker.cpp index 76869ac1d2..5f986a84ea 100644 --- a/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPConnectionWorker.cpp +++ b/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPConnectionWorker.cpp @@ -370,8 +370,7 @@ public: fTotalBytes += entries[i].size; fUIDsToFetch.push_back(entries[i].uid); } else { - fFolder->UpdateMessageFlags(entries[i].uid, - entries[i].flags); + fFolder->SyncMessageFlags(entries[i].uid, entries[i].flags); } } @@ -379,6 +378,8 @@ public: fLastIndex = from - 1; if (from == 1) { + fFolder->MessageEntriesFetched(); + if (fUIDsToFetch.size() > 0) { // Add pending command to fetch the message headers WorkerCommand* command = new FetchHeadersCommand(*fFolder, diff --git a/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPFolder.cpp b/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPFolder.cpp index 0ae442d9a7..6d45284304 100644 --- a/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPFolder.cpp +++ b/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPFolder.cpp @@ -178,6 +178,7 @@ IMAPFolder::SetUIDValidity(uint32 uidValidity) if (fUIDValidity == uidValidity) return; + // TODO: delete all mails that have the same UID validity value we had fUIDValidity = uidValidity; BNode node(&fRef); @@ -221,8 +222,11 @@ IMAPFolder::MessageFlags(uint32 uid) } +/*! Synchronizes the message flags/state from the server with the local + one. +*/ void -IMAPFolder::UpdateMessageFlags(uint32 uid, uint32 mailboxFlags) +IMAPFolder::SyncMessageFlags(uint32 uid, uint32 mailboxFlags) { if (uid > LastUID()) return; @@ -233,7 +237,8 @@ IMAPFolder::UpdateMessageFlags(uint32 uid, uint32 mailboxFlags) while (true) { status_t status = GetMessageEntryRef(uid, ref); if (status == B_ENTRY_NOT_FOUND) { - // The message does not exist anymore locally, delete it on the server + // The message does not exist anymore locally, delete it on the + // server // TODO: copy it to the trash directory first! fProtocol.UpdateMessageFlags(*this, uid, IMAP::kDeleted); return; @@ -247,6 +252,7 @@ IMAPFolder::UpdateMessageFlags(uint32 uid, uint32 mailboxFlags) break; } + fSynchronizedUIDsSet.insert(uid); uint32 previousFlags = MessageFlags(uid); uint32 currentFlags = previousFlags; @@ -279,6 +285,21 @@ IMAPFolder::UpdateMessageFlags(uint32 uid, uint32 mailboxFlags) } +void +IMAPFolder::MessageEntriesFetched() +{ + // Delete all local messages that weren't synchronized with the server + UIDToRefMap::const_iterator iterator = fRefMap.begin(); + for (; iterator != fRefMap.end(); iterator++) { + uint32 uid = iterator->first; + if (fSynchronizedUIDsSet.find(uid) == fSynchronizedUIDsSet.end()) + _DeleteLocalMessage(uid); + } + + fSynchronizedUIDsSet.clear(); +} + + /*! Stores the given \a stream into a temporary file using the provided BFile object. A new file will be created, and the \a ref object will point to it. The file will remain open when this method exits without @@ -416,6 +437,9 @@ IMAPFolder::StoringBodyFailed(const entry_ref& ref, uint32 uid, status_t error) void IMAPFolder::DeleteMessage(uint32 uid) { + // TODO: move message to trash (server side) + + _DeleteLocalMessage(uid); } @@ -471,7 +495,6 @@ IMAPFolder::_InitializeFolderState() // _WriteUniqueID(node, uid); // } // - fRefMap.insert(std::make_pair(uid, ref)); } fInitializing = false; @@ -519,6 +542,22 @@ IMAPFolder::_GetMessageEntryRef(uint32 uid, entry_ref& ref) const } +status_t +IMAPFolder::_DeleteLocalMessage(uint32 uid) +{ + entry_ref ref; + status_t status = GetMessageEntryRef(uid, ref); + if (status != B_OK) + return status; + + fRefMap.erase(uid); + fFlagsMap.erase(uid); + + BEntry entry(&ref); + return entry.Remove(); +} + + void IMAPFolder::_IMAPToMailFlags(uint32 flags, BMessage& attributes) { diff --git a/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPFolder.h b/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPFolder.h index 3ffa96e079..f976ca694d 100644 --- a/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPFolder.h +++ b/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPFolder.h @@ -7,6 +7,8 @@ #include +#include + #include #include @@ -69,8 +71,9 @@ public: uint32& uid) const; uint32 MessageFlags(uint32 uid); - void UpdateMessageFlags(uint32 uid, + void SyncMessageFlags(uint32 uid, uint32 mailboxFlags); + void MessageEntriesFetched(); status_t StoreMessage(uint32 fetchFlags, BDataIO& stream, size_t& length, entry_ref& ref, @@ -101,6 +104,7 @@ private: uint32 uid, status_t status); status_t _GetMessageEntryRef(uint32 uid, entry_ref& ref) const; + status_t _DeleteLocalMessage(uint32 uid); void _IMAPToMailFlags(uint32 flags, BMessage& attributes); @@ -130,10 +134,12 @@ private: typedef __gnu_cxx::hash_map UIDToFlagsMap; typedef __gnu_cxx::hash_map UIDToRefMap; typedef __gnu_cxx::hash_map MessengerMap; + typedef __gnu_cxx::hash_set UIDSet; #else typedef std::hash_map UIDToFlagsMap; typedef std::hash_map UIDToRefMap; typedef std::hash_map MessengerMap; + typedef std::hash_set UIDSet; #endif IMAPProtocol& fProtocol; @@ -147,6 +153,7 @@ private: bool fInitializing; UIDToRefMap fRefMap; UIDToFlagsMap fFlagsMap; + UIDSet fSynchronizedUIDsSet; MessengerMap fPendingBodies; }; From 81b134d33c6e8aa1d5fbc893ddd48c104b637bfb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Viktor=20M=C3=BCntzing?= Date: Mon, 11 Jan 2016 20:02:15 +0100 Subject: [PATCH 150/242] intel_extreme: Incorrect paranthesis in overlay --- src/add-ons/accelerants/intel_extreme/overlay.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/add-ons/accelerants/intel_extreme/overlay.cpp b/src/add-ons/accelerants/intel_extreme/overlay.cpp index 2d4f41ef3f..5b6d15122e 100644 --- a/src/add-ons/accelerants/intel_extreme/overlay.cpp +++ b/src/add-ons/accelerants/intel_extreme/overlay.cpp @@ -573,7 +573,7 @@ intel_configure_overlay(overlay_token overlayToken, } if (!gInfo->shared_info->overlay_active - || memcmp(&gInfo->last_overlay_view, view, sizeof(overlay_view) != 0) + || memcmp(&gInfo->last_overlay_view, view, sizeof(overlay_view)) != 0 || memcmp(&gInfo->last_overlay_frame, window, sizeof(overlay_frame)) != 0) { // scaling has changed, program window and scaling factor From cc9a637eb015451679d5880413cf0d90b31c4411 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Viktor=20M=C3=BCntzing?= Date: Mon, 11 Jan 2016 20:16:29 +0100 Subject: [PATCH 151/242] acpi NamespaceDump: "unsigned <= 0" comparison, better check of byte length --- src/add-ons/kernel/bus_managers/acpi/NamespaceDump.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/add-ons/kernel/bus_managers/acpi/NamespaceDump.cpp b/src/add-ons/kernel/bus_managers/acpi/NamespaceDump.cpp index b71ce4893b..f2fb5a1f1d 100644 --- a/src/add-ons/kernel/bus_managers/acpi/NamespaceDump.cpp +++ b/src/add-ons/kernel/bus_managers/acpi/NamespaceDump.cpp @@ -149,11 +149,11 @@ dump_acpi_namespace(acpi_ns_device_info *device, char *root, int indenting) RingBuffer &ringBuffer = *device->buffer; size_t toWrite = strlen(output); - if (toWrite <= 0) + if (toWrite == 0) break; - strlcat(output, "\n", sizeof(output)); - toWrite++; + toWrite = strlcat(output, "\n", sizeof(output)); + if (!ringBuffer.Lock()) break; From 39002b213bffb09b13a3ef1dce0a552cd038f191 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Viktor=20M=C3=BCntzing?= Date: Mon, 11 Jan 2016 20:19:10 +0100 Subject: [PATCH 152/242] radeon CP_setup: Fixed probable copy/paste mistake - No hardware so can't verify myself. --- src/add-ons/kernel/drivers/graphics/radeon/CP_setup.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/add-ons/kernel/drivers/graphics/radeon/CP_setup.c b/src/add-ons/kernel/drivers/graphics/radeon/CP_setup.c index b36d5e725e..0143610442 100644 --- a/src/add-ons/kernel/drivers/graphics/radeon/CP_setup.c +++ b/src/add-ons/kernel/drivers/graphics/radeon/CP_setup.c @@ -700,7 +700,7 @@ void Radeon_SetDynamicClock( device_info *di, int mode) R300_PIXCLK_TRANS_ALWAYS_ONb | R300_PIXCLK_TVO_ALWAYS_ONb | R300_P2G2CLK_ALWAYS_ONb | - R300_P2G2CLK_ALWAYS_ONb | + R300_P2G2CLK_DAC_ALWAYS_ONb | R300_DISP_DAC_PIXCLK_DAC2_BLANK_OFF); Radeon_OUTPLL(regs, asic, RADEON_PIXCLKS_CNTL, tmp); } else { @@ -826,7 +826,7 @@ void Radeon_SetDynamicClock( device_info *di, int mode) tmp = Radeon_INPLL(regs, asic, RADEON_PIXCLKS_CNTL); tmp |= (RADEON_PIX2CLK_ALWAYS_ONb | - RADEON_PIX2CLK_DAC_ALWAYS_ONb | + RADEON_PIX2CLK_DAC_ALWAYS_ONb | RADEON_DISP_TVOUT_PIXCLK_TV_ALWAYS_ONb | R300_DVOCLK_ALWAYS_ONb | RADEON_PIXCLK_BLEND_ALWAYS_ONb | @@ -837,7 +837,7 @@ void Radeon_SetDynamicClock( device_info *di, int mode) R300_PIXCLK_TRANS_ALWAYS_ONb | R300_PIXCLK_TVO_ALWAYS_ONb | R300_P2G2CLK_ALWAYS_ONb | - R300_P2G2CLK_ALWAYS_ONb); + R300_P2G2CLK_DAC_ALWAYS_ONb); Radeon_OUTPLL(regs, asic, RADEON_PIXCLKS_CNTL, tmp); tmp = Radeon_INPLL(regs, asic, RADEON_MCLK_MISC); From e280cbdb93b8abf68384e192d51131b73301039d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Viktor=20M=C3=BCntzing?= Date: Mon, 11 Jan 2016 20:26:12 +0100 Subject: [PATCH 153/242] virtio_net: Obvious mistake in comparison for NULL Signed-off-by: PulkoMandy --- src/add-ons/kernel/drivers/network/virtio/virtio_net.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/add-ons/kernel/drivers/network/virtio/virtio_net.cpp b/src/add-ons/kernel/drivers/network/virtio/virtio_net.cpp index 4a6a66e3a5..0f8c4cc554 100644 --- a/src/add-ons/kernel/drivers/network/virtio/virtio_net.cpp +++ b/src/add-ons/kernel/drivers/network/virtio/virtio_net.cpp @@ -160,7 +160,7 @@ virtio_net_init_device(void* _info, void** _cookie) info->receive_queues = new(std::nothrow) virtio_queue[info->pairs_count]; info->send_queues = new(std::nothrow) virtio_queue[info->pairs_count]; - if (info->receive_queues == NULL || info->receive_queues == NULL) + if (info->receive_queues == NULL || info->send_queues == NULL) return B_NO_MEMORY; for (uint32 i = 0; i < info->pairs_count; i++) { info->receive_queues[i] = virtioQueues[i * 2]; From 2eb5cc49abb30e9c9644642ebafc697b8adf05d7 Mon Sep 17 00:00:00 2001 From: Rene Gollent Date: Thu, 14 Jan 2016 16:38:51 -0500 Subject: [PATCH 154/242] libmail: Fix build on secondary architecture. --- src/kits/mail/Jamfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/kits/mail/Jamfile b/src/kits/mail/Jamfile index 9d8b93e865..1c1fba91e7 100644 --- a/src/kits/mail/Jamfile +++ b/src/kits/mail/Jamfile @@ -58,7 +58,8 @@ for architectureObject in [ MultiArchSubDirSetup ] { SharedLibrary $(libmail) : $(sources) : - be bnetapi textencoding tracker libshared.a + be bnetapi textencoding tracker + [ MultiArchDefaultGristFiles libshared.a ] [ TargetLibstdc++ ] $(TARGET_NETWORK_LIBS) $(TARGET_SELECT_UNAME_ETC_LIB) From 7a3892f439dc8202562dec1b4e684b21c30cc497 Mon Sep 17 00:00:00 2001 From: Rene Gollent Date: Thu, 14 Jan 2016 18:55:33 -0500 Subject: [PATCH 155/242] BWindow: Fix keyboard handling bug. - In the case of certain messages that are dispatched from the app_server with multiple target tokens (i.e. due to an attached view that has a mouse or keyboard event mask set), we need to strip the focus flag from the message before passing it to the non-focus views. Fixes a bug observed via Clipdinger where the aforementioned circumstance would result in all keyboard shortcuts being invoked multiple times. --- src/kits/interface/Window.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/kits/interface/Window.cpp b/src/kits/interface/Window.cpp index 3f71c54422..7a6b203199 100644 --- a/src/kits/interface/Window.cpp +++ b/src/kits/interface/Window.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2015 Haiku, Inc. All rights reserved + * Copyright 2001-2016 Haiku, Inc. All rights reserved * Distributed under the terms of the MIT License. * * Authors: @@ -3446,6 +3446,10 @@ BWindow::_UnpackMessage(unpack_cookie& cookie, BMessage** _message, continue; *_message = new BMessage(*cookie.message); + // the secondary copies of the message should not be treated as focus + // messages, otherwise there will be unintended side effects, i.e. + // keyboard shortcuts getting processed multiple times. + (*_message)->RemoveName("_feed_focus"); *_target = target; cookie.index++; return true; From 8028ede7dbd910746f5f29687d26ebab514ba3aa Mon Sep 17 00:00:00 2001 From: Rene Gollent Date: Fri, 15 Jan 2016 20:55:20 -0500 Subject: [PATCH 156/242] Build: Add architecture rule for libshared.a. - As suggested by Ingo, add libshared.a to the architecture name map. This allows it to be linked by its short name like other frequently used libraries. - Adjust all Jamfiles referencing the lib accordingly. --- build/jam/ArchitectureRules | 2 ++ build/jam/packages/HaikuDevel | 2 +- src/add-ons/disk_systems/bfs/Jamfile | 2 +- src/add-ons/disk_systems/fat/Jamfile | 2 +- src/add-ons/disk_systems/intel/Jamfile | 2 +- src/add-ons/disk_systems/ntfs/Jamfile | 2 +- src/add-ons/input_server/devices/keyboard/Jamfile | 2 +- src/add-ons/input_server/devices/virtualkeyboard/Jamfile | 2 +- .../kernel/file_systems/netfs/authentication_server/Jamfile | 2 +- src/add-ons/kernel/file_systems/netfs/client/Jamfile | 2 +- src/add-ons/kernel/file_systems/netfs/server/Jamfile | 2 +- .../kernel/file_systems/userlandfs/server/fuse/Jamfile | 2 +- src/add-ons/mail_daemon/inbound_protocols/imap/Jamfile | 2 +- src/add-ons/network_settings/ftpd/Jamfile | 2 +- src/add-ons/network_settings/ipv4/Jamfile | 2 +- src/add-ons/network_settings/ipv6/Jamfile | 2 +- src/add-ons/network_settings/sshd/Jamfile | 2 +- src/add-ons/network_settings/telnetd/Jamfile | 2 +- src/add-ons/print/transports/ipp/Jamfile | 2 +- src/add-ons/print/transports/usb_port/Jamfile | 2 +- src/apps/activitymonitor/Jamfile | 2 +- src/apps/debuganalyzer/Jamfile | 2 +- src/apps/debugger/Jamfile | 2 +- src/apps/deskbar/Jamfile | 2 +- src/apps/deskcalc/Jamfile | 2 +- src/apps/diskusage/Jamfile | 2 +- src/apps/drivesetup/Jamfile | 2 +- src/apps/firstbootprompt/Jamfile | 2 +- src/apps/haikudepot/Jamfile | 4 ++-- src/apps/icon-o-matic/Jamfile | 2 +- src/apps/installer/Jamfile | 2 +- src/apps/launchbox/Jamfile | 2 +- src/apps/mail/Jamfile | 2 +- src/apps/mediaplayer/Jamfile | 2 +- src/apps/musiccollection/Jamfile | 2 +- src/apps/networkstatus/Jamfile | 2 +- src/apps/powerstatus/Jamfile | 2 +- src/apps/processcontroller/Jamfile | 2 +- src/apps/showimage/Jamfile | 2 +- src/apps/stylededit/Jamfile | 2 +- src/apps/switcher/Jamfile | 2 +- src/apps/text_search/Jamfile | 2 +- src/apps/webpositive/Jamfile | 3 +-- src/apps/workspaces/Jamfile | 2 +- src/bin/Jamfile | 2 +- src/bin/consoled/Jamfile | 2 +- src/bin/keymap/Jamfile | 2 +- src/bin/pkgman/Jamfile | 2 +- src/kits/interface/Jamfile | 2 +- src/kits/mail/Jamfile | 3 +-- src/kits/network/libnetapi/Jamfile | 5 ++--- src/kits/package/Jamfile | 2 +- src/kits/shared/Jamfile | 2 +- src/kits/tracker/Jamfile | 3 +-- src/preferences/datatranslations/Jamfile | 2 +- src/preferences/keymap/Jamfile | 2 +- src/preferences/locale/Jamfile | 2 +- src/preferences/network/Jamfile | 2 +- src/preferences/time/Jamfile | 2 +- src/preferences/virtualmemory/Jamfile | 2 +- src/servers/app/Jamfile | 2 +- src/servers/debug/Jamfile | 2 +- src/servers/launch/Jamfile | 2 +- src/servers/midi/Jamfile | 2 +- src/servers/net/Jamfile | 2 +- .../add-ons/kernel/file_systems/consistency_check/Jamfile | 4 ++-- src/tests/servers/app/Jamfile | 2 +- src/tests/servers/launch/Jamfile | 2 +- 68 files changed, 72 insertions(+), 74 deletions(-) diff --git a/build/jam/ArchitectureRules b/build/jam/ArchitectureRules index 8167199bc1..1736ab9b84 100644 --- a/build/jam/ArchitectureRules +++ b/build/jam/ArchitectureRules @@ -198,6 +198,8 @@ rule ArchitectureSetup architecture } HAIKU_LIBRARY_NAME_MAP_$(architecture)_localestub = <$(architecture)>liblocalestub.a ; + HAIKU_LIBRARY_NAME_MAP_$(architecture)_shared + = <$(architecture)>libshared.a ; if $(architecture) = $(HAIKU_PACKAGING_ARCHS[1]) { HAIKU_LIBRARY_NAME_MAP_$(architecture)_input_server = input_server ; diff --git a/build/jam/packages/HaikuDevel b/build/jam/packages/HaikuDevel index de160cdb6f..6bdee11149 100644 --- a/build/jam/packages/HaikuDevel +++ b/build/jam/packages/HaikuDevel @@ -39,7 +39,7 @@ for lib in [ HaikuImageGetSystemLibs ] $(developmentLibs) { # static libraries AddFilesToPackage develop lib : libcolumnlistview.a - <$(architecture)>liblocalestub.a libshared.a ; + <$(architecture)>liblocalestub.a <$(architecture)>libshared.a ; # the POSIX error code mapper library AddFilesToPackage develop lib : libposix_error_mapper.a ; diff --git a/src/add-ons/disk_systems/bfs/Jamfile b/src/add-ons/disk_systems/bfs/Jamfile index 4eb777bd54..ab2dc423db 100644 --- a/src/add-ons/disk_systems/bfs/Jamfile +++ b/src/add-ons/disk_systems/bfs/Jamfile @@ -13,7 +13,7 @@ Addon bfs : bfs_disk_system.cpp - : be localestub [ TargetLibsupc++ ] libshared.a + : be localestub [ TargetLibsupc++ ] shared ; DoCatalogs bfs : diff --git a/src/add-ons/disk_systems/fat/Jamfile b/src/add-ons/disk_systems/fat/Jamfile index 11e20a4081..52fc02939c 100644 --- a/src/add-ons/disk_systems/fat/Jamfile +++ b/src/add-ons/disk_systems/fat/Jamfile @@ -11,7 +11,7 @@ Addon fat : FATAddOn.cpp InitializeParameterEditor.cpp - : be localestub [ TargetLibsupc++ ] libshared.a + : be localestub [ TargetLibsupc++ ] shared ; DoCatalogs fat : diff --git a/src/add-ons/disk_systems/intel/Jamfile b/src/add-ons/disk_systems/intel/Jamfile index 097985aaad..deeeaf93d7 100644 --- a/src/add-ons/disk_systems/intel/Jamfile +++ b/src/add-ons/disk_systems/intel/Jamfile @@ -23,7 +23,7 @@ Addon intel : # kernel sources PartitionMap.cpp - : be libshared.a localestub [ TargetLibsupc++ ] + : be shared localestub [ TargetLibsupc++ ] ; DoCatalogs intel : diff --git a/src/add-ons/disk_systems/ntfs/Jamfile b/src/add-ons/disk_systems/ntfs/Jamfile index c6e675abe7..9d48f9c458 100644 --- a/src/add-ons/disk_systems/ntfs/Jamfile +++ b/src/add-ons/disk_systems/ntfs/Jamfile @@ -11,7 +11,7 @@ Addon ntfs : NTFSAddOn.cpp InitializeParameterEditor.cpp - : be localestub [ TargetLibsupc++ ] libshared.a + : be localestub [ TargetLibsupc++ ] shared ; DoCatalogs ntfs : diff --git a/src/add-ons/input_server/devices/keyboard/Jamfile b/src/add-ons/input_server/devices/keyboard/Jamfile index 0fc8cb2893..7823dafa0b 100644 --- a/src/add-ons/input_server/devices/keyboard/Jamfile +++ b/src/add-ons/input_server/devices/keyboard/Jamfile @@ -14,7 +14,7 @@ Addon keyboard : TeamMonitorWindow.cpp TeamListItem.cpp - : input_server be libshared.a localestub [ TargetLibsupc++ ] ; + : input_server be shared localestub [ TargetLibsupc++ ] ; DoCatalogs keyboard : x-vnd.Haiku-KeyboardInputServerDevice diff --git a/src/add-ons/input_server/devices/virtualkeyboard/Jamfile b/src/add-ons/input_server/devices/virtualkeyboard/Jamfile index a11c6da584..74d6b6dd85 100644 --- a/src/add-ons/input_server/devices/virtualkeyboard/Jamfile +++ b/src/add-ons/input_server/devices/virtualkeyboard/Jamfile @@ -14,6 +14,6 @@ Addon virtualkeyboard : VirtualKeyboardInputDevice.cpp VirtualKeyboardWindow.cpp - : be tracker input_server localestub libshared.a $(TARGET_LIBSTDC++) + : be tracker input_server localestub shared $(TARGET_LIBSTDC++) ; diff --git a/src/add-ons/kernel/file_systems/netfs/authentication_server/Jamfile b/src/add-ons/kernel/file_systems/netfs/authentication_server/Jamfile index 1399974491..bf026cbf87 100644 --- a/src/add-ons/kernel/file_systems/netfs/authentication_server/Jamfile +++ b/src/add-ons/kernel/file_systems/netfs/authentication_server/Jamfile @@ -20,6 +20,6 @@ Application authentication_server AuthenticationPanel.cpp AuthenticationServer.cpp Panel.cpp - : be [ TargetLibsupc++ ] libshared.a + : be [ TargetLibsupc++ ] shared : authentication_server.rdef ; diff --git a/src/add-ons/kernel/file_systems/netfs/client/Jamfile b/src/add-ons/kernel/file_systems/netfs/client/Jamfile index 2d97577abe..1cb18415c4 100644 --- a/src/add-ons/kernel/file_systems/netfs/client/Jamfile +++ b/src/add-ons/kernel/file_systems/netfs/client/Jamfile @@ -88,5 +88,5 @@ Addon netfs VolumeManager.cpp : be libuserlandfs_beos_kernel.so - $(TARGET_NETWORK_LIBS) [ TargetLibsupc++ ] libshared.a + $(TARGET_NETWORK_LIBS) [ TargetLibsupc++ ] shared ; diff --git a/src/add-ons/kernel/file_systems/netfs/server/Jamfile b/src/add-ons/kernel/file_systems/netfs/server/Jamfile index 6c9ca6d6f2..5860eb3c62 100644 --- a/src/add-ons/kernel/file_systems/netfs/server/Jamfile +++ b/src/add-ons/kernel/file_systems/netfs/server/Jamfile @@ -84,7 +84,7 @@ Application netfs_server Volume.cpp VolumeManager.cpp : - be $(TARGET_NETWORK_LIBS) [ TargetLibsupc++ ] libshared.a + be $(TARGET_NETWORK_LIBS) [ TargetLibsupc++ ] shared : netfs_server.rdef ; diff --git a/src/add-ons/kernel/file_systems/userlandfs/server/fuse/Jamfile b/src/add-ons/kernel/file_systems/userlandfs/server/fuse/Jamfile index 61badfa7f1..dff868228f 100644 --- a/src/add-ons/kernel/file_systems/userlandfs/server/fuse/Jamfile +++ b/src/add-ons/kernel/file_systems/userlandfs/server/fuse/Jamfile @@ -29,5 +29,5 @@ SharedLibrary libuserlandfs_fuse.so FUSEVolume.cpp : - userlandfs_server libshared.a be [ TargetLibsupc++ ] + userlandfs_server shared be [ TargetLibsupc++ ] ; diff --git a/src/add-ons/mail_daemon/inbound_protocols/imap/Jamfile b/src/add-ons/mail_daemon/inbound_protocols/imap/Jamfile index 1dc3455b5a..68a7c76775 100644 --- a/src/add-ons/mail_daemon/inbound_protocols/imap/Jamfile +++ b/src/add-ons/mail_daemon/inbound_protocols/imap/Jamfile @@ -45,7 +45,7 @@ Addon IMAP $(sources) : be libmail.so localestub $(TARGET_NETWORK_LIBS) libbnetapi.so - libshared.a [ TargetLibsupc++ ] [ TargetLibstdc++ ] + shared [ TargetLibsupc++ ] [ TargetLibstdc++ ] ; SEARCH on [ FGristFiles Commands.cpp Protocol.cpp Response.cpp ] diff --git a/src/add-ons/network_settings/ftpd/Jamfile b/src/add-ons/network_settings/ftpd/Jamfile index c774f59423..cf0cc562cc 100644 --- a/src/add-ons/network_settings/ftpd/Jamfile +++ b/src/add-ons/network_settings/ftpd/Jamfile @@ -9,7 +9,7 @@ AddResources FTPService : FTPService.rdef ; Addon FTPService : FTPServiceAddOn.cpp - : be bnetapi libshared.a Network [ TargetLibsupc++ ] + : be bnetapi shared Network [ TargetLibsupc++ ] [ TargetLibstdc++ ] localestub ; diff --git a/src/add-ons/network_settings/ipv4/Jamfile b/src/add-ons/network_settings/ipv4/Jamfile index e8d9c86433..7a081769b3 100644 --- a/src/add-ons/network_settings/ipv4/Jamfile +++ b/src/add-ons/network_settings/ipv4/Jamfile @@ -9,7 +9,7 @@ AddResources IPv4Interface : IPv4Interface.rdef ; Addon IPv4Interface : IPv4InterfaceAddOn.cpp - : be bnetapi libshared.a Network [ TargetLibsupc++ ] + : be bnetapi shared Network [ TargetLibsupc++ ] [ TargetLibstdc++ ] localestub ; diff --git a/src/add-ons/network_settings/ipv6/Jamfile b/src/add-ons/network_settings/ipv6/Jamfile index 53df2c986b..e97e196e0f 100644 --- a/src/add-ons/network_settings/ipv6/Jamfile +++ b/src/add-ons/network_settings/ipv6/Jamfile @@ -11,7 +11,7 @@ AddResources IPv6Interface : IPv6Interface.rdef ; Addon IPv6Interface : IPv6InterfaceAddOn.cpp - : be bnetapi libshared.a Network [ TargetLibsupc++ ] + : be bnetapi shared Network [ TargetLibsupc++ ] [ TargetLibstdc++ ] localestub ; diff --git a/src/add-ons/network_settings/sshd/Jamfile b/src/add-ons/network_settings/sshd/Jamfile index d0bf64e75a..85d7cefca6 100644 --- a/src/add-ons/network_settings/sshd/Jamfile +++ b/src/add-ons/network_settings/sshd/Jamfile @@ -9,7 +9,7 @@ AddResources SSHService : SSHService.rdef ; Addon SSHService : SSHServiceAddOn.cpp - : be bnetapi libshared.a Network [ TargetLibsupc++ ] + : be bnetapi shared Network [ TargetLibsupc++ ] [ TargetLibstdc++ ] localestub ; diff --git a/src/add-ons/network_settings/telnetd/Jamfile b/src/add-ons/network_settings/telnetd/Jamfile index ffdf578d05..4f37462cac 100644 --- a/src/add-ons/network_settings/telnetd/Jamfile +++ b/src/add-ons/network_settings/telnetd/Jamfile @@ -9,7 +9,7 @@ AddResources TelnetService : TelnetService.rdef ; Addon TelnetService : TelnetServiceAddOn.cpp - : be bnetapi libshared.a Network [ TargetLibsupc++ ] + : be bnetapi shared Network [ TargetLibsupc++ ] [ TargetLibstdc++ ] localestub ; diff --git a/src/add-ons/print/transports/ipp/Jamfile b/src/add-ons/print/transports/ipp/Jamfile index a9013ea6a6..d5e7aecae7 100644 --- a/src/add-ons/print/transports/ipp/Jamfile +++ b/src/add-ons/print/transports/ipp/Jamfile @@ -17,7 +17,7 @@ Addon IPP : Socket.o SocketStream.o DbgMsg.o - : libshared.a be $(TARGET_NETAPI_LIB) $(TARGET_NETWORK_LIBS) [ TargetLibstdc++ ] + : shared be $(TARGET_NETAPI_LIB) $(TARGET_NETWORK_LIBS) [ TargetLibstdc++ ] ; ObjectReferences diff --git a/src/add-ons/print/transports/usb_port/Jamfile b/src/add-ons/print/transports/usb_port/Jamfile index 30008f61e5..f9c80981d4 100644 --- a/src/add-ons/print/transports/usb_port/Jamfile +++ b/src/add-ons/print/transports/usb_port/Jamfile @@ -9,5 +9,5 @@ SEARCH_SOURCE += [ FDirName $(HAIKU_TOP) src kits print ] ; Addon USB\ Port : USBTransport.cpp PrintTransportAddOn.cpp - : libshared.a libdevice.so be [ TargetLibsupc++ ] + : shared libdevice.so be [ TargetLibsupc++ ] ; diff --git a/src/apps/activitymonitor/Jamfile b/src/apps/activitymonitor/Jamfile index 6a3a7d0cea..86ef52c8ff 100644 --- a/src/apps/activitymonitor/Jamfile +++ b/src/apps/activitymonitor/Jamfile @@ -10,7 +10,7 @@ Application ActivityMonitor : SettingsWindow.cpp SystemInfo.cpp SystemInfoHandler.cpp - : be tracker media libbnetapi.so libshared.a [ TargetLibstdc++ ] + : be tracker media libbnetapi.so shared [ TargetLibstdc++ ] $(TARGET_NETWORK_LIBS) localestub : ActivityMonitor.rdef ; diff --git a/src/apps/debuganalyzer/Jamfile b/src/apps/debuganalyzer/Jamfile index 6821468a29..ded6182899 100644 --- a/src/apps/debuganalyzer/Jamfile +++ b/src/apps/debuganalyzer/Jamfile @@ -27,7 +27,7 @@ Application DebugAnalyzer DebugAnalyzer_model_loader.o DebugAnalyzer_util.o - libcolumnlistview.a libshared.a libdebug.so be + libcolumnlistview.a shared libdebug.so be [ TargetLibstdc++ ] : DebugAnalyzer.rdef diff --git a/src/apps/debugger/Jamfile b/src/apps/debugger/Jamfile index 3e9e88618f..cc075c36f6 100644 --- a/src/apps/debugger/Jamfile +++ b/src/apps/debugger/Jamfile @@ -415,7 +415,7 @@ Application Debugger : libudis86.a debug_utils.a libcolumnlistview.a - libshared.a + shared [ TargetLibstdc++ ] be package tracker libbsd.so libdebug.so diff --git a/src/apps/deskbar/Jamfile b/src/apps/deskbar/Jamfile index e290be5e96..5f97856b81 100644 --- a/src/apps/deskbar/Jamfile +++ b/src/apps/deskbar/Jamfile @@ -14,7 +14,7 @@ SubDirC++Flags -DDB_ADDONS local targetLib ; local targetSource ; -targetLib = libshared.a ; +targetLib = shared ; targetSource = CalendarMenuWindow.cpp ; SubDirC++Flags -D_SHOW_CALENDAR_MENU_WINDOW=1 -DMOUNT_MENU_IN_DESKBAR=1 ; diff --git a/src/apps/deskcalc/Jamfile b/src/apps/deskcalc/Jamfile index 5de3aaa52e..851e36c53d 100644 --- a/src/apps/deskcalc/Jamfile +++ b/src/apps/deskcalc/Jamfile @@ -13,7 +13,7 @@ Application DeskCalc : ExpressionTextView.cpp InputTextView.cpp : be [ TargetLibstdc++ ] localestub media libexpression_parser.a - libmapm.a libshared.a + libmapm.a shared : DeskCalc.rdef ; diff --git a/src/apps/diskusage/Jamfile b/src/apps/diskusage/Jamfile index 60402c5f9b..294ec938de 100644 --- a/src/apps/diskusage/Jamfile +++ b/src/apps/diskusage/Jamfile @@ -14,7 +14,7 @@ Application DiskUsage : Snapshot.cpp StatusView.cpp VolumeView.cpp - : be libshared.a localestub [ TargetLibstdc++ ] + : be shared localestub [ TargetLibstdc++ ] : DiskUsage.rdef ; diff --git a/src/apps/drivesetup/Jamfile b/src/apps/drivesetup/Jamfile index 5aff25719f..7343b1dcca 100644 --- a/src/apps/drivesetup/Jamfile +++ b/src/apps/drivesetup/Jamfile @@ -15,7 +15,7 @@ Preference DriveSetup : PartitionList.cpp Support.cpp - : be localestub libcolumnlistview.a libshared.a + : be localestub libcolumnlistview.a shared [ TargetLibsupc++ ] : DriveSetup.rdef ; diff --git a/src/apps/firstbootprompt/Jamfile b/src/apps/firstbootprompt/Jamfile index 9c73a2cf23..615cbe2829 100644 --- a/src/apps/firstbootprompt/Jamfile +++ b/src/apps/firstbootprompt/Jamfile @@ -9,7 +9,7 @@ Application FirstBootPrompt : BootPromptWindow.cpp Keymap.cpp KeymapListItem.cpp - : be translation libshared.a [ TargetLibstdc++ ] localestub + : be translation shared [ TargetLibstdc++ ] localestub : BootPrompt.rdef ; diff --git a/src/apps/haikudepot/Jamfile b/src/apps/haikudepot/Jamfile index 315e8d1574..30cc734b84 100644 --- a/src/apps/haikudepot/Jamfile +++ b/src/apps/haikudepot/Jamfile @@ -81,7 +81,7 @@ Application HaikuDepot : # text view stuff $(textDocumentSources) - : be package bnetapi translation libcolumnlistview.a libshared.a + : be package bnetapi translation libcolumnlistview.a shared [ TargetLibstdc++ ] [ TargetLibsupc++ ] localestub : HaikuDepot.rdef ; @@ -107,5 +107,5 @@ Application TextDocumentTest : TextDocumentTest.cpp $(textDocumentSources) - : be translation libshared.a [ TargetLibsupc++ ] + : be translation shared [ TargetLibsupc++ ] ; diff --git a/src/apps/icon-o-matic/Jamfile b/src/apps/icon-o-matic/Jamfile index 9e91542793..3f5b85e5ce 100644 --- a/src/apps/icon-o-matic/Jamfile +++ b/src/apps/icon-o-matic/Jamfile @@ -298,7 +298,7 @@ Application Icon-O-Matic : MainWindow.cpp Util.cpp - : be tracker translation libshared.a libagg.a + : be tracker translation shared libagg.a [ BuildFeatureAttribute expat : library ] [ TargetLibstdc++ ] localestub diff --git a/src/apps/installer/Jamfile b/src/apps/installer/Jamfile index 71e02303fe..b961a814d7 100644 --- a/src/apps/installer/Jamfile +++ b/src/apps/installer/Jamfile @@ -21,7 +21,7 @@ Application Installer : # From launch_daemon Utility.cpp - : be tracker translation libshared.a [ TargetLibstdc++ ] + : be tracker translation shared [ TargetLibstdc++ ] localestub : Installer.rdef ; diff --git a/src/apps/launchbox/Jamfile b/src/apps/launchbox/Jamfile index 8d03f3e90d..850d9d2bfe 100644 --- a/src/apps/launchbox/Jamfile +++ b/src/apps/launchbox/Jamfile @@ -11,7 +11,7 @@ Application LaunchBox : PadView.cpp Panel.cpp support.cpp - : be translation libshared.a [ TargetLibsupc++ ] localestub + : be translation shared [ TargetLibsupc++ ] localestub : LaunchBox.rdef ; diff --git a/src/apps/mail/Jamfile b/src/apps/mail/Jamfile index 202f9afb9a..9964fe3189 100644 --- a/src/apps/mail/Jamfile +++ b/src/apps/mail/Jamfile @@ -41,7 +41,7 @@ Application Mail : AutoCompleterDefaultImpl.cpp TextViewCompleter.cpp - : libshared.a be tracker [ TargetLibstdc++ ] [ TargetLibsupc++ ] + : shared be tracker [ TargetLibstdc++ ] [ TargetLibsupc++ ] localestub libmail.so libtextencoding.so : Mail.rdef ; diff --git a/src/apps/mediaplayer/Jamfile b/src/apps/mediaplayer/Jamfile index 68d4c329ba..296a860b32 100644 --- a/src/apps/mediaplayer/Jamfile +++ b/src/apps/mediaplayer/Jamfile @@ -114,7 +114,7 @@ Application MediaPlayer : VideoView.cpp : be game media tracker translation textencoding [ TargetLibstdc++ ] - localestub libshared.a + localestub shared : MediaPlayer.rdef ; diff --git a/src/apps/musiccollection/Jamfile b/src/apps/musiccollection/Jamfile index 0960aa0e62..deff5e3f59 100644 --- a/src/apps/musiccollection/Jamfile +++ b/src/apps/musiccollection/Jamfile @@ -13,7 +13,7 @@ Application MusicCollection : NodeMonitorHandler.cpp : be libalm.so localestub [ TargetLibsupc++ ] - [ TargetLibstdc++ ] libshared.a + [ TargetLibstdc++ ] shared : MusicCollection.rdef ; diff --git a/src/apps/networkstatus/Jamfile b/src/apps/networkstatus/Jamfile index 9fb885b05f..992abc4c6a 100644 --- a/src/apps/networkstatus/Jamfile +++ b/src/apps/networkstatus/Jamfile @@ -17,7 +17,7 @@ Application NetworkStatus : RadioView.cpp WirelessNetworkMenuItem.cpp - : be libshared.a localestub $(icon_libs) $(TARGET_NETWORK_LIBS) + : be shared localestub $(icon_libs) $(TARGET_NETWORK_LIBS) libbnetapi.so [ TargetLibstdc++ ] : NetworkStatus.rdef NetworkStatusIcons.rdef ; diff --git a/src/apps/powerstatus/Jamfile b/src/apps/powerstatus/Jamfile index 7063bcfb26..017c9c7ea4 100644 --- a/src/apps/powerstatus/Jamfile +++ b/src/apps/powerstatus/Jamfile @@ -13,7 +13,7 @@ Application PowerStatus : PowerStatusWindow.cpp PowerStatusView.cpp PowerStatus.cpp - : be translation libshared.a [ TargetLibsupc++ ] localestub + : be translation shared [ TargetLibsupc++ ] localestub : PowerStatus.rdef ; DoCatalogs PowerStatus : diff --git a/src/apps/processcontroller/Jamfile b/src/apps/processcontroller/Jamfile index 00bdc8221e..a189b088cb 100644 --- a/src/apps/processcontroller/Jamfile +++ b/src/apps/processcontroller/Jamfile @@ -21,7 +21,7 @@ Application ProcessController : ThreadBarMenu.cpp ThreadBarMenuItem.cpp Utilities.cpp - : be libshared.a [ TargetLibsupc++ ] localestub + : be shared [ TargetLibsupc++ ] localestub : ProcessController.rdef ; diff --git a/src/apps/showimage/Jamfile b/src/apps/showimage/Jamfile index f058075b7c..e49f448df8 100644 --- a/src/apps/showimage/Jamfile +++ b/src/apps/showimage/Jamfile @@ -20,7 +20,7 @@ Application ShowImage : ShowImageView.cpp ShowImageWindow.cpp ToolBarIcons.cpp - : libshared.a be tracker translation localestub + : shared be tracker translation localestub [ TargetLibstdc++ ] [ TargetLibsupc++ ] : ShowImage.rdef ; diff --git a/src/apps/stylededit/Jamfile b/src/apps/stylededit/Jamfile index 789cca7ee4..23bfb2c671 100644 --- a/src/apps/stylededit/Jamfile +++ b/src/apps/stylededit/Jamfile @@ -22,7 +22,7 @@ Application StyledEdit : StyledEditApp.cpp StyledEditView.cpp StyledEditWindow.cpp - : libshared.a be translation tracker libtextencoding.so localestub + : shared be translation tracker libtextencoding.so localestub [ TargetLibsupc++ ] : $(styled_edit_rsrc) ; diff --git a/src/apps/switcher/Jamfile b/src/apps/switcher/Jamfile index 8bfd1b271a..6655bbb2d4 100644 --- a/src/apps/switcher/Jamfile +++ b/src/apps/switcher/Jamfile @@ -12,6 +12,6 @@ Application Switcher : WindowsView.cpp : be translation [ TargetLibstdc++ ] [ TargetLibsupc++ ] - localestub libshared.a + localestub shared : Switcher.rdef ; diff --git a/src/apps/text_search/Jamfile b/src/apps/text_search/Jamfile index 9c0b8e4a50..91369a6a90 100644 --- a/src/apps/text_search/Jamfile +++ b/src/apps/text_search/Jamfile @@ -24,7 +24,7 @@ Application TextSearch : $(additionalBeOSSources) - : be localestub tracker textencoding libshared.a + : be localestub tracker textencoding shared [ TargetLibsupc++ ] : TextSearch.rdef ; diff --git a/src/apps/webpositive/Jamfile b/src/apps/webpositive/Jamfile index 6cbfbadb92..f06ac60a07 100644 --- a/src/apps/webpositive/Jamfile +++ b/src/apps/webpositive/Jamfile @@ -73,8 +73,7 @@ for architectureObject in [ MultiArchSubDirSetup ] { $(sources) : [ BuildFeatureAttribute webkit : libraries ] - [ TargetLibstdc++ ] localestub - [ MultiArchDefaultGristFiles libshared.a ] + [ TargetLibstdc++ ] localestub shared [ MultiArchDefaultGristFiles libcolumnlistview.a ] be network bnetapi tracker translation : diff --git a/src/apps/workspaces/Jamfile b/src/apps/workspaces/Jamfile index 0af2fc682b..08dac997aa 100644 --- a/src/apps/workspaces/Jamfile +++ b/src/apps/workspaces/Jamfile @@ -7,7 +7,7 @@ UsePrivateHeaders app interface shared ; Application Workspaces : Workspaces.cpp - : be libshared.a localestub [ TargetLibsupc++ ] + : be shared localestub [ TargetLibsupc++ ] : Workspaces.rdef ; diff --git a/src/bin/Jamfile b/src/bin/Jamfile index 6aae7b68d0..db4534eb0b 100644 --- a/src/bin/Jamfile +++ b/src/bin/Jamfile @@ -132,7 +132,7 @@ StdBinCommands # standard commands that need libbe.so, libsupc++.so, and libshared.a StdBinCommands ramdisk.cpp - : libshared.a be [ TargetLibsupc++ ] : $(haiku-utils_rsrc) ; + : shared be [ TargetLibsupc++ ] : $(haiku-utils_rsrc) ; # standard commands that need libbe.so, libbnetapi.solibsupc++.so StdBinCommands diff --git a/src/bin/consoled/Jamfile b/src/bin/consoled/Jamfile index d900f70a74..fb3edb9242 100644 --- a/src/bin/consoled/Jamfile +++ b/src/bin/consoled/Jamfile @@ -5,5 +5,5 @@ UseHeaders [ FDirName $(HAIKU_TOP) src apps terminal ] ; Application consoled : consoled.cpp - : be libshared.a [ TargetLibsupc++ ] + : be shared [ TargetLibsupc++ ] ; diff --git a/src/bin/keymap/Jamfile b/src/bin/keymap/Jamfile index aaaede1824..d6551adec6 100644 --- a/src/bin/keymap/Jamfile +++ b/src/bin/keymap/Jamfile @@ -6,5 +6,5 @@ UsePrivateHeaders shared storage ; BinCommand keymap : main.cpp Keymap.cpp - : be libshared.a [ TargetLibsupc++ ] + : be shared [ TargetLibsupc++ ] : keymap.rdef ; diff --git a/src/bin/pkgman/Jamfile b/src/bin/pkgman/Jamfile index 127fdb23e2..8a68af8868 100644 --- a/src/bin/pkgman/Jamfile +++ b/src/bin/pkgman/Jamfile @@ -20,6 +20,6 @@ BinCommand pkgman : PackageManager.cpp pkgman.cpp : - libshared.a package be + shared package be [ TargetLibsupc++ ] [ TargetLibstdc++ ] ; diff --git a/src/kits/interface/Jamfile b/src/kits/interface/Jamfile index 561005e328..df317a49b0 100644 --- a/src/kits/interface/Jamfile +++ b/src/kits/interface/Jamfile @@ -155,7 +155,7 @@ for architectureObject in [ MultiArchSubDirSetup ] { OneElementLayouter.cpp SimpleLayouter.cpp - : [ MultiArchDefaultGristFiles libshared.a ] + : <$(architecture)>libshared.a ; StaticLibrary [ MultiArchDefaultGristFiles libcolumnlistview.a ] : diff --git a/src/kits/mail/Jamfile b/src/kits/mail/Jamfile index 1c1fba91e7..a1c7e2fc6d 100644 --- a/src/kits/mail/Jamfile +++ b/src/kits/mail/Jamfile @@ -58,8 +58,7 @@ for architectureObject in [ MultiArchSubDirSetup ] { SharedLibrary $(libmail) : $(sources) : - be bnetapi textencoding tracker - [ MultiArchDefaultGristFiles libshared.a ] + be bnetapi textencoding tracker shared [ TargetLibstdc++ ] $(TARGET_NETWORK_LIBS) $(TARGET_SELECT_UNAME_ETC_LIB) diff --git a/src/kits/network/libnetapi/Jamfile b/src/kits/network/libnetapi/Jamfile index 3220ec6ed0..aef88691d9 100644 --- a/src/kits/network/libnetapi/Jamfile +++ b/src/kits/network/libnetapi/Jamfile @@ -101,10 +101,9 @@ for architectureObject in [ MultiArchSubDirSetup ] { UrlSynchronousRequest.cpp : - be $(TARGET_NETWORK_LIBS) [ TargetLibstdc++ ] [ TargetLibsupc++ ] - [ BuildFeatureAttribute openssl : libraries ] + be shared $(TARGET_NETWORK_LIBS) [ TargetLibstdc++ ] + [ TargetLibsupc++ ] [ BuildFeatureAttribute openssl : libraries ] [ BuildFeatureAttribute icu : libraries ] - [ MultiArchDefaultGristFiles libshared.a ] ; } } diff --git a/src/kits/package/Jamfile b/src/kits/package/Jamfile index 787baf6518..013c9ee037 100644 --- a/src/kits/package/Jamfile +++ b/src/kits/package/Jamfile @@ -128,7 +128,7 @@ for architectureObject in [ MultiArchSubDirSetup ] { SolverRepository.cpp SolverResult.cpp : - [ MultiArchDefaultGristFiles libshared.a ] + shared be [ BuildFeatureAttribute curl : library ] [ TargetLibstdc++ ] diff --git a/src/kits/shared/Jamfile b/src/kits/shared/Jamfile index a5a2daebb7..8b3dfc9c1f 100644 --- a/src/kits/shared/Jamfile +++ b/src/kits/shared/Jamfile @@ -26,7 +26,7 @@ for architectureObject in [ MultiArchSubDirSetup ] { UsePrivateSystemHeaders ; UsePrivateHeaders kernel libroot ; - StaticLibrary [ MultiArchDefaultGristFiles libshared.a ] : + StaticLibrary <$(architecture)>libshared.a : AboutMenuItem.cpp ArgumentVector.cpp AttributeUtilities.cpp diff --git a/src/kits/tracker/Jamfile b/src/kits/tracker/Jamfile index 6f05dcc3ca..5624c3d1c4 100644 --- a/src/kits/tracker/Jamfile +++ b/src/kits/tracker/Jamfile @@ -100,9 +100,8 @@ for architectureObject in [ MultiArchSubDirSetup ] { WidgetAttributeText.cpp : - be localestub translation $(vectorIconLibs) + be localestub shared translation $(vectorIconLibs) [ TargetLibstdc++ ] [ TargetLibsupc++ ] - [ MultiArchDefaultGristFiles libshared.a ] [ MultiArchDefaultGristFiles libshortcuts_shared.a ] ; } diff --git a/src/preferences/datatranslations/Jamfile b/src/preferences/datatranslations/Jamfile index 8c2ef905db..8ab411d34d 100644 --- a/src/preferences/datatranslations/Jamfile +++ b/src/preferences/datatranslations/Jamfile @@ -10,7 +10,7 @@ Preference DataTranslations : DataTranslationsSettings.cpp TranslatorListView.cpp - : be translation [ TargetLibsupc++ ] localestub libshared.a + : be translation [ TargetLibsupc++ ] localestub shared : DataTranslations.rdef ; diff --git a/src/preferences/keymap/Jamfile b/src/preferences/keymap/Jamfile index a342714434..d6761c5c21 100644 --- a/src/preferences/keymap/Jamfile +++ b/src/preferences/keymap/Jamfile @@ -21,7 +21,7 @@ Preference Keymap : KeymapWindow.cpp ModifierKeysWindow.cpp - : be tracker localestub libshared.a [ TargetLibstdc++ ] + : be tracker localestub shared [ TargetLibstdc++ ] : Keymap.rdef ; diff --git a/src/preferences/locale/Jamfile b/src/preferences/locale/Jamfile index 9e2d7e93ec..55c6d0dad9 100644 --- a/src/preferences/locale/Jamfile +++ b/src/preferences/locale/Jamfile @@ -11,7 +11,7 @@ local sources = Preference Locale : $(sources) - : be [ TargetLibstdc++ ] [ TargetLibsupc++ ] libshared.a + : be [ TargetLibstdc++ ] [ TargetLibsupc++ ] shared localestub : Locale.rdef ; diff --git a/src/preferences/network/Jamfile b/src/preferences/network/Jamfile index acbd1df906..532057c787 100644 --- a/src/preferences/network/Jamfile +++ b/src/preferences/network/Jamfile @@ -27,7 +27,7 @@ Preference Network : # from ifconfig MediaTypes.cpp - : be bnetapi libshared.a [ TargetLibstdc++ ] localestub + : be bnetapi shared [ TargetLibstdc++ ] localestub : Network.rdef InterfaceIcons.rdef ; diff --git a/src/preferences/time/Jamfile b/src/preferences/time/Jamfile index fc0d2cf1e0..291dde2295 100644 --- a/src/preferences/time/Jamfile +++ b/src/preferences/time/Jamfile @@ -32,7 +32,7 @@ Includes [ FGristFiles $(sources) ] : [ BuildFeatureAttribute icu : headers ] ; Preference Time : $(sources) - : be libshared.a [ TargetLibstdc++ ] localestub $(HAIKU_NETWORK_LIBS) + : be shared [ TargetLibstdc++ ] localestub $(HAIKU_NETWORK_LIBS) : Time.rdef ; diff --git a/src/preferences/virtualmemory/Jamfile b/src/preferences/virtualmemory/Jamfile index 259afb54fb..df38e7582a 100644 --- a/src/preferences/virtualmemory/Jamfile +++ b/src/preferences/virtualmemory/Jamfile @@ -8,7 +8,7 @@ Preference VirtualMemory : Settings.cpp $(DRIVER_SETTINGS) - : be libshared.a [ TargetLibstdc++ ] localestub + : be shared [ TargetLibstdc++ ] localestub : VirtualMemory.rdef ; diff --git a/src/servers/app/Jamfile b/src/servers/app/Jamfile index aaef69de94..8f567abe2e 100644 --- a/src/servers/app/Jamfile +++ b/src/servers/app/Jamfile @@ -103,7 +103,7 @@ Server app_server : libaslocal.a $(BROKEN_64)libasremote.a $(BROKEN_64)libashtml5.a libasdrawing.a libpainter.a libagg.a [ BuildFeatureAttribute freetype : library ] - libstackandtile.a liblinprog.a libtextencoding.so libshared.a + libstackandtile.a liblinprog.a libtextencoding.so shared [ TargetLibstdc++ ] : app_server.rdef diff --git a/src/servers/debug/Jamfile b/src/servers/debug/Jamfile index 71ba507842..ac4d06e834 100644 --- a/src/servers/debug/Jamfile +++ b/src/servers/debug/Jamfile @@ -14,7 +14,7 @@ Server debug_server : be libdebug.so - libshared.a + shared [ TargetLibstdc++ ] localestub ; diff --git a/src/servers/launch/Jamfile b/src/servers/launch/Jamfile index a6e7a3d57f..db2c7921c8 100644 --- a/src/servers/launch/Jamfile +++ b/src/servers/launch/Jamfile @@ -26,7 +26,7 @@ Server launch_daemon InitSharedMemoryDirectoryJob.cpp InitTemporaryDirectoryJob.cpp : - be network bnetapi libshared.a libmultiuser_utils.a [ TargetLibstdc++ ] + be network bnetapi shared libmultiuser_utils.a [ TargetLibstdc++ ] : LaunchDaemon.rdef ; diff --git a/src/servers/midi/Jamfile b/src/servers/midi/Jamfile index 4a503bbc12..09085a82df 100644 --- a/src/servers/midi/Jamfile +++ b/src/servers/midi/Jamfile @@ -12,7 +12,7 @@ Server midi_server : # storage NodeMonitorHandler.cpp - : be midi2 libshared.a libicon.a [ TargetLibstdc++ ] + : be midi2 shared libicon.a [ TargetLibstdc++ ] : midi_server.rdef ; diff --git a/src/servers/net/Jamfile b/src/servers/net/Jamfile index 0a393f121f..3d269099f7 100644 --- a/src/servers/net/Jamfile +++ b/src/servers/net/Jamfile @@ -24,7 +24,7 @@ Server net_server : DHCPClient.cpp Services.cpp - : be network bnetapi [ TargetLibstdc++ ] libshared.a + : be network bnetapi [ TargetLibstdc++ ] shared # for PPP #libppp.a ; diff --git a/src/tests/add-ons/kernel/file_systems/consistency_check/Jamfile b/src/tests/add-ons/kernel/file_systems/consistency_check/Jamfile index 1db35ad281..af26aec061 100644 --- a/src/tests/add-ons/kernel/file_systems/consistency_check/Jamfile +++ b/src/tests/add-ons/kernel/file_systems/consistency_check/Jamfile @@ -5,11 +5,11 @@ UsePrivateHeaders shared ; SimpleTest generate_hashs : generate_hashs.cpp AdaptiveBuffering.cpp - : be [ TargetLibstdc++ ] libshared.a + : be [ TargetLibstdc++ ] shared ; SimpleTest consistency_check : consistency_check.cpp AdaptiveBuffering.cpp - : be [ TargetLibstdc++ ] libshared.a + : be [ TargetLibstdc++ ] shared ; diff --git a/src/tests/servers/app/Jamfile b/src/tests/servers/app/Jamfile index 2e7c888a51..732c19e323 100644 --- a/src/tests/servers/app/Jamfile +++ b/src/tests/servers/app/Jamfile @@ -172,7 +172,7 @@ SharedLibrary libtestappserver.so : WorkspacesView.cpp # libraries - : be libpainter.a libagg.a libtextencoding.so libshared.a libstackandtile.a + : be libpainter.a libagg.a libtextencoding.so shared libstackandtile.a liblinprog.a [ BuildFeatureAttribute freetype : library ] ; diff --git a/src/tests/servers/launch/Jamfile b/src/tests/servers/launch/Jamfile index 884ad6fbfa..401f7994cb 100644 --- a/src/tests/servers/launch/Jamfile +++ b/src/tests/servers/launch/Jamfile @@ -19,5 +19,5 @@ UnitTestLib liblaunch_daemontest.so : Conditions.cpp Utility.cpp - : be network bnetapi libshared.a [ TargetLibstdc++ ] [ TargetLibsupc++ ] + : be network bnetapi shared [ TargetLibstdc++ ] [ TargetLibsupc++ ] ; From b8878f83ca4c163a305baf614e7cb7ee37cecf6c Mon Sep 17 00:00:00 2001 From: Jessica Hamilton Date: Sat, 16 Jan 2016 15:44:26 +1300 Subject: [PATCH 157/242] Build: adjust Jamfiles in unittests for libshared.a change. --- src/tests/kits/shared/Jamfile | 2 +- src/tests/kits/shared/shake_filter/Jamfile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/tests/kits/shared/Jamfile b/src/tests/kits/shared/Jamfile index db95dc9be5..1f4e3838d3 100644 --- a/src/tests/kits/shared/Jamfile +++ b/src/tests/kits/shared/Jamfile @@ -13,7 +13,7 @@ UnitTestLib libsharedtest.so : GeolocationTest.cpp NaturalCompareTest.cpp - : be libshared.a bnetapi [ TargetLibstdc++ ] [ TargetLibsupc++ ] + : be shared bnetapi [ TargetLibstdc++ ] [ TargetLibsupc++ ] ; SubInclude HAIKU_TOP src tests kits shared shake_filter ; diff --git a/src/tests/kits/shared/shake_filter/Jamfile b/src/tests/kits/shared/shake_filter/Jamfile index df55cb0328..d0811143f6 100644 --- a/src/tests/kits/shared/shake_filter/Jamfile +++ b/src/tests/kits/shared/shake_filter/Jamfile @@ -4,5 +4,5 @@ UsePrivateHeaders shared ; Application ShakeFilterTest : ShakeFilterTest.cpp - : libshared.a be [ TargetLibsupc++ ] + : shared be [ TargetLibsupc++ ] ; From 65a6933a81641286ebb62988f5542af254bc4fcb Mon Sep 17 00:00:00 2001 From: autonielx Date: Sat, 16 Jan 2016 06:40:11 +0100 Subject: [PATCH 158/242] Update translations from Pootle --- .../inbound_filters/match_header/be.catkeys | 3 +-- .../inbound_filters/match_header/de.catkeys | 4 +--- .../inbound_filters/match_header/es.catkeys | 4 +--- .../inbound_filters/match_header/fi.catkeys | 4 +--- .../inbound_filters/match_header/fr.catkeys | 4 +--- .../inbound_filters/match_header/hu.catkeys | 4 +--- .../inbound_filters/match_header/ja.catkeys | 4 +--- .../inbound_filters/match_header/lt.catkeys | 3 +-- .../inbound_filters/match_header/nl.catkeys | 3 +-- .../inbound_filters/match_header/pl.catkeys | 4 +--- .../match_header/pt_BR.catkeys | 4 +--- .../inbound_filters/match_header/ro.catkeys | 4 +--- .../inbound_filters/match_header/ru.catkeys | 4 +--- .../inbound_filters/match_header/sk.catkeys | 3 +-- .../inbound_filters/match_header/sl.catkeys | 3 +-- .../inbound_filters/match_header/sv.catkeys | 4 +--- .../inbound_filters/match_header/uk.catkeys | 3 +-- .../match_header/zh_Hans.catkeys | 4 +--- data/catalogs/apps/deskbar/be.catkeys | 3 +-- data/catalogs/apps/deskbar/de.catkeys | 3 +-- data/catalogs/apps/deskbar/es.catkeys | 3 +-- data/catalogs/apps/deskbar/fi.catkeys | 3 +-- data/catalogs/apps/deskbar/fr.catkeys | 3 +-- data/catalogs/apps/deskbar/hr.catkeys | 3 +-- data/catalogs/apps/deskbar/hu.catkeys | 3 +-- data/catalogs/apps/deskbar/it.catkeys | 3 +-- data/catalogs/apps/deskbar/ja.catkeys | 3 +-- data/catalogs/apps/deskbar/lt.catkeys | 3 +-- data/catalogs/apps/deskbar/nl.catkeys | 3 +-- data/catalogs/apps/deskbar/pl.catkeys | 3 +-- data/catalogs/apps/deskbar/pt_BR.catkeys | 3 +-- data/catalogs/apps/deskbar/ro.catkeys | 3 +-- data/catalogs/apps/deskbar/ru.catkeys | 3 +-- data/catalogs/apps/deskbar/sk.catkeys | 3 +-- data/catalogs/apps/deskbar/sl.catkeys | 3 +-- data/catalogs/apps/deskbar/sv.catkeys | 3 +-- data/catalogs/apps/deskbar/uk.catkeys | 3 +-- data/catalogs/apps/deskbar/zh_Hans.catkeys | 3 +-- data/catalogs/apps/haikudepot/sv.catkeys | 3 ++- data/catalogs/apps/mail/sv.catkeys | 4 +++- data/catalogs/apps/mediaplayer/de.catkeys | 3 ++- data/catalogs/apps/mediaplayer/fr.catkeys | 3 ++- data/catalogs/apps/mediaplayer/pl.catkeys | 3 ++- data/catalogs/apps/mediaplayer/sv.catkeys | 3 ++- data/catalogs/apps/terminal/sv.catkeys | 5 ++++- data/catalogs/apps/webpositive/sv.catkeys | 13 ++++++++++++- data/catalogs/kits/tracker/be.catkeys | 3 +-- data/catalogs/kits/tracker/de.catkeys | 3 +-- data/catalogs/kits/tracker/es.catkeys | 3 +-- data/catalogs/kits/tracker/fi.catkeys | 3 +-- data/catalogs/kits/tracker/fr.catkeys | 3 +-- data/catalogs/kits/tracker/hu.catkeys | 3 +-- data/catalogs/kits/tracker/it.catkeys | 3 +-- data/catalogs/kits/tracker/ja.catkeys | 3 +-- data/catalogs/kits/tracker/lt.catkeys | 3 +-- data/catalogs/kits/tracker/pl.catkeys | 3 +-- data/catalogs/kits/tracker/pt_BR.catkeys | 3 +-- data/catalogs/kits/tracker/ro.catkeys | 3 +-- data/catalogs/kits/tracker/ru.catkeys | 3 +-- data/catalogs/kits/tracker/sk.catkeys | 3 +-- data/catalogs/kits/tracker/sv.catkeys | 3 +-- data/catalogs/kits/tracker/uk.catkeys | 3 +-- data/catalogs/kits/tracker/zh_Hans.catkeys | 3 +-- .../preferences/appearance/de.catkeys | 6 +++++- .../preferences/appearance/fr.catkeys | 6 +++++- .../preferences/appearance/pl.catkeys | 6 +++++- .../preferences/appearance/sv.catkeys | 6 +++++- data/catalogs/preferences/media/sv.catkeys | 3 ++- data/catalogs/preferences/network/sv.catkeys | 19 ++++++++++++++++++- 69 files changed, 124 insertions(+), 136 deletions(-) diff --git a/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/be.catkeys b/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/be.catkeys index 051c6f2ea3..60e7b41675 100644 --- a/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/be.catkeys +++ b/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/be.catkeys @@ -1,4 +1,4 @@ -1 belarusian x-vnd.Haiku-MatchHeader 3677427558 +1 belarusian x-vnd.Haiku-MatchHeader 1349121828 ConfigView <Абярыце аперацыю> has ConfigView меў Move to ConfigView Перасунуць у @@ -10,4 +10,3 @@ Set flags to ConfigView Меткі паведамлення ў Set as read ConfigView Пазначыць як прагледжанае Reply with ConfigView Адказаць з If ConfigView Калі -header (e.g. Subject) ConfigView загаловак (Subject) diff --git a/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/de.catkeys b/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/de.catkeys index b147e9eff3..83da7838b4 100644 --- a/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/de.catkeys +++ b/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/de.catkeys @@ -1,11 +1,10 @@ -1 german x-vnd.Haiku-MatchHeader 3405428083 +1 german x-vnd.Haiku-MatchHeader 4262558281 ConfigView has ConfigView enthält Move to ConfigView Verschieben nach Then ConfigView Dann this field is based on the action ConfigView dieses Feld ist abhängig von der Aktion Delete message ConfigView Nachricht löschen -value (use REGEX: in front of regular expressions like *spam*) ConfigView Wert (REGEX nutzen: reguläre Ausdrücke wie *spam*) ConfigView Set flags to ConfigView Status setzen auf Set as read ConfigView Als gelesen markieren @@ -13,4 +12,3 @@ Match header RuleFilter Kopfdaten filtern Reply with ConfigView Antworten von Konto If ConfigView Wenn Match \"%attribute\" against \"%regex\" RuleFilter \"%attribute\" mit \"%regex\" vergleichen -header (e.g. Subject) ConfigView Kopfzeile (z. B. Subject) diff --git a/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/es.catkeys b/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/es.catkeys index c5fab44118..a4f7ffcdfe 100644 --- a/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/es.catkeys +++ b/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/es.catkeys @@ -1,11 +1,10 @@ -1 spanish; castilian x-vnd.Haiku-MatchHeader 3405428083 +1 spanish; castilian x-vnd.Haiku-MatchHeader 4262558281 ConfigView has ConfigView tiene Move to ConfigView Mover a Then ConfigView Luego this field is based on the action ConfigView este campo está basado en la acción Delete message ConfigView Borrar mensaje -value (use REGEX: in front of regular expressions like *spam*) ConfigView valor (use REGEX: frente a expresiones regulares como *spam*) ConfigView Set flags to ConfigView Seleccionar banderas a Set as read ConfigView Marcar como leído @@ -13,4 +12,3 @@ Match header RuleFilter Cabecera concordante Reply with ConfigView Responder con If ConfigView Si Match \"%attribute\" against \"%regex\" RuleFilter Concordar \"%attribute\" contra \"%regex\" -header (e.g. Subject) ConfigView Cabecera (p. ej. Tema) diff --git a/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/fi.catkeys b/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/fi.catkeys index 94ca31dce8..12273c0ed1 100644 --- a/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/fi.catkeys +++ b/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/fi.catkeys @@ -1,11 +1,10 @@ -1 finnish x-vnd.Haiku-MatchHeader 3405428083 +1 finnish x-vnd.Haiku-MatchHeader 4262558281 ConfigView has ConfigView on Move to ConfigView Siirrä kohtaan Then ConfigView Sitten this field is based on the action ConfigView tämä kenttä perustuu toimintoon Delete message ConfigView Poista viesti -value (use REGEX: in front of regular expressions like *spam*) ConfigView arvo (käytä REGEX-ohjelmistoa: säännöllisten lausekkeiden edessä kuten *spam*) ConfigView Set flags to ConfigView Aseta lippujen arvoksi Set as read ConfigView Aseta luetuksi @@ -13,4 +12,3 @@ Match header RuleFilter Täsmää otsikko Reply with ConfigView Vastaa If ConfigView Jos Match \"%attribute\" against \"%regex\" RuleFilter Täsmää \"%attribute\" säännöllisen lausekkeen \"%regex\" varalta -header (e.g. Subject) ConfigView otsake (esim. Aihe) diff --git a/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/fr.catkeys b/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/fr.catkeys index 01e72e61c0..563ed63c0b 100644 --- a/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/fr.catkeys +++ b/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/fr.catkeys @@ -1,11 +1,10 @@ -1 french x-vnd.Haiku-MatchHeader 3405428083 +1 french x-vnd.Haiku-MatchHeader 4262558281 ConfigView has ConfigView a Move to ConfigView Déplacer vers Then ConfigView Alors this field is based on the action ConfigView ce champ est basé sur l’action Delete message ConfigView Supprimer le message -value (use REGEX: in front of regular expressions like *spam*) ConfigView valeur (utilisez REGEX: devant les expressions régulières comme *spam*) ConfigView Set flags to ConfigView Placez les drapeaux à Set as read ConfigView Marquer comme lu @@ -13,4 +12,3 @@ Match header RuleFilter Entête de correspondance Reply with ConfigView Répondre avec If ConfigView Si Match \"%attribute\" against \"%regex\" RuleFilter Faire correspondre « %attribute » à « %regex » -header (e.g. Subject) ConfigView entête (ex. Sujet) diff --git a/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/hu.catkeys b/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/hu.catkeys index 77531db472..5d0e5e41e2 100644 --- a/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/hu.catkeys +++ b/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/hu.catkeys @@ -1,11 +1,10 @@ -1 hungarian x-vnd.Haiku-MatchHeader 3405428083 +1 hungarian x-vnd.Haiku-MatchHeader 4262558281 ConfigView has ConfigView tartalmaz Move to ConfigView mozgatás ide: Then ConfigView Akkor this field is based on the action ConfigView ez a mező a műveleten alapszik Delete message ConfigView az üzenet törlése -value (use REGEX: in front of regular expressions like *spam*) ConfigView érték (RegEx használatával, mint például *spam*) ConfigView Set flags to ConfigView megjelölés: Set as read ConfigView olvasottnak jelölés @@ -13,4 +12,3 @@ Match header RuleFilter Fejléc egyezése Reply with ConfigView válaszolás: If ConfigView Ha: Match \"%attribute\" against \"%regex\" RuleFilter Egyező \"%attribute\" \"%regex\" helyett -header (e.g. Subject) ConfigView fejléc (pl. tárgy) diff --git a/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/ja.catkeys b/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/ja.catkeys index aee7b42096..f1d5b0c3a7 100644 --- a/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/ja.catkeys +++ b/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/ja.catkeys @@ -1,11 +1,10 @@ -1 japanese x-vnd.Haiku-MatchHeader 3405428083 +1 japanese x-vnd.Haiku-MatchHeader 4262558281 ConfigView <動作を選択> has ConfigView が Move to ConfigView に移動する Then ConfigView ならば this field is based on the action ConfigView ここは動作によって意味が変わります Delete message ConfigView メッセージを削除する -value (use REGEX: in front of regular expressions like *spam*) ConfigView 値 (REGEX の使用: *spam* のような正規表現の前に記述) ConfigView <アカウントを選択> Set flags to ConfigView フラグを指定する Set as read ConfigView 既読にする @@ -13,4 +12,3 @@ Match header RuleFilter ヘッダー一致条件 Reply with ConfigView 返事を書く If ConfigView 条件: Match \"%attribute\" against \"%regex\" RuleFilter \"%regex\" と一致する \"%attribute\" -header (e.g. Subject) ConfigView ヘッダー (たとえば Subject) diff --git a/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/lt.catkeys b/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/lt.catkeys index b7407004de..0b14bedb95 100644 --- a/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/lt.catkeys +++ b/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/lt.catkeys @@ -1,4 +1,4 @@ -1 lithuanian x-vnd.Haiku-MatchHeader 3677427558 +1 lithuanian x-vnd.Haiku-MatchHeader 1349121828 ConfigView has ConfigView turi Move to ConfigView perkelti į @@ -10,4 +10,3 @@ Set flags to ConfigView nustatyti požymius į Set as read ConfigView pažymėti kaip skaitytą Reply with ConfigView atsakyti naudojant If ConfigView Kai -header (e.g. Subject) ConfigView antraštė (pvz., Subject) diff --git a/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/nl.catkeys b/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/nl.catkeys index 2cdb644756..3de3269c58 100644 --- a/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/nl.catkeys +++ b/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/nl.catkeys @@ -1,4 +1,4 @@ -1 dutch; flemish x-vnd.Haiku-MatchHeader 3677427558 +1 dutch; flemish x-vnd.Haiku-MatchHeader 1349121828 ConfigView has ConfigView Heeft Move to ConfigView Verplaats naar @@ -10,4 +10,3 @@ Set flags to ConfigView Markeer als Set as read ConfigView Als gelezen markeren Reply with ConfigView Antwoord met If ConfigView Als -header (e.g. Subject) ConfigView rubiek (m.a.w. onderwerp) diff --git a/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/pl.catkeys b/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/pl.catkeys index 9275baf1b8..5a6bd94fc5 100644 --- a/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/pl.catkeys +++ b/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/pl.catkeys @@ -1,11 +1,10 @@ -1 polish x-vnd.Haiku-MatchHeader 3405428083 +1 polish x-vnd.Haiku-MatchHeader 4262558281 ConfigView has ConfigView ma Move to ConfigView Przenieś do Then ConfigView To this field is based on the action ConfigView to pole jest oparte na akcji Delete message ConfigView Usuń wiadomość -value (use REGEX: in front of regular expressions like *spam*) ConfigView wartość (użyj wyrażeń regularnych, takich jak *spam*) ConfigView Set flags to ConfigView Ustaw flagi na Set as read ConfigView Oznacz jako przeczytane @@ -13,4 +12,3 @@ Match header RuleFilter Porównaj nagłówek Reply with ConfigView Odpowiedz z If ConfigView Jeśli Match \"%attribute\" against \"%regex\" RuleFilter Porównaj „%attribute” z „%regex” -header (e.g. Subject) ConfigView nagłówek (np. Temat) diff --git a/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/pt_BR.catkeys b/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/pt_BR.catkeys index 021ccf938c..56a600547d 100644 --- a/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/pt_BR.catkeys +++ b/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/pt_BR.catkeys @@ -1,11 +1,10 @@ -1 portuguese (brazil) x-vnd.Haiku-MatchHeader 3405428083 +1 portuguese (brazil) x-vnd.Haiku-MatchHeader 4262558281 ConfigView has ConfigView tem Move to ConfigView Mover para Then ConfigView Então this field is based on the action ConfigView este campo é baseado na ação Delete message ConfigView Apagar mensagem -value (use REGEX: in front of regular expressions like *spam*) ConfigView valor (usar REGEX: na frente de expressões regulares como *spam*) ConfigView Set flags to ConfigView Definir bandeiras para Set as read ConfigView Marcar como lida @@ -13,4 +12,3 @@ Match header RuleFilter Combinar cabeçalho Reply with ConfigView Responder com If ConfigView Se Match \"%attribute\" against \"%regex\" RuleFilter Combinar \"%atributo\" com \"%regex\" -header (e.g. Subject) ConfigView cabeçalho (por ex., Assunto) diff --git a/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/ro.catkeys b/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/ro.catkeys index b45948b22d..2bd7c01107 100644 --- a/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/ro.catkeys +++ b/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/ro.catkeys @@ -1,11 +1,10 @@ -1 romanian x-vnd.Haiku-MatchHeader 3405428083 +1 romanian x-vnd.Haiku-MatchHeader 4262558281 ConfigView has ConfigView are Move to ConfigView Mută la Then ConfigView Atunci this field is based on the action ConfigView acest câmp este bazat pe acțiunea Delete message ConfigView Șterge mesajul -value (use REGEX: in front of regular expressions like *spam*) ConfigView valoare (folosește REGEX: înaintea expresiilor regulate precum *spam*) ConfigView Set flags to ConfigView Stabilește indicatorii la Set as read ConfigView Marchează ca citit @@ -13,4 +12,3 @@ Match header RuleFilter Potrivește antet Reply with ConfigView Răspunde cu If ConfigView Dacă Match \"%attribute\" against \"%regex\" RuleFilter Găsește \"%attribute\" în \"%regex\" -header (e.g. Subject) ConfigView antet (ex. Subiect) diff --git a/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/ru.catkeys b/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/ru.catkeys index 6c180b2f1f..e1e0c2384b 100644 --- a/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/ru.catkeys +++ b/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/ru.catkeys @@ -1,15 +1,13 @@ -1 russian x-vnd.Haiku-MatchHeader 1196375185 +1 russian x-vnd.Haiku-MatchHeader 2053505383 ConfigView <Выберите действие> has ConfigView содержит Move to ConfigView Переместить в Then ConfigView Тогда this field is based on the action ConfigView это поле зависит от действия Delete message ConfigView Удалить сообщение -value (use REGEX: in front of regular expressions like *spam*) ConfigView значение (используйте REGEX: перед регулярными выражениями, например *спам*) ConfigView значение (используйте регулярные выражения, например *спам*) Set flags to ConfigView Установить флаги в Set as read ConfigView Отметить как прочитанное Match header RuleFilter Совпадающий заголовок Reply with ConfigView Ответить с If ConfigView Если -header (e.g. Subject) ConfigView заголовок (Subject) diff --git a/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/sk.catkeys b/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/sk.catkeys index 3742f44228..537afded29 100644 --- a/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/sk.catkeys +++ b/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/sk.catkeys @@ -1,4 +1,4 @@ -1 slovak x-vnd.Haiku-MatchHeader 3677427558 +1 slovak x-vnd.Haiku-MatchHeader 1349121828 ConfigView has ConfigView má Move to ConfigView Presunúť do @@ -10,4 +10,3 @@ Set flags to ConfigView Nastaviť príznaky na Set as read ConfigView Nastaviť ako prečítané Reply with ConfigView Odpovedať pomocou If ConfigView ak -header (e.g. Subject) ConfigView hlavička (napr. Predmet) diff --git a/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/sl.catkeys b/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/sl.catkeys index 2e7df00115..9a1eab71a7 100644 --- a/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/sl.catkeys +++ b/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/sl.catkeys @@ -1,4 +1,4 @@ -1 slovenian x-vnd.Haiku-MatchHeader 538909502 +1 slovenian x-vnd.Haiku-MatchHeader 2505571068 has ConfigView ima Move to ConfigView Premakni v Then ConfigView potem @@ -7,4 +7,3 @@ Set flags to ConfigView Nastavi zastavice na Set as read ConfigView Označi kot prebrano Reply with ConfigView Odgovori z If ConfigView Če -header (e.g. Subject) ConfigView glava (npr. Zadeva) diff --git a/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/sv.catkeys b/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/sv.catkeys index 909f2d9e2c..9bf54a84b4 100644 --- a/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/sv.catkeys +++ b/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/sv.catkeys @@ -1,11 +1,10 @@ -1 swedish x-vnd.Haiku-MatchHeader 3405428083 +1 swedish x-vnd.Haiku-MatchHeader 4262558281 ConfigView has ConfigView har Move to ConfigView Flytta till Then ConfigView Åtgärd this field is based on the action ConfigView detta fält är baserat på åtgärden Delete message ConfigView Radera meddelande -value (use REGEX: in front of regular expressions like *spam*) ConfigView värde (använd reguljära uttryck i format som *spam*) ConfigView Set flags to ConfigView Markera som Set as read ConfigView Markera som läst @@ -13,4 +12,3 @@ Match header RuleFilter Matcha rubrik Reply with ConfigView Svara med If ConfigView Om Match \"%attribute\" against \"%regex\" RuleFilter Matcha \"%attribute\" mot \"%regex\" -header (e.g. Subject) ConfigView huvud (ex Rubrik) diff --git a/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/uk.catkeys b/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/uk.catkeys index cefabadd0e..aec7a8e3ec 100644 --- a/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/uk.catkeys +++ b/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/uk.catkeys @@ -1,4 +1,4 @@ -1 ukrainian x-vnd.Haiku-MatchHeader 3677427558 +1 ukrainian x-vnd.Haiku-MatchHeader 1349121828 ConfigView <Вибір дії> has ConfigView має Move to ConfigView Перемістити до @@ -10,4 +10,3 @@ Set flags to ConfigView Встановити флаги для Set as read ConfigView Встановити як прочитані Reply with ConfigView Відповісти з If ConfigView Якщо -header (e.g. Subject) ConfigView заголовок (e.g. Subject) diff --git a/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/zh_Hans.catkeys b/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/zh_Hans.catkeys index a371ad141d..a7f94fd1ef 100644 --- a/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/zh_Hans.catkeys +++ b/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/zh_Hans.catkeys @@ -1,11 +1,10 @@ -1 english x-vnd.Haiku-MatchHeader 3405428083 +1 english x-vnd.Haiku-MatchHeader 4262558281 ConfigView <选择动作> has ConfigView 具有 Move to ConfigView 移动到 Then ConfigView 然后 this field is based on the action ConfigView 该域基于动作 Delete message ConfigView 删除消息 -value (use REGEX: in front of regular expressions like *spam*) ConfigView 值 (使用 REGEX: 利用正则表达式,如 *spam*) ConfigView <选择账户> Set flags to ConfigView 设置标志为 Set as read ConfigView 设为读取 @@ -13,4 +12,3 @@ Match header RuleFilter 头部匹配 Reply with ConfigView 回复为 If ConfigView 如果 Match \"%attribute\" against \"%regex\" RuleFilter 基于 \"%regex\" 进行 \"%attribute\" 匹配 -header (e.g. Subject) ConfigView 邮件头(如 主题) diff --git a/data/catalogs/apps/deskbar/be.catkeys b/data/catalogs/apps/deskbar/be.catkeys index 8dfe58a47e..2780d6d9a9 100644 --- a/data/catalogs/apps/deskbar/be.catkeys +++ b/data/catalogs/apps/deskbar/be.catkeys @@ -1,4 +1,4 @@ -1 belarusian x-vnd.Be-TSKB 2335730970 +1 belarusian x-vnd.Be-TSKB 2656653225 Power off DeskbarMenu Выключыць Sort applications by name PreferencesWindow Сартаваць прагамы па назвах Suspend DeskbarMenu Прыпыніць @@ -27,7 +27,6 @@ Large PreferencesWindow Вялікі Auto-raise PreferencesWindow Узнікаць аўтаматычна Recent folders: PreferencesWindow Нядаўнія каталёгі: Show application expander PreferencesWindow Паказваць кнопку спісу праграм -Restart Tracker DeskbarMenu Перазапусціць Tracker Close all WindowMenu Закрыць усё Deskbar preferences PreferencesWindow Наладкі Deskbar Mount DeskbarMenu Прымацаваць diff --git a/data/catalogs/apps/deskbar/de.catkeys b/data/catalogs/apps/deskbar/de.catkeys index 66c87e41d1..64b5b0d06c 100644 --- a/data/catalogs/apps/deskbar/de.catkeys +++ b/data/catalogs/apps/deskbar/de.catkeys @@ -1,4 +1,4 @@ -1 german x-vnd.Be-TSKB 2335730970 +1 german x-vnd.Be-TSKB 2656653225 Power off DeskbarMenu Ausschalten Sort applications by name PreferencesWindow Laufende Anwendungen sortieren Suspend DeskbarMenu Ruhezustand @@ -27,7 +27,6 @@ Large PreferencesWindow Groß Auto-raise PreferencesWindow Automatisch nach vorn holen Recent folders: PreferencesWindow Letzte Ordner: Show application expander PreferencesWindow Expander anzeigen -Restart Tracker DeskbarMenu Tracker neu starten Close all WindowMenu Alle schließen Deskbar preferences PreferencesWindow Deskbar-Einstellungen Mount DeskbarMenu Einhängen diff --git a/data/catalogs/apps/deskbar/es.catkeys b/data/catalogs/apps/deskbar/es.catkeys index 2acec19c2d..daa008f2a4 100644 --- a/data/catalogs/apps/deskbar/es.catkeys +++ b/data/catalogs/apps/deskbar/es.catkeys @@ -1,4 +1,4 @@ -1 spanish; castilian x-vnd.Be-TSKB 2335730970 +1 spanish; castilian x-vnd.Be-TSKB 2656653225 Power off DeskbarMenu Apagar Sort applications by name PreferencesWindow Ordenar aplicaciones por nombre Suspend DeskbarMenu Suspender @@ -27,7 +27,6 @@ Large PreferencesWindow Grande Auto-raise PreferencesWindow Redimensionar automáticamente Recent folders: PreferencesWindow Carpetas recientes: Show application expander PreferencesWindow Mostar expansor de aplicación -Restart Tracker DeskbarMenu Reiniciar rastreador Close all WindowMenu Cerrar todo Deskbar preferences PreferencesWindow Preferencias de la barra de escritorio Mount DeskbarMenu Montar diff --git a/data/catalogs/apps/deskbar/fi.catkeys b/data/catalogs/apps/deskbar/fi.catkeys index 00376576a7..62427e618f 100644 --- a/data/catalogs/apps/deskbar/fi.catkeys +++ b/data/catalogs/apps/deskbar/fi.catkeys @@ -1,4 +1,4 @@ -1 finnish x-vnd.Be-TSKB 2335730970 +1 finnish x-vnd.Be-TSKB 2656653225 Power off DeskbarMenu Sammuta virta Sort applications by name PreferencesWindow Lajittele sovellukset nimen perusteella Suspend DeskbarMenu Keskeytystila @@ -27,7 +27,6 @@ Large PreferencesWindow Suuri Auto-raise PreferencesWindow Nosta automaattisesti Recent folders: PreferencesWindow Äskettäiset kansiot: Show application expander PreferencesWindow Näytä sovelluslaajentaja -Restart Tracker DeskbarMenu Käynnistä Seuraaja uudelleen Close all WindowMenu Sulje kaikki Deskbar preferences PreferencesWindow Työpöytäpalkin asetukset Mount DeskbarMenu Liitä diff --git a/data/catalogs/apps/deskbar/fr.catkeys b/data/catalogs/apps/deskbar/fr.catkeys index 5a4cc07b74..dfb16765ad 100644 --- a/data/catalogs/apps/deskbar/fr.catkeys +++ b/data/catalogs/apps/deskbar/fr.catkeys @@ -1,4 +1,4 @@ -1 french x-vnd.Be-TSKB 2335730970 +1 french x-vnd.Be-TSKB 2656653225 Power off DeskbarMenu Éteindre Sort applications by name PreferencesWindow Trier les applications par nom Suspend DeskbarMenu Mettre en veille @@ -27,7 +27,6 @@ Large PreferencesWindow Grande Auto-raise PreferencesWindow Rehausser automatiquement Recent folders: PreferencesWindow Dossiers récents : Show application expander PreferencesWindow Montrer le dérouleur d’application -Restart Tracker DeskbarMenu Redémarrer le Tracker Close all WindowMenu Tout fermer Deskbar preferences PreferencesWindow Réglages de la Deskbar Mount DeskbarMenu Monter diff --git a/data/catalogs/apps/deskbar/hr.catkeys b/data/catalogs/apps/deskbar/hr.catkeys index 3c9fa3a16d..9f37615216 100644 --- a/data/catalogs/apps/deskbar/hr.catkeys +++ b/data/catalogs/apps/deskbar/hr.catkeys @@ -1,4 +1,4 @@ -1 croatian x-vnd.Be-TSKB 2471778709 +1 croatian x-vnd.Be-TSKB 2792700964 Power off DeskbarMenu Isključi Sort applications by name PreferencesWindow Sortiraj programe po imenu Suspend DeskbarMenu Suspendiraj @@ -26,7 +26,6 @@ Large PreferencesWindow Veliko Auto-raise PreferencesWindow Samopodizanje Recent folders: PreferencesWindow Nedavne mape: Show application expander PreferencesWindow Pokaži proširivač programa -Restart Tracker DeskbarMenu Ponovno pokreni Tracker Close all WindowMenu Zatvori sve Deskbar preferences PreferencesWindow Deskbar osobitosti Mount DeskbarMenu Montiraj diff --git a/data/catalogs/apps/deskbar/hu.catkeys b/data/catalogs/apps/deskbar/hu.catkeys index 1dd25d03c2..a044b9f42b 100644 --- a/data/catalogs/apps/deskbar/hu.catkeys +++ b/data/catalogs/apps/deskbar/hu.catkeys @@ -1,4 +1,4 @@ -1 hungarian x-vnd.Be-TSKB 2335730970 +1 hungarian x-vnd.Be-TSKB 2656653225 Power off DeskbarMenu Kikapcsolás Sort applications by name PreferencesWindow Rendezés a program neve szerint Suspend DeskbarMenu Felfüggesztés @@ -27,7 +27,6 @@ Large PreferencesWindow Nagy Auto-raise PreferencesWindow Automatikus előrehozás Recent folders: PreferencesWindow Utolsó mappák: Show application expander PreferencesWindow Programkibontó mutatása -Restart Tracker DeskbarMenu Nyomkövető újraindítása Close all WindowMenu Összes bezárása Deskbar preferences PreferencesWindow Asztalsáv-beállítások Mount DeskbarMenu Csatolás diff --git a/data/catalogs/apps/deskbar/it.catkeys b/data/catalogs/apps/deskbar/it.catkeys index e0f63890c1..be9e3b9d98 100644 --- a/data/catalogs/apps/deskbar/it.catkeys +++ b/data/catalogs/apps/deskbar/it.catkeys @@ -1,4 +1,4 @@ -1 italian x-vnd.Be-TSKB 2335730970 +1 italian x-vnd.Be-TSKB 2656653225 Power off DeskbarMenu Spegni Sort applications by name PreferencesWindow Ordina per nome Suspend DeskbarMenu Sospendi @@ -27,7 +27,6 @@ Large PreferencesWindow Grandi Auto-raise PreferencesWindow Automaticamente in primo piano Recent folders: PreferencesWindow Cartelle recenti: Show application expander PreferencesWindow Mostra espansore applicazione -Restart Tracker DeskbarMenu Riavvia il Tracker Close all WindowMenu Chiudi tutto Deskbar preferences PreferencesWindow Preferenze di Deskbar Mount DeskbarMenu Monta diff --git a/data/catalogs/apps/deskbar/ja.catkeys b/data/catalogs/apps/deskbar/ja.catkeys index 4bd635a11f..4287df9c4e 100644 --- a/data/catalogs/apps/deskbar/ja.catkeys +++ b/data/catalogs/apps/deskbar/ja.catkeys @@ -1,4 +1,4 @@ -1 japanese x-vnd.Be-TSKB 2335730970 +1 japanese x-vnd.Be-TSKB 2656653225 Power off DeskbarMenu 電源を切る Sort applications by name PreferencesWindow アプリケーションを名前順に並び替える Suspend DeskbarMenu サスペンド @@ -27,7 +27,6 @@ Large PreferencesWindow 大 Auto-raise PreferencesWindow マウスオーバーで手前に Recent folders: PreferencesWindow 最近開いたフォルダー Show application expander PreferencesWindow エキスパンダーを表示 -Restart Tracker DeskbarMenu Tracker を再起動 Close all WindowMenu すべて閉じる Deskbar preferences PreferencesWindow Deskbar の設定 Mount DeskbarMenu マウント diff --git a/data/catalogs/apps/deskbar/lt.catkeys b/data/catalogs/apps/deskbar/lt.catkeys index 064c2b0b48..26d50d89d2 100644 --- a/data/catalogs/apps/deskbar/lt.catkeys +++ b/data/catalogs/apps/deskbar/lt.catkeys @@ -1,4 +1,4 @@ -1 lithuanian x-vnd.Be-TSKB 2335730970 +1 lithuanian x-vnd.Be-TSKB 2656653225 Power off DeskbarMenu Išjungti Sort applications by name PreferencesWindow Rikiuoti programas pagal pavadinimą Suspend DeskbarMenu Pristabdyti @@ -27,7 +27,6 @@ Large PreferencesWindow Didelės Auto-raise PreferencesWindow Automatiškai iškilti Recent folders: PreferencesWindow Paskiausi aplankai: Show application expander PreferencesWindow Rodyti programų skleistuką -Restart Tracker DeskbarMenu Perleisti Pėdsekį Close all WindowMenu Užverti visus Deskbar preferences PreferencesWindow Užduočių juostos nuostatos Mount DeskbarMenu Prijungti diską diff --git a/data/catalogs/apps/deskbar/nl.catkeys b/data/catalogs/apps/deskbar/nl.catkeys index 141838e7c7..86e63af7a6 100644 --- a/data/catalogs/apps/deskbar/nl.catkeys +++ b/data/catalogs/apps/deskbar/nl.catkeys @@ -1,4 +1,4 @@ -1 dutch; flemish x-vnd.Be-TSKB 2632170999 +1 dutch; flemish x-vnd.Be-TSKB 2953093254 Power off DeskbarMenu Uitzetten Suspend DeskbarMenu Opschorten Applications PreferencesWindow Toepassingen @@ -22,7 +22,6 @@ Large PreferencesWindow Groot Auto-raise PreferencesWindow Automatisch naar boven Recent folders: PreferencesWindow Recente mappen: Show application expander PreferencesWindow Toon toepassing-expander -Restart Tracker DeskbarMenu Tracker herstarten Close all WindowMenu Alles sluiten Deskbar preferences PreferencesWindow Deskbar-voorkeuren Mount DeskbarMenu Betrek diff --git a/data/catalogs/apps/deskbar/pl.catkeys b/data/catalogs/apps/deskbar/pl.catkeys index 1555e88355..cd37596164 100644 --- a/data/catalogs/apps/deskbar/pl.catkeys +++ b/data/catalogs/apps/deskbar/pl.catkeys @@ -1,4 +1,4 @@ -1 polish x-vnd.Be-TSKB 2335730970 +1 polish x-vnd.Be-TSKB 2656653225 Power off DeskbarMenu Wyłącz Sort applications by name PreferencesWindow Sortuj aplikacje po nazwie Suspend DeskbarMenu Uśpij @@ -27,7 +27,6 @@ Large PreferencesWindow Duże Auto-raise PreferencesWindow Autoaktywacja Recent folders: PreferencesWindow Ostatnio przeglądane katalogi: Show application expander PreferencesWindow Aplikacje jako lista rozwijalna -Restart Tracker DeskbarMenu Uruchom ponownie Trackera Close all WindowMenu Zamknij wszystkie Deskbar preferences PreferencesWindow Ustawienia Deskbara Mount DeskbarMenu Zamontuj diff --git a/data/catalogs/apps/deskbar/pt_BR.catkeys b/data/catalogs/apps/deskbar/pt_BR.catkeys index bf9581185b..9dc9fac065 100644 --- a/data/catalogs/apps/deskbar/pt_BR.catkeys +++ b/data/catalogs/apps/deskbar/pt_BR.catkeys @@ -1,4 +1,4 @@ -1 portuguese (brazil) x-vnd.Be-TSKB 2335730970 +1 portuguese (brazil) x-vnd.Be-TSKB 2656653225 Power off DeskbarMenu Desligar Sort applications by name PreferencesWindow Ordenar aplicativos pelo nome Suspend DeskbarMenu Suspender @@ -27,7 +27,6 @@ Large PreferencesWindow Grande Auto-raise PreferencesWindow Auto-levantar Recent folders: PreferencesWindow Pastas recentes: Show application expander PreferencesWindow Mostrar expansor de aplicativo -Restart Tracker DeskbarMenu Reiniciar Rastreador Close all WindowMenu Fechar tudo Deskbar preferences PreferencesWindow Preferências da Deskbar Mount DeskbarMenu Montar diff --git a/data/catalogs/apps/deskbar/ro.catkeys b/data/catalogs/apps/deskbar/ro.catkeys index d15e28c34a..93df4b45c6 100644 --- a/data/catalogs/apps/deskbar/ro.catkeys +++ b/data/catalogs/apps/deskbar/ro.catkeys @@ -1,4 +1,4 @@ -1 romanian x-vnd.Be-TSKB 2335730970 +1 romanian x-vnd.Be-TSKB 2656653225 Power off DeskbarMenu Oprire Sort applications by name PreferencesWindow Sortează aplicații după nume Suspend DeskbarMenu Suspendare @@ -27,7 +27,6 @@ Large PreferencesWindow Mare Auto-raise PreferencesWindow Auto-montează Recent folders: PreferencesWindow Dosare recente: Show application expander PreferencesWindow Afișează extensorul de aplicație -Restart Tracker DeskbarMenu Repornire Tracker Close all WindowMenu Închide tot Deskbar preferences PreferencesWindow Preferințe Deskbar Mount DeskbarMenu Montare diff --git a/data/catalogs/apps/deskbar/ru.catkeys b/data/catalogs/apps/deskbar/ru.catkeys index 6a478a0e57..f213bedd59 100644 --- a/data/catalogs/apps/deskbar/ru.catkeys +++ b/data/catalogs/apps/deskbar/ru.catkeys @@ -1,4 +1,4 @@ -1 russian x-vnd.Be-TSKB 2335730970 +1 russian x-vnd.Be-TSKB 2656653225 Power off DeskbarMenu Выключить компьютер Sort applications by name PreferencesWindow Сортировать приложения по имени Suspend DeskbarMenu Приостановить @@ -27,7 +27,6 @@ Large PreferencesWindow Крупные Auto-raise PreferencesWindow Всплывать при наведении Recent folders: PreferencesWindow Недавние папки: Show application expander PreferencesWindow Отображать список окон приложений -Restart Tracker DeskbarMenu Перезапустить Tracker Close all WindowMenu Закрыть все Deskbar preferences PreferencesWindow Настройки Deskbar Mount DeskbarMenu Подключить diff --git a/data/catalogs/apps/deskbar/sk.catkeys b/data/catalogs/apps/deskbar/sk.catkeys index 06b06788a2..a6a7503c50 100644 --- a/data/catalogs/apps/deskbar/sk.catkeys +++ b/data/catalogs/apps/deskbar/sk.catkeys @@ -1,4 +1,4 @@ -1 slovak x-vnd.Be-TSKB 1042823442 +1 slovak x-vnd.Be-TSKB 1363745697 Power off DeskbarMenu Vypnúť Suspend DeskbarMenu Režim spánku Hide clock TimeView Skryť hodiny @@ -24,7 +24,6 @@ Large PreferencesWindow Veľké Auto-raise PreferencesWindow Automaticky aktivovať Recent folders: PreferencesWindow Nedávne priečinky: Show application expander PreferencesWindow Zobraziť výsuvný zoznam aplikácií -Restart Tracker DeskbarMenu Reštartovať Tracker Close all WindowMenu Zatvoriť všetky Deskbar preferences PreferencesWindow Nastavenia Panelu Mount DeskbarMenu Pripojiť diff --git a/data/catalogs/apps/deskbar/sl.catkeys b/data/catalogs/apps/deskbar/sl.catkeys index 352378862b..f630719dd2 100644 --- a/data/catalogs/apps/deskbar/sl.catkeys +++ b/data/catalogs/apps/deskbar/sl.catkeys @@ -1,4 +1,4 @@ -1 slovenian x-vnd.Be-TSKB 3867888028 +1 slovenian x-vnd.Be-TSKB 4188810283 Power off DeskbarMenu Ugasni Sort applications by name PreferencesWindow Razvrsti aplikacije po imenu Hide clock TimeView Skrij uro @@ -22,7 +22,6 @@ Deskbar System name Deskbar Restart system DeskbarMenu Ponovno zaženi računalnik Auto-raise PreferencesWindow Samodejno dvigni Recent folders: PreferencesWindow Nedavne mape: -Restart Tracker DeskbarMenu Ponovno zaženi Tracker Close all WindowMenu Zapri vse Mount DeskbarMenu Priklopi Revert PreferencesWindow Povrni diff --git a/data/catalogs/apps/deskbar/sv.catkeys b/data/catalogs/apps/deskbar/sv.catkeys index 1f35d4fc99..b0be571042 100644 --- a/data/catalogs/apps/deskbar/sv.catkeys +++ b/data/catalogs/apps/deskbar/sv.catkeys @@ -1,4 +1,4 @@ -1 swedish x-vnd.Be-TSKB 2335730970 +1 swedish x-vnd.Be-TSKB 2656653225 Power off DeskbarMenu Stäng av Sort applications by name PreferencesWindow Sortera program efter namn Suspend DeskbarMenu Vänteläge @@ -27,7 +27,6 @@ Large PreferencesWindow Stor Auto-raise PreferencesWindow Höj vid närkontakt Recent folders: PreferencesWindow Senaste mappar: Show application expander PreferencesWindow Visa program-expanderare -Restart Tracker DeskbarMenu Starta om Tracker Close all WindowMenu Stäng alla Deskbar preferences PreferencesWindow Deskbar inställningar Mount DeskbarMenu Montera diff --git a/data/catalogs/apps/deskbar/uk.catkeys b/data/catalogs/apps/deskbar/uk.catkeys index 00f2ea5735..0abb3fc119 100644 --- a/data/catalogs/apps/deskbar/uk.catkeys +++ b/data/catalogs/apps/deskbar/uk.catkeys @@ -1,4 +1,4 @@ -1 ukrainian x-vnd.Be-TSKB 2335730970 +1 ukrainian x-vnd.Be-TSKB 2656653225 Power off DeskbarMenu Вимкнути Sort applications by name PreferencesWindow Сортувати програми за назвою Suspend DeskbarMenu Призупинити @@ -27,7 +27,6 @@ Large PreferencesWindow Великі Auto-raise PreferencesWindow Автоспливання Recent folders: PreferencesWindow Недавні папки: Show application expander PreferencesWindow Показувати додаток expander -Restart Tracker DeskbarMenu Перезавантажити Tracker Close all WindowMenu Закрити все Deskbar preferences PreferencesWindow Налаштування Deskbar Mount DeskbarMenu Приєднати diff --git a/data/catalogs/apps/deskbar/zh_Hans.catkeys b/data/catalogs/apps/deskbar/zh_Hans.catkeys index 18dc45adef..6503722f7f 100644 --- a/data/catalogs/apps/deskbar/zh_Hans.catkeys +++ b/data/catalogs/apps/deskbar/zh_Hans.catkeys @@ -1,4 +1,4 @@ -1 english x-vnd.Be-TSKB 2335730970 +1 english x-vnd.Be-TSKB 2656653225 Power off DeskbarMenu 关闭电源 Sort applications by name PreferencesWindow 按名称排序 Suspend DeskbarMenu 挂起 @@ -27,7 +27,6 @@ Large PreferencesWindow 大 Auto-raise PreferencesWindow 自动 Recent folders: PreferencesWindow 最近文件夹: Show application expander PreferencesWindow 显示程序扩展 -Restart Tracker DeskbarMenu 重启文件浏览器 Close all WindowMenu 关闭所有 Deskbar preferences PreferencesWindow 桌面栏首选项 Mount DeskbarMenu 挂载 diff --git a/data/catalogs/apps/haikudepot/sv.catkeys b/data/catalogs/apps/haikudepot/sv.catkeys index da094b2bc7..ef9c7752e8 100644 --- a/data/catalogs/apps/haikudepot/sv.catkeys +++ b/data/catalogs/apps/haikudepot/sv.catkeys @@ -1,4 +1,4 @@ -1 swedish x-vnd.Haiku-HaikuDepot 4273323974 +1 swedish x-vnd.Haiku-HaikuDepot 2365524674 Name PackageListView Namn Available packages MainWindow Tillgängliga paket Open %DeskbarLink% PackageManager Öppna %DeskbarLink% @@ -84,6 +84,7 @@ Productivity Model Produktivitet No, quit HaikuDepot App Nej, avsluta HaikuDepot Authentication failed UserLoginWindow Autentisering misslyckades Logged in as %User% MainWindow Inloggad som %User% +9999.99 KiB PackageListView 9999.99 KiB Language RatePackageWindow Språk Size PackageListView Storlek Failed to create or update rating: %s\n RatePackageWindow Gick inte att skapa eller uppdatera betyg: %s\n diff --git a/data/catalogs/apps/mail/sv.catkeys b/data/catalogs/apps/mail/sv.catkeys index 86b20a8063..502a313125 100644 --- a/data/catalogs/apps/mail/sv.catkeys +++ b/data/catalogs/apps/mail/sv.catkeys @@ -1,7 +1,8 @@ -1 swedish x-vnd.Be-MAIL 4285843074 +1 swedish x-vnd.Be-MAIL 1865394837 View Mail Visa %d - Date Mail %d - Datum Attach attributes: Mail Bifoga attribut: +Unknown Mail Okänd Inconsistency occurred in the undo/redo buffer. Mail Inkonsekvens uppstod i ångra/gör om-bufferten. An error occurred trying to save the attachment. Mail Ett fel uppstod när den bifogade filen försökte sparas. Copy to new Mail Kopiera till ny @@ -146,6 +147,7 @@ sent B_USER_DIRECTORY/mail/sent skickat Put your favorite e-mail queries and query templates in this folder. Mail Lägg din e-post fråga och frågemall i denna folder. Spam Mail Skräppost Reply Mail Svara +Encoding Mail Kodning From: Mail Från: Couldn't open this signature. Sorry. Mail Kunde inte öppna denna signatur. Open draft Mail Öppna utkast diff --git a/data/catalogs/apps/mediaplayer/de.catkeys b/data/catalogs/apps/mediaplayer/de.catkeys index 41dcf8c2fb..c19a2c1f4f 100644 --- a/data/catalogs/apps/mediaplayer/de.catkeys +++ b/data/catalogs/apps/mediaplayer/de.catkeys @@ -1,4 +1,4 @@ -1 german x-vnd.Haiku-MediaPlayer 2711018042 +1 german x-vnd.Haiku-MediaPlayer 3805057997 raw audio MediaPlayer-InfoWin Raw-Audio Location MediaPlayer-InfoWin Ort 1.85 : 1 (American) MediaPlayer-Main 1,85 : 1 (Amerikanisch) @@ -114,6 +114,7 @@ Error: MediaPlayer-Main Fehler: Large MediaPlayer-SettingsWindow Groß Bottom of video MediaPlayer-SettingsWindow Unten im Video DrawBitmap MediaPlayer-InfoWin DrawBitmap +Total duration: %s MediaPlayer-PlaylistWindow Gesamtdauer: %s Stop MediaPlayer-Main Stopp MediaPlayer-InfoWin raw video MediaPlayer-InfoWin RAW-Video diff --git a/data/catalogs/apps/mediaplayer/fr.catkeys b/data/catalogs/apps/mediaplayer/fr.catkeys index aa5ab7215f..ff538fb810 100644 --- a/data/catalogs/apps/mediaplayer/fr.catkeys +++ b/data/catalogs/apps/mediaplayer/fr.catkeys @@ -1,4 +1,4 @@ -1 french x-vnd.Haiku-MediaPlayer 2711018042 +1 french x-vnd.Haiku-MediaPlayer 3805057997 raw audio MediaPlayer-InfoWin audio brut Location MediaPlayer-InfoWin Emplacement 1.85 : 1 (American) MediaPlayer-Main 1.85 : 1 (Panoramique américain) @@ -114,6 +114,7 @@ Error: MediaPlayer-Main Erreur : Large MediaPlayer-SettingsWindow Large Bottom of video MediaPlayer-SettingsWindow Au bas de la vidéo DrawBitmap MediaPlayer-InfoWin DrawBitmap +Total duration: %s MediaPlayer-PlaylistWindow Durée totale : %s Stop MediaPlayer-Main Arrêt MediaPlayer-InfoWin raw video MediaPlayer-InfoWin vidéo brute diff --git a/data/catalogs/apps/mediaplayer/pl.catkeys b/data/catalogs/apps/mediaplayer/pl.catkeys index be1f995496..e6b29a52cc 100644 --- a/data/catalogs/apps/mediaplayer/pl.catkeys +++ b/data/catalogs/apps/mediaplayer/pl.catkeys @@ -1,4 +1,4 @@ -1 polish x-vnd.Haiku-MediaPlayer 2711018042 +1 polish x-vnd.Haiku-MediaPlayer 3805057997 raw audio MediaPlayer-InfoWin czysty dźwięk Location MediaPlayer-InfoWin Położenie 1.85 : 1 (American) MediaPlayer-Main 1.85 : 1 (amerykańskie) @@ -114,6 +114,7 @@ Error: MediaPlayer-Main Błąd: Large MediaPlayer-SettingsWindow Duże Bottom of video MediaPlayer-SettingsWindow Na dole obrazu DrawBitmap MediaPlayer-InfoWin DrawBitmap +Total duration: %s MediaPlayer-PlaylistWindow Łączny czas trwania: %s Stop MediaPlayer-Main Zatrzymaj MediaPlayer-InfoWin raw video MediaPlayer-InfoWin czyste wideo diff --git a/data/catalogs/apps/mediaplayer/sv.catkeys b/data/catalogs/apps/mediaplayer/sv.catkeys index 41689800cb..efdc74e034 100644 --- a/data/catalogs/apps/mediaplayer/sv.catkeys +++ b/data/catalogs/apps/mediaplayer/sv.catkeys @@ -1,4 +1,4 @@ -1 swedish x-vnd.Haiku-MediaPlayer 2711018042 +1 swedish x-vnd.Haiku-MediaPlayer 3805057997 raw audio MediaPlayer-InfoWin raw-ljud Location MediaPlayer-InfoWin Plats 1.85 : 1 (American) MediaPlayer-Main 1.85 : 1 (Amerikanskt format) @@ -114,6 +114,7 @@ Error: MediaPlayer-Main Fel: Large MediaPlayer-SettingsWindow Stor Bottom of video MediaPlayer-SettingsWindow Botten av videon DrawBitmap MediaPlayer-InfoWin Rita Bitmap +Total duration: %s MediaPlayer-PlaylistWindow Totallängd: %s Stop MediaPlayer-Main Stopp MediaPlayer-InfoWin raw video MediaPlayer-InfoWin raw video diff --git a/data/catalogs/apps/terminal/sv.catkeys b/data/catalogs/apps/terminal/sv.catkeys index 9c23f93fae..77debab0e2 100644 --- a/data/catalogs/apps/terminal/sv.catkeys +++ b/data/catalogs/apps/terminal/sv.catkeys @@ -1,4 +1,4 @@ -1 swedish x-vnd.Haiku-Terminal 3583722223 +1 swedish x-vnd.Haiku-Terminal 2980268722 Not found. Terminal TermWindow Hittades ej. Switch Terminals Terminal TermWindow Växla terminal Change directory Terminal TermView Byt katalog @@ -85,10 +85,12 @@ Clear all Terminal TermWindow Rensa allt Text encoding Terminal TermWindow Teckenuppsättning Close window Terminal TermWindow Stäng fönster Copy absolute path Terminal TermView Kopiera absolut sökväg +Save as default Terminal TermWindow Spara som standard Set tab title Terminal TermWindow Ange fliktitel Settings… Terminal TermWindow Inställningar... Abort Terminal Shell Avbryt Open link Terminal TermView Öppna länk +Solarized Light Terminal colors scheme Solariserad ljus Edit Terminal TermWindow Redigera Color: Terminal AppearancePrefView Färg: The pattern specifying the window title. The following placeholders\ncan be used:\n Terminal TermWindow Mönstret bestämmer fönstrets namn. Följande alternativ finns:\n @@ -108,6 +110,7 @@ Find next Terminal TermWindow Sök nästa Close active tab Terminal TermWindow Stäng aktiv flik \t%%\t-\tThe character '%'.\n\t%<\t-\tStarts a section that will only be shown if a placeholder\n\t\t\tafterwards is not empty.\n\t%>\t-\tStarts a section that will only be shown if a placeholder\n\t\t\tbetween a previous %< section and this one is not empty.\n\t%-\t-\tEnds a %< or %> section.\n\nAny non alpha numeric character between '%' and the format letter will insert a space only\nif the placeholder value is not empty. It will add to the %< section. Terminal ToolTips \t%%\t-\tTecknet '%'.\n\t%<\t-\tStartar en section som bara visas om en platshållare\n\t\t\tefter är tom.\n\t%>\t-\tStartar en section som bara visas om en platshållare\n\t\t\tär mellan föregående %< section och denna är tom.\n\t%-\t-\tAvslutar en %< eller %> section.\n\nAlla tecken som inte är nummer mellan '%' och formaterings bokstaven kommer att ändras till ett mellanslag\nOm platshållaren inte är tom kommer det att läggas på en %< section. Paste Terminal TermWindow Klistra in +Solarized Dark Terminal colors scheme Solariserad mörk Shell Terminal TermWindow Skal Cancel Terminal TermView Avbryt Use default Terminal SetTitleWindow Använd förvald diff --git a/data/catalogs/apps/webpositive/sv.catkeys b/data/catalogs/apps/webpositive/sv.catkeys index 6116dd8dbf..3c164c9790 100644 --- a/data/catalogs/apps/webpositive/sv.catkeys +++ b/data/catalogs/apps/webpositive/sv.catkeys @@ -1,4 +1,4 @@ -1 swedish x-vnd.Haiku-WebPositive 3678460971 +1 swedish x-vnd.Haiku-WebPositive 1282126593 Show home button Settings Window Visa hem-knappen Username: Authentication Panel Användarnamn: Copy URL to clipboard Download Window Kopiera URL till urklipp @@ -16,6 +16,7 @@ Start page: Settings Window Start sida: History WebPositive Window Historik Error opening downloads folder Download Window Fel vid öppnande av nerladdnings foldern Paste WebPositive Window Klistra in +Expiration Cookie Manager Utgångstid Double-click or middle-click to open new tab. Tab Manager Dubbelklicka eller klicka på mittersta musknappen för att öppna en ny tab. Proxy username: Settings Window Proxyanvändarnamn: Save page as… WebPositive Window Spara sida som... @@ -23,10 +24,12 @@ Over %days left Download Window Över %days kvar Settings Settings Window Inställningar Confirmation WebPositive Window Bekräftelse Window WebPositive Window Fönster +Cookie manager Cookie Manager Kakhanterare Decrease size WebPositive Window Minska storlek Serif font: Settings Window Serif-typsnitt: Loading %url WebPositive Window Läser in %url Download aborted Download Window Nedladdning avbruten +Value Cookie Manager Värde Page source WebPositive Window Sidkälla Next WebPositive Window Nästa Find next WebPositive Window Sök nästa @@ -42,6 +45,7 @@ Auto-hide mouse pointer Settings Window Automatisk göm musmarkören Quit WebPositive Window Avsluta Full screen WebPositive Window Helskärm Open download error Download Window Öppna nerladdnings error +The cookie jar is empty! Cookie Manager Kakburken är tom! Standard font: Settings Window Standardtypsnitt: Find previous occurrence of search terms WebPositive Window find bar previous button tooltip Sök föregående förekomst av söktermerna Restart Download Window Starta om @@ -53,6 +57,7 @@ Open Download Window Öppna Reload WebPositive Window Läs om Downloads Download Window Hämtningar Sans serif font: Settings Window Sans serif-typsnitt: +Delete Cookie Manager Ta bort Forward WebPositive Window Framåt of Download Window ...as in '12kB of 256kB' av Revert Settings Window Återgå @@ -94,10 +99,12 @@ Find WebPositive Window Sök Find previous WebPositive Window Sök föregående Settings WebPositive Window Inställningar Script console WebPositive Window Skriptkonsol +Name Cookie Manager Namn Proxy server address: Settings Window Proxyserveradress: Proxy server port: Settings Window Port för proxyserver Bookmarks WebPositive Window Bokmärken Paste URL Bar Klistra in +Cookie manager WebPositive Window Kakhanterare /s) Download Window ...as in 'per second' /s) Hide password text Authentication Panel gjöm lösenordstext The quick brown fox jumps over the lazy dog. Font Selection view Don't translate this literally ! Use a phrase showing all chars from A to Z. Flygande bäckasiner söka strax hwila på mjuka tuvor. @@ -105,9 +112,11 @@ Over 1 minute left Download Window Över 1 minut kvar Open start page Settings Window Öppna startsida Continue downloads WebPositive Fortsätt ladda ner Cancel Download Window Avbryt +Flags Cookie Manager Flaggor Open search page Settings Window Öppna sök sidan Clear Console Window Töm Password: Authentication Panel Lösenord: +Path Cookie Manager Sökväg Back WebPositive Window Tillbaka New browser window Download Window Nytt fönster Today WebPositive Window Idag @@ -134,6 +143,7 @@ Open bookmarks confirmation WebPositive Window Öppna bokmärkes godkännande Remove missing Download Window Ta bort saknade Clone current page Settings Window Kopiera aktuella sida Do you want to open %addedCount bookmarks all at once? WebPositive Window Don't translate variable %addedCount. Vill du öppna %addedCount bokmärken på en gång? +Session cookie Cookie Manager Sessionskakor OK Authentication Panel OK Copy URL Bar Kopiera Download finished Download Window Nerladdning klar @@ -141,6 +151,7 @@ Show bookmark bar WebPositive Window Visa bokmärkslistan OK WebPositive Window OK Manage bookmarks WebPositive Window Hantera bokmärken A bookmark for this page (%bookmarkName) already exists. WebPositive Window Don't translate variable %bookmarkName Ett bokmärke (%bookmarkName) för denna sida finns redan. +Cookies for %s Cookie Manager Kakor för %s New windows: Settings Window Nytt fönster: %url finished WebPositive Window Loading URL finished. Don't translate variable %url. %url färdig Remove finished Download Window Ta bort färdiga diff --git a/data/catalogs/kits/tracker/be.catkeys b/data/catalogs/kits/tracker/be.catkeys index ff6751adce..01e4ae2dc2 100644 --- a/data/catalogs/kits/tracker/be.catkeys +++ b/data/catalogs/kits/tracker/be.catkeys @@ -1,4 +1,4 @@ -1 belarusian x-vnd.Haiku-libtracker 679062638 +1 belarusian x-vnd.Haiku-libtracker 2319437087 OK WidgetAttributeText ОК Add-ons FilePanelPriv Дапаўненні Desktop Model Дэсктоп @@ -425,7 +425,6 @@ Recent queries FindPanel Папярэднія запыты Mount ContainerWindow Змантаваць %capacity (%used used -- %free free) InfoWindow %capacity (%used выкарыстана -- %free свабодна) Cancel FSClipBoard Адмена -Restart Deskbar DeskWindow Перазапусціць Дэсктоп Cut more ContainerWindow Выразаць яшчэ Deleting: StatusWindow Выдаляецца: Empty Trash InfoWindow Ачысціць сметніцу diff --git a/data/catalogs/kits/tracker/de.catkeys b/data/catalogs/kits/tracker/de.catkeys index ac4100ac7e..5a2bf74bef 100644 --- a/data/catalogs/kits/tracker/de.catkeys +++ b/data/catalogs/kits/tracker/de.catkeys @@ -1,4 +1,4 @@ -1 german x-vnd.Haiku-libtracker 1787267522 +1 german x-vnd.Haiku-libtracker 3427641971 OK WidgetAttributeText OK Add-ons FilePanelPriv Add-ons Mount settings… ContainerWindow Einhänge-Einstellungen… @@ -427,7 +427,6 @@ Recent queries FindPanel Letzte Queries Mount ContainerWindow Einhängen %capacity (%used used -- %free free) InfoWindow %capacity (%used benutzt -- %free frei) Cancel FSClipBoard Abbrechen -Restart Deskbar DeskWindow Deskbar neu starten Cut more ContainerWindow Mehr ausschneiden Deleting: StatusWindow Löschen: Empty Trash InfoWindow Papierkorb leeren diff --git a/data/catalogs/kits/tracker/es.catkeys b/data/catalogs/kits/tracker/es.catkeys index 9202a316c5..48244e3c62 100644 --- a/data/catalogs/kits/tracker/es.catkeys +++ b/data/catalogs/kits/tracker/es.catkeys @@ -1,4 +1,4 @@ -1 spanish; castilian x-vnd.Haiku-libtracker 1032311269 +1 spanish; castilian x-vnd.Haiku-libtracker 2672685718 OK WidgetAttributeText OK Add-ons FilePanelPriv Añadidos Mount settings… ContainerWindow Opciones de montaje @@ -424,7 +424,6 @@ Recent queries FindPanel Consultas recientes Mount ContainerWindow Montar %capacity (%used used -- %free free) InfoWindow %capacity (%used usado -- %free libre) Cancel FSClipBoard Cancelar -Restart Deskbar DeskWindow Reiniciar barra de escritorio Cut more ContainerWindow Cortar más Deleting: StatusWindow Eliminando: Empty Trash InfoWindow Papelera Vacía diff --git a/data/catalogs/kits/tracker/fi.catkeys b/data/catalogs/kits/tracker/fi.catkeys index 41dcf31990..18155e5c4a 100644 --- a/data/catalogs/kits/tracker/fi.catkeys +++ b/data/catalogs/kits/tracker/fi.catkeys @@ -1,4 +1,4 @@ -1 finnish x-vnd.Haiku-libtracker 2004221275 +1 finnish x-vnd.Haiku-libtracker 3644595724 OK WidgetAttributeText Valmis Add-ons FilePanelPriv Lisäosat Mount settings… ContainerWindow Liittämisasetukset... @@ -434,7 +434,6 @@ Recent queries FindPanel Äskettäiset kyselyt Mount ContainerWindow Liitä %capacity (%used used -- %free free) InfoWindow %capacity (%used käytetty -- %free vapaana) Cancel FSClipBoard Peru -Restart Deskbar DeskWindow Käynnistä Työpöytäpalkki uudelleen Cut more ContainerWindow Leikkaa lisää Deleting: StatusWindow Poistetaan: Empty Trash InfoWindow Tyhjennä roskakori diff --git a/data/catalogs/kits/tracker/fr.catkeys b/data/catalogs/kits/tracker/fr.catkeys index 24073de9f8..fed2e09ed4 100644 --- a/data/catalogs/kits/tracker/fr.catkeys +++ b/data/catalogs/kits/tracker/fr.catkeys @@ -1,4 +1,4 @@ -1 french x-vnd.Haiku-libtracker 2004221275 +1 french x-vnd.Haiku-libtracker 3644595724 OK WidgetAttributeText OK Add-ons FilePanelPriv Extensions Mount settings… ContainerWindow Réglages du montage… @@ -434,7 +434,6 @@ Recent queries FindPanel Requêtes récentes Mount ContainerWindow Monter %capacity (%used used -- %free free) InfoWindow %capacity (%used utilisés -- %free libres) Cancel FSClipBoard Annuler -Restart Deskbar DeskWindow Redémarrer la Deskbar Cut more ContainerWindow Couper plus Deleting: StatusWindow Suppression : Empty Trash InfoWindow Vider la corbeille diff --git a/data/catalogs/kits/tracker/hu.catkeys b/data/catalogs/kits/tracker/hu.catkeys index a1728d3eb0..c77d10b51f 100644 --- a/data/catalogs/kits/tracker/hu.catkeys +++ b/data/catalogs/kits/tracker/hu.catkeys @@ -1,4 +1,4 @@ -1 hungarian x-vnd.Haiku-libtracker 2004221275 +1 hungarian x-vnd.Haiku-libtracker 3644595724 OK WidgetAttributeText Rendben Add-ons FilePanelPriv Kiegészítők Mount settings… ContainerWindow Csatolási beállítások… @@ -434,7 +434,6 @@ Recent queries FindPanel Előző keresések Mount ContainerWindow Csatolás %capacity (%used used -- %free free) InfoWindow %capacity (%used használt -- %free szabad) Cancel FSClipBoard Mégse -Restart Deskbar DeskWindow Asztalsáv újraindítása Cut more ContainerWindow Több kivágása Deleting: StatusWindow Törlés: Empty Trash InfoWindow Szemetes ürítése diff --git a/data/catalogs/kits/tracker/it.catkeys b/data/catalogs/kits/tracker/it.catkeys index b0ea3ce06c..9c812f433a 100644 --- a/data/catalogs/kits/tracker/it.catkeys +++ b/data/catalogs/kits/tracker/it.catkeys @@ -1,4 +1,4 @@ -1 italian x-vnd.Haiku-libtracker 4204393626 +1 italian x-vnd.Haiku-libtracker 1549800779 OK WidgetAttributeText OK Add-ons FilePanelPriv Add-on Mount settings… ContainerWindow Impostazioni di mount @@ -433,7 +433,6 @@ Recent queries FindPanel Ricerche recenti Mount ContainerWindow Monta %capacity (%used used -- %free free) InfoWindow %capacity (%used usato -- %free libero) Cancel FSClipBoard Annulla -Restart Deskbar DeskWindow Riavvia Deskbar Cut more ContainerWindow Taglia di più Deleting: StatusWindow Eliminazione: Empty Trash InfoWindow Svuota Cestino diff --git a/data/catalogs/kits/tracker/ja.catkeys b/data/catalogs/kits/tracker/ja.catkeys index d58c101164..2e67384d09 100644 --- a/data/catalogs/kits/tracker/ja.catkeys +++ b/data/catalogs/kits/tracker/ja.catkeys @@ -1,4 +1,4 @@ -1 japanese x-vnd.Haiku-libtracker 2004221275 +1 japanese x-vnd.Haiku-libtracker 3644595724 OK WidgetAttributeText OK Add-ons FilePanelPriv アドオン Mount settings… ContainerWindow マウント設定… @@ -434,7 +434,6 @@ Recent queries FindPanel 最近のクエリー Mount ContainerWindow マウント %capacity (%used used -- %free free) InfoWindow %capacity (%used 使用中 -- %free 使用可能) Cancel FSClipBoard 中止 -Restart Deskbar DeskWindow Deskbar を再起動 Cut more ContainerWindow さらに切り取る Deleting: StatusWindow 削除中: Empty Trash InfoWindow ごみ箱を空にする diff --git a/data/catalogs/kits/tracker/lt.catkeys b/data/catalogs/kits/tracker/lt.catkeys index b173b581f7..fdec0a25e0 100644 --- a/data/catalogs/kits/tracker/lt.catkeys +++ b/data/catalogs/kits/tracker/lt.catkeys @@ -1,4 +1,4 @@ -1 lithuanian x-vnd.Haiku-libtracker 679062638 +1 lithuanian x-vnd.Haiku-libtracker 2319437087 OK WidgetAttributeText Gerai Add-ons FilePanelPriv Priedai Desktop Model Darbalaukis @@ -425,7 +425,6 @@ Recent queries FindPanel Paskiausios užklausos Mount ContainerWindow Prijungti %capacity (%used used -- %free free) InfoWindow %capacity (užpildyta %used, laisva %free) Cancel FSClipBoard Atsisakyti -Restart Deskbar DeskWindow Perleisti Užduočių juostą Cut more ContainerWindow Iškirpti dar Deleting: StatusWindow Šalinama: Empty Trash InfoWindow Ištuštinti šiukšlinę diff --git a/data/catalogs/kits/tracker/pl.catkeys b/data/catalogs/kits/tracker/pl.catkeys index d7363ddf86..89bb591702 100644 --- a/data/catalogs/kits/tracker/pl.catkeys +++ b/data/catalogs/kits/tracker/pl.catkeys @@ -1,4 +1,4 @@ -1 polish x-vnd.Haiku-libtracker 2004221275 +1 polish x-vnd.Haiku-libtracker 3644595724 OK WidgetAttributeText OK Add-ons FilePanelPriv Wtyczki Mount settings… ContainerWindow Ustawienia montowania… @@ -434,7 +434,6 @@ Recent queries FindPanel Ostatnie zapytania Mount ContainerWindow Zamontuj %capacity (%used used -- %free free) InfoWindow %capacity (%used zajęte -- %free wolne) Cancel FSClipBoard Anuluj -Restart Deskbar DeskWindow Uruchom ponownie Deskbar Cut more ContainerWindow Wytnij więcej Deleting: StatusWindow Usuwanie: Empty Trash InfoWindow Opróżnij kosz diff --git a/data/catalogs/kits/tracker/pt_BR.catkeys b/data/catalogs/kits/tracker/pt_BR.catkeys index 5a64e00803..94a69885ff 100644 --- a/data/catalogs/kits/tracker/pt_BR.catkeys +++ b/data/catalogs/kits/tracker/pt_BR.catkeys @@ -1,4 +1,4 @@ -1 portuguese (brazil) x-vnd.Haiku-libtracker 2004221275 +1 portuguese (brazil) x-vnd.Haiku-libtracker 3644595724 OK WidgetAttributeText OK Add-ons FilePanelPriv Adicionais Mount settings… ContainerWindow Configurações de montagem... @@ -434,7 +434,6 @@ Recent queries FindPanel Consultas recentes Mount ContainerWindow Montar %capacity (%used used -- %free free) InfoWindow %capacity (%used utilizados -- %free livres) Cancel FSClipBoard Cancelar -Restart Deskbar DeskWindow Reiniciar a Deskbar Cut more ContainerWindow Cortar mais Deleting: StatusWindow Excluindo: Empty Trash InfoWindow Esvaziar Lixeira diff --git a/data/catalogs/kits/tracker/ro.catkeys b/data/catalogs/kits/tracker/ro.catkeys index 1c8981d520..83f89fc457 100644 --- a/data/catalogs/kits/tracker/ro.catkeys +++ b/data/catalogs/kits/tracker/ro.catkeys @@ -1,4 +1,4 @@ -1 romanian x-vnd.Haiku-libtracker 2004221275 +1 romanian x-vnd.Haiku-libtracker 3644595724 OK WidgetAttributeText OK Add-ons FilePanelPriv Module Mount settings… ContainerWindow Configurări montare... @@ -434,7 +434,6 @@ Recent queries FindPanel Interogări recente Mount ContainerWindow Montează %capacity (%used used -- %free free) InfoWindow %capacity (%used utilizat -- %free liber) Cancel FSClipBoard Anulează -Restart Deskbar DeskWindow Repornește Deskbar Cut more ContainerWindow Taie mai mult Deleting: StatusWindow Se șterge: Empty Trash InfoWindow Gunoi vid diff --git a/data/catalogs/kits/tracker/ru.catkeys b/data/catalogs/kits/tracker/ru.catkeys index 3b32a58dfb..df0402cae5 100644 --- a/data/catalogs/kits/tracker/ru.catkeys +++ b/data/catalogs/kits/tracker/ru.catkeys @@ -1,4 +1,4 @@ -1 russian x-vnd.Haiku-libtracker 2004221275 +1 russian x-vnd.Haiku-libtracker 3644595724 OK WidgetAttributeText ОК Add-ons FilePanelPriv Дополнения Mount settings… ContainerWindow Настройка подключения дисков… @@ -434,7 +434,6 @@ Recent queries FindPanel Недавние запросы Mount ContainerWindow Подключить %capacity (%used used -- %free free) InfoWindow %capacity (%used занято -- %free свободно) Cancel FSClipBoard Отмена -Restart Deskbar DeskWindow Перезапустить Deskbar Cut more ContainerWindow Вырезать ещё Deleting: StatusWindow Удаление: Empty Trash InfoWindow Очистить корзину diff --git a/data/catalogs/kits/tracker/sk.catkeys b/data/catalogs/kits/tracker/sk.catkeys index 4714c4ba3e..acae14f731 100644 --- a/data/catalogs/kits/tracker/sk.catkeys +++ b/data/catalogs/kits/tracker/sk.catkeys @@ -1,4 +1,4 @@ -1 slovak x-vnd.Haiku-libtracker 11653994 +1 slovak x-vnd.Haiku-libtracker 1652028443 OK WidgetAttributeText OK Add-ons FilePanelPriv Doplnky Desktop Model Plocha @@ -416,7 +416,6 @@ Mount DeskWindow Pripojiť Mount ContainerWindow Pripojiť %capacity (%used used -- %free free) InfoWindow %capacity (%used využité -- %free voľné) Cancel FSClipBoard Zrušiť -Restart Deskbar DeskWindow Reštartovať Panel Cut more ContainerWindow Vystrihnúť viac Deleting: StatusWindow Maže sa: Empty Trash InfoWindow Vyprázdniť Kôš diff --git a/data/catalogs/kits/tracker/sv.catkeys b/data/catalogs/kits/tracker/sv.catkeys index ff7c2596d4..2955c0458b 100644 --- a/data/catalogs/kits/tracker/sv.catkeys +++ b/data/catalogs/kits/tracker/sv.catkeys @@ -1,4 +1,4 @@ -1 swedish x-vnd.Haiku-libtracker 2004221275 +1 swedish x-vnd.Haiku-libtracker 3644595724 OK WidgetAttributeText OK Add-ons FilePanelPriv Tillägg Mount settings… ContainerWindow Monteringsinställningar... @@ -434,7 +434,6 @@ Recent queries FindPanel Senaste frågor Mount ContainerWindow Montera %capacity (%used used -- %free free) InfoWindow %capacity (%used använt -- %free ledigt) Cancel FSClipBoard Avbryt -Restart Deskbar DeskWindow Starta om Deskbaren Cut more ContainerWindow Klipp ut mer Deleting: StatusWindow Tar bort: Empty Trash InfoWindow Töm papperskorg diff --git a/data/catalogs/kits/tracker/uk.catkeys b/data/catalogs/kits/tracker/uk.catkeys index 2dbbee3b5c..6635b65420 100644 --- a/data/catalogs/kits/tracker/uk.catkeys +++ b/data/catalogs/kits/tracker/uk.catkeys @@ -1,4 +1,4 @@ -1 ukrainian x-vnd.Haiku-libtracker 679062638 +1 ukrainian x-vnd.Haiku-libtracker 2319437087 OK WidgetAttributeText Гаразд Add-ons FilePanelPriv Додатки Desktop Model Робочий стіл @@ -425,7 +425,6 @@ Recent queries FindPanel Недавні запити Mount ContainerWindow Підмонтувати %capacity (%used used -- %free free) InfoWindow %capacity (%used викор. -- %free вільно) Cancel FSClipBoard Відмінити -Restart Deskbar DeskWindow Перезапустити Deskbar Cut more ContainerWindow Вирізати ще Deleting: StatusWindow Видалення: Empty Trash InfoWindow Очистити Кошик diff --git a/data/catalogs/kits/tracker/zh_Hans.catkeys b/data/catalogs/kits/tracker/zh_Hans.catkeys index edfc946c49..fd510e3ac1 100644 --- a/data/catalogs/kits/tracker/zh_Hans.catkeys +++ b/data/catalogs/kits/tracker/zh_Hans.catkeys @@ -1,4 +1,4 @@ -1 english x-vnd.Haiku-libtracker 2004221275 +1 english x-vnd.Haiku-libtracker 3644595724 OK WidgetAttributeText 确定 Add-ons FilePanelPriv 附加组件 Mount settings… ContainerWindow 挂载设置... @@ -434,7 +434,6 @@ Recent queries FindPanel 最近查询 Mount ContainerWindow 挂载 %capacity (%used used -- %free free) InfoWindow %capacity(已用 %used -- 空闲 %free) Cancel FSClipBoard 取消 -Restart Deskbar DeskWindow 重启桌面栏 Cut more ContainerWindow 更多剪切 Deleting: StatusWindow 删除: Empty Trash InfoWindow 清空垃圾箱 diff --git a/data/catalogs/preferences/appearance/de.catkeys b/data/catalogs/preferences/appearance/de.catkeys index 99055020de..c20f31731a 100644 --- a/data/catalogs/preferences/appearance/de.catkeys +++ b/data/catalogs/preferences/appearance/de.catkeys @@ -1,4 +1,4 @@ -1 german x-vnd.Haiku-Appearance 727801787 +1 german x-vnd.Haiku-Appearance 1140137500 Plain font: Font view Normal: Control highlight Colors tab Steuerelement - Ausgewählt Control border Colors tab Steuerelement - Rahmen @@ -6,11 +6,14 @@ Antialiasing type: AntialiasingSettingsView Kantenglättungstyp: Shadow Colors tab Schatten On AntialiasingSettingsView Ein Defaults APRWindow Standardwerte +Link hover Colors tab Link (unter Mauszeiger) Grayscale AntialiasingSettingsView Graustufen Shine Colors tab Glanz About DecorSettingsView Über About decorator DecorSettingsView Dekorator Info Off AntialiasingSettingsView Aus +Link text Colors tab Link Text +Link active Colors tab Link (geklickt) Choose Decorator DecorSettingsView Dekorator wählen Success Colors tab Erfolg Inactive window tab text Colors tab Reiter - Text (inaktiv) @@ -36,6 +39,7 @@ List background Colors tab Liste - Hintergrund OK DecorSettingsView OK Control mark Colors tab Steuerelement - Markierung Size: Font Selection view Größe: +Link visited Colors tab Link (besucht) Decorator: DecorSettingsView Dekorator: Selected list item background Colors tab Liste - Hintergrund (ausgewählt) Panel background Colors tab Oberfläche - Hintergrund diff --git a/data/catalogs/preferences/appearance/fr.catkeys b/data/catalogs/preferences/appearance/fr.catkeys index 71dcca99c6..4861ff743e 100644 --- a/data/catalogs/preferences/appearance/fr.catkeys +++ b/data/catalogs/preferences/appearance/fr.catkeys @@ -1,4 +1,4 @@ -1 french x-vnd.Haiku-Appearance 727801787 +1 french x-vnd.Haiku-Appearance 1140137500 Plain font: Font view Police simple : Control highlight Colors tab Mise en valeur de contrôle Control border Colors tab Bordure des contrôles @@ -6,11 +6,14 @@ Antialiasing type: AntialiasingSettingsView Type de lissage : Shadow Colors tab Ombre On AntialiasingSettingsView Activé Defaults APRWindow Défaut +Link hover Colors tab Lien survolé Grayscale AntialiasingSettingsView Niveaux de gris Shine Colors tab Lumière About DecorSettingsView À propos About decorator DecorSettingsView À propos du décorateur Off AntialiasingSettingsView Désactivé +Link text Colors tab Texte du lien +Link active Colors tab Lien actif Choose Decorator DecorSettingsView Choisir un décorateur Success Colors tab Réussite Inactive window tab text Colors tab Texte des titres de fenêtres inactives @@ -36,6 +39,7 @@ List background Colors tab Arrière-plan de la liste OK DecorSettingsView OK Control mark Colors tab Point de contrôle Size: Font Selection view Taille : +Link visited Colors tab Lien visité Decorator: DecorSettingsView Décorateur : Selected list item background Colors tab Arrière plan de l’élément sélectionnée dans la liste Panel background Colors tab Arrière plan des panneaux diff --git a/data/catalogs/preferences/appearance/pl.catkeys b/data/catalogs/preferences/appearance/pl.catkeys index e92a676f3f..346df20c72 100644 --- a/data/catalogs/preferences/appearance/pl.catkeys +++ b/data/catalogs/preferences/appearance/pl.catkeys @@ -1,4 +1,4 @@ -1 polish x-vnd.Haiku-Appearance 727801787 +1 polish x-vnd.Haiku-Appearance 1140137500 Plain font: Font view Font zwykły: Control highlight Colors tab Podkreślenie kontrolki Control border Colors tab Obramowanie kontrolki @@ -6,11 +6,14 @@ Antialiasing type: AntialiasingSettingsView Typ antyaliasingu: Shadow Colors tab Cień On AntialiasingSettingsView Włącz Defaults APRWindow Przywróć domyślne +Link hover Colors tab Zaznaczony odnośnik Grayscale AntialiasingSettingsView Skala odcieni szarości Shine Colors tab Połysk About DecorSettingsView Informacje About decorator DecorSettingsView O dekoratorze Off AntialiasingSettingsView Wyłącz +Link text Colors tab Tekst odnośnika +Link active Colors tab Aktywny odnośnik Choose Decorator DecorSettingsView Wybierz Dekorator Success Colors tab Sukces Inactive window tab text Colors tab Tekst nieaktywnej zakładki okna @@ -36,6 +39,7 @@ List background Colors tab Tło listy OK DecorSettingsView OK Control mark Colors tab Znak sterujący Size: Font Selection view Rozmiar: +Link visited Colors tab Odwiedzony odnośnik Decorator: DecorSettingsView Dekorator: Selected list item background Colors tab Tło zaznaczonego elementu listy Panel background Colors tab Tło panelu diff --git a/data/catalogs/preferences/appearance/sv.catkeys b/data/catalogs/preferences/appearance/sv.catkeys index 74b777a745..4c6e7dd131 100644 --- a/data/catalogs/preferences/appearance/sv.catkeys +++ b/data/catalogs/preferences/appearance/sv.catkeys @@ -1,4 +1,4 @@ -1 swedish x-vnd.Haiku-Appearance 727801787 +1 swedish x-vnd.Haiku-Appearance 1140137500 Plain font: Font view Vanlig font: Control highlight Colors tab Framhävd kontroll Control border Colors tab Kontrollkant @@ -6,11 +6,14 @@ Antialiasing type: AntialiasingSettingsView Kantutjämningstyp: Shadow Colors tab Skugga On AntialiasingSettingsView På Defaults APRWindow Förval +Link hover Colors tab Hovrande länk Grayscale AntialiasingSettingsView Gråskala Shine Colors tab Ljusstyrka About DecorSettingsView Om About decorator DecorSettingsView Om decorator Off AntialiasingSettingsView Av +Link text Colors tab Länktext +Link active Colors tab Aktiv länk Choose Decorator DecorSettingsView Välj dekor Success Colors tab Framgång Inactive window tab text Colors tab Fliktext för inaktiva fönster @@ -36,6 +39,7 @@ List background Colors tab Lista bakgrund OK DecorSettingsView OK Control mark Colors tab Kontroll märke Size: Font Selection view Storlek: +Link visited Colors tab Besök länk Decorator: DecorSettingsView Dekor: Selected list item background Colors tab Bakgrund för valt menyalternativ Panel background Colors tab Panelbakgrund diff --git a/data/catalogs/preferences/media/sv.catkeys b/data/catalogs/preferences/media/sv.catkeys index a08fccfc88..10a13669a5 100644 --- a/data/catalogs/preferences/media/sv.catkeys +++ b/data/catalogs/preferences/media/sv.catkeys @@ -1,4 +1,4 @@ -1 swedish x-vnd.Haiku-Media 3383826947 +1 swedish x-vnd.Haiku-Media 4205337498 Couldn't add volume control in Deskbar: %s\n Media views Kunde inte lägga till volymkontroll i Deskbar: %s\n Video input: Media views Videoingång: Warning! Media Window Varning! @@ -12,6 +12,7 @@ Could not connect to the media server.\nWould you like to start it ? Media Windo Restart media services Media views Starta om mediatjänsterna Couldn't remove volume control in Deskbar: %s\n Media views Kunde inte ta bort volymkontrollen från Deskbar: %s\n Media System name Media +Quitting Media now will stop the restarting of the media services. Flaky or unavailable media functionality is the likely result. Media Window Avsluta Media nu kommer att starta om media servicen. Förmodligen kommer du att uppleva hispig/konstig eller otillgänglig media fuktionalitet. Audio mixer Media Window Ljudmixer This hardware has no controls. Media Window Hårdvaran saknar kontroller. Audio output: Media views Ljudutgång: diff --git a/data/catalogs/preferences/network/sv.catkeys b/data/catalogs/preferences/network/sv.catkeys index 88e258b156..ce0dfd8f03 100644 --- a/data/catalogs/preferences/network/sv.catkeys +++ b/data/catalogs/preferences/network/sv.catkeys @@ -1,31 +1,48 @@ -1 swedish x-vnd.Haiku-Network 950262959 +1 swedish x-vnd.Haiku-Network 2512967175 Static IntefaceAddressView Statisk EAP EAP protected network EAP Services NetworkWindow Tjänster +no link InterfaceListItem Ingen länk WPA2 WPA2 protected network WPA2 +Choose automatically IntefaceView Välj automatiskt +connected IntefaceView ansluten +Ethernet device InterfaceListItem Ethernetenhet The netmask defines your local network IntefaceAddressView Netmasken definierar ditt lokala nätverk %name% (%authenticationMode%) WirelessNetworkMenuItem %name% (%authenticationMode%) Network NetworkWindow Nätverk Show network status in Deskbar NetworkWindow Visa nätverksstatus i Deskbar The method for obtaining an IP address IntefaceAddressView Metoden för att få en IP adress +connected InterfaceListItem ansluten +disabled InterfaceListItem inaktiverad Dial Up NetworkWindow Uppringd Apply IntefaceAddressView Använd Installing NetworkStatus in Deskbar failed: %s NetworkWindow Installatera NetworkStatus i Deskbaren misslyckades: %s +MAC address: IntefaceView MAC-adress +Wireless device InterfaceListItem Trådlös enhet Disabled IntefaceAddressView Inaktiverad +Renegotiate IntefaceView Omförhandla Ok NetworkWindow OK +Network: IntefaceView Nätverk: launch error NetworkWindow Startfel Other NetworkWindow Andra Automatic IntefaceAddressView Automatisk Gateway: IntefaceAddressView Förmedlingsnod: Revert NetworkWindow Återställ Enable ServiceView Aktivera +disconnected IntefaceView frånkopplad +Status: IntefaceView Status: +Link speed: IntefaceView Länkhastighet: Your gateway to the internet IntefaceAddressView Din förmedlingsnod till internet New… NetworkWindow Ny… DHCP IntefaceAddressView DHCP Mode: IntefaceAddressView Läge: WPA WPA protected network WPA +Sent: IntefaceView Skickat: open Open network öppna IP Address: IntefaceAddressView IP-adress: +Received: IntefaceView Mottaget: +Disable IntefaceView Inaktivera + IntefaceView Netmask: IntefaceAddressView Nätmask: Disable ServiceView Inaktivera Your IP address IntefaceAddressView Din IP-adress From 69f2466090f4043b8ae67677c939a16e1a30563c Mon Sep 17 00:00:00 2001 From: Adrien Destugues Date: Sat, 16 Jan 2016 18:52:26 +0100 Subject: [PATCH 159/242] IMAP: Fix exception message. --- .../mail_daemon/inbound_protocols/imap/imap_lib/Response.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/Response.cpp b/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/Response.cpp index c8595846a8..76182b8132 100644 --- a/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/Response.cpp +++ b/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/Response.cpp @@ -706,7 +706,7 @@ Response::Read(BDataIO& stream) } if (bytesRead == 0) - throw ParseException("Unexpected end of string"); + throw ParseException("Unexpected end of stream"); throw StreamException(bytesRead); } From b8dd04e42808ada06d91000e06bdc9eecdc05893 Mon Sep 17 00:00:00 2001 From: Alexander von Gluck IV Date: Sat, 16 Jan 2016 21:56:59 -0600 Subject: [PATCH 160/242] ahci: Handle FBS on soft reset (unused still) * Report FBS cap for #9098 * Should be 0-impact for now --- .../busses/scsi/ahci/ahci_controller.cpp | 3 +++ .../kernel/busses/scsi/ahci/ahci_port.cpp | 19 +++++++++++++++++-- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/add-ons/kernel/busses/scsi/ahci/ahci_controller.cpp b/src/add-ons/kernel/busses/scsi/ahci/ahci_controller.cpp index fed79e9530..fea24f0720 100644 --- a/src/add-ons/kernel/busses/scsi/ahci/ahci_controller.cpp +++ b/src/add-ons/kernel/busses/scsi/ahci/ahci_controller.cpp @@ -178,6 +178,9 @@ AHCIController::Init() TRACE("cap: Enclosure Management Supported: %s\n", (fRegs->cap & CAP_EMS) ? "yes" : "no"); + TRACE("cap: FIS-based Switching Control: %s\n", + (fRegs->cap & CAP_FBSS) ? "yes" : "no"); + TRACE("cap: Supports Command List Override: %s\n", (fRegs->cap & CAP_SCLO) ? "yes" : "no"); TRACE("cap: Supports Staggered Spin-up: %s\n", diff --git a/src/add-ons/kernel/busses/scsi/ahci/ahci_port.cpp b/src/add-ons/kernel/busses/scsi/ahci/ahci_port.cpp index d140a01dd4..8006793c21 100644 --- a/src/add-ons/kernel/busses/scsi/ahci/ahci_port.cpp +++ b/src/add-ons/kernel/busses/scsi/ahci/ahci_port.cpp @@ -248,8 +248,6 @@ AHCIPort::SoftReset() // start port Enable(); - // TODO: If FBS Enable, clear PxFBS.EN prior to issuing sw reset - if (wait_until_clear(&fRegs->tfd, ATA_STATUS_BUSY | ATA_STATUS_DATA_REQUEST, 1000000) < B_OK) { ERROR("%s: port %d still busy. Moving on to port reset.\n", @@ -259,6 +257,16 @@ AHCIPort::SoftReset() // TODO: Just can't get AHCI software reset issued properly. #if 0 + // Spec v1.2.0, §9.3.9 + // If FBS supported + enabled, disable + bool fbsDisabled = false; + if ((fRegs->cap & CAP_FBSS) != 0) { + if ((fRegs->fbs & PORT_FBS_EN) != 0) { + fbsDisabled = true; + fRegs->fbs &= ~PORT_FBS_EN; + } + } + // set command table soft reset bit fCommandTable->cfis[2] |= ATA_DEVICE_CONTROL_SOFT_RESET; @@ -281,11 +289,18 @@ AHCIPort::SoftReset() if (wait_until_clear(&fRegs->ci, 0, 1000000) < B_OK) { TRACE("%s: port %d: device is busy\n", __func__, fIndex); + + // Before we bail-out. Re-enable FBS if we disabled it + if (fbsDisabled) + fRegs->fbs |= PORT_FBS_EN; return PortReset(); } fCommandTable->cfis[2] &= ~ATA_DEVICE_CONTROL_SOFT_RESET; + if (fbsDisabled) + fRegs->fbs |= PORT_FBS_EN; + if (wait_until_clear(&fRegs->tfd, ATA_STATUS_BUSY | ATA_STATUS_DATA_REQUEST, 1000000) < B_OK) { ERROR("%s: port %d software reset failed. Doing port reset...\n", From 9909ce416de3d85cb4ca689201703c80423a0d37 Mon Sep 17 00:00:00 2001 From: looncraz Date: Fri, 15 Jan 2016 10:05:03 +0000 Subject: [PATCH 161/242] BSlider - Don't Use Control Mark Color This returns BSlider to its original appearance. Signed-off-by: Adrien Destugues Fixes #12578. --- src/kits/interface/Slider.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/kits/interface/Slider.cpp b/src/kits/interface/Slider.cpp index fa1ac56cc7..bcd7edd3b1 100644 --- a/src/kits/interface/Slider.cpp +++ b/src/kits/interface/Slider.cpp @@ -1015,7 +1015,7 @@ BSlider::DrawHashMarks() BView* view = OffscreenView(); if (be_control_look != NULL) { - rgb_color base = ui_color(B_CONTROL_MARK_COLOR); + rgb_color base = ui_color(B_PANEL_BACKGROUND_COLOR); uint32 flags = be_control_look->Flags(this); be_control_look->DrawSliderHashMarks(view, frame, frame, base, fHashMarkCount, fHashMarks, flags, fOrientation); From bb0ca427dfb92ec6c7cf93389e05e3b4d8a050e8 Mon Sep 17 00:00:00 2001 From: Kostadin Damyanov Date: Tue, 12 Jan 2016 10:47:22 +0200 Subject: [PATCH 162/242] unittests: link libcppunit.so to the unittests directory Signed-off-by: Adrien Destugues Fixes #12595. --- src/tools/cppunit/Jamfile | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/tools/cppunit/Jamfile b/src/tools/cppunit/Jamfile index 3e75287a2e..ffb20ade3a 100644 --- a/src/tools/cppunit/Jamfile +++ b/src/tools/cppunit/Jamfile @@ -55,3 +55,11 @@ SharedLibrary libcppunit.so : if $(OS) = BEOS && $(OSPLAT) != PPC { LinkAgainst libcppunit.so : libelfsymbolpatcher.a ; } + +# To run the tests we need the cppunit library. +{ + local target = libcppunit.so ; + MakeLocate $(target) : $(TARGET_UNIT_TEST_LIB_DIR) ; + RelSymLink $(target) : libcppunit.so ; + Depends libcppunit.so : $(target) ; +} From b64e8511cdfaa0e99d35c66338fba97e9c438c1e Mon Sep 17 00:00:00 2001 From: Fredrik Holmqvist Date: Sun, 17 Jan 2016 21:55:44 +0100 Subject: [PATCH 163/242] Update ACPICA to 20160108, removed common. Changelog: https://acpica.org/sites/acpica/files/changes_29.txt * This is based on the upgrade waddlesplash aborted due to a bug in ACPICA which has since been fixed. * Some ACPICA code is excluded until needed. (You may want to compare our acpica dir to ACPICA if you are missing functions.) --- .../kernel/bus_managers/acpi/BusManager.cpp | 17 - src/add-ons/kernel/bus_managers/acpi/Jamfile | 15 +- .../acpi/acpica/common/acgetline.c | 512 --- .../bus_managers/acpi/acpica/common/adfile.c | 430 -- .../bus_managers/acpi/acpica/common/adisasm.c | 1056 ----- .../bus_managers/acpi/acpica/common/adwalk.c | 1147 ----- .../bus_managers/acpi/acpica/common/ahids.c | 312 -- .../acpi/acpica/common/ahpredef.c | 441 -- .../bus_managers/acpi/acpica/common/ahtable.c | 222 - .../bus_managers/acpi/acpica/common/ahuuids.c | 204 - .../bus_managers/acpi/acpica/common/cmfsize.c | 185 - .../acpi/acpica/common/dmextern.c | 1462 ------- .../acpi/acpica/common/dmrestag.c | 1120 ----- .../bus_managers/acpi/acpica/common/dmtable.c | 1590 ------- .../acpi/acpica/common/dmtbdump.c | 3702 ----------------- .../acpi/acpica/common/dmtbinfo.c | 2990 ------------- .../bus_managers/acpi/acpica/common/getopt.c | 343 -- .../acpica/components/dispatcher/dsargs.c | 36 +- .../acpica/components/dispatcher/dscontrol.c | 51 +- .../acpica/components/dispatcher/dsdebug.c | 11 +- .../acpica/components/dispatcher/dsfield.c | 85 +- .../acpica/components/dispatcher/dsinit.c | 16 +- .../acpica/components/dispatcher/dsmethod.c | 75 +- .../acpica/components/dispatcher/dsmthdat.c | 41 +- .../acpica/components/dispatcher/dsobject.c | 68 +- .../acpica/components/dispatcher/dsopcode.c | 48 +- .../acpica/components/dispatcher/dsutils.c | 47 +- .../acpica/components/dispatcher/dswexec.c | 53 +- .../acpica/components/dispatcher/dswload.c | 34 +- .../acpica/components/dispatcher/dswload2.c | 42 +- .../acpica/components/dispatcher/dswscope.c | 3 +- .../acpica/components/dispatcher/dswstate.c | 11 +- .../acpi/acpica/components/events/evevent.c | 16 +- .../acpi/acpica/components/events/evglock.c | 13 +- .../acpi/acpica/components/events/evgpe.c | 18 +- .../acpi/acpica/components/events/evgpeblk.c | 17 +- .../acpi/acpica/components/events/evgpeinit.c | 30 +- .../acpi/acpica/components/events/evgpeutil.c | 9 +- .../acpi/acpica/components/events/evhandler.c | 174 +- .../acpi/acpica/components/events/evmisc.c | 7 +- .../acpi/acpica/components/events/evregion.c | 136 +- .../acpi/acpica/components/events/evrgnini.c | 123 +- .../acpi/acpica/components/events/evsci.c | 6 +- .../acpi/acpica/components/events/evxface.c | 12 +- .../acpi/acpica/components/events/evxfevnt.c | 30 +- .../acpi/acpica/components/events/evxfgpe.c | 10 +- .../acpi/acpica/components/events/evxfregn.c | 44 +- .../acpica/components/executer/exconfig.c | 45 +- .../acpica/components/executer/exconvrt.c | 29 +- .../acpica/components/executer/excreate.c | 33 +- .../acpi/acpica/components/executer/exdebug.c | 462 +- .../acpi/acpica/components/executer/exdump.c | 51 +- .../acpi/acpica/components/executer/exfield.c | 84 +- .../acpi/acpica/components/executer/exfldio.c | 65 +- .../acpi/acpica/components/executer/exmisc.c | 78 +- .../acpi/acpica/components/executer/exmutex.c | 79 +- .../acpi/acpica/components/executer/exnames.c | 10 +- .../acpica/components/executer/exoparg1.c | 73 +- .../acpica/components/executer/exoparg2.c | 43 +- .../acpica/components/executer/exoparg3.c | 27 +- .../acpica/components/executer/exoparg6.c | 27 +- .../acpi/acpica/components/executer/exprep.c | 62 +- .../acpica/components/executer/exregion.c | 13 +- .../acpica/components/executer/exresnte.c | 12 +- .../acpica/components/executer/exresolv.c | 28 +- .../acpi/acpica/components/executer/exresop.c | 40 +- .../acpi/acpica/components/executer/exstore.c | 148 +- .../acpica/components/executer/exstoren.c | 11 +- .../acpica/components/executer/exstorob.c | 9 +- .../acpica/components/executer/exsystem.c | 10 +- .../acpi/acpica/components/executer/extrace.c | 2 +- .../acpi/acpica/components/executer/exutils.c | 12 +- .../acpi/acpica/components/hardware/hwacpi.c | 12 +- .../acpica/components/hardware/hwesleep.c | 7 +- .../acpi/acpica/components/hardware/hwgpe.c | 14 +- .../acpi/acpica/components/hardware/hwpci.c | 2 +- .../acpi/acpica/components/hardware/hwregs.c | 41 +- .../acpi/acpica/components/hardware/hwsleep.c | 18 +- .../acpi/acpica/components/hardware/hwtimer.c | 2 +- .../acpi/acpica/components/hardware/hwvalid.c | 2 +- .../acpi/acpica/components/hardware/hwxface.c | 50 +- .../acpica/components/hardware/hwxfsleep.c | 9 +- .../acpica/components/namespace/nsaccess.c | 14 +- .../acpica/components/namespace/nsalloc.c | 7 +- .../acpica/components/namespace/nsarguments.c | 8 +- .../acpica/components/namespace/nsconvert.c | 100 +- .../acpi/acpica/components/namespace/nsdump.c | 43 +- .../acpica/components/namespace/nsdumpdv.c | 6 +- .../acpi/acpica/components/namespace/nseval.c | 17 +- .../acpi/acpica/components/namespace/nsinit.c | 12 +- .../acpi/acpica/components/namespace/nsload.c | 29 +- .../acpica/components/namespace/nsnames.c | 17 +- .../acpica/components/namespace/nsobject.c | 8 +- .../acpica/components/namespace/nsparse.c | 15 +- .../acpica/components/namespace/nspredef.c | 4 +- .../acpica/components/namespace/nsprepkg.c | 23 +- .../acpica/components/namespace/nsrepair.c | 27 +- .../acpica/components/namespace/nsrepair2.c | 35 +- .../acpica/components/namespace/nssearch.c | 6 +- .../acpica/components/namespace/nsutils.c | 23 +- .../acpi/acpica/components/namespace/nswalk.c | 14 +- .../acpica/components/namespace/nsxfeval.c | 26 +- .../acpica/components/namespace/nsxfname.c | 58 +- .../acpica/components/namespace/nsxfobj.c | 9 +- .../acpi/acpica/components/parser/psargs.c | 32 +- .../acpi/acpica/components/parser/psloop.c | 12 +- .../acpi/acpica/components/parser/psobject.c | 9 +- .../acpi/acpica/components/parser/psopcode.c | 4 +- .../acpi/acpica/components/parser/psopinfo.c | 2 +- .../acpi/acpica/components/parser/psparse.c | 49 +- .../acpi/acpica/components/parser/psscope.c | 12 +- .../acpi/acpica/components/parser/pstree.c | 2 +- .../acpi/acpica/components/parser/psutils.c | 9 +- .../acpi/acpica/components/parser/pswalk.c | 3 +- .../acpi/acpica/components/parser/psxface.c | 11 +- .../acpi/acpica/components/resources/rsaddr.c | 29 +- .../acpi/acpica/components/resources/rscalc.c | 65 +- .../acpica/components/resources/rscreate.c | 51 +- .../acpi/acpica/components/resources/rsinfo.c | 2 +- .../acpi/acpica/components/resources/rsio.c | 2 +- .../acpi/acpica/components/resources/rsirq.c | 2 +- .../acpi/acpica/components/resources/rslist.c | 27 +- .../acpica/components/resources/rsmemory.c | 2 +- .../acpi/acpica/components/resources/rsmisc.c | 53 +- .../acpica/components/resources/rsserial.c | 2 +- .../acpica/components/resources/rsutils.c | 67 +- .../acpica/components/resources/rsxface.c | 17 +- .../acpi/acpica/components/tables/tbdata.c | 11 +- .../acpi/acpica/components/tables/tbfadt.c | 10 +- .../acpi/acpica/components/tables/tbfind.c | 10 +- .../acpi/acpica/components/tables/tbinstal.c | 15 +- .../acpi/acpica/components/tables/tbprint.c | 7 +- .../acpi/acpica/components/tables/tbutils.c | 59 +- .../acpi/acpica/components/tables/tbxface.c | 20 +- .../acpi/acpica/components/tables/tbxfload.c | 22 +- .../acpi/acpica/components/tables/tbxfroot.c | 26 +- .../acpica/components/utilities/utaddress.c | 4 +- .../acpica/components/utilities/utalloc.c | 17 +- .../acpica/components/utilities/utbuffer.c | 2 +- .../acpica/components/utilities/utcache.c | 6 +- .../acpi/acpica/components/utilities/utclib.c | 2 +- .../acpi/acpica/components/utilities/utcopy.c | 122 +- .../acpica/components/utilities/utdebug.c | 2 +- .../acpica/components/utilities/utdecode.c | 55 +- .../acpica/components/utilities/utdelete.c | 13 +- .../acpica/components/utilities/uterror.c | 10 +- .../acpi/acpica/components/utilities/uteval.c | 10 +- .../acpica/components/utilities/utexcep.c | 2 +- .../acpica/components/utilities/utfileio.c | 431 -- .../acpica/components/utilities/utglobal.c | 2 +- .../acpi/acpica/components/utilities/uthex.c | 4 +- .../acpi/acpica/components/utilities/utids.c | 95 +- .../acpi/acpica/components/utilities/utinit.c | 19 +- .../acpi/acpica/components/utilities/utlock.c | 2 +- .../acpi/acpica/components/utilities/utmath.c | 35 +- .../acpi/acpica/components/utilities/utmisc.c | 32 +- .../acpica/components/utilities/utmutex.c | 33 +- .../acpica/components/utilities/utnonansi.c | 6 +- .../acpica/components/utilities/utobject.c | 32 +- .../acpi/acpica/components/utilities/utosi.c | 16 +- .../acpica/components/utilities/utownerid.c | 13 +- .../acpica/components/utilities/utpredef.c | 8 +- .../acpica/components/utilities/utprint.c | 18 +- .../acpica/components/utilities/utresrc.c | 19 +- .../acpica/components/utilities/utstate.c | 5 +- .../acpica/components/utilities/utstring.c | 12 +- .../acpica/components/utilities/uttrack.c | 83 +- .../acpi/acpica/components/utilities/utuuid.c | 10 +- .../acpica/components/utilities/utxface.c | 23 +- .../acpica/components/utilities/utxferror.c | 6 +- .../acpica/components/utilities/utxfinit.c | 77 +- .../acpica/components/utilities/utxfmutex.c | 6 +- .../bus_managers/acpi/acpica/include/acapps.h | 93 +- .../acpi/acpica/include/acbuffer.h | 2 +- .../acpi/acpica/include/accommon.h | 2 +- .../acpi/acpica/include/acconfig.h | 2 +- .../acpi/acpica/include/acdebug.h | 22 +- .../acpi/acpica/include/acdisasm.h | 35 +- .../acpi/acpica/include/acdispat.h | 2 +- .../acpi/acpica/include/acevents.h | 20 +- .../acpi/acpica/include/acexcep.h | 14 +- .../acpi/acpica/include/acglobal.h | 15 +- .../acpi/acpica/include/achware.h | 2 +- .../acpi/acpica/include/acinterp.h | 2 +- .../acpi/acpica/include/aclocal.h | 37 +- .../acpi/acpica/include/acmacros.h | 14 +- .../acpi/acpica/include/acnames.h | 2 +- .../acpi/acpica/include/acnamesp.h | 11 +- .../acpi/acpica/include/acobject.h | 9 +- .../acpi/acpica/include/acopcode.h | 16 +- .../acpi/acpica/include/acoutput.h | 2 +- .../acpi/acpica/include/acparser.h | 9 +- .../bus_managers/acpi/acpica/include/acpi.h | 2 +- .../acpi/acpica/include/acpiosxf.h | 5 +- .../bus_managers/acpi/acpica/include/acpixf.h | 41 +- .../acpi/acpica/include/acpredef.h | 2 +- .../acpi/acpica/include/acresrc.h | 2 +- .../acpi/acpica/include/acrestyp.h | 2 +- .../acpi/acpica/include/acstruct.h | 2 +- .../acpi/acpica/include/actables.h | 8 +- .../bus_managers/acpi/acpica/include/actbl.h | 2 +- .../bus_managers/acpi/acpica/include/actbl1.h | 4 +- .../bus_managers/acpi/acpica/include/actbl2.h | 2 +- .../bus_managers/acpi/acpica/include/actbl3.h | 2 +- .../acpi/acpica/include/actypes.h | 8 +- .../acpi/acpica/include/acutils.h | 32 +- .../bus_managers/acpi/acpica/include/acuuid.h | 2 +- .../acpi/acpica/include/amlcode.h | 18 +- .../acpi/acpica/include/amlresrc.h | 2 +- .../acpi/acpica/include/platform/acenv.h | 9 +- .../acpi/acpica/include/platform/acenvex.h | 2 +- .../acpi/acpica/include/platform/acgcc.h | 2 +- .../acpi/acpica/include/platform/achaiku.h | 2 +- .../acpi/acpica/include/platform/acintel.h | 2 +- 214 files changed, 2788 insertions(+), 18677 deletions(-) delete mode 100644 src/add-ons/kernel/bus_managers/acpi/acpica/common/acgetline.c delete mode 100644 src/add-ons/kernel/bus_managers/acpi/acpica/common/adfile.c delete mode 100644 src/add-ons/kernel/bus_managers/acpi/acpica/common/adisasm.c delete mode 100644 src/add-ons/kernel/bus_managers/acpi/acpica/common/adwalk.c delete mode 100644 src/add-ons/kernel/bus_managers/acpi/acpica/common/ahids.c delete mode 100644 src/add-ons/kernel/bus_managers/acpi/acpica/common/ahpredef.c delete mode 100644 src/add-ons/kernel/bus_managers/acpi/acpica/common/ahtable.c delete mode 100644 src/add-ons/kernel/bus_managers/acpi/acpica/common/ahuuids.c delete mode 100644 src/add-ons/kernel/bus_managers/acpi/acpica/common/cmfsize.c delete mode 100644 src/add-ons/kernel/bus_managers/acpi/acpica/common/dmextern.c delete mode 100644 src/add-ons/kernel/bus_managers/acpi/acpica/common/dmrestag.c delete mode 100644 src/add-ons/kernel/bus_managers/acpi/acpica/common/dmtable.c delete mode 100644 src/add-ons/kernel/bus_managers/acpi/acpica/common/dmtbdump.c delete mode 100644 src/add-ons/kernel/bus_managers/acpi/acpica/common/dmtbinfo.c delete mode 100644 src/add-ons/kernel/bus_managers/acpi/acpica/common/getopt.c delete mode 100644 src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utfileio.c diff --git a/src/add-ons/kernel/bus_managers/acpi/BusManager.cpp b/src/add-ons/kernel/bus_managers/acpi/BusManager.cpp index fda246661a..938b796cf2 100644 --- a/src/add-ons/kernel/bus_managers/acpi/BusManager.cpp +++ b/src/add-ons/kernel/bus_managers/acpi/BusManager.cpp @@ -232,23 +232,6 @@ acpi_std_ops(int32 op,...) goto err; /* Install the default address space handlers. */ - if (checkAndLogFailure(AcpiInstallAddressSpaceHandler( - ACPI_ROOT_OBJECT, ACPI_ADR_SPACE_SYSTEM_MEMORY, - ACPI_DEFAULT_HANDLER, NULL, NULL), - "Could not initialise SystemMemory handler:")) - goto err; - - if (checkAndLogFailure(AcpiInstallAddressSpaceHandler( - ACPI_ROOT_OBJECT, ACPI_ADR_SPACE_SYSTEM_IO, - ACPI_DEFAULT_HANDLER, NULL, NULL), - "Could not initialise SystemIO handler:")) - goto err; - - if (checkAndLogFailure(AcpiInstallAddressSpaceHandler( - ACPI_ROOT_OBJECT, ACPI_ADR_SPACE_PCI_CONFIG, - ACPI_DEFAULT_HANDLER, NULL, NULL), - "Could not initialise PciConfig handler:")) - goto err; arg.Integer.Type = ACPI_TYPE_INTEGER; arg.Integer.Value = apic_available() ? APIC_MODE : PIC_MODE; diff --git a/src/add-ons/kernel/bus_managers/acpi/Jamfile b/src/add-ons/kernel/bus_managers/acpi/Jamfile index d61003924c..46d6cd01dd 100644 --- a/src/add-ons/kernel/bus_managers/acpi/Jamfile +++ b/src/add-ons/kernel/bus_managers/acpi/Jamfile @@ -7,16 +7,6 @@ SubDirHdrs [ FDirName $(SUBDIR) $(DOTDOT) pci ] ; SubDirCcFlags -D_KERNEL_MODE ; -local common_src = - acgetline.c - ahids.c - ahtable.c - ahuuids.c - cmfsize.c - dmtbdump.c - dmtbinfo.c - ; - local dispatcher_src = dsargs.c dscontrol.c @@ -77,6 +67,7 @@ local executer_src = exstoren.c exstorob.c exsystem.c + extrace.c exutils.c ; @@ -164,7 +155,6 @@ local utilities_src = utalloc.c utbuffer.c utcache.c - utclib.c utcopy.c utdecode.c utdebug.c @@ -172,7 +162,6 @@ local utilities_src = uterror.c uteval.c utexcep.c - utfileio.c utglobal.c uthex.c utids.c @@ -199,7 +188,6 @@ local utilities_src = ; StaticLibrary libacpi_ca.a : - $(common_src) $(compiler_src) $(dispatcher_src) $(events_src) @@ -212,7 +200,6 @@ StaticLibrary libacpi_ca.a : $(utilities_src) ; -SEARCH on [ FGristFiles $(common_src) ] = [ FDirName $(HAIKU_TOP) src add-ons kernel bus_managers acpi acpica common ] ; SEARCH on [ FGristFiles $(dispatcher_src) ] = [ FDirName $(HAIKU_TOP) src add-ons kernel bus_managers acpi acpica components dispatcher ] ; SEARCH on [ FGristFiles $(events_src) ] = [ FDirName $(HAIKU_TOP) src add-ons kernel bus_managers acpi acpica components events ] ; SEARCH on [ FGristFiles $(executer_src) ] = [ FDirName $(HAIKU_TOP) src add-ons kernel bus_managers acpi acpica components executer ] ; diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/common/acgetline.c b/src/add-ons/kernel/bus_managers/acpi/acpica/common/acgetline.c deleted file mode 100644 index 2a2232a310..0000000000 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/common/acgetline.c +++ /dev/null @@ -1,512 +0,0 @@ -/****************************************************************************** - * - * Module Name: acgetline - local line editing - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#include "acpi.h" -#include "accommon.h" -#include "amlcode.h" -#include "acparser.h" -#include "acdebug.h" - -#include - -/* - * This is an os-independent implementation of line-editing services needed - * by the AcpiExec utility. It uses getchar() and putchar() and the existing - * history support provided by the AML debugger. It assumes that the terminal - * is in the correct line-editing mode such as raw and noecho. The OSL - * interface AcpiOsInitialize should do this. AcpiOsTerminate should put the - * terminal back into the original mode. - */ -#define _COMPONENT ACPI_OS_SERVICES - ACPI_MODULE_NAME ("acgetline") - - -/* Local prototypes */ - -static void -AcpiAcClearLine ( - UINT32 EndOfLine, - UINT32 CursorPosition); - -/* Various ASCII constants */ - -#define _ASCII_NUL 0 -#define _ASCII_BACKSPACE 0x08 -#define _ASCII_TAB 0x09 -#define _ASCII_ESCAPE 0x1B -#define _ASCII_SPACE 0x20 -#define _ASCII_LEFT_BRACKET 0x5B -#define _ASCII_DEL 0x7F -#define _ASCII_UP_ARROW 'A' -#define _ASCII_DOWN_ARROW 'B' -#define _ASCII_RIGHT_ARROW 'C' -#define _ASCII_LEFT_ARROW 'D' -#define _ASCII_NEWLINE '\n' - -extern UINT32 AcpiGbl_NextCmdNum; - -/* Erase a single character on the input command line */ - -#define ACPI_CLEAR_CHAR() \ - putchar (_ASCII_BACKSPACE); \ - putchar (_ASCII_SPACE); \ - putchar (_ASCII_BACKSPACE); - -/* Backup cursor by Count positions */ - -#define ACPI_BACKUP_CURSOR(i, Count) \ - for (i = 0; i < (Count); i++) \ - {putchar (_ASCII_BACKSPACE);} - - -/****************************************************************************** - * - * FUNCTION: AcpiAcClearLine - * - * PARAMETERS: EndOfLine - Current end-of-line index - * CursorPosition - Current cursor position within line - * - * RETURN: None - * - * DESCRIPTION: Clear the entire command line the hard way, but probably the - * most portable. - * - *****************************************************************************/ - -static void -AcpiAcClearLine ( - UINT32 EndOfLine, - UINT32 CursorPosition) -{ - UINT32 i; - - - if (CursorPosition < EndOfLine) - { - /* Clear line from current position to end of line */ - - for (i = 0; i < (EndOfLine - CursorPosition); i++) - { - putchar (' '); - } - } - - /* Clear the entire line */ - - for (; EndOfLine > 0; EndOfLine--) - { - ACPI_CLEAR_CHAR (); - } -} - - -/****************************************************************************** - * - * FUNCTION: AcpiOsGetLine - * - * PARAMETERS: Buffer - Where to return the command line - * BufferLength - Maximum length of Buffer - * BytesRead - Where the actual byte count is returned - * - * RETURN: Status and actual bytes read - * - * DESCRIPTION: Get the next input line from the terminal. NOTE: terminal - * is expected to be in a mode that supports line-editing (raw, - * noecho). This function is intended to be very portable. Also, - * it uses the history support implemented in the AML debugger. - * - *****************************************************************************/ - -ACPI_STATUS -AcpiOsGetLine ( - char *Buffer, - UINT32 BufferLength, - UINT32 *BytesRead) -{ - char *NextCommand; - UINT32 MaxCommandIndex = AcpiGbl_NextCmdNum - 1; - UINT32 CurrentCommandIndex = MaxCommandIndex; - UINT32 PreviousCommandIndex = MaxCommandIndex; - int InputChar; - UINT32 CursorPosition = 0; - UINT32 EndOfLine = 0; - UINT32 i; - - - /* Always clear the line buffer before we read a new line */ - - memset (Buffer, 0, BufferLength); - - /* - * This loop gets one character at a time (except for esc sequences) - * until a newline or error is detected. - * - * Note: Don't attempt to write terminal control ESC sequences, even - * though it makes certain things more difficult. - */ - while (1) - { - if (EndOfLine >= (BufferLength - 1)) - { - return (AE_BUFFER_OVERFLOW); - } - - InputChar = getchar (); - switch (InputChar) - { - default: /* This is the normal character case */ - - /* Echo the character (at EOL) and copy it to the line buffer */ - - if (EndOfLine == CursorPosition) - { - putchar (InputChar); - Buffer[EndOfLine] = (char) InputChar; - - EndOfLine++; - CursorPosition++; - Buffer[EndOfLine] = 0; - continue; - } - - /* Insert character into the middle of the buffer */ - - memmove (&Buffer[CursorPosition + 1], &Buffer[CursorPosition], - (EndOfLine - CursorPosition + 1)); - - Buffer [CursorPosition] = (char) InputChar; - Buffer [EndOfLine + 1] = 0; - - /* Display the new part of line starting at the new character */ - - fprintf (stdout, "%s", &Buffer[CursorPosition]); - - /* Restore cursor */ - - ACPI_BACKUP_CURSOR (i, EndOfLine - CursorPosition); - CursorPosition++; - EndOfLine++; - continue; - - case _ASCII_DEL: /* Backspace key */ - - if (!EndOfLine) /* Any characters on the command line? */ - { - continue; - } - - if (EndOfLine == CursorPosition) /* Erase the final character */ - { - ACPI_CLEAR_CHAR (); - EndOfLine--; - CursorPosition--; - continue; - } - - if (!CursorPosition) /* Do not backup beyond start of line */ - { - continue; - } - - /* Remove the character from the line */ - - memmove (&Buffer[CursorPosition - 1], &Buffer[CursorPosition], - (EndOfLine - CursorPosition + 1)); - - /* Display the new part of line starting at the new character */ - - putchar (_ASCII_BACKSPACE); - fprintf (stdout, "%s ", &Buffer[CursorPosition - 1]); - - /* Restore cursor */ - - ACPI_BACKUP_CURSOR (i, EndOfLine - CursorPosition + 1); - EndOfLine--; - if (CursorPosition > 0) - { - CursorPosition--; - } - continue; - - case _ASCII_NEWLINE: /* Normal exit case at end of command line */ - case _ASCII_NUL: - - /* Return the number of bytes in the command line string */ - - if (BytesRead) - { - *BytesRead = EndOfLine; - } - - /* Echo, terminate string buffer, and exit */ - - putchar (InputChar); - Buffer[EndOfLine] = 0; - return (AE_OK); - - case _ASCII_TAB: - - /* Ignore */ - - continue; - - case EOF: - - return (AE_ERROR); - - case _ASCII_ESCAPE: - - /* Check for escape sequences of the form "ESC[x" */ - - InputChar = getchar (); - if (InputChar != _ASCII_LEFT_BRACKET) - { - continue; /* Ignore this ESC, does not have the '[' */ - } - - /* Get the code following the ESC [ */ - - InputChar = getchar (); /* Backup one character */ - switch (InputChar) - { - case _ASCII_LEFT_ARROW: - - if (CursorPosition > 0) - { - putchar (_ASCII_BACKSPACE); - CursorPosition--; - } - continue; - - case _ASCII_RIGHT_ARROW: - /* - * Move one character forward. Do this without sending - * ESC sequence to the terminal for max portability. - */ - if (CursorPosition < EndOfLine) - { - /* Backup to start of line and print the entire line */ - - ACPI_BACKUP_CURSOR (i, CursorPosition); - fprintf (stdout, "%s", Buffer); - - /* Backup to where the cursor should be */ - - CursorPosition++; - ACPI_BACKUP_CURSOR (i, EndOfLine - CursorPosition); - } - continue; - - case _ASCII_UP_ARROW: - - /* If no commands available or at start of history list, ignore */ - - if (!CurrentCommandIndex) - { - continue; - } - - /* Manage our up/down progress */ - - if (CurrentCommandIndex > PreviousCommandIndex) - { - CurrentCommandIndex = PreviousCommandIndex; - } - - /* Get the historical command from the debugger */ - - NextCommand = AcpiDbGetHistoryByIndex (CurrentCommandIndex); - if (!NextCommand) - { - return (AE_ERROR); - } - - /* Make this the active command and echo it */ - - AcpiAcClearLine (EndOfLine, CursorPosition); - strcpy (Buffer, NextCommand); - fprintf (stdout, "%s", Buffer); - EndOfLine = CursorPosition = strlen (Buffer); - - PreviousCommandIndex = CurrentCommandIndex; - CurrentCommandIndex--; - continue; - - case _ASCII_DOWN_ARROW: - - if (!MaxCommandIndex) /* Any commands available? */ - { - continue; - } - - /* Manage our up/down progress */ - - if (CurrentCommandIndex < PreviousCommandIndex) - { - CurrentCommandIndex = PreviousCommandIndex; - } - - /* If we are the end of the history list, output a clear new line */ - - if ((CurrentCommandIndex + 1) > MaxCommandIndex) - { - AcpiAcClearLine (EndOfLine, CursorPosition); - EndOfLine = CursorPosition = 0; - PreviousCommandIndex = CurrentCommandIndex; - continue; - } - - PreviousCommandIndex = CurrentCommandIndex; - CurrentCommandIndex++; - - /* Get the historical command from the debugger */ - - NextCommand = AcpiDbGetHistoryByIndex (CurrentCommandIndex); - if (!NextCommand) - { - return (AE_ERROR); - } - - /* Make this the active command and echo it */ - - AcpiAcClearLine (EndOfLine, CursorPosition); - strcpy (Buffer, NextCommand); - fprintf (stdout, "%s", Buffer); - EndOfLine = CursorPosition = strlen (Buffer); - continue; - - case 0x31: - case 0x32: - case 0x33: - case 0x34: - case 0x35: - case 0x36: - /* - * Ignore the various keys like insert/delete/home/end, etc. - * But we must eat the final character of the ESC sequence. - */ - InputChar = getchar (); - continue; - - default: - - /* Ignore random escape sequences that we don't care about */ - - continue; - } - continue; - } - } -} diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/common/adfile.c b/src/add-ons/kernel/bus_managers/acpi/acpica/common/adfile.c deleted file mode 100644 index 96a2f2558c..0000000000 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/common/adfile.c +++ /dev/null @@ -1,430 +0,0 @@ -/****************************************************************************** - * - * Module Name: adfile - Application-level disassembler file support routines - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#include "aslcompiler.h" -#include "acpi.h" -#include "accommon.h" -#include "acapps.h" - -#include - - -#define _COMPONENT ACPI_TOOLS - ACPI_MODULE_NAME ("adfile") - -/* Local prototypes */ - -static INT32 -AdWriteBuffer ( - char *Filename, - char *Buffer, - UINT32 Length); - -static char FilenameBuf[20]; - - -/****************************************************************************** - * - * FUNCTION: AfGenerateFilename - * - * PARAMETERS: Prefix - prefix string - * TableId - The table ID - * - * RETURN: Pointer to the completed string - * - * DESCRIPTION: Build an output filename from an ACPI table ID string - * - ******************************************************************************/ - -char * -AdGenerateFilename ( - char *Prefix, - char *TableId) -{ - UINT32 i; - UINT32 j; - - - for (i = 0; Prefix[i]; i++) - { - FilenameBuf[i] = Prefix[i]; - } - - FilenameBuf[i] = '_'; - i++; - - for (j = 0; j < 8 && (TableId[j] != ' ') && (TableId[j] != 0); i++, j++) - { - FilenameBuf[i] = TableId[j]; - } - - FilenameBuf[i] = 0; - strcat (FilenameBuf, ACPI_TABLE_FILE_SUFFIX); - return (FilenameBuf); -} - - -/****************************************************************************** - * - * FUNCTION: AfWriteBuffer - * - * PARAMETERS: Filename - name of file - * Buffer - data to write - * Length - length of data - * - * RETURN: Actual number of bytes written - * - * DESCRIPTION: Open a file and write out a single buffer - * - ******************************************************************************/ - -static INT32 -AdWriteBuffer ( - char *Filename, - char *Buffer, - UINT32 Length) -{ - FILE *File; - ACPI_SIZE Actual; - - - File = fopen (Filename, "wb"); - if (!File) - { - printf ("Could not open file %s\n", Filename); - return (-1); - } - - Actual = fwrite (Buffer, 1, (size_t) Length, File); - if (Actual != Length) - { - printf ("Could not write to file %s\n", Filename); - } - - fclose (File); - return ((INT32) Actual); -} - - -/****************************************************************************** - * - * FUNCTION: AfWriteTable - * - * PARAMETERS: Table - pointer to the ACPI table - * Length - length of the table - * TableName - the table signature - * OemTableID - from the table header - * - * RETURN: None - * - * DESCRIPTION: Dump the loaded tables to a file (or files) - * - ******************************************************************************/ - -void -AdWriteTable ( - ACPI_TABLE_HEADER *Table, - UINT32 Length, - char *TableName, - char *OemTableId) -{ - char *Filename; - - - Filename = AdGenerateFilename (TableName, OemTableId); - AdWriteBuffer (Filename, (char *) Table, Length); - - AcpiOsPrintf ("Table [%s] written to \"%s\"\n", TableName, Filename); -} - - -/******************************************************************************* - * - * FUNCTION: FlGenerateFilename - * - * PARAMETERS: InputFilename - Original ASL source filename - * Suffix - New extension. - * - * RETURN: New filename containing the original base + the new suffix - * - * DESCRIPTION: Generate a new filename from the ASL source filename and a new - * extension. Used to create the *.LST, *.TXT, etc. files. - * - ******************************************************************************/ - -char * -FlGenerateFilename ( - char *InputFilename, - char *Suffix) -{ - char *Position; - char *NewFilename; - char *DirectoryPosition; - - - /* - * Copy the original filename to a new buffer. Leave room for the worst - * case where we append the suffix, an added dot and the null terminator. - */ - NewFilename = UtStringCacheCalloc ((ACPI_SIZE) - strlen (InputFilename) + strlen (Suffix) + 2); - if (!NewFilename) - { - return (NULL); - } - - strcpy (NewFilename, InputFilename); - - /* Try to find the last dot in the filename */ - - DirectoryPosition = strrchr (NewFilename, '/'); - Position = strrchr (NewFilename, '.'); - - if (Position && (Position > DirectoryPosition)) - { - /* Tack on the new suffix */ - - Position++; - *Position = 0; - strcat (Position, Suffix); - } - else - { - /* No dot, add one and then the suffix */ - - strcat (NewFilename, "."); - strcat (NewFilename, Suffix); - } - - return (NewFilename); -} - - -/******************************************************************************* - * - * FUNCTION: FlStrdup - * - * DESCRIPTION: Local strdup function - * - ******************************************************************************/ - -static char * -FlStrdup ( - char *String) -{ - char *NewString; - - - NewString = UtStringCacheCalloc ((ACPI_SIZE) strlen (String) + 1); - if (!NewString) - { - return (NULL); - } - - strcpy (NewString, String); - return (NewString); -} - - -/******************************************************************************* - * - * FUNCTION: FlSplitInputPathname - * - * PARAMETERS: InputFilename - The user-specified ASL source file to be - * compiled - * OutDirectoryPath - Where the directory path prefix is - * returned - * OutFilename - Where the filename part is returned - * - * RETURN: Status - * - * DESCRIPTION: Split the input path into a directory and filename part - * 1) Directory part used to open include files - * 2) Filename part used to generate output filenames - * - ******************************************************************************/ - -ACPI_STATUS -FlSplitInputPathname ( - char *InputPath, - char **OutDirectoryPath, - char **OutFilename) -{ - char *Substring; - char *DirectoryPath; - char *Filename; - - - if (OutDirectoryPath) - { - *OutDirectoryPath = NULL; - } - - if (!InputPath) - { - return (AE_OK); - } - - /* Get the path to the input filename's directory */ - - DirectoryPath = FlStrdup (InputPath); - if (!DirectoryPath) - { - return (AE_NO_MEMORY); - } - - /* Convert backslashes to slashes in the entire path */ - - UtConvertBackslashes (DirectoryPath); - - /* Backup to last slash or colon */ - - Substring = strrchr (DirectoryPath, '/'); - if (!Substring) - { - Substring = strrchr (DirectoryPath, ':'); - } - - /* Extract the simple filename */ - - if (!Substring) - { - Filename = FlStrdup (DirectoryPath); - DirectoryPath[0] = 0; - } - else - { - Filename = FlStrdup (Substring + 1); - *(Substring+1) = 0; - } - - if (!Filename) - { - return (AE_NO_MEMORY); - } - - if (OutDirectoryPath) - { - *OutDirectoryPath = DirectoryPath; - } - - if (OutFilename) - { - *OutFilename = Filename; - return (AE_OK); - } - - return (AE_OK); -} diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/common/adisasm.c b/src/add-ons/kernel/bus_managers/acpi/acpica/common/adisasm.c deleted file mode 100644 index 44a052e8a9..0000000000 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/common/adisasm.c +++ /dev/null @@ -1,1056 +0,0 @@ -/****************************************************************************** - * - * Module Name: adisasm - Application-level disassembler routines - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#include "aslcompiler.h" -#include "acparser.h" -#include "amlcode.h" -#include "acdisasm.h" -#include "acdispat.h" -#include "acnamesp.h" -#include "actables.h" -#include "acapps.h" - -#include -#include - - -#define _COMPONENT ACPI_TOOLS - ACPI_MODULE_NAME ("adisasm") - -/* Local prototypes */ - -static void -AdCreateTableHeader ( - char *Filename, - ACPI_TABLE_HEADER *Table); - -static ACPI_STATUS -AdStoreTable ( - ACPI_TABLE_HEADER *Table, - UINT32 *TableIndex); - -/* Stubs for ASL compiler */ - -#ifndef ACPI_ASL_COMPILER -BOOLEAN -AcpiDsIsResultUsed ( - ACPI_PARSE_OBJECT *Op, - ACPI_WALK_STATE *WalkState) -{ - return TRUE; -} - -ACPI_STATUS -AcpiDsMethodError ( - ACPI_STATUS Status, - ACPI_WALK_STATE *WalkState) -{ - return (Status); -} -#endif - -ACPI_STATUS -AcpiNsLoadTable ( - UINT32 TableIndex, - ACPI_NAMESPACE_NODE *Node) -{ - return (AE_NOT_IMPLEMENTED); -} - -ACPI_STATUS -AcpiDsRestartControlMethod ( - ACPI_WALK_STATE *WalkState, - ACPI_OPERAND_OBJECT *ReturnDesc) -{ - return (AE_OK); -} - -void -AcpiDsTerminateControlMethod ( - ACPI_OPERAND_OBJECT *MethodDesc, - ACPI_WALK_STATE *WalkState) -{ - return; -} - -ACPI_STATUS -AcpiDsCallControlMethod ( - ACPI_THREAD_STATE *Thread, - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Op) -{ - return (AE_OK); -} - -ACPI_STATUS -AcpiDsMethodDataInitArgs ( - ACPI_OPERAND_OBJECT **Params, - UINT32 MaxParamCount, - ACPI_WALK_STATE *WalkState) -{ - return (AE_OK); -} - - -static ACPI_TABLE_DESC LocalTables[1]; -static ACPI_PARSE_OBJECT *AcpiGbl_ParseOpRoot; - - -/******************************************************************************* - * - * FUNCTION: AdInitialize - * - * PARAMETERS: None - * - * RETURN: Status - * - * DESCRIPTION: ACPICA and local initialization - * - ******************************************************************************/ - -ACPI_STATUS -AdInitialize ( - void) -{ - ACPI_STATUS Status; - - - /* ACPICA subsystem initialization */ - - Status = AcpiOsInitialize (); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - Status = AcpiUtInitGlobals (); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - Status = AcpiUtMutexInitialize (); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - Status = AcpiNsRootInitialize (); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - /* Setup the Table Manager (cheat - there is no RSDT) */ - - AcpiGbl_RootTableList.MaxTableCount = 1; - AcpiGbl_RootTableList.CurrentTableCount = 0; - AcpiGbl_RootTableList.Tables = LocalTables; - - return (Status); -} - - -/****************************************************************************** - * - * FUNCTION: AdAmlDisassemble - * - * PARAMETERS: Filename - AML input filename - * OutToFile - TRUE if output should go to a file - * Prefix - Path prefix for output - * OutFilename - where the filename is returned - * - * RETURN: Status - * - * DESCRIPTION: Disassemble an entire ACPI table - * - *****************************************************************************/ - -ACPI_STATUS -AdAmlDisassemble ( - BOOLEAN OutToFile, - char *Filename, - char *Prefix, - char **OutFilename) -{ - ACPI_STATUS Status; - ACPI_STATUS GlobalStatus = AE_OK; - char *DisasmFilename = NULL; - char *ExternalFilename; - ACPI_EXTERNAL_FILE *ExternalFileList = AcpiGbl_ExternalFileList; - FILE *File = NULL; - ACPI_TABLE_HEADER *Table = NULL; - ACPI_TABLE_HEADER *ExternalTable; - ACPI_OWNER_ID OwnerId; - - - /* - * Input: AML code from either a file or via GetTables (memory or - * registry) - */ - if (Filename) - { - Status = AcpiDbGetTableFromFile (Filename, &Table, FALSE); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - /* - * External filenames separated by commas - * Example: iasl -e file1,file2,file3 -d xxx.aml - */ - while (ExternalFileList) - { - ExternalFilename = ExternalFileList->Path; - if (!strcmp (ExternalFilename, Filename)) - { - /* Next external file */ - - ExternalFileList = ExternalFileList->Next; - continue; - } - - Status = AcpiDbGetTableFromFile (ExternalFilename, &ExternalTable, TRUE); - if (ACPI_FAILURE (Status)) - { - if (Status == AE_TYPE) - { - ExternalFileList = ExternalFileList->Next; - GlobalStatus = AE_TYPE; - Status = AE_OK; - continue; - } - return (Status); - } - - /* Load external table for symbol resolution */ - - if (ExternalTable) - { - Status = AdParseTable (ExternalTable, &OwnerId, TRUE, TRUE); - if (ACPI_FAILURE (Status)) - { - AcpiOsPrintf ("Could not parse external ACPI tables, %s\n", - AcpiFormatException (Status)); - return (Status); - } - - /* - * Load namespace from names created within control methods - * Set owner id of nodes in external table - */ - AcpiDmFinishNamespaceLoad (AcpiGbl_ParseOpRoot, - AcpiGbl_RootNode, OwnerId); - AcpiPsDeleteParseTree (AcpiGbl_ParseOpRoot); - } - - /* Next external file */ - - ExternalFileList = ExternalFileList->Next; - } - - if (ACPI_FAILURE (GlobalStatus)) - { - return (GlobalStatus); - } - - /* Clear external list generated by Scope in external tables */ - - if (AcpiGbl_ExternalFileList) - { - AcpiDmClearExternalList (); - } - - /* Load any externals defined in the optional external ref file */ - - AcpiDmGetExternalsFromFile (); - } - else - { - Status = AdGetLocalTables (); - if (ACPI_FAILURE (Status)) - { - AcpiOsPrintf ("Could not get ACPI tables, %s\n", - AcpiFormatException (Status)); - return (Status); - } - - if (!AcpiGbl_DmOpt_Disasm) - { - return (AE_OK); - } - - /* Obtained the local tables, just disassemble the DSDT */ - - Status = AcpiGetTable (ACPI_SIG_DSDT, 0, &Table); - if (ACPI_FAILURE (Status)) - { - AcpiOsPrintf ("Could not get DSDT, %s\n", - AcpiFormatException (Status)); - return (Status); - } - - AcpiOsPrintf ("\nDisassembly of DSDT\n"); - Prefix = AdGenerateFilename ("dsdt", Table->OemTableId); - } - - /* - * Output: ASL code. Redirect to a file if requested - */ - if (OutToFile) - { - /* Create/Open a disassembly output file */ - - DisasmFilename = FlGenerateFilename (Prefix, FILE_SUFFIX_DISASSEMBLY); - if (!DisasmFilename) - { - fprintf (stderr, "Could not generate output filename\n"); - Status = AE_ERROR; - goto Cleanup; - } - - File = fopen (DisasmFilename, "w+"); - if (!File) - { - fprintf (stderr, "Could not open output file %s\n", DisasmFilename); - Status = AE_ERROR; - goto Cleanup; - } - - AcpiOsRedirectOutput (File); - } - - *OutFilename = DisasmFilename; - - /* ForceAmlDisassembly means to assume the table contains valid AML */ - - if (!AcpiGbl_ForceAmlDisassembly && !AcpiUtIsAmlTable (Table)) - { - AdDisassemblerHeader (Filename, ACPI_IS_DATA_TABLE); - AcpiOsPrintf (" * ACPI Data Table [%4.4s]\n *\n", - Table->Signature); - AcpiOsPrintf (" * Format: [HexOffset DecimalOffset ByteLength] " - "FieldName : FieldValue\n */\n\n"); - - AcpiDmDumpDataTable (Table); - fprintf (stderr, "Acpi Data Table [%4.4s] decoded\n", - Table->Signature); - - if (File) - { - fprintf (stderr, "Formatted output: %s - %u bytes\n", - DisasmFilename, CmGetFileSize (File)); - } - } - else - { - /* Always parse the tables, only option is what to display */ - - Status = AdParseTable (Table, &OwnerId, TRUE, FALSE); - if (ACPI_FAILURE (Status)) - { - AcpiOsPrintf ("Could not parse ACPI tables, %s\n", - AcpiFormatException (Status)); - goto Cleanup; - } - - if (AslCompilerdebug) - { - AcpiOsPrintf ("/**** Before second load\n"); - - if (File) - { - NsSetupNamespaceListing (File); - NsDisplayNamespace (); - } - AcpiOsPrintf ("*****/\n"); - } - - /* Load namespace from names created within control methods */ - - AcpiDmFinishNamespaceLoad (AcpiGbl_ParseOpRoot, - AcpiGbl_RootNode, OwnerId); - - /* - * Cross reference the namespace here, in order to - * generate External() statements - */ - AcpiDmCrossReferenceNamespace (AcpiGbl_ParseOpRoot, - AcpiGbl_RootNode, OwnerId); - - if (AslCompilerdebug) - { - AcpiDmDumpTree (AcpiGbl_ParseOpRoot); - } - - /* Find possible calls to external control methods */ - - AcpiDmFindOrphanMethods (AcpiGbl_ParseOpRoot); - - /* - * If we found any external control methods, we must reparse - * the entire tree with the new information (namely, the - * number of arguments per method) - */ - if (AcpiDmGetExternalMethodCount ()) - { - fprintf (stderr, - "\nFound %u external control methods, " - "reparsing with new information\n", - AcpiDmGetExternalMethodCount ()); - - /* Reparse, rebuild namespace */ - - AcpiPsDeleteParseTree (AcpiGbl_ParseOpRoot); - AcpiGbl_ParseOpRoot = NULL; - AcpiNsDeleteNamespaceSubtree (AcpiGbl_RootNode); - - AcpiGbl_RootNode = NULL; - AcpiGbl_RootNodeStruct.Name.Integer = ACPI_ROOT_NAME; - AcpiGbl_RootNodeStruct.DescriptorType = ACPI_DESC_TYPE_NAMED; - AcpiGbl_RootNodeStruct.Type = ACPI_TYPE_DEVICE; - AcpiGbl_RootNodeStruct.Parent = NULL; - AcpiGbl_RootNodeStruct.Child = NULL; - AcpiGbl_RootNodeStruct.Peer = NULL; - AcpiGbl_RootNodeStruct.Object = NULL; - AcpiGbl_RootNodeStruct.Flags = 0; - - Status = AcpiNsRootInitialize (); - - /* New namespace, add the external definitions first */ - - AcpiDmAddExternalsToNamespace (); - - /* Parse the table again. No need to reload it, however */ - - Status = AdParseTable (Table, NULL, FALSE, FALSE); - if (ACPI_FAILURE (Status)) - { - AcpiOsPrintf ("Could not parse ACPI tables, %s\n", - AcpiFormatException (Status)); - goto Cleanup; - } - - /* Cross reference the namespace again */ - - AcpiDmFinishNamespaceLoad (AcpiGbl_ParseOpRoot, - AcpiGbl_RootNode, OwnerId); - - AcpiDmCrossReferenceNamespace (AcpiGbl_ParseOpRoot, - AcpiGbl_RootNode, OwnerId); - - if (AslCompilerdebug) - { - AcpiOsPrintf ("/**** After second load and resource conversion\n"); - if (File) - { - NsSetupNamespaceListing (File); - NsDisplayNamespace (); - } - AcpiOsPrintf ("*****/\n"); - - AcpiDmDumpTree (AcpiGbl_ParseOpRoot); - } - } - - /* - * Now that the namespace is finalized, we can perform namespace - * transforms. - * - * 1) Convert fixed-offset references to resource descriptors - * to symbolic references (Note: modifies namespace) - */ - AcpiDmConvertResourceIndexes (AcpiGbl_ParseOpRoot, AcpiGbl_RootNode); - - /* Optional displays */ - - if (AcpiGbl_DmOpt_Disasm) - { - /* This is the real disassembly */ - - AdDisplayTables (Filename, Table); - - /* Dump hex table if requested (-vt) */ - - AcpiDmDumpDataTable (Table); - - fprintf (stderr, "Disassembly completed\n"); - if (File) - { - fprintf (stderr, "ASL Output: %s - %u bytes\n", - DisasmFilename, CmGetFileSize (File)); - } - - if (Gbl_MapfileFlag) - { - fprintf (stderr, "%14s %s - %u bytes\n", - Gbl_Files[ASL_FILE_MAP_OUTPUT].ShortDescription, - Gbl_Files[ASL_FILE_MAP_OUTPUT].Filename, - FlGetFileSize (ASL_FILE_MAP_OUTPUT)); - } - } - } - -Cleanup: - - if (Table && !AcpiGbl_ForceAmlDisassembly &&!AcpiUtIsAmlTable (Table)) - { - ACPI_FREE (Table); - } - - if (File) - { - if (AslCompilerdebug) /* Display final namespace, with transforms */ - { - NsSetupNamespaceListing (File); - NsDisplayNamespace (); - } - - fclose (File); - AcpiOsRedirectOutput (stdout); - } - - AcpiPsDeleteParseTree (AcpiGbl_ParseOpRoot); - AcpiGbl_ParseOpRoot = NULL; - return (Status); -} - - -/****************************************************************************** - * - * FUNCTION: AdDisassemblerHeader - * - * PARAMETERS: Filename - Input file for the table - * TableType - Either AML or DataTable - * - * RETURN: None - * - * DESCRIPTION: Create the disassembler header, including ACPICA signon with - * current time and date. - * - *****************************************************************************/ - -void -AdDisassemblerHeader ( - char *Filename, - UINT8 TableType) -{ - time_t Timer; - - - time (&Timer); - - /* Header and input table info */ - - AcpiOsPrintf ("/*\n"); - AcpiOsPrintf (ACPI_COMMON_HEADER (AML_DISASSEMBLER_NAME, " * ")); - - if (TableType == ACPI_IS_AML_TABLE) - { - if (AcpiGbl_CstyleDisassembly) - { - AcpiOsPrintf ( - " * Disassembling to symbolic ASL+ operators\n" - " *\n"); - } - else - { - AcpiOsPrintf ( - " * Disassembling to non-symbolic legacy ASL operators\n" - " *\n"); - } - } - - AcpiOsPrintf (" * Disassembly of %s, %s", Filename, ctime (&Timer)); - AcpiOsPrintf (" *\n"); -} - - -/****************************************************************************** - * - * FUNCTION: AdCreateTableHeader - * - * PARAMETERS: Filename - Input file for the table - * Table - Pointer to the raw table - * - * RETURN: None - * - * DESCRIPTION: Create the ASL table header, including ACPICA signon with - * current time and date. - * - *****************************************************************************/ - -static void -AdCreateTableHeader ( - char *Filename, - ACPI_TABLE_HEADER *Table) -{ - char *NewFilename; - UINT8 Checksum; - - - /* - * Print file header and dump original table header - */ - AdDisassemblerHeader (Filename, ACPI_IS_AML_TABLE); - - AcpiOsPrintf (" * Original Table Header:\n"); - AcpiOsPrintf (" * Signature \"%4.4s\"\n", Table->Signature); - AcpiOsPrintf (" * Length 0x%8.8X (%u)\n", Table->Length, Table->Length); - - /* Print and validate the revision */ - - AcpiOsPrintf (" * Revision 0x%2.2X", Table->Revision); - - switch (Table->Revision) - { - case 0: - - AcpiOsPrintf (" **** Invalid Revision"); - break; - - case 1: - - /* Revision of DSDT controls the ACPI integer width */ - - if (ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_DSDT)) - { - AcpiOsPrintf (" **** 32-bit table (V1), no 64-bit math support"); - } - break; - - default: - - break; - } - AcpiOsPrintf ("\n"); - - /* Print and validate the table checksum */ - - AcpiOsPrintf (" * Checksum 0x%2.2X", Table->Checksum); - - Checksum = AcpiTbChecksum (ACPI_CAST_PTR (UINT8, Table), Table->Length); - if (Checksum) - { - AcpiOsPrintf (" **** Incorrect checksum, should be 0x%2.2X", - (UINT8) (Table->Checksum - Checksum)); - } - AcpiOsPrintf ("\n"); - - AcpiOsPrintf (" * OEM ID \"%.6s\"\n", Table->OemId); - AcpiOsPrintf (" * OEM Table ID \"%.8s\"\n", Table->OemTableId); - AcpiOsPrintf (" * OEM Revision 0x%8.8X (%u)\n", Table->OemRevision, Table->OemRevision); - AcpiOsPrintf (" * Compiler ID \"%.4s\"\n", Table->AslCompilerId); - AcpiOsPrintf (" * Compiler Version 0x%8.8X (%u)\n", Table->AslCompilerRevision, Table->AslCompilerRevision); - AcpiOsPrintf (" */\n"); - - /* Create AML output filename based on input filename */ - - if (Filename) - { - NewFilename = FlGenerateFilename (Filename, "aml"); - } - else - { - NewFilename = UtStringCacheCalloc (9); - if (NewFilename) - { - strncat (NewFilename, Table->Signature, 4); - strcat (NewFilename, ".aml"); - } - } - - if (!NewFilename) - { - AcpiOsPrintf (" **** Could not generate AML output filename\n"); - return; - } - - /* Open the ASL definition block */ - - AcpiOsPrintf ( - "DefinitionBlock (\"%s\", \"%4.4s\", %hu, \"%.6s\", \"%.8s\", 0x%8.8X)\n", - NewFilename, Table->Signature, Table->Revision, - Table->OemId, Table->OemTableId, Table->OemRevision); -} - - -/****************************************************************************** - * - * FUNCTION: AdDisplayTables - * - * PARAMETERS: Filename - Input file for the table - * Table - Pointer to the raw table - * - * RETURN: Status - * - * DESCRIPTION: Display (disassemble) loaded tables and dump raw tables - * - *****************************************************************************/ - -ACPI_STATUS -AdDisplayTables ( - char *Filename, - ACPI_TABLE_HEADER *Table) -{ - - - if (!AcpiGbl_ParseOpRoot) - { - return (AE_NOT_EXIST); - } - - if (!AcpiGbl_DmOpt_Listing) - { - AdCreateTableHeader (Filename, Table); - } - - AcpiDmDisassemble (NULL, AcpiGbl_ParseOpRoot, ACPI_UINT32_MAX); - MpEmitMappingInfo (); - - if (AcpiGbl_DmOpt_Listing) - { - AcpiOsPrintf ("\n\nTable Header:\n"); - AcpiUtDebugDumpBuffer ((UINT8 *) Table, sizeof (ACPI_TABLE_HEADER), - DB_BYTE_DISPLAY, ACPI_UINT32_MAX); - - AcpiOsPrintf ("Table Body (Length 0x%X)\n", Table->Length); - AcpiUtDebugDumpBuffer (((UINT8 *) Table + sizeof (ACPI_TABLE_HEADER)), - Table->Length, DB_BYTE_DISPLAY, ACPI_UINT32_MAX); - } - - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AdStoreTable - * - * PARAMETERS: Table - Table header - * TableIndex - Where the table index is returned - * - * RETURN: Status and table index. - * - * DESCRIPTION: Add an ACPI table to the global table list - * - ******************************************************************************/ - -static ACPI_STATUS -AdStoreTable ( - ACPI_TABLE_HEADER *Table, - UINT32 *TableIndex) -{ - ACPI_STATUS Status; - ACPI_TABLE_DESC *TableDesc; - - - Status = AcpiTbGetNextTableDescriptor (TableIndex, &TableDesc); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - /* Initialize added table */ - - AcpiTbInitTableDescriptor (TableDesc, ACPI_PTR_TO_PHYSADDR (Table), - ACPI_TABLE_ORIGIN_INTERNAL_VIRTUAL, Table); - Status = AcpiTbValidateTable (TableDesc); - return (Status); -} - - -/****************************************************************************** - * - * FUNCTION: AdGetLocalTables - * - * PARAMETERS: None - * - * RETURN: Status - * - * DESCRIPTION: Get the ACPI tables from either memory or a file - * - *****************************************************************************/ - -ACPI_STATUS -AdGetLocalTables ( - void) -{ - ACPI_STATUS Status; - ACPI_TABLE_HEADER TableHeader; - ACPI_TABLE_HEADER *NewTable; - UINT32 TableIndex; - - - /* Get the DSDT via table override */ - - ACPI_MOVE_32_TO_32 (TableHeader.Signature, ACPI_SIG_DSDT); - AcpiOsTableOverride (&TableHeader, &NewTable); - if (!NewTable) - { - fprintf (stderr, "Could not obtain DSDT\n"); - return (AE_NO_ACPI_TABLES); - } - - AdWriteTable (NewTable, NewTable->Length, - ACPI_SIG_DSDT, NewTable->OemTableId); - - /* Store DSDT in the Table Manager */ - - Status = AdStoreTable (NewTable, &TableIndex); - if (ACPI_FAILURE (Status)) - { - fprintf (stderr, "Could not store DSDT\n"); - return (AE_NO_ACPI_TABLES); - } - - return (AE_OK); -} - - -/****************************************************************************** - * - * FUNCTION: AdParseTable - * - * PARAMETERS: Table - Pointer to the raw table - * OwnerId - Returned OwnerId of the table - * LoadTable - If add table to the global table list - * External - If this is an external table - * - * RETURN: Status - * - * DESCRIPTION: Parse the DSDT. - * - *****************************************************************************/ - -ACPI_STATUS -AdParseTable ( - ACPI_TABLE_HEADER *Table, - ACPI_OWNER_ID *OwnerId, - BOOLEAN LoadTable, - BOOLEAN External) -{ - ACPI_STATUS Status = AE_OK; - ACPI_WALK_STATE *WalkState; - UINT8 *AmlStart; - UINT32 AmlLength; - UINT32 TableIndex; - - - if (!Table) - { - return (AE_NOT_EXIST); - } - - /* Pass 1: Parse everything except control method bodies */ - - fprintf (stderr, "Pass 1 parse of [%4.4s]\n", (char *) Table->Signature); - - AmlLength = Table->Length - sizeof (ACPI_TABLE_HEADER); - AmlStart = ((UINT8 *) Table + sizeof (ACPI_TABLE_HEADER)); - - /* Create the root object */ - - AcpiGbl_ParseOpRoot = AcpiPsCreateScopeOp (AmlStart); - if (!AcpiGbl_ParseOpRoot) - { - return (AE_NO_MEMORY); - } - - /* Create and initialize a new walk state */ - - WalkState = AcpiDsCreateWalkState (0, - AcpiGbl_ParseOpRoot, NULL, NULL); - if (!WalkState) - { - return (AE_NO_MEMORY); - } - - Status = AcpiDsInitAmlWalk (WalkState, AcpiGbl_ParseOpRoot, - NULL, AmlStart, AmlLength, NULL, ACPI_IMODE_LOAD_PASS1); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - WalkState->ParseFlags &= ~ACPI_PARSE_DELETE_TREE; - WalkState->ParseFlags |= ACPI_PARSE_DISASSEMBLE; - - Status = AcpiPsParseAml (WalkState); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - /* If LoadTable is FALSE, we are parsing the last loaded table */ - - TableIndex = AcpiGbl_RootTableList.CurrentTableCount - 1; - - /* Pass 2 */ - - if (LoadTable) - { - Status = AdStoreTable (Table, &TableIndex); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - Status = AcpiTbAllocateOwnerId (TableIndex); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - if (OwnerId) - { - Status = AcpiTbGetOwnerId (TableIndex, OwnerId); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - } - } - - fprintf (stderr, "Pass 2 parse of [%4.4s]\n", (char *) Table->Signature); - - Status = AcpiNsOneCompleteParse (ACPI_IMODE_LOAD_PASS2, TableIndex, NULL); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - /* No need to parse control methods of external table */ - - if (External) - { - return (AE_OK); - } - - /* - * Pass 3: Parse control methods and link their parse trees - * into the main parse tree - */ - fprintf (stderr, - "Parsing Deferred Opcodes (Methods/Buffers/Packages/Regions)\n"); - Status = AcpiDmParseDeferredOps (AcpiGbl_ParseOpRoot); - fprintf (stderr, "\n"); - - /* Process Resource Templates */ - - AcpiDmFindResources (AcpiGbl_ParseOpRoot); - - fprintf (stderr, "Parsing completed\n"); - return (AE_OK); -} diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/common/adwalk.c b/src/add-ons/kernel/bus_managers/acpi/acpica/common/adwalk.c deleted file mode 100644 index fe07c07af8..0000000000 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/common/adwalk.c +++ /dev/null @@ -1,1147 +0,0 @@ -/****************************************************************************** - * - * Module Name: adwalk - Application-level disassembler parse tree walk routines - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#include "acpi.h" -#include "accommon.h" -#include "acparser.h" -#include "amlcode.h" -#include "acdisasm.h" -#include "acdispat.h" -#include "acnamesp.h" -#include "acapps.h" - - -#define _COMPONENT ACPI_TOOLS - ACPI_MODULE_NAME ("adwalk") - -/* - * aslmap - opcode mappings and reserved method names - */ -ACPI_OBJECT_TYPE -AslMapNamedOpcodeToDataType ( - UINT16 Opcode); - -/* Local prototypes */ - -static ACPI_STATUS -AcpiDmFindOrphanDescending ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context); - -static ACPI_STATUS -AcpiDmDumpDescending ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context); - -static ACPI_STATUS -AcpiDmXrefDescendingOp ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context); - -static ACPI_STATUS -AcpiDmCommonAscendingOp ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context); - -static ACPI_STATUS -AcpiDmLoadDescendingOp ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context); - -static UINT32 -AcpiDmInspectPossibleArgs ( - UINT32 CurrentOpArgCount, - UINT32 TargetCount, - ACPI_PARSE_OBJECT *Op); - -static ACPI_STATUS -AcpiDmResourceDescendingOp ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context); - - -/******************************************************************************* - * - * FUNCTION: AcpiDmDumpTree - * - * PARAMETERS: Origin - Starting object - * - * RETURN: None - * - * DESCRIPTION: Parse tree walk to format and output the nodes - * - ******************************************************************************/ - -void -AcpiDmDumpTree ( - ACPI_PARSE_OBJECT *Origin) -{ - ACPI_OP_WALK_INFO Info; - - - if (!Origin) - { - return; - } - - AcpiOsPrintf ("/*\nAML Parse Tree\n\n"); - Info.Flags = 0; - Info.Count = 0; - Info.Level = 0; - Info.WalkState = NULL; - AcpiDmWalkParseTree (Origin, AcpiDmDumpDescending, NULL, &Info); - AcpiOsPrintf ("*/\n\n"); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmFindOrphanMethods - * - * PARAMETERS: Origin - Starting object - * - * RETURN: None - * - * DESCRIPTION: Parse tree walk to find "orphaned" method invocations -- methods - * that are not resolved in the namespace - * - ******************************************************************************/ - -void -AcpiDmFindOrphanMethods ( - ACPI_PARSE_OBJECT *Origin) -{ - ACPI_OP_WALK_INFO Info; - - - if (!Origin) - { - return; - } - - Info.Flags = 0; - Info.Level = 0; - Info.WalkState = NULL; - AcpiDmWalkParseTree (Origin, AcpiDmFindOrphanDescending, NULL, &Info); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmFinishNamespaceLoad - * - * PARAMETERS: ParseTreeRoot - Root of the parse tree - * NamespaceRoot - Root of the internal namespace - * OwnerId - OwnerId of the table to be disassembled - * - * RETURN: None - * - * DESCRIPTION: Load all namespace items that are created within control - * methods. Used before namespace cross reference - * - ******************************************************************************/ - -void -AcpiDmFinishNamespaceLoad ( - ACPI_PARSE_OBJECT *ParseTreeRoot, - ACPI_NAMESPACE_NODE *NamespaceRoot, - ACPI_OWNER_ID OwnerId) -{ - ACPI_STATUS Status; - ACPI_OP_WALK_INFO Info; - ACPI_WALK_STATE *WalkState; - - - if (!ParseTreeRoot) - { - return; - } - - /* Create and initialize a new walk state */ - - WalkState = AcpiDsCreateWalkState (OwnerId, ParseTreeRoot, NULL, NULL); - if (!WalkState) - { - return; - } - - Status = AcpiDsScopeStackPush (NamespaceRoot, NamespaceRoot->Type, WalkState); - if (ACPI_FAILURE (Status)) - { - return; - } - - Info.Flags = 0; - Info.Level = 0; - Info.WalkState = WalkState; - AcpiDmWalkParseTree (ParseTreeRoot, AcpiDmLoadDescendingOp, - AcpiDmCommonAscendingOp, &Info); - ACPI_FREE (WalkState); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmCrossReferenceNamespace - * - * PARAMETERS: ParseTreeRoot - Root of the parse tree - * NamespaceRoot - Root of the internal namespace - * OwnerId - OwnerId of the table to be disassembled - * - * RETURN: None - * - * DESCRIPTION: Cross reference the namespace to create externals - * - ******************************************************************************/ - -void -AcpiDmCrossReferenceNamespace ( - ACPI_PARSE_OBJECT *ParseTreeRoot, - ACPI_NAMESPACE_NODE *NamespaceRoot, - ACPI_OWNER_ID OwnerId) -{ - ACPI_STATUS Status; - ACPI_OP_WALK_INFO Info; - ACPI_WALK_STATE *WalkState; - - - if (!ParseTreeRoot) - { - return; - } - - /* Create and initialize a new walk state */ - - WalkState = AcpiDsCreateWalkState (OwnerId, ParseTreeRoot, NULL, NULL); - if (!WalkState) - { - return; - } - - Status = AcpiDsScopeStackPush (NamespaceRoot, NamespaceRoot->Type, WalkState); - if (ACPI_FAILURE (Status)) - { - return; - } - - Info.Flags = 0; - Info.Level = 0; - Info.WalkState = WalkState; - AcpiDmWalkParseTree (ParseTreeRoot, AcpiDmXrefDescendingOp, - AcpiDmCommonAscendingOp, &Info); - ACPI_FREE (WalkState); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmConvertResourceIndexes - * - * PARAMETERS: ParseTreeRoot - Root of the parse tree - * NamespaceRoot - Root of the internal namespace - * - * RETURN: None - * - * DESCRIPTION: Convert fixed-offset references to resource descriptors to - * symbolic references. Should only be called after namespace has - * been cross referenced. - * - ******************************************************************************/ - -void -AcpiDmConvertResourceIndexes ( - ACPI_PARSE_OBJECT *ParseTreeRoot, - ACPI_NAMESPACE_NODE *NamespaceRoot) -{ - ACPI_STATUS Status; - ACPI_OP_WALK_INFO Info; - ACPI_WALK_STATE *WalkState; - - - if (!ParseTreeRoot) - { - return; - } - - /* Create and initialize a new walk state */ - - WalkState = AcpiDsCreateWalkState (0, ParseTreeRoot, NULL, NULL); - if (!WalkState) - { - return; - } - - Status = AcpiDsScopeStackPush (NamespaceRoot, NamespaceRoot->Type, WalkState); - if (ACPI_FAILURE (Status)) - { - return; - } - - Info.Flags = 0; - Info.Level = 0; - Info.WalkState = WalkState; - AcpiDmWalkParseTree (ParseTreeRoot, AcpiDmResourceDescendingOp, - AcpiDmCommonAscendingOp, &Info); - ACPI_FREE (WalkState); - return; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmDumpDescending - * - * PARAMETERS: ASL_WALK_CALLBACK - * - * RETURN: Status - * - * DESCRIPTION: Format and print contents of one parse Op. - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiDmDumpDescending ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context) -{ - ACPI_OP_WALK_INFO *Info = Context; - char *Path; - - - if (!Op) - { - return (AE_OK); - } - - /* Most of the information (count, level, name) here */ - - Info->Count++; - AcpiOsPrintf ("% 5d [%2.2d] ", Info->Count, Level); - AcpiDmIndent (Level); - AcpiOsPrintf ("%-28s", AcpiPsGetOpcodeName (Op->Common.AmlOpcode)); - - /* Extra info is helpful */ - - switch (Op->Common.AmlOpcode) - { - case AML_BYTE_OP: - - AcpiOsPrintf ("%2.2X", (UINT32) Op->Common.Value.Integer); - break; - - case AML_WORD_OP: - - AcpiOsPrintf ("%4.4X", (UINT32) Op->Common.Value.Integer); - break; - - case AML_DWORD_OP: - - AcpiOsPrintf ("%8.8X", (UINT32) Op->Common.Value.Integer); - break; - - case AML_QWORD_OP: - - AcpiOsPrintf ("%8.8X%8.8X", ACPI_FORMAT_UINT64 (Op->Common.Value.Integer)); - break; - - case AML_INT_NAMEPATH_OP: - - if (Op->Common.Value.String) - { - AcpiNsExternalizeName (ACPI_UINT32_MAX, Op->Common.Value.String, - NULL, &Path); - AcpiOsPrintf ("%s %p", Path, Op->Common.Node); - ACPI_FREE (Path); - } - else - { - AcpiOsPrintf ("[NULL]"); - } - break; - - case AML_NAME_OP: - case AML_METHOD_OP: - case AML_DEVICE_OP: - case AML_INT_NAMEDFIELD_OP: - - AcpiOsPrintf ("%4.4s", ACPI_CAST_PTR (char, &Op->Named.Name)); - break; - - default: - - break; - } - - AcpiOsPrintf ("\n"); - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmFindOrphanDescending - * - * PARAMETERS: ASL_WALK_CALLBACK - * - * RETURN: Status - * - * DESCRIPTION: Check namepath Ops for orphaned method invocations - * - * Note: Experimental. - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiDmFindOrphanDescending ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context) -{ - const ACPI_OPCODE_INFO *OpInfo; - ACPI_PARSE_OBJECT *ChildOp; - ACPI_PARSE_OBJECT *NextOp; - ACPI_PARSE_OBJECT *ParentOp; - UINT32 ArgCount; - - - if (!Op) - { - return (AE_OK); - } - - OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode); - - switch (Op->Common.AmlOpcode) - { -#ifdef ACPI_UNDER_DEVELOPMENT - case AML_ADD_OP: - - ChildOp = Op->Common.Value.Arg; - if ((ChildOp->Common.AmlOpcode == AML_INT_NAMEPATH_OP) && - !ChildOp->Common.Node) - { - AcpiNsExternalizeName (ACPI_UINT32_MAX, ChildOp->Common.Value.String, - NULL, &Path); - AcpiOsPrintf ("/* %-16s A-NAMEPATH: %s */\n", - Op->Common.AmlOpName, Path); - ACPI_FREE (Path); - - NextOp = Op->Common.Next; - if (!NextOp) - { - /* This NamePath has no args, assume it is an integer */ - - AcpiDmAddOpToExternalList (ChildOp, - ChildOp->Common.Value.String, ACPI_TYPE_INTEGER, 0, 0); - return (AE_OK); - } - - ArgCount = AcpiDmInspectPossibleArgs (3, 1, NextOp); - AcpiOsPrintf ("/* A-CHILDREN: %u Actual %u */\n", - ArgCount, AcpiDmCountChildren (Op)); - - if (ArgCount < 1) - { - /* One Arg means this is just a Store(Name,Target) */ - - AcpiDmAddOpToExternalList (ChildOp, - ChildOp->Common.Value.String, ACPI_TYPE_INTEGER, 0, 0); - return (AE_OK); - } - - AcpiDmAddOpToExternalList (ChildOp, - ChildOp->Common.Value.String, ACPI_TYPE_METHOD, ArgCount, 0); - } - break; -#endif - - case AML_STORE_OP: - - ChildOp = Op->Common.Value.Arg; - if ((ChildOp->Common.AmlOpcode == AML_INT_NAMEPATH_OP) && - !ChildOp->Common.Node) - { - NextOp = Op->Common.Next; - if (!NextOp) - { - /* This NamePath has no args, assume it is an integer */ - - AcpiDmAddOpToExternalList (ChildOp, - ChildOp->Common.Value.String, ACPI_TYPE_INTEGER, 0, 0); - return (AE_OK); - } - - ArgCount = AcpiDmInspectPossibleArgs (2, 1, NextOp); - if (ArgCount <= 1) - { - /* One Arg means this is just a Store(Name,Target) */ - - AcpiDmAddOpToExternalList (ChildOp, - ChildOp->Common.Value.String, ACPI_TYPE_INTEGER, 0, 0); - return (AE_OK); - } - - AcpiDmAddOpToExternalList (ChildOp, - ChildOp->Common.Value.String, ACPI_TYPE_METHOD, ArgCount, 0); - } - break; - - case AML_INT_NAMEPATH_OP: - - /* Must examine parent to see if this namepath is an argument */ - - ParentOp = Op->Common.Parent; - OpInfo = AcpiPsGetOpcodeInfo (ParentOp->Common.AmlOpcode); - - if ((OpInfo->Class != AML_CLASS_EXECUTE) && - (OpInfo->Class != AML_CLASS_CREATE) && - (OpInfo->ObjectType != ACPI_TYPE_LOCAL_ALIAS) && - (ParentOp->Common.AmlOpcode != AML_INT_METHODCALL_OP) && - !Op->Common.Node) - { - ArgCount = AcpiDmInspectPossibleArgs (0, 0, Op->Common.Next); - - /* - * Check if namepath is a predicate for if/while or lone parameter to - * a return. - */ - if (ArgCount == 0) - { - if (((ParentOp->Common.AmlOpcode == AML_IF_OP) || - (ParentOp->Common.AmlOpcode == AML_WHILE_OP) || - (ParentOp->Common.AmlOpcode == AML_RETURN_OP)) && - - /* And namepath is the first argument */ - (ParentOp->Common.Value.Arg == Op)) - { - AcpiDmAddOpToExternalList (Op, - Op->Common.Value.String, ACPI_TYPE_INTEGER, 0, 0); - break; - } - } - - /* - * This is a standalone namestring (not a parameter to another - * operator) - it *must* be a method invocation, nothing else is - * grammatically possible. - */ - AcpiDmAddOpToExternalList (Op, - Op->Common.Value.String, ACPI_TYPE_METHOD, ArgCount, 0); - } - break; - - default: - - break; - } - - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmLoadDescendingOp - * - * PARAMETERS: ASL_WALK_CALLBACK - * - * RETURN: Status - * - * DESCRIPTION: Descending handler for namespace control method object load - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiDmLoadDescendingOp ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context) -{ - ACPI_OP_WALK_INFO *Info = Context; - const ACPI_OPCODE_INFO *OpInfo; - ACPI_WALK_STATE *WalkState; - ACPI_OBJECT_TYPE ObjectType; - ACPI_STATUS Status; - char *Path = NULL; - ACPI_PARSE_OBJECT *NextOp; - ACPI_NAMESPACE_NODE *Node; - char FieldPath[5]; - BOOLEAN PreDefined = FALSE; - UINT8 PreDefineIndex = 0; - - - WalkState = Info->WalkState; - OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode); - ObjectType = OpInfo->ObjectType; - ObjectType = AslMapNamedOpcodeToDataType (Op->Asl.AmlOpcode); - - /* Only interested in operators that create new names */ - - if (!(OpInfo->Flags & AML_NAMED) && - !(OpInfo->Flags & AML_CREATE)) - { - goto Exit; - } - - /* Get the NamePath from the appropriate place */ - - if (OpInfo->Flags & AML_NAMED) - { - /* For all named operators, get the new name */ - - Path = (char *) Op->Named.Path; - - if (!Path && Op->Common.AmlOpcode == AML_INT_NAMEDFIELD_OP) - { - *ACPI_CAST_PTR (UINT32, &FieldPath[0]) = Op->Named.Name; - FieldPath[4] = 0; - Path = FieldPath; - } - } - else if (OpInfo->Flags & AML_CREATE) - { - /* New name is the last child */ - - NextOp = Op->Common.Value.Arg; - - while (NextOp->Common.Next) - { - NextOp = NextOp->Common.Next; - } - Path = NextOp->Common.Value.String; - } - - if (!Path) - { - goto Exit; - } - - /* Insert the name into the namespace */ - - Status = AcpiNsLookup (WalkState->ScopeInfo, Path, ObjectType, - ACPI_IMODE_LOAD_PASS2, ACPI_NS_DONT_OPEN_SCOPE, - WalkState, &Node); - - Op->Common.Node = Node; - - if (ACPI_SUCCESS (Status)) - { - /* Check if it's a predefined node */ - - while (AcpiGbl_PreDefinedNames[PreDefineIndex].Name) - { - if (ACPI_COMPARE_NAME (Node->Name.Ascii, - AcpiGbl_PreDefinedNames[PreDefineIndex].Name)) - { - PreDefined = TRUE; - break; - } - - PreDefineIndex++; - } - - /* - * Set node owner id if it satisfies all the following conditions: - * 1) Not a predefined node, _SB_ etc - * 2) Not the root node - * 3) Not a node created by Scope - */ - - if (!PreDefined && Node != AcpiGbl_RootNode && - Op->Common.AmlOpcode != AML_SCOPE_OP) - { - Node->OwnerId = WalkState->OwnerId; - } - } - - -Exit: - - if (AcpiNsOpensScope (ObjectType)) - { - if (Op->Common.Node) - { - Status = AcpiDsScopeStackPush (Op->Common.Node, ObjectType, WalkState); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - } - } - - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmXrefDescendingOp - * - * PARAMETERS: ASL_WALK_CALLBACK - * - * RETURN: Status - * - * DESCRIPTION: Descending handler for namespace cross reference - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiDmXrefDescendingOp ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context) -{ - ACPI_OP_WALK_INFO *Info = Context; - const ACPI_OPCODE_INFO *OpInfo; - ACPI_WALK_STATE *WalkState; - ACPI_OBJECT_TYPE ObjectType; - ACPI_OBJECT_TYPE ObjectType2; - ACPI_STATUS Status; - char *Path = NULL; - ACPI_PARSE_OBJECT *NextOp; - ACPI_NAMESPACE_NODE *Node; - ACPI_OPERAND_OBJECT *Object; - UINT32 ParamCount = 0; - char *Pathname; - - - WalkState = Info->WalkState; - OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode); - ObjectType = OpInfo->ObjectType; - ObjectType = AslMapNamedOpcodeToDataType (Op->Asl.AmlOpcode); - - if ((!(OpInfo->Flags & AML_NAMED)) && - (!(OpInfo->Flags & AML_CREATE)) && - (Op->Common.AmlOpcode != AML_INT_NAMEPATH_OP) && - (Op->Common.AmlOpcode != AML_NOTIFY_OP)) - { - goto Exit; - } - - - /* Get the NamePath from the appropriate place */ - - if (OpInfo->Flags & AML_NAMED) - { - /* - * Only these two operators (Alias, Scope) refer to an existing - * name, it is the first argument - */ - if (Op->Common.AmlOpcode == AML_ALIAS_OP) - { - ObjectType = ACPI_TYPE_ANY; - - NextOp = Op->Common.Value.Arg; - NextOp = NextOp->Common.Value.Arg; - if (NextOp->Common.AmlOpcode == AML_INT_NAMEPATH_OP) - { - Path = NextOp->Common.Value.String; - } - } - else if (Op->Common.AmlOpcode == AML_SCOPE_OP) - { - Path = (char *) Op->Named.Path; - } - } - else if (OpInfo->Flags & AML_CREATE) - { - /* Referenced Buffer Name is the first child */ - - ObjectType = ACPI_TYPE_BUFFER; /* Change from TYPE_BUFFER_FIELD */ - - NextOp = Op->Common.Value.Arg; - if (NextOp->Common.AmlOpcode == AML_INT_NAMEPATH_OP) - { - Path = NextOp->Common.Value.String; - } - } - else if (Op->Common.AmlOpcode == AML_NOTIFY_OP) - { - Path = Op->Common.Value.Arg->Asl.Value.String; - } - else - { - Path = Op->Common.Value.String; - } - - if (!Path) - { - goto Exit; - } - - /* - * Lookup the name in the namespace. Name must exist at this point, or it - * is an invalid reference. - * - * The namespace is also used as a lookup table for references to resource - * descriptors and the fields within them. - */ - Node = NULL; - Status = AcpiNsLookup (WalkState->ScopeInfo, Path, ACPI_TYPE_ANY, - ACPI_IMODE_EXECUTE, ACPI_NS_SEARCH_PARENT | ACPI_NS_DONT_OPEN_SCOPE, - WalkState, &Node); - if (ACPI_SUCCESS (Status) && (Node->Flags & ANOBJ_IS_EXTERNAL)) - { - /* Node was created by an External() statement */ - - Status = AE_NOT_FOUND; - } - - if (ACPI_FAILURE (Status)) - { - if (Status == AE_NOT_FOUND) - { - /* - * Add this symbol as an external declaration, except if the - * parent is a CondRefOf operator. For this operator, we do not - * need an external, nor do we want one, since this can cause - * disassembly problems if the symbol is actually a control - * method. - */ - if (!(Op->Asl.Parent && - (Op->Asl.Parent->Asl.AmlOpcode == AML_COND_REF_OF_OP))) - { - if (Node) - { - AcpiDmAddNodeToExternalList (Node, - (UINT8) ObjectType, 0, 0); - } - else - { - AcpiDmAddOpToExternalList (Op, Path, - (UINT8) ObjectType, 0, 0); - } - } - } - } - - /* - * Found the node, but check if it came from an external table. - * Add it to external list. Note: Node->OwnerId == 0 indicates - * one of the built-in ACPI Names (_OS_ etc.) which can safely - * be ignored. - */ - else if (Node->OwnerId && - (WalkState->OwnerId != Node->OwnerId)) - { - ObjectType2 = ObjectType; - - Object = AcpiNsGetAttachedObject (Node); - if (Object) - { - ObjectType2 = Object->Common.Type; - if (ObjectType2 == ACPI_TYPE_METHOD) - { - ParamCount = Object->Method.ParamCount; - } - } - - Pathname = AcpiNsGetExternalPathname (Node); - if (!Pathname) - { - return (AE_NO_MEMORY); - } - - AcpiDmAddNodeToExternalList (Node, (UINT8) ObjectType2, - ParamCount, ACPI_EXT_RESOLVED_REFERENCE); - - ACPI_FREE (Pathname); - Op->Common.Node = Node; - } - else - { - Op->Common.Node = Node; - } - - -Exit: - /* Open new scope if necessary */ - - if (AcpiNsOpensScope (ObjectType)) - { - if (Op->Common.Node) - { - Status = AcpiDsScopeStackPush (Op->Common.Node, ObjectType, WalkState); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - } - } - - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmResourceDescendingOp - * - * PARAMETERS: ASL_WALK_CALLBACK - * - * RETURN: None - * - * DESCRIPTION: Process one parse op during symbolic resource index conversion. - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiDmResourceDescendingOp ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context) -{ - ACPI_OP_WALK_INFO *Info = Context; - const ACPI_OPCODE_INFO *OpInfo; - ACPI_WALK_STATE *WalkState; - ACPI_OBJECT_TYPE ObjectType; - ACPI_STATUS Status; - - - WalkState = Info->WalkState; - OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode); - - /* Open new scope if necessary */ - - ObjectType = OpInfo->ObjectType; - if (AcpiNsOpensScope (ObjectType)) - { - if (Op->Common.Node) - { - - Status = AcpiDsScopeStackPush (Op->Common.Node, ObjectType, WalkState); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - } - } - - /* - * Check if this operator contains a reference to a resource descriptor. - * If so, convert the reference into a symbolic reference. - */ - AcpiDmCheckResourceReference (Op, WalkState); - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmCommonAscendingOp - * - * PARAMETERS: ASL_WALK_CALLBACK - * - * RETURN: None - * - * DESCRIPTION: Ascending handler for combined parse/namespace walks. Closes - * scope if necessary. - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiDmCommonAscendingOp ( - ACPI_PARSE_OBJECT *Op, - UINT32 Level, - void *Context) -{ - ACPI_OP_WALK_INFO *Info = Context; - const ACPI_OPCODE_INFO *OpInfo; - ACPI_OBJECT_TYPE ObjectType; - - - /* Close scope if necessary */ - - OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode); - ObjectType = OpInfo->ObjectType; - ObjectType = AslMapNamedOpcodeToDataType (Op->Asl.AmlOpcode); - - if (AcpiNsOpensScope (ObjectType)) - { - (void) AcpiDsScopeStackPop (Info->WalkState); - } - - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmInspectPossibleArgs - * - * PARAMETERS: CurrentOpArgCount - Which arg of the current op was the - * possible method invocation found - * TargetCount - Number of targets (0,1,2) for this op - * Op - Parse op - * - * RETURN: Status - * - * DESCRIPTION: Examine following args and next ops for possible arguments - * for an unrecognized method invocation. - * - ******************************************************************************/ - -static UINT32 -AcpiDmInspectPossibleArgs ( - UINT32 CurrentOpArgCount, - UINT32 TargetCount, - ACPI_PARSE_OBJECT *Op) -{ - const ACPI_OPCODE_INFO *OpInfo; - UINT32 i; - UINT32 Last = 0; - UINT32 Lookahead; - - - Lookahead = (ACPI_METHOD_NUM_ARGS + TargetCount) - CurrentOpArgCount; - - /* Lookahead for the maximum number of possible arguments */ - - for (i = 0; i < Lookahead; i++) - { - if (!Op) - { - break; - } - - OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode); - - /* - * Any one of these operators is "very probably" not a method arg - */ - if ((Op->Common.AmlOpcode == AML_STORE_OP) || - (Op->Common.AmlOpcode == AML_NOTIFY_OP)) - { - break; - } - - if ((OpInfo->Class != AML_CLASS_EXECUTE) && - (OpInfo->Class != AML_CLASS_CONTROL)) - { - Last = i+1; - } - - Op = Op->Common.Next; - } - - return (Last); -} diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/common/ahids.c b/src/add-ons/kernel/bus_managers/acpi/acpica/common/ahids.c deleted file mode 100644 index fed09817af..0000000000 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/common/ahids.c +++ /dev/null @@ -1,312 +0,0 @@ -/****************************************************************************** - * - * Module Name: ahids - Table of ACPI/PNP _HID/_CID values - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#include "acpi.h" -#include "accommon.h" - -#define _COMPONENT ACPI_UTILITIES - ACPI_MODULE_NAME ("ahids") - - -/* - * ACPI/PNP Device IDs with description strings - */ -const AH_DEVICE_ID AslDeviceIds[] = -{ - {"10EC5640", "Realtek I2S Audio Codec"}, - {"80860F09", "Intel PWM Controller"}, - {"80860F0A", "Intel Atom UART Controller"}, - {"80860F0E", "Intel SPI Controller"}, - {"80860F14", "Intel Baytrail SDIO/MMC Host Controller"}, - {"80860F28", "Intel SST Audio DSP"}, - {"80860F41", "Intel Baytrail I2C Host Controller"}, - {"ACPI0001", "SMBus 1.0 Host Controller"}, - {"ACPI0002", "Smart Battery Subsystem"}, - {"ACPI0003", "Power Source Device"}, - {"ACPI0004", "Module Device"}, - {"ACPI0005", "SMBus 2.0 Host Controller"}, - {"ACPI0006", "GPE Block Device"}, - {"ACPI0007", "Processor Device"}, - {"ACPI0008", "Ambient Light Sensor Device"}, - {"ACPI0009", "I/O xAPIC Device"}, - {"ACPI000A", "I/O APIC Device"}, - {"ACPI000B", "I/O SAPIC Device"}, - {"ACPI000C", "Processor Aggregator Device"}, - {"ACPI000D", "Power Meter Device"}, - {"ACPI000E", "Time and Alarm Device"}, - {"ACPI000F", "User Presence Detection Device"}, - {"ADMA0F28", "Intel Audio DMA"}, - {"AMCR0F28", "Intel Audio Machine Driver"}, - {"ATK4001", "Asus Radio Control Button"}, - {"ATML1000", "Atmel Touchscreen Controller"}, - {"AUTH2750", "AuthenTec AES2750"}, - {"BCM2E39", "Broadcom BT Serial Bus Driver over UART Bus Enumerator"}, - {"BCM4752E", "Broadcom GPS Controller"}, - {"BMG0160", "Bosch Gyro Sensor"}, - {"CPLM3218", "Capella Micro CM3218x Ambient Light Sensor"}, - {"DELLABCE", "Dell Airplane Mode Switch Driver"}, - {"DLAC3002", "Qualcomm Atheros Bluetooth UART Transport"}, - {"FTTH5506", "FocalTech 5506 Touch Controller"}, - {"HAD0F28", "Intel HDMI Audio Driver"}, - {"INBC0000", "GPIO Expander"}, - {"INT0002", "Virtual GPIO Controller"}, - {"INT0800", "Intel 82802 Firmware Hub Device"}, - {"INT3394", "ACPI System Fan"}, - {"INT3396", "Standard Power Management Controller"}, - {"INT33A0", "Intel Smart Connect Technology Device"}, - {"INT33A1", "Intel Power Engine"}, - {"INT33BB", "Intel Baytrail SD Host Controller"}, - {"INT33BD", "Intel Baytrail Mailbox Device"}, - {"INT33BE", "Camera Sensor OV5693"}, - {"INT33C0", "Intel Serial I/O SPI Host Controller"}, - {"INT33C1", "Intel Serial I/O SPI Host Controller"}, - {"INT33C2", "Intel Serial I/O I2C Host Controller"}, - {"INT33C3", "Intel Serial I/O I2C Host Controller"}, - {"INT33C4", "Intel Serial I/O UART Host Controller"}, - {"INT33C5", "Intel Serial I/O UART Host Controller"}, - {"INT33C6", "Intel SD Host Controller"}, - {"INT33C7", "Intel Serial I/O GPIO Host Controller"}, - {"INT33C8", "Intel Smart Sound Technology Host Controller"}, - {"INT33C9", "Wolfson Microelectronics Audio WM5102"}, - {"INT33CA", "Intel SPB Peripheral"}, - {"INT33CB", "Intel Smart Sound Technology Audio Codec"}, - {"INT33D1", "Intel GPIO Buttons"}, - {"INT33D2", "Intel GPIO Buttons"}, - {"INT33D3", "Intel GPIO Buttons"}, - {"INT33D4", "Intel GPIO Buttons"}, - {"INT33D6", "Intel Virtual Buttons Device"}, - {"INT33F0", "Camera Sensor MT9M114"}, - {"INT33F4", "XPOWER PMIC Controller"}, - {"INT33F5", "TI PMIC Controller"}, - {"INT33FB", "MIPI-CSI Camera Sensor OV2722"}, - {"INT33FC", "Intel Baytrail GPIO Controller"}, - {"INT33FD", "Intel Baytrail Power Management IC"}, - {"INT33FE", "XPOWER Battery Device"}, - {"INT3400", "Intel Dynamic Power Performance Management"}, - {"INT3401", "Intel Extended Thermal Model CPU"}, - {"INT3403", "DPTF Temperature Sensor"}, - {"INT3406", "Intel Dynamic Platform & Thermal Framework Display Participant"}, - {"INT3407", "DPTF Platform Power Meter"}, - {"INT340E", "Motherboard Resources"}, - {"INT3420", "Intel Bluetooth RF Kill"}, - {"INT3F0D", "ACPI Motherboard Resources"}, - {"INTCF1A", "Sony IMX175 Camera Sensor"}, - {"INTCFD9", "Intel Baytrail SOC GPIO Controller"}, - {"INTL9C60", "Intel Baytrail SOC DMA Controller"}, - {"INVN6500", "InvenSense MPU-6500 Six Axis Gyroscope and Accelerometer"}, - {"LNXCPU", "Linux Logical CPU"}, - {"LNXPOWER", "ACPI Power Resource (power gating)"}, - {"LNXPWRBN", "System Power Button"}, - {"LNXSYBUS", "System Bus"}, - {"LNXSYSTM", "ACPI Root Node"}, - {"LNXTHERM", "ACPI Thermal Zone"}, - {"LNXVIDEO", "ACPI Video Controller"}, - {"MAX17047", "Fuel Gauge Controller"}, - {"MSFT0101", "TPM 2.0 Security Device"}, - {"NXP5442", "NXP 5442 Near Field Communications Controller"}, - {"NXP5472", "NXP NFC"}, - {"PNP0000", "8259-compatible Programmable Interrupt Controller"}, - {"PNP0001", "EISA Interrupt Controller"}, - {"PNP0002", "MCA Interrupt Controller"}, - {"PNP0003", "IO-APIC Interrupt Controller"}, - {"PNP0100", "PC-class System Timer"}, - {"PNP0103", "HPET System Timer"}, - {"PNP0200", "PC-class DMA Controller"}, - {"PNP0300", "IBM PC/XT Keyboard Controller (83 key)"}, - {"PNP0301", "IBM PC/XT Keyboard Controller (86 key)"}, - {"PNP0302", "IBM PC/XT Keyboard Controller (84 key)"}, - {"PNP0303", "IBM Enhanced Keyboard (101/102-key, PS/2 Mouse)"}, - {"PNP0400", "Standard LPT Parallel Port"}, - {"PNP0401", "ECP Parallel Port"}, - {"PNP0500", "Standard PC COM Serial Port"}, - {"PNP0501", "16550A-compatible COM Serial Port"}, - {"PNP0510", "Generic IRDA-compatible Device"}, - {"PNP0800", "Microsoft Sound System Compatible Device"}, - {"PNP0A03", "PCI Bus"}, - {"PNP0A05", "Generic Container Device"}, - {"PNP0A06", "Generic Container Device"}, - {"PNP0A08", "PCI Express Bus"}, - {"PNP0B00", "AT Real-Time Clock"}, - {"PNP0B01", "Intel PIIX4-compatible RTC/CMOS Device"}, - {"PNP0B02", "Dallas Semiconductor-compatible RTC/CMOS Device"}, - {"PNP0C01", "System Board"}, - {"PNP0C02", "PNP Motherboard Resources"}, - {"PNP0C04", "x87-compatible Floating Point Processing Unit"}, - {"PNP0C08", "ACPI Core Hardware"}, - {"PNP0C09", "Embedded Controller Device"}, - {"PNP0C0A", "Control Method Battery"}, - {"PNP0C0B", "Fan (Thermal Solution)"}, - {"PNP0C0C", "Power Button Device"}, - {"PNP0C0D", "Lid Device"}, - {"PNP0C0E", "Sleep Button Device"}, - {"PNP0C0F", "PCI Interrupt Link Device"}, - {"PNP0C10", "System Indicator Device"}, - {"PNP0C11", "Thermal Zone"}, - {"PNP0C12", "Device Bay Controller"}, - {"PNP0C14", "Windows Management Instrumentation Device"}, - {"PNP0C15", "Docking Station"}, - {"PNP0C40", "Standard Button Controller"}, - {"PNP0C50", "HID Protocol Device (I2C bus)"}, - {"PNP0C60", "Display Sensor Device"}, - {"PNP0C70", "Dock Sensor Device"}, - {"PNP0C80", "Memory Device"}, - {"PNP0D10", "XHCI USB Controller with debug"}, - {"PNP0D15", "XHCI USB Controller without debug"}, - {"PNP0D20", "EHCI USB Controller without debug"}, - {"PNP0D25", "EHCI USB Controller with debug"}, - {"PNP0D40", "SDA Standard Compliant SD Host Controller"}, - {"PNP0D80", "Windows-compatible System Power Management Controller"}, - {"PNP0F03", "Microsoft PS/2-style Mouse"}, - {"PNP0F13", "PS/2 Mouse"}, - {"RTL8723", "Realtek Wireless Controller"}, - {"SMB0349", "Charger"}, - {"SMO91D0", "Sensor Hub"}, - {"SMSC3750", "SMSC 3750 USB MUX"}, - {"SSPX0000", "Intel SSP Device"}, - {"TBQ24296", "Charger"}, - - {NULL, NULL} -}; - - -/******************************************************************************* - * - * FUNCTION: AcpiAhMatchHardwareId - * - * PARAMETERS: HardwareId - String representation of an _HID or _CID - * - * RETURN: ID info struct. NULL if HardwareId is not found - * - * DESCRIPTION: Lookup an _HID/_CID in the device ID table - * - ******************************************************************************/ - -const AH_DEVICE_ID * -AcpiAhMatchHardwareId ( - char *HardwareId) -{ - const AH_DEVICE_ID *Info; - - - for (Info = AslDeviceIds; Info->Name; Info++) - { - if (!strcmp (HardwareId, Info->Name)) - { - return (Info); - } - } - - return (NULL); -} diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/common/ahpredef.c b/src/add-ons/kernel/bus_managers/acpi/acpica/common/ahpredef.c deleted file mode 100644 index 5104defd38..0000000000 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/common/ahpredef.c +++ /dev/null @@ -1,441 +0,0 @@ -/****************************************************************************** - * - * Module Name: ahpredef - Table of all known ACPI predefined names - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#include "acpi.h" -#include "accommon.h" - -#define _COMPONENT ACPI_UTILITIES - ACPI_MODULE_NAME ("ahpredef") - -/* - * iASL only needs a partial table (short descriptions only). - * AcpiHelp needs the full table. - */ -#ifdef ACPI_ASL_COMPILER -#define AH_PREDEF(Name, ShortDesc, LongDesc) {Name, ShortDesc} -#else -#define AH_PREDEF(Name, ShortDesc, LongDesc) {Name, ShortDesc, LongDesc} -#endif - -/* - * Predefined ACPI names, with short description and return value. - * This table was extracted directly from the ACPI specification. - */ -const AH_PREDEFINED_NAME AslPredefinedInfo[] = -{ - AH_PREDEF ("_ACx", "Active Cooling", "Returns the active cooling policy threshold values"), - AH_PREDEF ("_ADR", "Address", "Returns address of a device on parent bus, and resource field"), - AH_PREDEF ("_AEI", "ACPI Event Interrupts", "Returns a list of GPIO events to be used as ACPI events"), - AH_PREDEF ("_ALC", "Ambient Light Chromaticity", "Returns the ambient light color chromaticity"), - AH_PREDEF ("_ALI", "Ambient Light Illuminance", "Returns the ambient light brightness"), - AH_PREDEF ("_ALN", "Alignment", "Base alignment, Resource Descriptor field"), - AH_PREDEF ("_ALP", "Ambient Light Polling", "Returns the ambient light sensor polling frequency"), - AH_PREDEF ("_ALR", "Ambient Light Response", "Returns the ambient light brightness to display brightness mappings"), - AH_PREDEF ("_ALT", "Ambient Light Temperature", "Returns the ambient light color temperature"), - AH_PREDEF ("_ALx", "Active List", "Returns a list of active cooling device objects"), - AH_PREDEF ("_ART", "Active Cooling Relationship Table", "Returns thermal relationship information between platform devices and fan devices"), - AH_PREDEF ("_ASI", "Address Space Id", "Resource Descriptor field"), - AH_PREDEF ("_ASZ", "Access Size", "Resource Descriptor field"), - AH_PREDEF ("_ATT", "Type-Specific Attribute", "Resource Descriptor field"), - AH_PREDEF ("_BAS", "Base Address", "Range base address, Resource Descriptor field"), - AH_PREDEF ("_BBN", "BIOS Bus Number", "Returns the PCI bus number returned by the BIOS"), - AH_PREDEF ("_BCL", "Brightness Control Levels", "Returns a list of supported brightness control levels"), - AH_PREDEF ("_BCM", "Brightness Control Method", "Sets the brightness level of the display device"), - AH_PREDEF ("_BCT", "Battery Charge Time", "Returns time remaining to complete charging battery"), - AH_PREDEF ("_BDN", "BIOS Dock Name", "Returns the Dock ID returned by the BIOS"), - AH_PREDEF ("_BFS", "Back From Sleep", "Inform AML of a wake event"), - AH_PREDEF ("_BIF", "Battery Information", "Returns a Control Method Battery information block"), - AH_PREDEF ("_BIX", "Battery Information Extended", "Returns a Control Method Battery extended information block"), - AH_PREDEF ("_BLT", "Battery Level Threshold", "Set battery level threshold preferences"), - AH_PREDEF ("_BM_", "Bus Master", "Resource Descriptor field"), - AH_PREDEF ("_BMA", "Battery Measurement Averaging Interval", "Sets battery measurement averaging interval"), - AH_PREDEF ("_BMC", "Battery Maintenance Control", "Sets battery maintenance and control features"), - AH_PREDEF ("_BMD", "Battery Maintenance Data", "Returns battery maintenance, control, and state data"), - AH_PREDEF ("_BMS", "Battery Measurement Sampling Time", "Sets the battery measurement sampling time"), - AH_PREDEF ("_BQC", "Brightness Query Current", "Returns the current display brightness level"), - AH_PREDEF ("_BST", "Battery Status", "Returns a Control Method Battery status block"), - AH_PREDEF ("_BTH", "Battery Throttle Limit", "Thermal limit for charging and discharging"), - AH_PREDEF ("_BTM", "Battery Time", "Returns the battery runtime"), - AH_PREDEF ("_BTP", "Battery Trip Point", "Sets a Control Method Battery trip point"), - AH_PREDEF ("_CBA", "Configuration Base Address", "Sets the base address for a PCI Express host bridge"), - AH_PREDEF ("_CCA", "Cache Coherency Attribute", "Returns a device's support level for cache coherency"), - AH_PREDEF ("_CDM", "Clock Domain", "Returns a logical processor's clock domain identifier"), - AH_PREDEF ("_CID", "Compatible ID", "Returns a device's Plug and Play Compatible ID list"), - AH_PREDEF ("_CLS", "Class Code", "Returns PCI class code and subclass"), - AH_PREDEF ("_CPC", "Continuous Performance Control", "Returns a list of performance control interfaces"), - AH_PREDEF ("_CR3", "Warm/Standby Temperature", "Temperature for a fast low power state"), - AH_PREDEF ("_CRS", "Current Resource Settings", "Returns the current resource settings for a device"), - AH_PREDEF ("_CRT", "Critical Temperature", "Returns the shutdown critical temperature"), - AH_PREDEF ("_CSD", "C-State Dependencies", "Returns a list of C-state dependencies"), - AH_PREDEF ("_CST", "C-States", "Returns a list of supported C-states"), - AH_PREDEF ("_CWS", "Clear Wake Alarm Status", "Clear the status of wake alarms"), - AH_PREDEF ("_DBT", "Debounce Timeout", "Timeout value, Resource Descriptor field"), - AH_PREDEF ("_DCK", "Dock Present", "Sets docking isolation. Presence indicates device is a docking station"), - AH_PREDEF ("_DCS", "Display Current Status", "Returns status of the display output device"), - AH_PREDEF ("_DDC", "Display Data Current", "Returns the EDID for the display output device"), - AH_PREDEF ("_DDN", "DOS Device Name", "Returns a device logical name"), - AH_PREDEF ("_DEC", "Decode", "Device decoding type, Resource Descriptor field"), - AH_PREDEF ("_DEP", "Dependencies", "Returns a list of operation region dependencies"), - AH_PREDEF ("_DGS", "Display Graphics State", "Return the current state of the output device"), - AH_PREDEF ("_DIS", "Disable Device", "Disables a device"), - AH_PREDEF ("_DLM", "Device Lock Mutex", "Defines mutex for OS/AML sharing"), - AH_PREDEF ("_DMA", "Direct Memory Access", "Returns device current resources for DMA transactions, and resource field"), - AH_PREDEF ("_DOD", "Display Output Devices", "Enumerate all devices attached to the display adapter"), - AH_PREDEF ("_DOS", "Disable Output Switching", "Sets the display output switching mode"), - AH_PREDEF ("_DPL", "Device Selection Polarity", "Polarity of Device Selection signal, Resource Descriptor field"), - AH_PREDEF ("_DRS", "Drive Strength", "Drive Strength setting for GPIO connection, Resource Descriptor field"), - AH_PREDEF ("_DSD", "Device-Specific Data", "Returns a list of device property information"), - AH_PREDEF ("_DSM", "Device-Specific Method", "Executes device-specific functions"), - AH_PREDEF ("_DSS", "Device Set State", "Sets the display device state"), - AH_PREDEF ("_DSW", "Device Sleep Wake", "Sets the sleep and wake transition states for a device"), - AH_PREDEF ("_DTI", "Device Temperature Indication", "Conveys native device temperature to the platform"), - AH_PREDEF ("_Exx", "Edge-Triggered GPE", "Method executed as a result of a general-purpose event"), - AH_PREDEF ("_EC_", "Embedded Controller", "returns EC offset and query information"), - AH_PREDEF ("_EDL", "Eject Device List", "Returns a list of devices that are dependent on a device (docking)"), - AH_PREDEF ("_EJD", "Ejection Dependent Device", "Returns the name of dependent (parent) device (docking)"), - AH_PREDEF ("_EJx", "Eject Device", "Begin or cancel a device ejection request (docking)"), - AH_PREDEF ("_END", "Endianness", "Endian orientation, Resource Descriptor field"), - AH_PREDEF ("_EVT", "Event", "Event method for GPIO events"), - AH_PREDEF ("_FDE", "Floppy Disk Enumerate", "Returns floppy disk configuration information"), - AH_PREDEF ("_FDI", "Floppy Drive Information", "Returns a floppy drive information block"), - AH_PREDEF ("_FDM", "Floppy Drive Mode", "Sets a floppy drive speed"), - AH_PREDEF ("_FIF", "Fan Information", "Returns fan device information"), - AH_PREDEF ("_FIX", "Fixed Register Resource Provider", "Returns a list of devices that implement FADT register blocks"), - AH_PREDEF ("_FLC", "Flow Control", "Flow control, Resource Descriptor field"), - AH_PREDEF ("_FPS", "Fan Performance States", "Returns a list of supported fan performance states"), - AH_PREDEF ("_FSL", "Fan Set Level", "Control method that sets the fan device's speed level (performance state)"), - AH_PREDEF ("_FST", "Fan Status", "Returns current status information for a fan device"), - AH_PREDEF ("_GAI", "Get Averaging Interval", "Returns the power meter averaging interval"), - AH_PREDEF ("_GCP", "Get Capabilities", "Get device time capabilities"), - AH_PREDEF ("_GHL", "Get Hardware Limit", "Returns the hardware limit enforced by the power meter"), - AH_PREDEF ("_GL_", "Global Lock", "OS-defined Global Lock mutex object"), - AH_PREDEF ("_GLK", "Get Global Lock Requirement", "Returns a device's Global Lock requirement for device access"), - AH_PREDEF ("_GPD", "Get Post Data", "Returns the value of the VGA device that will be posted at boot"), - AH_PREDEF ("_GPE", "General Purpose Events", "Predefined scope (\\_GPE) or SCI number for EC"), - AH_PREDEF ("_GRA", "Granularity", "Address space granularity, Resource Descriptor field"), - AH_PREDEF ("_GRT", "Get Real Time", "Returns current time-of-day from a time/alarm device"), - AH_PREDEF ("_GSB", "Global System Interrupt Base", "Returns the GSB for a I/O APIC device"), - AH_PREDEF ("_GTF", "Get Task File", "Returns a list of ATA commands to restore a drive to default state"), - AH_PREDEF ("_GTM", "Get Timing Mode", "Returns a list of IDE controller timing information"), - AH_PREDEF ("_GTS", "Going To Sleep", "Inform AML of pending sleep"), - AH_PREDEF ("_GWS", "Get Wake Status", "Return status of wake alarms"), - AH_PREDEF ("_HE_", "High-Edge", "Interrupt triggering, Resource Descriptor field"), - AH_PREDEF ("_HID", "Hardware ID", "Returns a device's Plug and Play Hardware ID"), - AH_PREDEF ("_HOT", "Hot Temperature", "Returns the critical temperature for sleep (entry to S4)"), - AH_PREDEF ("_HPP", "Hot Plug Parameters", "Returns a list of hot-plug information for a PCI device"), - AH_PREDEF ("_HPX", "Hot Plug Parameter Extensions", "Returns a list of hot-plug information for a PCI device. Supersedes _HPP"), - AH_PREDEF ("_HRV", "Hardware Revision", "Returns a hardware revision value"), - AH_PREDEF ("_IFT", "IPMI Interface Type", "See the Intelligent Platform Management Interface Specification"), - AH_PREDEF ("_INI", "Initialize", "Performs device specific initialization"), - AH_PREDEF ("_INT", "Interrupts", "Interrupt mask bits, Resource Descriptor field"), - AH_PREDEF ("_IOR", "I/O Restriction", "Restriction type, Resource Descriptor field"), - AH_PREDEF ("_IRC", "Inrush Current", "Presence indicates that a device has a significant inrush current draw"), - AH_PREDEF ("_Lxx", "Level-Triggered GPE", "Control method executed as a result of a general-purpose event"), - AH_PREDEF ("_LCK", "Lock Device", "Locks or unlocks a device (docking)"), - AH_PREDEF ("_LEN", "Length", "Range length, Resource Descriptor field"), - AH_PREDEF ("_LID", "Lid Status", "Returns the open/closed status of the lid on a mobile system"), - AH_PREDEF ("_LIN", "Lines In Use", "Handshake lines, Resource Descriptor field"), - AH_PREDEF ("_LL_", "Low Level", "Interrupt polarity, Resource Descriptor field"), - AH_PREDEF ("_LPD", "Low Power Dependencies", "Returns a list of dependencies for low power idle entry"), - AH_PREDEF ("_LPI", "Low Power Idle States", "Returns a list of supported low power idle states"), - AH_PREDEF ("_MAF", "Maximum Address Fixed", "Resource Descriptor field"), - AH_PREDEF ("_MAT", "Multiple APIC Table Entry", "Returns a list of MADT APIC structure entries"), - AH_PREDEF ("_MAX", "Maximum Base Address", "Resource Descriptor field"), - AH_PREDEF ("_MBM", "Memory Bandwidth Monitoring Data", "Returns bandwidth monitoring data for a memory device"), - AH_PREDEF ("_MEM", "Memory Attributes", "Resource Descriptor field"), - AH_PREDEF ("_MIF", "Minimum Address Fixed", "Resource Descriptor field"), - AH_PREDEF ("_MIN", "Minimum Base Address", "Resource Descriptor field"), - AH_PREDEF ("_MLS", "Multiple Language String", "Returns a device description in multiple languages"), - AH_PREDEF ("_MOD", "Mode", "Interrupt mode, Resource Descriptor field"), - AH_PREDEF ("_MSG", "Message", "Sets the system message waiting status indicator"), - AH_PREDEF ("_MSM", "Memory Set Monitoring", "Sets bandwidth monitoring parameters for a memory device"), - AH_PREDEF ("_MTL", "Minimum Throttle Limit", "Returns the minimum throttle limit for a thermal zone"), - AH_PREDEF ("_MTP", "Memory Type", "Resource Descriptor field"), - AH_PREDEF ("_NTT", "Notification Temperature Threshold", "Returns a threshold for device temperature change that requires platform notification"), - AH_PREDEF ("_OFF", "Power Off", "Sets a power resource to the off state"), - AH_PREDEF ("_ON_", "Power On", "Sets a power resource to the on state"), - AH_PREDEF ("_OS_", "Operating System", "Returns a string that identifies the operating system"), - AH_PREDEF ("_OSC", "Operating System Capabilities", "Inform AML of host features and capabilities"), - AH_PREDEF ("_OSI", "Operating System Interfaces", "Returns supported interfaces, behaviors, and features"), - AH_PREDEF ("_OST", "OSPM Status Indication", "Inform AML of event processing status"), - AH_PREDEF ("_PAI", "Power Averaging Interval", "Sets the averaging interval for a power meter"), - AH_PREDEF ("_PAR", "Parity", "Parity bits, Resource Descriptor field"), - AH_PREDEF ("_PCL", "Power Consumer List", "Returns a list of devices powered by a power source"), - AH_PREDEF ("_PCT", "Performance Control", "Returns processor performance control and status registers"), - AH_PREDEF ("_PDC", "Processor Driver Capabilities", "Inform AML of processor driver capabilities"), - AH_PREDEF ("_PDL", "P-state Depth Limit", "Returns the lowest available performance P-state"), - AH_PREDEF ("_PHA", "Clock Phase", "Clock phase, Resource Descriptor field"), - AH_PREDEF ("_PIC", "Interrupt Model", "Inform AML of the interrupt model in use"), - AH_PREDEF ("_PIF", "Power Source Information", "Returns a Power Source information block"), - AH_PREDEF ("_PIN", "Pin List", "Pin list, Resource Descriptor field"), - AH_PREDEF ("_PLD", "Physical Location of Device", "Returns a device's physical location information"), - AH_PREDEF ("_PMC", "Power Meter Capabilities", "Returns a list of Power Meter capabilities info"), - AH_PREDEF ("_PMD", "Power Metered Devices", "Returns a list of devices that are measured by the power meter device"), - AH_PREDEF ("_PMM", "Power Meter Measurement", "Returns the current value of the Power Meter"), - AH_PREDEF ("_POL", "Polarity", "Interrupt polarity, Resource Descriptor field"), - AH_PREDEF ("_PPC", "Performance Present Capabilities", "Returns a list of the performance states currently supported by the platform"), - AH_PREDEF ("_PPE", "Polling for Platform Error", "Returns the polling interval to retrieve Corrected Platform Error information"), - AH_PREDEF ("_PPI", "Pin Configuration", "Resource Descriptor field"), - AH_PREDEF ("_PR", "Processor", "Predefined scope for processor objects"), - AH_PREDEF ("_PR0", "Power Resources for D0", "Returns a list of dependent power resources to enter state D0 (fully on)"), - AH_PREDEF ("_PR1", "Power Resources for D1", "Returns a list of dependent power resources to enter state D1"), - AH_PREDEF ("_PR2", "Power Resources for D2", "Returns a list of dependent power resources to enter state D2"), - AH_PREDEF ("_PR3", "Power Resources for D3hot", "Returns a list of dependent power resources to enter state D3hot"), - AH_PREDEF ("_PRE", "Power Resources for Enumeration", "Returns a list of dependent power resources to enumerate devices on a bus"), - AH_PREDEF ("_PRL", "Power Source Redundancy List", "Returns a list of power source devices in the same redundancy grouping"), - AH_PREDEF ("_PRR", "Power Resource for Reset", "Execute a reset on a device"), - AH_PREDEF ("_PRS", "Possible Resource Settings", "Returns a list of a device's possible resource settings"), - AH_PREDEF ("_PRT", "PCI Routing Table", "Returns a list of PCI interrupt mappings"), - AH_PREDEF ("_PRW", "Power Resources for Wake", "Returns a list of dependent power resources for waking"), - AH_PREDEF ("_PS0", "Power State 0", "Sets a device's power state to D0 (device fully on)"), - AH_PREDEF ("_PS1", "Power State 1", "Sets a device's power state to D1"), - AH_PREDEF ("_PS2", "Power State 2", "Sets a device's power state to D2"), - AH_PREDEF ("_PS3", "Power State 3", "Sets a device's power state to D3 (device off)"), - AH_PREDEF ("_PSC", "Power State Current", "Returns a device's current power state"), - AH_PREDEF ("_PSD", "Power State Dependencies", "Returns processor P-State dependencies"), - AH_PREDEF ("_PSE", "Power State for Enumeration", "Put a bus into enumeration power mode"), - AH_PREDEF ("_PSL", "Passive List", "Returns a list of passive cooling device objects"), - AH_PREDEF ("_PSR", "Power Source", "Returns the power source device currently in use"), - AH_PREDEF ("_PSS", "Performance Supported States", "Returns a list of supported processor performance states"), - AH_PREDEF ("_PSV", "Passive Temperature", "Returns the passive trip point temperature"), - AH_PREDEF ("_PSW", "Power State Wake", "Sets a device's wake function"), - AH_PREDEF ("_PTC", "Processor Throttling Control", "Returns throttling control and status registers"), - AH_PREDEF ("_PTP", "Power Trip Points", "Sets trip points for the Power Meter device"), - AH_PREDEF ("_PTS", "Prepare To Sleep", "Inform the platform of an impending sleep transition"), - AH_PREDEF ("_PUR", "Processor Utilization Request", "Returns the number of processors that the platform would like to idle"), - AH_PREDEF ("_PXM", "Device Proximity", "Returns a device's proximity domain identifier"), - AH_PREDEF ("_Qxx", "EC Query", "Embedded Controller query and SMBus Alarm control method"), - AH_PREDEF ("_RBO", "Register Bit Offset", "Resource Descriptor field"), - AH_PREDEF ("_RBW", "Register Bit Width", "Resource Descriptor field"), - AH_PREDEF ("_RDI", "Resource Dependencies for Idle", "Returns a list of dependencies for idle states"), - AH_PREDEF ("_REG", "Region Availability", "Inform AML code of an operation region availability change"), - AH_PREDEF ("_REV", "Supported Integer Width", "Returns the supported integer width (<= 1: 32 bits only, >=2: both 32 and 64 bits"), - AH_PREDEF ("_RMV", "Removal Status", "Returns a device's removal ability status (docking)"), - AH_PREDEF ("_RNG", "Range", "Memory range type, Resource Descriptor field"), - AH_PREDEF ("_RST", "Device Reset", "Executes a reset on a device"), - AH_PREDEF ("_ROM", "Read-Only Memory", "Returns a copy of the ROM data for a display device"), - AH_PREDEF ("_RT_", "Resource Type", "Resource Descriptor field"), - AH_PREDEF ("_RTV", "Relative Temperature Values", "Returns temperature value information"), - AH_PREDEF ("_RW_", "Read-Write Status", "Resource Descriptor field"), - AH_PREDEF ("_RXL", "Receive Buffer Size", "Serial channel buffer, Resource Descriptor field"), - AH_PREDEF ("_S0_", "S0 System State", "Returns values to enter the system into the S0 state"), - AH_PREDEF ("_S1_", "S1 System State", "Returns values to enter the system into the S1 state"), - AH_PREDEF ("_S2_", "S2 System State", "Returns values to enter the system into the S2 state"), - AH_PREDEF ("_S3_", "S3 System State", "Returns values to enter the system into the S3 state"), - AH_PREDEF ("_S4_", "S4 System State", "Returns values to enter the system into the S4 state"), - AH_PREDEF ("_S5_", "S5 System State", "Returns values to enter the system into the S5 state"), - AH_PREDEF ("_S1D", "S1 Device State", "Returns the highest D-state supported by a device when in the S1 state"), - AH_PREDEF ("_S2D", "S2 Device State", "Returns the highest D-state supported by a device when in the S2 state"), - AH_PREDEF ("_S3D", "S3 Device State", "Returns the highest D-state supported by a device when in the S3 state"), - AH_PREDEF ("_S4D", "S4 Device State", "Returns the highest D-state supported by a device when in the S4 state"), - AH_PREDEF ("_S0W", "S0 Device Wake State", "Returns the lowest D-state that the device can wake itself from S0"), - AH_PREDEF ("_S1W", "S1 Device Wake State", "Returns the lowest D-state for this device that can wake the system from S1"), - AH_PREDEF ("_S2W", "S2 Device Wake State", "Returns the lowest D-state for this device that can wake the system from S2"), - AH_PREDEF ("_S3W", "S3 Device Wake State", "Returns the lowest D-state for this device that can wake the system from S3"), - AH_PREDEF ("_S4W", "S4 Device Wake State", "Returns the lowest D-state for this device that can wake the system from S4"), - AH_PREDEF ("_SB_", "System Bus", "Predefined scope for device and bus objects"), - AH_PREDEF ("_SBS", "Smart Battery Subsystem", "Returns the subsystem configuration"), - AH_PREDEF ("_SCP", "Set Cooling Policy", "Sets the cooling policy (active or passive)"), - AH_PREDEF ("_SDD", "Set Device Data", "Sets data for a SATA device"), - AH_PREDEF ("_SEG", "PCI Segment", "Returns a device's PCI Segment Group number"), - AH_PREDEF ("_SHL", "Set Hardware Limit", "Sets the hardware limit enforced by the Power Meter"), - AH_PREDEF ("_SHR", "Sharable", "Interrupt share status, Resource Descriptor field"), - AH_PREDEF ("_SI_", "System Indicators", "Predefined scope"), - AH_PREDEF ("_SIZ", "Size", "DMA transfer size, Resource Descriptor field"), - AH_PREDEF ("_SLI", "System Locality Information", "Returns a list of NUMA system localities"), - AH_PREDEF ("_SLV", "Slave Mode", "Mode setting, Resource Descriptor field"), - AH_PREDEF ("_SPD", "Set Post Device", "Sets which video device will be posted at boot"), - AH_PREDEF ("_SPE", "Speed", "Connection speed, Resource Descriptor field"), - AH_PREDEF ("_SRS", "Set Resource Settings", "Sets a device's resource allocation"), - AH_PREDEF ("_SRT", "Set Real Time", "Sets the current time for a time/alarm device"), - AH_PREDEF ("_SRV", "IPMI Spec Revision", "See the Intelligent Platform Management Interface Specification"), - AH_PREDEF ("_SST", "System Status", "Sets the system status indicator"), - AH_PREDEF ("_STA", "Status", "Returns the current status of a Device or Power Resource"), - AH_PREDEF ("_STB", "Stop Bits", "Serial channel stop bits, Resource Descriptor field"), - AH_PREDEF ("_STM", "Set Timing Mode", "Sets an IDE controller transfer timings"), - AH_PREDEF ("_STP", "Set Expired Timer Wake Policy", "Sets expired timer policies of the wake alarm device"), - AH_PREDEF ("_STR", "Description String", "Returns a device's description string"), - AH_PREDEF ("_STV", "Set Timer Value", "Set timer values of the wake alarm device"), - AH_PREDEF ("_SUB", "Subsystem ID", "Returns the subsystem ID for a device"), - AH_PREDEF ("_SUN", "Slot User Number", "Returns the slot unique ID number"), - AH_PREDEF ("_SWS", "System Wake Source", "Returns the source event that caused the system to wake"), - AH_PREDEF ("_T_x", "Emitted by ASL Compiler", "Reserved for use by ASL compilers"), - AH_PREDEF ("_TC1", "Thermal Constant 1", "Returns TC1 for the passive cooling formula"), - AH_PREDEF ("_TC2", "Thermal Constant 2", "Returns TC2 for the passive cooling formula"), - AH_PREDEF ("_TDL", "T-State Depth Limit", "Returns the _TSS entry number of the lowest power throttling state"), - AH_PREDEF ("_TFP", "Thermal Fast Sampling Period", "Returns the sampling period for passive cooling"), - AH_PREDEF ("_TIP", "Expired Timer Wake Policy", "Returns timer policies of the wake alarm device"), - AH_PREDEF ("_TIV", "Timer Values", "Returns remaining time of the wake alarm device"), - AH_PREDEF ("_TMP", "Temperature", "Returns a thermal zone's current temperature"), - AH_PREDEF ("_TPC", "Throttling Present Capabilities", "Returns the current number of supported throttling states"), - AH_PREDEF ("_TPT", "Trip Point Temperature", "Inform AML that a device's embedded temperature sensor has crossed a temperature trip point"), - AH_PREDEF ("_TRA", "Translation", "Address translation offset, Resource Descriptor field"), - AH_PREDEF ("_TRS", "Translation Sparse", "Sparse/dense flag, Resource Descriptor field"), - AH_PREDEF ("_TRT", "Thermal Relationship Table", "Returns thermal relationships between platform devices"), - AH_PREDEF ("_TSD", "Throttling State Dependencies", "Returns a list of T-state dependencies"), - AH_PREDEF ("_TSF", "Type-Specific Flags", "Resource Descriptor field"), - AH_PREDEF ("_TSN", "Thermal Sensor Device", "Returns a reference to a thermal sensor"), - AH_PREDEF ("_TSP", "Thermal Sampling Period", "Returns the thermal sampling period for passive cooling"), - AH_PREDEF ("_TSS", "Throttling Supported States", "Returns supported throttling state information"), - AH_PREDEF ("_TST", "Temperature Sensor Threshold", "Returns the minimum separation for a device's temperature trip points"), - AH_PREDEF ("_TTP", "Translation Type", "Translation/static flag, Resource Descriptor field"), - AH_PREDEF ("_TTS", "Transition To State", "Inform AML of an S-state transition"), - AH_PREDEF ("_TXL", "Transmit Buffer Size", "Serial Channel buffer, Resource Descriptor field"), - AH_PREDEF ("_TYP", "Type", "DMA channel type (speed), Resource Descriptor field"), - AH_PREDEF ("_TZ_", "Thermal Zone", "Predefined scope: ACPI 1.0"), - AH_PREDEF ("_TZD", "Thermal Zone Devices", "Returns a list of device names associated with a Thermal Zone"), - AH_PREDEF ("_TZM", "Thermal Zone Member", "Returns a reference to the thermal zone of which a device is a member"), - AH_PREDEF ("_TZP", "Thermal Zone Polling", "Returns a Thermal zone's polling frequency"), - AH_PREDEF ("_UID", "Unique ID", "Return a device's unique persistent ID"), - AH_PREDEF ("_UPC", "USB Port Capabilities", "Returns a list of USB port capabilities"), - AH_PREDEF ("_UPD", "User Presence Detect", "Returns user detection information"), - AH_PREDEF ("_UPP", "User Presence Polling", "Returns the recommended user presence polling interval"), - AH_PREDEF ("_VEN", "Vendor Data", "Resource Descriptor field"), - AH_PREDEF ("_VPO", "Video Post Options", "Returns the implemented video post options"), - AH_PREDEF ("_WAK", "Wake", "Inform AML that the system has just awakened"), - AH_PREDEF ("_Wxx", "Wake Event", "Method executed as a result of a wake event"), - AH_PREDEF (NULL, NULL, NULL) -}; - - -/******************************************************************************* - * - * FUNCTION: AcpiAhMatchPredefinedName - * - * PARAMETERS: Nameseg - Predefined name string - * - * RETURN: ID info struct. NULL if Nameseg not found - * - * DESCRIPTION: Lookup a predefined name. - * - ******************************************************************************/ - -const AH_PREDEFINED_NAME * -AcpiAhMatchPredefinedName ( - char *Nameseg) -{ - const AH_PREDEFINED_NAME *Info; - - - for (Info = AslPredefinedInfo; Info->Name; Info++) - { - if (ACPI_COMPARE_NAME (Nameseg, Info->Name)) - { - return (Info); - } - } - - return (NULL); -} diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/common/ahtable.c b/src/add-ons/kernel/bus_managers/acpi/acpica/common/ahtable.c deleted file mode 100644 index e5e065d847..0000000000 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/common/ahtable.c +++ /dev/null @@ -1,222 +0,0 @@ -/****************************************************************************** - * - * Module Name: ahtable - Table of known ACPI tables with descriptions - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#include "acpi.h" -#include "accommon.h" - - -/* Local prototypes */ - -const AH_TABLE * -AcpiAhGetTableInfo ( - char *Signature); - -extern const AH_TABLE AcpiSupportedTables[]; - - -/******************************************************************************* - * - * FUNCTION: AcpiAhGetTableInfo - * - * PARAMETERS: Signature - ACPI signature (4 chars) to match - * - * RETURN: Pointer to a valid AH_TABLE. Null if no match found. - * - * DESCRIPTION: Find a match in the "help" table of supported ACPI tables - * - ******************************************************************************/ - -const AH_TABLE * -AcpiAhGetTableInfo ( - char *Signature) -{ - const AH_TABLE *Info; - - - for (Info = AcpiSupportedTables; Info->Signature; Info++) - { - if (ACPI_COMPARE_NAME (Signature, Info->Signature)) - { - return (Info); - } - } - - return (NULL); -} - - -/* - * Note: Any tables added here should be duplicated within AcpiDmTableData - * in the file common/dmtable.c - */ -const AH_TABLE AcpiSupportedTables[] = -{ - {ACPI_SIG_ASF, "Alert Standard Format table"}, - {ACPI_SIG_BERT, "Boot Error Record Table"}, - {ACPI_SIG_BGRT, "Boot Graphics Resource Table"}, - {ACPI_SIG_BOOT, "Simple Boot Flag Table"}, - {ACPI_SIG_CPEP, "Corrected Platform Error Polling table"}, - {ACPI_SIG_CSRT, "Core System Resource Table"}, - {ACPI_SIG_DBG2, "Debug Port table type 2"}, - {ACPI_SIG_DBGP, "Debug Port table"}, - {ACPI_SIG_DMAR, "DMA Remapping table"}, - {ACPI_SIG_DRTM, "Dynamic Root of Trust for Measurement table"}, - {ACPI_SIG_DSDT, "Differentiated System Description Table (AML table)"}, - {ACPI_SIG_ECDT, "Embedded Controller Boot Resources Table"}, - {ACPI_SIG_EINJ, "Error Injection table"}, - {ACPI_SIG_ERST, "Error Record Serialization Table"}, - {ACPI_SIG_FACS, "Firmware ACPI Control Structure"}, - {ACPI_SIG_FADT, "Fixed ACPI Description Table (FADT)"}, - {ACPI_SIG_FPDT, "Firmware Performance Data Table"}, - {ACPI_SIG_GTDT, "Generic Timer Description Table"}, - {ACPI_SIG_HEST, "Hardware Error Source Table"}, - {ACPI_SIG_HPET, "High Precision Event Timer table"}, - {ACPI_SIG_IORT, "IO Remapping Table"}, - {ACPI_SIG_IVRS, "I/O Virtualization Reporting Structure"}, - {ACPI_SIG_LPIT, "Low Power Idle Table"}, - {ACPI_SIG_MADT, "Multiple APIC Description Table (MADT)"}, - {ACPI_SIG_MCFG, "Memory Mapped Configuration table"}, - {ACPI_SIG_MCHI, "Management Controller Host Interface table"}, - {ACPI_SIG_MPST, "Memory Power State Table"}, - {ACPI_SIG_MSCT, "Maximum System Characteristics Table"}, - {ACPI_SIG_MSDM, "Microsoft Data Management table"}, - {ACPI_SIG_MTMR, "MID Timer Table"}, - {ACPI_SIG_NFIT, "NVDIMM Firmware Interface Table"}, - {ACPI_SIG_PCCT, "Platform Communications Channel Table"}, - {ACPI_SIG_PMTT, "Platform Memory Topology Table"}, - {ACPI_RSDP_NAME,"Root System Description Pointer"}, - {ACPI_SIG_RSDT, "Root System Description Table"}, - {ACPI_SIG_S3PT, "S3 Performance Table"}, - {ACPI_SIG_SBST, "Smart Battery Specification Table"}, - {ACPI_SIG_SLIC, "Software Licensing Description Table"}, - {ACPI_SIG_SLIT, "System Locality Information Table"}, - {ACPI_SIG_SPCR, "Serial Port Console Redirection table"}, - {ACPI_SIG_SPMI, "Server Platform Management Interface table"}, - {ACPI_SIG_SRAT, "System Resource Affinity Table"}, - {ACPI_SIG_SSDT, "Secondary System Description Table (AML table)"}, - {ACPI_SIG_STAO, "Status Override table"}, - {ACPI_SIG_TCPA, "Trusted Computing Platform Alliance table"}, - {ACPI_SIG_TPM2, "Trusted Platform Module hardware interface table"}, - {ACPI_SIG_UEFI, "UEFI Boot Optimization Table"}, - {ACPI_SIG_VRTC, "Virtual Real-Time Clock Table"}, - {ACPI_SIG_WAET, "Windows ACPI Emulated Devices Table"}, - {ACPI_SIG_WDAT, "Watchdog Action Table"}, - {ACPI_SIG_WDDT, "Watchdog Description Table"}, - {ACPI_SIG_WDRT, "Watchdog Resource Table"}, - {ACPI_SIG_WPBT, "Windows Platform Binary Table"}, - {ACPI_SIG_XENV, "Xen Environment table"}, - {ACPI_SIG_XSDT, "Extended System Description Table"}, - {NULL, NULL} -}; diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/common/ahuuids.c b/src/add-ons/kernel/bus_managers/acpi/acpica/common/ahuuids.c deleted file mode 100644 index 118473dda8..0000000000 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/common/ahuuids.c +++ /dev/null @@ -1,204 +0,0 @@ -/****************************************************************************** - * - * Module Name: ahuuids - Table of known ACPI-related UUIDs - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#include "acpi.h" -#include "accommon.h" -#include "acuuid.h" - -#define _COMPONENT ACPI_UTILITIES - ACPI_MODULE_NAME ("ahuuids") - -/* - * Table of "known" (ACPI-related) UUIDs - */ -const AH_UUID AcpiUuids[] = -{ - {"[Controllers]", NULL}, - {"GPIO Controller", UUID_GPIO_CONTROLLER}, - {"USB Controller", UUID_USB_CONTROLLER}, - {"SATA Controller", UUID_SATA_CONTROLLER}, - - {"[Devices]", NULL}, - {"PCI Host Bridge Device", UUID_PCI_HOST_BRIDGE}, - {"HID I2C Device", UUID_I2C_DEVICE}, - {"Power Button Device", UUID_POWER_BUTTON}, - - {"[Interfaces]", NULL}, - {"Device Labeling Interface", UUID_DEVICE_LABELING}, - {"Physical Presence Interface", UUID_PHYSICAL_PRESENCE}, - - {"[Non-volatile DIMM and NFIT table]", NULL}, - {"Volatile Memory Region", UUID_VOLATILE_MEMORY}, - {"Persistent Memory Region", UUID_PERSISTENT_MEMORY}, - {"NVDIMM Control Region", UUID_CONTROL_REGION}, - {"NVDIMM Data Region", UUID_DATA_REGION}, - {"Volatile Virtual Disk", UUID_VOLATILE_VIRTUAL_DISK}, - {"Volatile Virtual CD", UUID_VOLATILE_VIRTUAL_CD}, - {"Persistent Virtual Disk", UUID_PERSISTENT_VIRTUAL_DISK}, - {"Persistent Virtual CD", UUID_PERSISTENT_VIRTUAL_CD}, - - {"[Miscellaneous]", NULL}, - {"Platform-wide Capabilities", UUID_PLATFORM_CAPABILITIES}, - {"Dynamic Enumeration", UUID_DYNAMIC_ENUMERATION}, - {"Battery Thermal Limit", UUID_BATTERY_THERMAL_LIMIT}, - {"Thermal Extensions", UUID_THERMAL_EXTENSIONS}, - {"Device Properties for _DSD", UUID_DEVICE_PROPERTIES}, - - {NULL, NULL} -}; - - -/******************************************************************************* - * - * FUNCTION: AcpiAhMatchUuid - * - * PARAMETERS: Data - Data buffer containing a UUID - * - * RETURN: ASCII description string for the UUID if it is found. - * - * DESCRIPTION: Returns a description string for "known" UUIDs, which are - * are UUIDs that are related to ACPI in some way. - * - ******************************************************************************/ - -const char * -AcpiAhMatchUuid ( - UINT8 *Data) -{ - const AH_UUID *Info; - UINT8 UuidBuffer[UUID_BUFFER_LENGTH]; - - - /* Walk the table of known ACPI-related UUIDs */ - - for (Info = AcpiUuids; Info->Description; Info++) - { - /* Null string means desciption is a UUID class */ - - if (!Info->String) - { - continue; - } - - AcpiUtConvertStringToUuid (Info->String, UuidBuffer); - - if (!memcmp (Data, UuidBuffer, UUID_BUFFER_LENGTH)) - { - return (Info->Description); - } - } - - return (NULL); -} diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/common/cmfsize.c b/src/add-ons/kernel/bus_managers/acpi/acpica/common/cmfsize.c deleted file mode 100644 index 1e8de3c17b..0000000000 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/common/cmfsize.c +++ /dev/null @@ -1,185 +0,0 @@ -/****************************************************************************** - * - * Module Name: cfsize - Common get file size function - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#include "acpi.h" -#include "accommon.h" -#include "acapps.h" -#include - -#define _COMPONENT ACPI_TOOLS - ACPI_MODULE_NAME ("cmfsize") - - -/******************************************************************************* - * - * FUNCTION: CmGetFileSize - * - * PARAMETERS: File - Open file descriptor - * - * RETURN: File Size. On error, -1 (ACPI_UINT32_MAX) - * - * DESCRIPTION: Get the size of a file. Uses seek-to-EOF. File must be open. - * Does not disturb the current file pointer. - * - ******************************************************************************/ - -UINT32 -CmGetFileSize ( - ACPI_FILE File) -{ - long FileSize; - long CurrentOffset; - ACPI_STATUS Status; - - - /* Save the current file pointer, seek to EOF to obtain file size */ - - CurrentOffset = AcpiOsGetFileOffset (File); - if (CurrentOffset < 0) - { - goto OffsetError; - } - - Status = AcpiOsSetFileOffset (File, 0, ACPI_FILE_END); - if (ACPI_FAILURE (Status)) - { - goto SeekError; - } - - FileSize = AcpiOsGetFileOffset (File); - if (FileSize < 0) - { - goto OffsetError; - } - - /* Restore original file pointer */ - - Status = AcpiOsSetFileOffset (File, CurrentOffset, ACPI_FILE_BEGIN); - if (ACPI_FAILURE (Status)) - { - goto SeekError; - } - - return ((UINT32) FileSize); - - -OffsetError: - AcpiLogError ("Could not get file offset"); - return (ACPI_UINT32_MAX); - -SeekError: - AcpiLogError ("Could not set file offset"); - return (ACPI_UINT32_MAX); -} diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/common/dmextern.c b/src/add-ons/kernel/bus_managers/acpi/acpica/common/dmextern.c deleted file mode 100644 index 832379e516..0000000000 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/common/dmextern.c +++ /dev/null @@ -1,1462 +0,0 @@ -/****************************************************************************** - * - * Module Name: dmextern - Support for External() ASL statements - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#include "acpi.h" -#include "accommon.h" -#include "amlcode.h" -#include "acnamesp.h" -#include "acdisasm.h" -#include "aslcompiler.h" -#include -#include - - -/* - * This module is used for application-level code (iASL disassembler) only. - * - * It contains the code to create and emit any necessary External() ASL - * statements for the module being disassembled. - */ -#define _COMPONENT ACPI_CA_DISASSEMBLER - ACPI_MODULE_NAME ("dmextern") - - -/* - * This table maps ACPI_OBJECT_TYPEs to the corresponding ASL - * ObjectTypeKeyword. Used to generate typed external declarations - */ -static const char *AcpiGbl_DmTypeNames[] = -{ - /* 00 */ ", UnknownObj", /* Type ANY */ - /* 01 */ ", IntObj", - /* 02 */ ", StrObj", - /* 03 */ ", BuffObj", - /* 04 */ ", PkgObj", - /* 05 */ ", FieldUnitObj", - /* 06 */ ", DeviceObj", - /* 07 */ ", EventObj", - /* 08 */ ", MethodObj", - /* 09 */ ", MutexObj", - /* 10 */ ", OpRegionObj", - /* 11 */ ", PowerResObj", - /* 12 */ ", ProcessorObj", - /* 13 */ ", ThermalZoneObj", - /* 14 */ ", BuffFieldObj", - /* 15 */ ", DDBHandleObj", - /* 16 */ "", /* Debug object */ - /* 17 */ ", FieldUnitObj", - /* 18 */ ", FieldUnitObj", - /* 19 */ ", FieldUnitObj" -}; - -#define METHOD_SEPARATORS " \t,()\n" - - -/* Local prototypes */ - -static const char * -AcpiDmGetObjectTypeName ( - ACPI_OBJECT_TYPE Type); - -static char * -AcpiDmNormalizeParentPrefix ( - ACPI_PARSE_OBJECT *Op, - char *Path); - -static void -AcpiDmAddPathToExternalList ( - char *Path, - UINT8 Type, - UINT32 Value, - UINT16 Flags); - -static ACPI_STATUS -AcpiDmCreateNewExternal ( - char *ExternalPath, - char *InternalPath, - UINT8 Type, - UINT32 Value, - UINT16 Flags); - - -/******************************************************************************* - * - * FUNCTION: AcpiDmGetObjectTypeName - * - * PARAMETERS: Type - An ACPI_OBJECT_TYPE - * - * RETURN: Pointer to a string - * - * DESCRIPTION: Map an object type to the ASL object type string. - * - ******************************************************************************/ - -static const char * -AcpiDmGetObjectTypeName ( - ACPI_OBJECT_TYPE Type) -{ - - if (Type == ACPI_TYPE_LOCAL_SCOPE) - { - Type = ACPI_TYPE_DEVICE; - } - - else if (Type > ACPI_TYPE_LOCAL_INDEX_FIELD) - { - return (""); - } - - return (AcpiGbl_DmTypeNames[Type]); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmNormalizeParentPrefix - * - * PARAMETERS: Op - Parse op - * Path - Path with parent prefix - * - * RETURN: The full pathname to the object (from the namespace root) - * - * DESCRIPTION: Returns the full pathname of a path with parent prefix - * The caller must free the fullpath returned. - * - ******************************************************************************/ - -static char * -AcpiDmNormalizeParentPrefix ( - ACPI_PARSE_OBJECT *Op, - char *Path) -{ - ACPI_NAMESPACE_NODE *Node; - char *Fullpath; - char *ParentPath; - ACPI_SIZE Length; - UINT32 Index = 0; - - - if (!Op) - { - return (NULL); - } - - /* Search upwards in the parse tree until we reach the next namespace node */ - - Op = Op->Common.Parent; - while (Op) - { - if (Op->Common.Node) - { - break; - } - - Op = Op->Common.Parent; - } - - if (!Op) - { - return (NULL); - } - - /* - * Find the actual parent node for the reference: - * Remove all carat prefixes from the input path. - * There may be multiple parent prefixes (For example, ^^^M000) - */ - Node = Op->Common.Node; - while (Node && (*Path == (UINT8) AML_PARENT_PREFIX)) - { - Node = Node->Parent; - Path++; - } - - if (!Node) - { - return (NULL); - } - - /* Get the full pathname for the parent node */ - - ParentPath = AcpiNsGetExternalPathname (Node); - if (!ParentPath) - { - return (NULL); - } - - Length = (strlen (ParentPath) + strlen (Path) + 1); - if (ParentPath[1]) - { - /* - * If ParentPath is not just a simple '\', increment the length - * for the required dot separator (ParentPath.Path) - */ - Length++; - - /* For External() statements, we do not want a leading '\' */ - - if (*ParentPath == AML_ROOT_PREFIX) - { - Index = 1; - } - } - - Fullpath = ACPI_ALLOCATE_ZEROED (Length); - if (!Fullpath) - { - goto Cleanup; - } - - /* - * Concatenate parent fullpath and path. For example, - * parent fullpath "\_SB_", Path "^INIT", Fullpath "\_SB_.INIT" - * - * Copy the parent path - */ - strcpy (Fullpath, &ParentPath[Index]); - - /* - * Add dot separator - * (don't need dot if parent fullpath is a single backslash) - */ - if (ParentPath[1]) - { - strcat (Fullpath, "."); - } - - /* Copy child path (carat parent prefix(es) were skipped above) */ - - strcat (Fullpath, Path); - -Cleanup: - ACPI_FREE (ParentPath); - return (Fullpath); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmAddToExternalFileList - * - * PARAMETERS: PathList - Single path or list separated by comma - * - * RETURN: None - * - * DESCRIPTION: Add external files to global list - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDmAddToExternalFileList ( - char *Pathname) -{ - ACPI_EXTERNAL_FILE *ExternalFile; - char *LocalPathname; - - - if (!Pathname) - { - return (AE_OK); - } - - LocalPathname = ACPI_ALLOCATE (strlen (Pathname) + 1); - if (!LocalPathname) - { - return (AE_NO_MEMORY); - } - - ExternalFile = ACPI_ALLOCATE_ZEROED (sizeof (ACPI_EXTERNAL_FILE)); - if (!ExternalFile) - { - ACPI_FREE (LocalPathname); - return (AE_NO_MEMORY); - } - - /* Take a copy of the file pathname */ - - strcpy (LocalPathname, Pathname); - ExternalFile->Path = LocalPathname; - - if (AcpiGbl_ExternalFileList) - { - ExternalFile->Next = AcpiGbl_ExternalFileList; - } - - AcpiGbl_ExternalFileList = ExternalFile; - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmClearExternalFileList - * - * PARAMETERS: None - * - * RETURN: None - * - * DESCRIPTION: Clear the external file list - * - ******************************************************************************/ - -void -AcpiDmClearExternalFileList ( - void) -{ - ACPI_EXTERNAL_FILE *NextExternal; - - - while (AcpiGbl_ExternalFileList) - { - NextExternal = AcpiGbl_ExternalFileList->Next; - ACPI_FREE (AcpiGbl_ExternalFileList->Path); - ACPI_FREE (AcpiGbl_ExternalFileList); - AcpiGbl_ExternalFileList = NextExternal; - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmGetExternalsFromFile - * - * PARAMETERS: None - * - * RETURN: None - * - * DESCRIPTION: Process the optional external reference file. - * - * Each line in the file should be of the form: - * External (, MethodObj, ) - * - * Example: - * External (_SB_.PCI0.XHC_.PS0X, MethodObj, 4) - * - ******************************************************************************/ - -void -AcpiDmGetExternalsFromFile ( - void) -{ - FILE *ExternalRefFile; - char *Token; - char *MethodName; - UINT32 ArgCount; - UINT32 ImportCount = 0; - - - if (!Gbl_ExternalRefFilename) - { - return; - } - - /* Open the file */ - - ExternalRefFile = fopen (Gbl_ExternalRefFilename, "r"); - if (!ExternalRefFile) - { - fprintf (stderr, "Could not open external reference file \"%s\"\n", - Gbl_ExternalRefFilename); - AslAbort (); - return; - } - - /* Each line defines a method */ - - while (fgets (StringBuffer, ASL_MSG_BUFFER_SIZE, ExternalRefFile)) - { - Token = strtok (StringBuffer, METHOD_SEPARATORS); /* "External" */ - if (!Token) - { - continue; - } - if (strcmp (Token, "External")) - { - continue; - } - - MethodName = strtok (NULL, METHOD_SEPARATORS); /* Method namepath */ - if (!MethodName) - { - continue; - } - - Token = strtok (NULL, METHOD_SEPARATORS); /* "MethodObj" */ - if (!Token) - { - continue; - } - - if (strcmp (Token, "MethodObj")) - { - continue; - } - - Token = strtok (NULL, METHOD_SEPARATORS); /* Arg count */ - if (!Token) - { - continue; - } - - /* Convert arg count string to an integer */ - - errno = 0; - ArgCount = strtoul (Token, NULL, 0); - if (errno) - { - fprintf (stderr, "Invalid argument count (%s)\n", Token); - continue; - } - if (ArgCount > 7) - { - fprintf (stderr, "Invalid argument count (%u)\n", ArgCount); - continue; - } - - /* Add this external to the global list */ - - AcpiOsPrintf ("%s: Importing method external (%u arguments) %s\n", - Gbl_ExternalRefFilename, ArgCount, MethodName); - - AcpiDmAddPathToExternalList (MethodName, ACPI_TYPE_METHOD, - ArgCount, (ACPI_EXT_RESOLVED_REFERENCE | ACPI_EXT_ORIGIN_FROM_FILE)); - ImportCount++; - } - - if (!ImportCount) - { - fprintf (stderr, "Did not find any external methods in reference file \"%s\"\n", - Gbl_ExternalRefFilename); - } - else - { - /* Add the external(s) to the namespace */ - - AcpiDmAddExternalsToNamespace (); - - AcpiOsPrintf ("%s: Imported %u external method definitions\n", - Gbl_ExternalRefFilename, ImportCount); - } - - fclose (ExternalRefFile); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmAddOpToExternalList - * - * PARAMETERS: Op - Current parser Op - * Path - Internal (AML) path to the object - * Type - ACPI object type to be added - * Value - Arg count if adding a Method object - * Flags - To be passed to the external object - * - * RETURN: None - * - * DESCRIPTION: Insert a new name into the global list of Externals which - * will in turn be later emitted as an External() declaration - * in the disassembled output. - * - * This function handles the most common case where the referenced - * name is simply not found in the constructed namespace. - * - ******************************************************************************/ - -void -AcpiDmAddOpToExternalList ( - ACPI_PARSE_OBJECT *Op, - char *Path, - UINT8 Type, - UINT32 Value, - UINT16 Flags) -{ - char *ExternalPath; - char *InternalPath = Path; - char *Temp; - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (DmAddOpToExternalList); - - - if (!Path) - { - return_VOID; - } - - /* Remove a root backslash if present */ - - if ((*Path == AML_ROOT_PREFIX) && (Path[1])) - { - Path++; - } - - /* Externalize the pathname */ - - Status = AcpiNsExternalizeName (ACPI_UINT32_MAX, Path, - NULL, &ExternalPath); - if (ACPI_FAILURE (Status)) - { - return_VOID; - } - - /* - * Get the full pathname from the root if "Path" has one or more - * parent prefixes (^). Note: path will not contain a leading '\'. - */ - if (*Path == (UINT8) AML_PARENT_PREFIX) - { - Temp = AcpiDmNormalizeParentPrefix (Op, ExternalPath); - - /* Set new external path */ - - ACPI_FREE (ExternalPath); - ExternalPath = Temp; - if (!Temp) - { - return_VOID; - } - - /* Create the new internal pathname */ - - Flags |= ACPI_EXT_INTERNAL_PATH_ALLOCATED; - Status = AcpiNsInternalizeName (ExternalPath, &InternalPath); - if (ACPI_FAILURE (Status)) - { - ACPI_FREE (ExternalPath); - return_VOID; - } - } - - /* Create the new External() declaration node */ - - Status = AcpiDmCreateNewExternal (ExternalPath, InternalPath, - Type, Value, Flags); - if (ACPI_FAILURE (Status)) - { - ACPI_FREE (ExternalPath); - if (Flags & ACPI_EXT_INTERNAL_PATH_ALLOCATED) - { - ACPI_FREE (InternalPath); - } - } - - return_VOID; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmAddNodeToExternalList - * - * PARAMETERS: Node - Namespace node for object to be added - * Type - ACPI object type to be added - * Value - Arg count if adding a Method object - * Flags - To be passed to the external object - * - * RETURN: None - * - * DESCRIPTION: Insert a new name into the global list of Externals which - * will in turn be later emitted as an External() declaration - * in the disassembled output. - * - * This function handles the case where the referenced name has - * been found in the namespace, but the name originated in a - * table other than the one that is being disassembled (such - * as a table that is added via the iASL -e option). - * - ******************************************************************************/ - -void -AcpiDmAddNodeToExternalList ( - ACPI_NAMESPACE_NODE *Node, - UINT8 Type, - UINT32 Value, - UINT16 Flags) -{ - char *ExternalPath; - char *InternalPath; - char *Temp; - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (DmAddNodeToExternalList); - - - if (!Node) - { - return_VOID; - } - - /* Get the full external and internal pathnames to the node */ - - ExternalPath = AcpiNsGetExternalPathname (Node); - if (!ExternalPath) - { - return_VOID; - } - - Status = AcpiNsInternalizeName (ExternalPath, &InternalPath); - if (ACPI_FAILURE (Status)) - { - ACPI_FREE (ExternalPath); - return_VOID; - } - - /* Remove the root backslash */ - - if ((*ExternalPath == AML_ROOT_PREFIX) && (ExternalPath[1])) - { - Temp = ACPI_ALLOCATE_ZEROED (strlen (ExternalPath) + 1); - if (!Temp) - { - return_VOID; - } - - strcpy (Temp, &ExternalPath[1]); - ACPI_FREE (ExternalPath); - ExternalPath = Temp; - } - - /* Create the new External() declaration node */ - - Status = AcpiDmCreateNewExternal (ExternalPath, InternalPath, Type, - Value, (Flags | ACPI_EXT_INTERNAL_PATH_ALLOCATED)); - if (ACPI_FAILURE (Status)) - { - ACPI_FREE (ExternalPath); - ACPI_FREE (InternalPath); - } - - return_VOID; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmAddPathToExternalList - * - * PARAMETERS: Path - External name of the object to be added - * Type - ACPI object type to be added - * Value - Arg count if adding a Method object - * Flags - To be passed to the external object - * - * RETURN: None - * - * DESCRIPTION: Insert a new name into the global list of Externals which - * will in turn be later emitted as an External() declaration - * in the disassembled output. - * - * This function currently is used to add externals via a - * reference file (via the -fe iASL option). - * - ******************************************************************************/ - -static void -AcpiDmAddPathToExternalList ( - char *Path, - UINT8 Type, - UINT32 Value, - UINT16 Flags) -{ - char *InternalPath; - char *ExternalPath; - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (DmAddPathToExternalList); - - - if (!Path) - { - return_VOID; - } - - /* Remove a root backslash if present */ - - if ((*Path == AML_ROOT_PREFIX) && (Path[1])) - { - Path++; - } - - /* Create the internal and external pathnames */ - - Status = AcpiNsInternalizeName (Path, &InternalPath); - if (ACPI_FAILURE (Status)) - { - return_VOID; - } - - Status = AcpiNsExternalizeName (ACPI_UINT32_MAX, InternalPath, - NULL, &ExternalPath); - if (ACPI_FAILURE (Status)) - { - ACPI_FREE (InternalPath); - return_VOID; - } - - /* Create the new External() declaration node */ - - Status = AcpiDmCreateNewExternal (ExternalPath, InternalPath, - Type, Value, (Flags | ACPI_EXT_INTERNAL_PATH_ALLOCATED)); - if (ACPI_FAILURE (Status)) - { - ACPI_FREE (ExternalPath); - ACPI_FREE (InternalPath); - } - - return_VOID; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmCreateNewExternal - * - * PARAMETERS: ExternalPath - External path to the object - * InternalPath - Internal (AML) path to the object - * Type - ACPI object type to be added - * Value - Arg count if adding a Method object - * Flags - To be passed to the external object - * - * RETURN: Status - * - * DESCRIPTION: Common low-level function to insert a new name into the global - * list of Externals which will in turn be later emitted as - * External() declarations in the disassembled output. - * - * Note: The external name should not include a root prefix - * (backslash). We do not want External() statements to contain - * a leading '\', as this prevents duplicate external statements - * of the form: - * - * External (\ABCD) - * External (ABCD) - * - * This would cause a compile time error when the disassembled - * output file is recompiled. - * - * There are two cases that are handled here. For both, we emit - * an External() statement: - * 1) The name was simply not found in the namespace. - * 2) The name was found, but it originated in a table other than - * the table that is being disassembled. - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiDmCreateNewExternal ( - char *ExternalPath, - char *InternalPath, - UINT8 Type, - UINT32 Value, - UINT16 Flags) -{ - ACPI_EXTERNAL_LIST *NewExternal; - ACPI_EXTERNAL_LIST *NextExternal; - ACPI_EXTERNAL_LIST *PrevExternal = NULL; - - - ACPI_FUNCTION_TRACE (DmCreateNewExternal); - - - /* Check all existing externals to ensure no duplicates */ - - NextExternal = AcpiGbl_ExternalList; - while (NextExternal) - { - if (!strcmp (ExternalPath, NextExternal->Path)) - { - /* Duplicate method, check that the Value (ArgCount) is the same */ - - if ((NextExternal->Type == ACPI_TYPE_METHOD) && - (NextExternal->Value != Value) && - (Value > 0)) - { - ACPI_ERROR ((AE_INFO, - "External method arg count mismatch %s: Current %u, attempted %u", - NextExternal->Path, NextExternal->Value, Value)); - } - - /* Allow upgrade of type from ANY */ - - else if (NextExternal->Type == ACPI_TYPE_ANY) - { - NextExternal->Type = Type; - NextExternal->Value = Value; - } - - return_ACPI_STATUS (AE_ALREADY_EXISTS); - } - - NextExternal = NextExternal->Next; - } - - /* Allocate and init a new External() descriptor */ - - NewExternal = ACPI_ALLOCATE_ZEROED (sizeof (ACPI_EXTERNAL_LIST)); - if (!NewExternal) - { - return_ACPI_STATUS (AE_NO_MEMORY); - } - - ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, - "Adding external reference node (%s) type [%s]\n", - ExternalPath, AcpiUtGetTypeName (Type))); - - NewExternal->Flags = Flags; - NewExternal->Value = Value; - NewExternal->Path = ExternalPath; - NewExternal->Type = Type; - NewExternal->Length = (UINT16) strlen (ExternalPath); - NewExternal->InternalPath = InternalPath; - - /* Link the new descriptor into the global list, alphabetically ordered */ - - NextExternal = AcpiGbl_ExternalList; - while (NextExternal) - { - if (AcpiUtStricmp (NewExternal->Path, NextExternal->Path) < 0) - { - if (PrevExternal) - { - PrevExternal->Next = NewExternal; - } - else - { - AcpiGbl_ExternalList = NewExternal; - } - - NewExternal->Next = NextExternal; - return_ACPI_STATUS (AE_OK); - } - - PrevExternal = NextExternal; - NextExternal = NextExternal->Next; - } - - if (PrevExternal) - { - PrevExternal->Next = NewExternal; - } - else - { - AcpiGbl_ExternalList = NewExternal; - } - - return_ACPI_STATUS (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmAddExternalsToNamespace - * - * PARAMETERS: None - * - * RETURN: None - * - * DESCRIPTION: Add all externals to the namespace. Allows externals to be - * "resolved". - * - ******************************************************************************/ - -void -AcpiDmAddExternalsToNamespace ( - void) -{ - ACPI_STATUS Status; - ACPI_NAMESPACE_NODE *Node; - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_EXTERNAL_LIST *External = AcpiGbl_ExternalList; - - - while (External) - { - /* Add the external name (object) into the namespace */ - - Status = AcpiNsLookup (NULL, External->InternalPath, External->Type, - ACPI_IMODE_LOAD_PASS1, - ACPI_NS_ERROR_IF_FOUND | ACPI_NS_EXTERNAL | ACPI_NS_DONT_OPEN_SCOPE, - NULL, &Node); - - if (ACPI_FAILURE (Status)) - { - ACPI_EXCEPTION ((AE_INFO, Status, - "while adding external to namespace [%s]", - External->Path)); - } - - else switch (External->Type) - { - case ACPI_TYPE_METHOD: - - /* For methods, we need to save the argument count */ - - ObjDesc = AcpiUtCreateInternalObject (ACPI_TYPE_METHOD); - ObjDesc->Method.ParamCount = (UINT8) External->Value; - Node->Object = ObjDesc; - break; - - case ACPI_TYPE_REGION: - - /* Regions require a region sub-object */ - - ObjDesc = AcpiUtCreateInternalObject (ACPI_TYPE_REGION); - ObjDesc->Region.Node = Node; - Node->Object = ObjDesc; - break; - - default: - - break; - } - - External = External->Next; - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmGetExternalMethodCount - * - * PARAMETERS: None - * - * RETURN: The number of control method externals in the external list - * - * DESCRIPTION: Return the number of method externals that have been generated. - * If any control method externals have been found, we must - * re-parse the entire definition block with the new information - * (number of arguments for the methods.) This is limitation of - * AML, we don't know the number of arguments from the control - * method invocation itself. - * - ******************************************************************************/ - -UINT32 -AcpiDmGetExternalMethodCount ( - void) -{ - ACPI_EXTERNAL_LIST *External = AcpiGbl_ExternalList; - UINT32 Count = 0; - - - while (External) - { - if (External->Type == ACPI_TYPE_METHOD) - { - Count++; - } - - External = External->Next; - } - - return (Count); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmClearExternalList - * - * PARAMETERS: None - * - * RETURN: None - * - * DESCRIPTION: Free the entire External info list - * - ******************************************************************************/ - -void -AcpiDmClearExternalList ( - void) -{ - ACPI_EXTERNAL_LIST *NextExternal; - - - while (AcpiGbl_ExternalList) - { - NextExternal = AcpiGbl_ExternalList->Next; - ACPI_FREE (AcpiGbl_ExternalList->Path); - ACPI_FREE (AcpiGbl_ExternalList); - AcpiGbl_ExternalList = NextExternal; - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmEmitExternals - * - * PARAMETERS: None - * - * RETURN: None - * - * DESCRIPTION: Emit an External() ASL statement for each of the externals in - * the global external info list. - * - ******************************************************************************/ - -void -AcpiDmEmitExternals ( - void) -{ - ACPI_EXTERNAL_LIST *NextExternal; - - - if (!AcpiGbl_ExternalList) - { - return; - } - - /* - * Determine the number of control methods in the external list, and - * also how many of those externals were resolved via the namespace. - */ - NextExternal = AcpiGbl_ExternalList; - while (NextExternal) - { - if (NextExternal->Type == ACPI_TYPE_METHOD) - { - AcpiGbl_NumExternalMethods++; - if (NextExternal->Flags & ACPI_EXT_RESOLVED_REFERENCE) - { - AcpiGbl_ResolvedExternalMethods++; - } - } - - NextExternal = NextExternal->Next; - } - - /* Check if any control methods were unresolved */ - - AcpiDmUnresolvedWarning (1); - - /* Emit any unresolved method externals in a single text block */ - - NextExternal = AcpiGbl_ExternalList; - while (NextExternal) - { - if ((NextExternal->Type == ACPI_TYPE_METHOD) && - (!(NextExternal->Flags & ACPI_EXT_RESOLVED_REFERENCE))) - { - AcpiOsPrintf (" External (%s%s", - NextExternal->Path, - AcpiDmGetObjectTypeName (NextExternal->Type)); - - AcpiOsPrintf (") // Warning: Unresolved method, " - "guessing %u arguments\n", - NextExternal->Value); - - NextExternal->Flags |= ACPI_EXT_EXTERNAL_EMITTED; - } - - NextExternal = NextExternal->Next; - } - - AcpiOsPrintf ("\n"); - - - /* Emit externals that were imported from a file */ - - if (Gbl_ExternalRefFilename) - { - AcpiOsPrintf ( - " /*\n * External declarations that were imported from\n" - " * the reference file [%s]\n */\n", - Gbl_ExternalRefFilename); - - NextExternal = AcpiGbl_ExternalList; - while (NextExternal) - { - if (!(NextExternal->Flags & ACPI_EXT_EXTERNAL_EMITTED) && - (NextExternal->Flags & ACPI_EXT_ORIGIN_FROM_FILE)) - { - AcpiOsPrintf (" External (%s%s", - NextExternal->Path, - AcpiDmGetObjectTypeName (NextExternal->Type)); - - if (NextExternal->Type == ACPI_TYPE_METHOD) - { - AcpiOsPrintf (") // %u Arguments\n", - NextExternal->Value); - } - else - { - AcpiOsPrintf (")\n"); - } - NextExternal->Flags |= ACPI_EXT_EXTERNAL_EMITTED; - } - - NextExternal = NextExternal->Next; - } - - AcpiOsPrintf ("\n"); - } - - /* - * Walk the list of externals found during the AML parsing - */ - while (AcpiGbl_ExternalList) - { - if (!(AcpiGbl_ExternalList->Flags & ACPI_EXT_EXTERNAL_EMITTED)) - { - AcpiOsPrintf (" External (%s%s", - AcpiGbl_ExternalList->Path, - AcpiDmGetObjectTypeName (AcpiGbl_ExternalList->Type)); - - /* For methods, add a comment with the number of arguments */ - - if (AcpiGbl_ExternalList->Type == ACPI_TYPE_METHOD) - { - AcpiOsPrintf (") // %u Arguments\n", - AcpiGbl_ExternalList->Value); - } - else - { - AcpiOsPrintf (")\n"); - } - } - - /* Free this external info block and move on to next external */ - - NextExternal = AcpiGbl_ExternalList->Next; - if (AcpiGbl_ExternalList->Flags & ACPI_EXT_INTERNAL_PATH_ALLOCATED) - { - ACPI_FREE (AcpiGbl_ExternalList->InternalPath); - } - - ACPI_FREE (AcpiGbl_ExternalList->Path); - ACPI_FREE (AcpiGbl_ExternalList); - AcpiGbl_ExternalList = NextExternal; - } - - AcpiOsPrintf ("\n"); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmUnresolvedWarning - * - * PARAMETERS: Type - Where to output the warning. - * 0 means write to stderr - * 1 means write to AcpiOsPrintf - * - * RETURN: None - * - * DESCRIPTION: Issue warning message if there are unresolved external control - * methods within the disassembly. - * - ******************************************************************************/ - -#if 0 -Summary of the external control method problem: - -When the -e option is used with disassembly, the various SSDTs are simply -loaded into a global namespace for the disassembler to use in order to -resolve control method references (invocations). - -The disassembler tracks any such references, and will emit an External() -statement for these types of methods, with the proper number of arguments . - -Without the SSDTs, the AML does not contain enough information to properly -disassemble the control method invocation -- because the disassembler does -not know how many arguments to parse. - -An example: Assume we have two control methods. ABCD has one argument, and -EFGH has zero arguments. Further, we have two additional control methods -that invoke ABCD and EFGH, named T1 and T2: - - Method (ABCD, 1) - { - } - Method (EFGH, 0) - { - } - Method (T1) - { - ABCD (Add (2, 7, Local0)) - } - Method (T2) - { - EFGH () - Add (2, 7, Local0) - } - -Here is the AML code that is generated for T1 and T2: - - 185: Method (T1) - -0000034C: 14 10 54 31 5F 5F 00 ... "..T1__." - - 186: { - 187: ABCD (Add (2, 7, Local0)) - -00000353: 41 42 43 44 ............ "ABCD" -00000357: 72 0A 02 0A 07 60 ...... "r....`" - - 188: } - - 190: Method (T2) - -0000035D: 14 10 54 32 5F 5F 00 ... "..T2__." - - 191: { - 192: EFGH () - -00000364: 45 46 47 48 ............ "EFGH" - - 193: Add (2, 7, Local0) - -00000368: 72 0A 02 0A 07 60 ...... "r....`" - 194: } - -Note that the AML code for T1 and T2 is essentially identical. When -disassembling this code, the methods ABCD and EFGH must be known to the -disassembler, otherwise it does not know how to handle the method invocations. - -In other words, if ABCD and EFGH are actually external control methods -appearing in an SSDT, the disassembler does not know what to do unless -the owning SSDT has been loaded via the -e option. -#endif - -void -AcpiDmUnresolvedWarning ( - UINT8 Type) -{ - - if (!AcpiGbl_NumExternalMethods) - { - return; - } - - if (Type) - { - if (!AcpiGbl_ExternalFileList) - { - /* The -e option was not specified */ - - AcpiOsPrintf (" /*\n" - " * iASL Warning: There were %u external control methods found during\n" - " * disassembly, but additional ACPI tables to resolve these externals\n" - " * were not specified. This resulting disassembler output file may not\n" - " * compile because the disassembler did not know how many arguments\n" - " * to assign to these methods. To specify the tables needed to resolve\n" - " * external control method references, the -e option can be used to\n" - " * specify the filenames. Note: SSDTs can be dynamically loaded at\n" - " * runtime and may or may not be available via the host OS.\n" - " * Example iASL invocations:\n" - " * iasl -e ssdt1.aml ssdt2.aml ssdt3.aml -d dsdt.aml\n" - " * iasl -e dsdt.aml ssdt2.aml -d ssdt1.aml\n" - " * iasl -e ssdt*.aml -d dsdt.aml\n" - " *\n" - " * In addition, the -fe option can be used to specify a file containing\n" - " * control method external declarations with the associated method\n" - " * argument counts. Each line of the file must be of the form:\n" - " * External (, MethodObj, )\n" - " * Invocation:\n" - " * iasl -fe refs.txt -d dsdt.aml\n" - " *\n" - " * The following methods were unresolved and many not compile properly\n" - " * because the disassembler had to guess at the number of arguments\n" - " * required for each:\n" - " */\n", - AcpiGbl_NumExternalMethods); - } - else if (AcpiGbl_NumExternalMethods != AcpiGbl_ResolvedExternalMethods) - { - /* The -e option was specified, but there are still some unresolved externals */ - - AcpiOsPrintf (" /*\n" - " * iASL Warning: There were %u external control methods found during\n" - " * disassembly, but only %u %s resolved (%u unresolved). Additional\n" - " * ACPI tables may be required to properly disassemble the code. This\n" - " * resulting disassembler output file may not compile because the\n" - " * disassembler did not know how many arguments to assign to the\n" - " * unresolved methods. Note: SSDTs can be dynamically loaded at\n" - " * runtime and may or may not be available via the host OS.\n" - " *\n" - " * If necessary, the -fe option can be used to specify a file containing\n" - " * control method external declarations with the associated method\n" - " * argument counts. Each line of the file must be of the form:\n" - " * External (, MethodObj, )\n" - " * Invocation:\n" - " * iasl -fe refs.txt -d dsdt.aml\n" - " *\n" - " * The following methods were unresolved and many not compile properly\n" - " * because the disassembler had to guess at the number of arguments\n" - " * required for each:\n" - " */\n", - AcpiGbl_NumExternalMethods, AcpiGbl_ResolvedExternalMethods, - (AcpiGbl_ResolvedExternalMethods > 1 ? "were" : "was"), - (AcpiGbl_NumExternalMethods - AcpiGbl_ResolvedExternalMethods)); - } - } - else - { - if (!AcpiGbl_ExternalFileList) - { - /* The -e option was not specified */ - - fprintf (stderr, "\n" - "iASL Warning: There were %u external control methods found during\n" - "disassembly, but additional ACPI tables to resolve these externals\n" - "were not specified. The resulting disassembler output file may not\n" - "compile because the disassembler did not know how many arguments\n" - "to assign to these methods. To specify the tables needed to resolve\n" - "external control method references, the -e option can be used to\n" - "specify the filenames. Note: SSDTs can be dynamically loaded at\n" - "runtime and may or may not be available via the host OS.\n" - "Example iASL invocations:\n" - " iasl -e ssdt1.aml ssdt2.aml ssdt3.aml -d dsdt.aml\n" - " iasl -e dsdt.aml ssdt2.aml -d ssdt1.aml\n" - " iasl -e ssdt*.aml -d dsdt.aml\n" - "\n" - "In addition, the -fe option can be used to specify a file containing\n" - "control method external declarations with the associated method\n" - "argument counts. Each line of the file must be of the form:\n" - " External (, MethodObj, )\n" - "Invocation:\n" - " iasl -fe refs.txt -d dsdt.aml\n", - AcpiGbl_NumExternalMethods); - } - else if (AcpiGbl_NumExternalMethods != AcpiGbl_ResolvedExternalMethods) - { - /* The -e option was specified, but there are still some unresolved externals */ - - fprintf (stderr, "\n" - "iASL Warning: There were %u external control methods found during\n" - "disassembly, but only %u %s resolved (%u unresolved). Additional\n" - "ACPI tables may be required to properly disassemble the code. The\n" - "resulting disassembler output file may not compile because the\n" - "disassembler did not know how many arguments to assign to the\n" - "unresolved methods. Note: SSDTs can be dynamically loaded at\n" - "runtime and may or may not be available via the host OS.\n" - "\n" - "If necessary, the -fe option can be used to specify a file containing\n" - "control method external declarations with the associated method\n" - "argument counts. Each line of the file must be of the form:\n" - " External (, MethodObj, )\n" - "Invocation:\n" - " iasl -fe refs.txt -d dsdt.aml\n", - AcpiGbl_NumExternalMethods, AcpiGbl_ResolvedExternalMethods, - (AcpiGbl_ResolvedExternalMethods > 1 ? "were" : "was"), - (AcpiGbl_NumExternalMethods - AcpiGbl_ResolvedExternalMethods)); - } - } -} diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/common/dmrestag.c b/src/add-ons/kernel/bus_managers/acpi/acpica/common/dmrestag.c deleted file mode 100644 index 5041f884fc..0000000000 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/common/dmrestag.c +++ /dev/null @@ -1,1120 +0,0 @@ -/****************************************************************************** - * - * Module Name: dmrestag - Add tags to resource descriptors (Application-level) - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#include "acpi.h" -#include "accommon.h" -#include "acparser.h" -#include "acdisasm.h" -#include "acnamesp.h" -#include "amlcode.h" - -/* This module used for application-level code only */ - -#define _COMPONENT ACPI_CA_DISASSEMBLER - ACPI_MODULE_NAME ("dmrestag") - -/* Local prototypes */ - -static void -AcpiDmUpdateResourceName ( - ACPI_NAMESPACE_NODE *ResourceNode); - -static char * -AcpiDmSearchTagList ( - UINT32 BitIndex, - const ACPI_RESOURCE_TAG *TagList); - -static char * -AcpiDmGetResourceTag ( - UINT32 BitIndex, - AML_RESOURCE *Resource, - UINT8 ResourceIndex); - -static char * -AcpiGetTagPathname ( - ACPI_PARSE_OBJECT *Op, - ACPI_NAMESPACE_NODE *BufferNode, - ACPI_NAMESPACE_NODE *ResourceNode, - UINT32 BitIndex); - -static ACPI_NAMESPACE_NODE * -AcpiDmGetResourceNode ( - ACPI_NAMESPACE_NODE *BufferNode, - UINT32 BitIndex); - -static ACPI_STATUS -AcpiDmAddResourceToNamespace ( - UINT8 *Aml, - UINT32 Length, - UINT32 Offset, - UINT8 ResourceIndex, - void **Context); - -static void -AcpiDmAddResourcesToNamespace ( - ACPI_NAMESPACE_NODE *BufferNode, - ACPI_PARSE_OBJECT *Op); - - -/****************************************************************************** - * - * Resource Tag tables - * - * These are the predefined tags that refer to elements of a resource - * descriptor. Each name and offset is defined in the ACPI specification. - * - * Each table entry contains the bit offset of the field and the associated - * name. - * - ******************************************************************************/ - -static const ACPI_RESOURCE_TAG AcpiDmIrqTags[] = -{ - {( 1 * 8), ACPI_RESTAG_INTERRUPT}, - {( 3 * 8) + 0, ACPI_RESTAG_INTERRUPTTYPE}, - {( 3 * 8) + 3, ACPI_RESTAG_INTERRUPTLEVEL}, - {( 3 * 8) + 4, ACPI_RESTAG_INTERRUPTSHARE}, - {0, NULL} -}; - -static const ACPI_RESOURCE_TAG AcpiDmDmaTags[] = -{ - {( 1 * 8), ACPI_RESTAG_DMA}, - {( 2 * 8) + 0, ACPI_RESTAG_XFERTYPE}, - {( 2 * 8) + 2, ACPI_RESTAG_BUSMASTER}, - {( 2 * 8) + 5, ACPI_RESTAG_DMATYPE}, - {0, NULL} -}; - -static const ACPI_RESOURCE_TAG AcpiDmIoTags[] = -{ - {( 1 * 8) + 0, ACPI_RESTAG_DECODE}, - {( 2 * 8), ACPI_RESTAG_MINADDR}, - {( 4 * 8), ACPI_RESTAG_MAXADDR}, - {( 6 * 8), ACPI_RESTAG_ALIGNMENT}, - {( 7 * 8), ACPI_RESTAG_LENGTH}, - {0, NULL} -}; - -static const ACPI_RESOURCE_TAG AcpiDmFixedIoTags[] = -{ - {( 1 * 8), ACPI_RESTAG_BASEADDRESS}, - {( 3 * 8), ACPI_RESTAG_LENGTH}, - {0, NULL} -}; - -static const ACPI_RESOURCE_TAG AcpiDmFixedDmaTags[] = -{ - {( 1 * 8), ACPI_RESTAG_DMA}, - {( 3 * 8), ACPI_RESTAG_DMATYPE}, - {( 5 * 8), ACPI_RESTAG_XFERTYPE}, - {0, NULL} -}; - -static const ACPI_RESOURCE_TAG AcpiDmMemory24Tags[] = -{ - {( 3 * 8) + 0, ACPI_RESTAG_READWRITETYPE}, - {( 4 * 8), ACPI_RESTAG_MINADDR}, - {( 6 * 8), ACPI_RESTAG_MAXADDR}, - {( 8 * 8), ACPI_RESTAG_ALIGNMENT}, - {(10 * 8), ACPI_RESTAG_LENGTH}, - {0, NULL} -}; - -static const ACPI_RESOURCE_TAG AcpiDmRegisterTags[] = -{ - {( 3 * 8), ACPI_RESTAG_ADDRESSSPACE}, - {( 4 * 8), ACPI_RESTAG_REGISTERBITWIDTH}, - {( 5 * 8), ACPI_RESTAG_REGISTERBITOFFSET}, - {( 6 * 8), ACPI_RESTAG_ACCESSSIZE}, - {( 7 * 8), ACPI_RESTAG_ADDRESS}, - {0, NULL} -}; - -static const ACPI_RESOURCE_TAG AcpiDmMemory32Tags[] = -{ - {( 3 * 8) + 0, ACPI_RESTAG_READWRITETYPE}, - {( 4 * 8), ACPI_RESTAG_MINADDR}, - {( 8 * 8), ACPI_RESTAG_MAXADDR}, - {(12 * 8), ACPI_RESTAG_ALIGNMENT}, - {(16 * 8), ACPI_RESTAG_LENGTH}, - {0, NULL} -}; - -static const ACPI_RESOURCE_TAG AcpiDmFixedMemory32Tags[] = -{ - {( 3 * 8) + 0, ACPI_RESTAG_READWRITETYPE}, - {( 4 * 8), ACPI_RESTAG_BASEADDRESS}, - {( 8 * 8), ACPI_RESTAG_LENGTH}, - {0, NULL} -}; - -static const ACPI_RESOURCE_TAG AcpiDmInterruptTags[] = -{ - {( 3 * 8) + 1, ACPI_RESTAG_INTERRUPTTYPE}, - {( 3 * 8) + 2, ACPI_RESTAG_INTERRUPTLEVEL}, - {( 3 * 8) + 3, ACPI_RESTAG_INTERRUPTSHARE}, - {( 5 * 8), ACPI_RESTAG_INTERRUPT}, - {0, NULL} -}; - -static const ACPI_RESOURCE_TAG AcpiDmAddress16Tags[] = -{ - {( 4 * 8) + 1, ACPI_RESTAG_DECODE}, - {( 4 * 8) + 2, ACPI_RESTAG_MINTYPE}, - {( 4 * 8) + 3, ACPI_RESTAG_MAXTYPE}, - {( 6 * 8), ACPI_RESTAG_GRANULARITY}, - {( 8 * 8), ACPI_RESTAG_MINADDR}, - {(10 * 8), ACPI_RESTAG_MAXADDR}, - {(12 * 8), ACPI_RESTAG_TRANSLATION}, - {(14 * 8), ACPI_RESTAG_LENGTH}, - {0, NULL} -}; - -static const ACPI_RESOURCE_TAG AcpiDmAddress32Tags[] = -{ - {( 4 * 8) + 1, ACPI_RESTAG_DECODE}, - {( 4 * 8) + 2, ACPI_RESTAG_MINTYPE}, - {( 4 * 8) + 3, ACPI_RESTAG_MAXTYPE}, - {( 6 * 8), ACPI_RESTAG_GRANULARITY}, - {(10 * 8), ACPI_RESTAG_MINADDR}, - {(14 * 8), ACPI_RESTAG_MAXADDR}, - {(18 * 8), ACPI_RESTAG_TRANSLATION}, - {(22 * 8), ACPI_RESTAG_LENGTH}, - {0, NULL} -}; - -static const ACPI_RESOURCE_TAG AcpiDmAddress64Tags[] = -{ - {( 4 * 8) + 1, ACPI_RESTAG_DECODE}, - {( 4 * 8) + 2, ACPI_RESTAG_MINTYPE}, - {( 4 * 8) + 3, ACPI_RESTAG_MAXTYPE}, - {( 6 * 8), ACPI_RESTAG_GRANULARITY}, - {(14 * 8), ACPI_RESTAG_MINADDR}, - {(22 * 8), ACPI_RESTAG_MAXADDR}, - {(30 * 8), ACPI_RESTAG_TRANSLATION}, - {(38 * 8), ACPI_RESTAG_LENGTH}, - {0, NULL} -}; - -static const ACPI_RESOURCE_TAG AcpiDmExtendedAddressTags[] = -{ - {( 4 * 8) + 1, ACPI_RESTAG_DECODE}, - {( 4 * 8) + 2, ACPI_RESTAG_MINTYPE}, - {( 4 * 8) + 3, ACPI_RESTAG_MAXTYPE}, - {( 8 * 8), ACPI_RESTAG_GRANULARITY}, - {(16 * 8), ACPI_RESTAG_MINADDR}, - {(24 * 8), ACPI_RESTAG_MAXADDR}, - {(32 * 8), ACPI_RESTAG_TRANSLATION}, - {(40 * 8), ACPI_RESTAG_LENGTH}, - {(48 * 8), ACPI_RESTAG_TYPESPECIFICATTRIBUTES}, - {0, NULL} -}; - -/* Subtype tables for GPIO descriptors */ - -static const ACPI_RESOURCE_TAG AcpiDmGpioIntTags[] = -{ - {( 7 * 8) + 0, ACPI_RESTAG_MODE}, - {( 7 * 8) + 1, ACPI_RESTAG_POLARITY}, - {( 7 * 8) + 3, ACPI_RESTAG_INTERRUPTSHARE}, - {( 9 * 8), ACPI_RESTAG_PINCONFIG}, - {(10 * 8), ACPI_RESTAG_DRIVESTRENGTH}, - {(12 * 8), ACPI_RESTAG_DEBOUNCETIME}, - {0, NULL} -}; - -static const ACPI_RESOURCE_TAG AcpiDmGpioIoTags[] = -{ - {( 7 * 8) + 0, ACPI_RESTAG_IORESTRICTION}, - {( 7 * 8) + 3, ACPI_RESTAG_INTERRUPTSHARE}, - {( 9 * 8), ACPI_RESTAG_PINCONFIG}, - {(10 * 8), ACPI_RESTAG_DRIVESTRENGTH}, - {(12 * 8), ACPI_RESTAG_DEBOUNCETIME}, - {0, NULL} -}; - -/* Subtype tables for SerialBus descriptors */ - -static const ACPI_RESOURCE_TAG AcpiDmI2cSerialBusTags[] = -{ - {( 6 * 8) + 0, ACPI_RESTAG_SLAVEMODE}, - {( 7 * 8) + 0, ACPI_RESTAG_MODE}, - {(12 * 8), ACPI_RESTAG_SPEED}, - {(16 * 8), ACPI_RESTAG_ADDRESS}, - {0, NULL} -}; - -static const ACPI_RESOURCE_TAG AcpiDmSpiSerialBusTags[] = -{ - {( 6 * 8) + 0, ACPI_RESTAG_SLAVEMODE}, - {( 7 * 8) + 0, ACPI_RESTAG_MODE}, - {( 7 * 8) + 1, ACPI_RESTAG_DEVICEPOLARITY}, - {(12 * 8), ACPI_RESTAG_SPEED}, - {(16 * 8), ACPI_RESTAG_LENGTH}, - {(17 * 8), ACPI_RESTAG_PHASE}, - {(18 * 8), ACPI_RESTAG_POLARITY}, - {(19 * 8), ACPI_RESTAG_ADDRESS}, - {0, NULL} -}; - -static const ACPI_RESOURCE_TAG AcpiDmUartSerialBusTags[] = -{ - {( 6 * 8) + 0, ACPI_RESTAG_SLAVEMODE}, /* Note: not part of original macro */ - {( 7 * 8) + 0, ACPI_RESTAG_FLOWCONTROL}, - {( 7 * 8) + 2, ACPI_RESTAG_STOPBITS}, - {( 7 * 8) + 4, ACPI_RESTAG_LENGTH}, - {( 7 * 8) + 7, ACPI_RESTAG_ENDIANNESS}, - {(12 * 8), ACPI_RESTAG_SPEED}, - {(16 * 8), ACPI_RESTAG_LENGTH_RX}, - {(18 * 8), ACPI_RESTAG_LENGTH_TX}, - {(20 * 8), ACPI_RESTAG_PARITY}, - {(21 * 8), ACPI_RESTAG_LINE}, - {0, NULL} -}; - -/* Subtype tables for Address descriptor type-specific flags */ - -static const ACPI_RESOURCE_TAG AcpiDmMemoryFlagTags[] = -{ - {( 5 * 8) + 0, ACPI_RESTAG_READWRITETYPE}, - {( 5 * 8) + 1, ACPI_RESTAG_MEMTYPE}, - {( 5 * 8) + 3, ACPI_RESTAG_MEMATTRIBUTES}, - {( 5 * 8) + 5, ACPI_RESTAG_TYPE}, - {0, NULL} -}; - -static const ACPI_RESOURCE_TAG AcpiDmIoFlagTags[] = -{ - {( 5 * 8) + 0, ACPI_RESTAG_RANGETYPE}, - {( 5 * 8) + 4, ACPI_RESTAG_TYPE}, - {( 5 * 8) + 5, ACPI_RESTAG_TRANSTYPE}, - {0, NULL} -}; - - -/* - * Dispatch table used to obtain the correct tag table for a descriptor. - * - * A NULL in this table means one of three things: - * 1) The descriptor ID is reserved and invalid - * 2) The descriptor has no tags associated with it - * 3) The descriptor has subtypes and a separate table will be used. - */ -static const ACPI_RESOURCE_TAG *AcpiGbl_ResourceTags[] = -{ - /* Small descriptors */ - - NULL, /* 0x00, Reserved */ - NULL, /* 0x01, Reserved */ - NULL, /* 0x02, Reserved */ - NULL, /* 0x03, Reserved */ - AcpiDmIrqTags, /* 0x04, ACPI_RESOURCE_NAME_IRQ_FORMAT */ - AcpiDmDmaTags, /* 0x05, ACPI_RESOURCE_NAME_DMA_FORMAT */ - NULL, /* 0x06, ACPI_RESOURCE_NAME_START_DEPENDENT */ - NULL, /* 0x07, ACPI_RESOURCE_NAME_END_DEPENDENT */ - AcpiDmIoTags, /* 0x08, ACPI_RESOURCE_NAME_IO_PORT */ - AcpiDmFixedIoTags, /* 0x09, ACPI_RESOURCE_NAME_FIXED_IO_PORT */ - AcpiDmFixedDmaTags, /* 0x0A, ACPI_RESOURCE_NAME_FIXED_DMA */ - NULL, /* 0x0B, Reserved */ - NULL, /* 0x0C, Reserved */ - NULL, /* 0x0D, Reserved */ - NULL, /* 0x0E, ACPI_RESOURCE_NAME_SMALL_VENDOR */ - NULL, /* 0x0F, ACPI_RESOURCE_NAME_END_TAG (not used) */ - - /* Large descriptors */ - - NULL, /* 0x00, Reserved */ - AcpiDmMemory24Tags, /* 0x01, ACPI_RESOURCE_NAME_MEMORY_24 */ - AcpiDmRegisterTags, /* 0x02, ACPI_RESOURCE_NAME_GENERIC_REGISTER */ - NULL, /* 0x03, Reserved */ - NULL, /* 0x04, ACPI_RESOURCE_NAME_LARGE_VENDOR */ - AcpiDmMemory32Tags, /* 0x05, ACPI_RESOURCE_NAME_MEMORY_32 */ - AcpiDmFixedMemory32Tags, /* 0x06, ACPI_RESOURCE_NAME_FIXED_MEMORY_32 */ - AcpiDmAddress32Tags, /* 0x07, ACPI_RESOURCE_NAME_DWORD_ADDRESS_SPACE */ - AcpiDmAddress16Tags, /* 0x08, ACPI_RESOURCE_NAME_WORD_ADDRESS_SPACE */ - AcpiDmInterruptTags, /* 0x09, ACPI_RESOURCE_NAME_EXTENDED_XRUPT */ - AcpiDmAddress64Tags, /* 0x0A, ACPI_RESOURCE_NAME_QWORD_ADDRESS_SPACE */ - AcpiDmExtendedAddressTags, /* 0x0B, ACPI_RESOURCE_NAME_EXTENDED_ADDRESS_SPACE */ - NULL, /* 0x0C, ACPI_RESOURCE_NAME_GPIO - Use Subtype table below */ - NULL, /* 0x0D, Reserved */ - NULL /* 0x0E, ACPI_RESOURCE_NAME_SERIAL_BUS - Use Subtype table below */ -}; - -/* GPIO Subtypes */ - -static const ACPI_RESOURCE_TAG *AcpiGbl_GpioResourceTags[] = -{ - AcpiDmGpioIntTags, /* 0x00 Interrupt Connection */ - AcpiDmGpioIoTags /* 0x01 I/O Connection */ -}; - -/* Serial Bus Subtypes */ - -static const ACPI_RESOURCE_TAG *AcpiGbl_SerialResourceTags[] = -{ - NULL, /* 0x00 Reserved */ - AcpiDmI2cSerialBusTags, /* 0x01 I2C SerialBus */ - AcpiDmSpiSerialBusTags, /* 0x02 SPI SerialBus */ - AcpiDmUartSerialBusTags /* 0x03 UART SerialBus */ -}; - -/* - * Globals used to generate unique resource descriptor names. We use names that - * start with underscore and a prefix letter that is not used by other ACPI - * reserved names. To this, we append hex 0x00 through 0xFF. These 5 prefixes - * allow for 5*256 = 1280 unique names, probably sufficient for any single ASL - * file. If this becomes too small, we can use alpha+numerals for a total - * of 5*36*36 = 6480. - */ -#define ACPI_NUM_RES_PREFIX 5 - -static UINT32 AcpiGbl_NextResourceId = 0; -static UINT8 AcpiGbl_NextPrefix = 0; -static char AcpiGbl_Prefix[ACPI_NUM_RES_PREFIX] = - {'Y','Z','J','K','X'}; - - -/******************************************************************************* - * - * FUNCTION: AcpiDmCheckResourceReference - * - * PARAMETERS: Op - Parse Op for the AML opcode - * WalkState - Current walk state (with valid scope) - * - * RETURN: None - * - * DESCRIPTION: Convert a reference to a resource descriptor to a symbolic - * reference if possible - * - * NOTE: Bit index is used to transparently handle both resource bit - * fields and byte fields. - * - ******************************************************************************/ - -void -AcpiDmCheckResourceReference ( - ACPI_PARSE_OBJECT *Op, - ACPI_WALK_STATE *WalkState) -{ - ACPI_STATUS Status; - ACPI_PARSE_OBJECT *BufferNameOp; - ACPI_PARSE_OBJECT *IndexOp; - ACPI_NAMESPACE_NODE *BufferNode; - ACPI_NAMESPACE_NODE *ResourceNode; - const ACPI_OPCODE_INFO *OpInfo; - UINT32 BitIndex; - - - /* We are only interested in the CreateXxxxField opcodes */ - - OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode); - if (OpInfo->Type != AML_TYPE_CREATE_FIELD) - { - return; - } - - /* Get the buffer term operand */ - - BufferNameOp = AcpiPsGetDepthNext (NULL, Op); - - /* Must be a named buffer, not an arg or local or method call */ - - if (BufferNameOp->Common.AmlOpcode != AML_INT_NAMEPATH_OP) - { - return; - } - - /* Get the Index term, must be an integer constant to convert */ - - IndexOp = BufferNameOp->Common.Next; - - /* Major cheat: The Node field is also used for the Tag ptr. Clear it now */ - - IndexOp->Common.Node = NULL; - - OpInfo = AcpiPsGetOpcodeInfo (IndexOp->Common.AmlOpcode); - if (OpInfo->ObjectType != ACPI_TYPE_INTEGER) - { - return; - } - - /* Get the bit offset of the descriptor within the buffer */ - - if ((Op->Common.AmlOpcode == AML_CREATE_BIT_FIELD_OP) || - (Op->Common.AmlOpcode == AML_CREATE_FIELD_OP)) - { - /* Index operand is a bit offset */ - - BitIndex = (UINT32) IndexOp->Common.Value.Integer; - } - else - { - /* Index operand is a byte offset, convert to bits */ - - BitIndex = (UINT32) ACPI_MUL_8 (IndexOp->Common.Value.Integer); - } - - /* Lookup the buffer in the namespace */ - - Status = AcpiNsLookup (WalkState->ScopeInfo, - BufferNameOp->Common.Value.String, ACPI_TYPE_BUFFER, - ACPI_IMODE_EXECUTE, ACPI_NS_SEARCH_PARENT, WalkState, - &BufferNode); - if (ACPI_FAILURE (Status)) - { - return; - } - - /* Validate object type, we must have a buffer */ - - if (BufferNode->Type != ACPI_TYPE_BUFFER) - { - return; - } - - /* Find the resource descriptor node corresponding to the index */ - - ResourceNode = AcpiDmGetResourceNode (BufferNode, BitIndex); - if (!ResourceNode) - { - return; - } - - /* Translate the Index to a resource tag pathname */ - - AcpiGetTagPathname (IndexOp, BufferNode, ResourceNode, BitIndex); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmGetResourceNode - * - * PARAMETERS: BufferNode - Node for the parent buffer - * BitIndex - Index into the resource descriptor - * - * RETURN: Namespace node for the resource descriptor. NULL if not found - * - * DESCRIPTION: Find a resource descriptor that corresponds to the bit index - * - ******************************************************************************/ - -static ACPI_NAMESPACE_NODE * -AcpiDmGetResourceNode ( - ACPI_NAMESPACE_NODE *BufferNode, - UINT32 BitIndex) -{ - ACPI_NAMESPACE_NODE *Node; - UINT32 ByteIndex = ACPI_DIV_8 (BitIndex); - - - /* - * Child list contains an entry for each resource descriptor. Find - * the descriptor that corresponds to the Index. - * - * If there are no children, this is not a resource template - */ - Node = BufferNode->Child; - while (Node) - { - /* - * Check if the Index falls within this resource. - * - * Value contains the resource offset, Object contains the resource - * length (both in bytes) - */ - if ((ByteIndex >= Node->Value) && - (ByteIndex < (Node->Value + Node->Length))) - { - return (Node); - } - - Node = Node->Peer; - } - - return (NULL); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiGetTagPathname - * - * PARAMETERS: BufferNode - Node for the parent buffer - * ResourceNode - Node for a resource descriptor - * BitIndex - Index into the resource descriptor - * - * RETURN: Full pathname for a resource tag. NULL if no match. - * Path is returned in AML (packed) format. - * - * DESCRIPTION: Convert a BitIndex into a symbolic resource tag (full pathname) - * - ******************************************************************************/ - -static char * -AcpiGetTagPathname ( - ACPI_PARSE_OBJECT *IndexOp, - ACPI_NAMESPACE_NODE *BufferNode, - ACPI_NAMESPACE_NODE *ResourceNode, - UINT32 BitIndex) -{ - ACPI_STATUS Status; - UINT32 ResourceBitIndex; - UINT8 ResourceTableIndex; - ACPI_SIZE RequiredSize; - char *Pathname; - AML_RESOURCE *Aml; - ACPI_PARSE_OBJECT *Op; - char *InternalPath; - char *Tag; - - - /* Get the Op that contains the actual buffer data */ - - Op = BufferNode->Op->Common.Value.Arg; - Op = Op->Common.Next; - if (!Op) - { - return (NULL); - } - - /* Get the individual resource descriptor and validate it */ - - Aml = ACPI_CAST_PTR (AML_RESOURCE, - &Op->Named.Data[ResourceNode->Value]); - - Status = AcpiUtValidateResource (NULL, Aml, &ResourceTableIndex); - if (ACPI_FAILURE (Status)) - { - return (NULL); - } - - /* Get offset into this descriptor (from offset into entire buffer) */ - - ResourceBitIndex = BitIndex - ACPI_MUL_8 (ResourceNode->Value); - - /* Get the tag associated with this resource descriptor and offset */ - - Tag = AcpiDmGetResourceTag (ResourceBitIndex, Aml, ResourceTableIndex); - if (!Tag) - { - return (NULL); - } - - /* - * Now that we know that we have a reference that can be converted to a - * symbol, change the name of the resource to a unique name. - */ - AcpiDmUpdateResourceName (ResourceNode); - - /* Get the full pathname to the parent buffer */ - - RequiredSize = AcpiNsBuildNormalizedPath (BufferNode, NULL, 0, FALSE); - if (!RequiredSize) - { - return (NULL); - } - - Pathname = ACPI_ALLOCATE_ZEROED (RequiredSize + ACPI_PATH_SEGMENT_LENGTH); - if (!Pathname) - { - return (NULL); - } - - (void) AcpiNsBuildNormalizedPath (BufferNode, Pathname, - RequiredSize, FALSE); - - /* - * Create the full path to the resource and tag by: remove the buffer name, - * append the resource descriptor name, append a dot, append the tag name. - * - * TBD: Always using the full path is a bit brute force, the path can be - * often be optimized with carats (if the original buffer namepath is a - * single nameseg). This doesn't really matter, because these paths do not - * end up in the final compiled AML, it's just an appearance issue for the - * disassembled code. - */ - Pathname[strlen (Pathname) - ACPI_NAME_SIZE] = 0; - strncat (Pathname, ResourceNode->Name.Ascii, ACPI_NAME_SIZE); - strcat (Pathname, "."); - strncat (Pathname, Tag, ACPI_NAME_SIZE); - - /* Internalize the namepath to AML format */ - - AcpiNsInternalizeName (Pathname, &InternalPath); - ACPI_FREE (Pathname); - - /* Update the Op with the symbol */ - - AcpiPsInitOp (IndexOp, AML_INT_NAMEPATH_OP); - IndexOp->Common.Value.String = InternalPath; - - /* We will need the tag later. Cheat by putting it in the Node field */ - - IndexOp->Common.Node = ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, Tag); - return (InternalPath); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmUpdateResourceName - * - * PARAMETERS: ResourceNode - Node for a resource descriptor - * - * RETURN: Stores new name in the ResourceNode - * - * DESCRIPTION: Create a new, unique name for a resource descriptor. Used by - * both the disassembly of the descriptor itself and any symbolic - * references to the descriptor. Ignored if a unique name has - * already been assigned to the resource. - * - * NOTE: Single threaded, suitable for applications only! - * - ******************************************************************************/ - -static void -AcpiDmUpdateResourceName ( - ACPI_NAMESPACE_NODE *ResourceNode) -{ - char Name[ACPI_NAME_SIZE]; - - - /* Ignore if a unique name has already been assigned */ - - if (ResourceNode->Name.Integer != ACPI_DEFAULT_RESNAME) - { - return; - } - - /* Generate a new ACPI name for the descriptor */ - - Name[0] = '_'; - Name[1] = AcpiGbl_Prefix[AcpiGbl_NextPrefix]; - Name[2] = AcpiUtHexToAsciiChar ((UINT64) AcpiGbl_NextResourceId, 4); - Name[3] = AcpiUtHexToAsciiChar ((UINT64) AcpiGbl_NextResourceId, 0); - - /* Update globals for next name */ - - AcpiGbl_NextResourceId++; - if (AcpiGbl_NextResourceId >= 256) - { - AcpiGbl_NextResourceId = 0; - AcpiGbl_NextPrefix++; - if (AcpiGbl_NextPrefix > ACPI_NUM_RES_PREFIX) - { - AcpiGbl_NextPrefix = 0; - } - } - - /* Change the resource descriptor name */ - - ResourceNode->Name.Integer = *ACPI_CAST_PTR (UINT32, &Name[0]); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmGetResourceTag - * - * PARAMETERS: BitIndex - Index into the resource descriptor - * Resource - Pointer to the raw resource data - * ResourceIndex - Index correspoinding to the resource type - * - * RETURN: Pointer to the resource tag (ACPI_NAME). NULL if no match. - * - * DESCRIPTION: Convert a BitIndex into a symbolic resource tag. - * - * Note: ResourceIndex should be previously validated and guaranteed to ve - * valid. - * - ******************************************************************************/ - -static char * -AcpiDmGetResourceTag ( - UINT32 BitIndex, - AML_RESOURCE *Resource, - UINT8 ResourceIndex) -{ - const ACPI_RESOURCE_TAG *TagList; - char *Tag = NULL; - - - /* Get the tag list for this resource descriptor type */ - - TagList = AcpiGbl_ResourceTags[ResourceIndex]; - - /* - * Handle descriptors that have multiple subtypes - */ - switch (Resource->DescriptorType) - { - case ACPI_RESOURCE_NAME_ADDRESS16: - case ACPI_RESOURCE_NAME_ADDRESS32: - case ACPI_RESOURCE_NAME_ADDRESS64: - case ACPI_RESOURCE_NAME_EXTENDED_ADDRESS64: - /* - * Subtype differentiation is the flags. - * Kindof brute force, but just blindly search for an index match - */ - if (Resource->Address.ResourceType == ACPI_ADDRESS_TYPE_MEMORY_RANGE) - { - Tag = AcpiDmSearchTagList (BitIndex, AcpiDmMemoryFlagTags); - } - else if (Resource->Address.ResourceType == ACPI_ADDRESS_TYPE_IO_RANGE) - { - Tag = AcpiDmSearchTagList (BitIndex, AcpiDmIoFlagTags); - } - - /* If we found a match, all done. Else, drop to normal search below */ - - if (Tag) - { - return (Tag); - } - break; - - case ACPI_RESOURCE_NAME_GPIO: - - /* GPIO connection has 2 subtypes: Interrupt and I/O */ - - if (Resource->Gpio.ConnectionType > AML_RESOURCE_MAX_GPIOTYPE) - { - return (NULL); - } - - TagList = AcpiGbl_GpioResourceTags[Resource->Gpio.ConnectionType]; - break; - - case ACPI_RESOURCE_NAME_SERIAL_BUS: - - /* SerialBus has 3 subtypes: I2C, SPI, and UART */ - - if ((Resource->CommonSerialBus.Type == 0) || - (Resource->CommonSerialBus.Type > AML_RESOURCE_MAX_SERIALBUSTYPE)) - { - return (NULL); - } - - TagList = AcpiGbl_SerialResourceTags[Resource->CommonSerialBus.Type]; - break; - - default: - - break; - } - - /* Search for a match against the BitIndex */ - - if (TagList) - { - Tag = AcpiDmSearchTagList (BitIndex, TagList); - } - - return (Tag); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmSearchTagList - * - * PARAMETERS: BitIndex - Index into the resource descriptor - * TagList - List to search - * - * RETURN: Pointer to a tag (ACPI_NAME). NULL if no match found. - * - * DESCRIPTION: Search a tag list for a match to the input BitIndex. Matches - * a fixed offset to a symbolic resource tag name. - * - ******************************************************************************/ - -static char * -AcpiDmSearchTagList ( - UINT32 BitIndex, - const ACPI_RESOURCE_TAG *TagList) -{ - - /* - * Walk the null-terminated tag list to find a matching bit offset. - * We are looking for an exact match. - */ - for ( ; TagList->Tag; TagList++) - { - if (BitIndex == TagList->BitIndex) - { - return (TagList->Tag); - } - } - - /* A matching offset was not found */ - - return (NULL); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmFindResources - * - * PARAMETERS: Root - Root of the parse tree - * - * RETURN: None - * - * DESCRIPTION: Add all ResourceTemplate declarations to the namespace. Each - * resource descriptor in each template is given a node -- used - * for later conversion of resource references to symbolic refs. - * - ******************************************************************************/ - -void -AcpiDmFindResources ( - ACPI_PARSE_OBJECT *Root) -{ - ACPI_PARSE_OBJECT *Op = Root; - ACPI_PARSE_OBJECT *Parent; - - - /* Walk the entire parse tree */ - - while (Op) - { - /* We are interested in Buffer() declarations */ - - if (Op->Common.AmlOpcode == AML_BUFFER_OP) - { - /* And only declarations of the form Name (XXXX, Buffer()... ) */ - - Parent = Op->Common.Parent; - if (Parent->Common.AmlOpcode == AML_NAME_OP) - { - /* - * If the buffer is a resource template, add the individual - * resource descriptors to the namespace, as children of the - * buffer node. - */ - if (ACPI_SUCCESS (AcpiDmIsResourceTemplate (NULL, Op))) - { - Op->Common.DisasmOpcode = ACPI_DASM_RESOURCE; - AcpiDmAddResourcesToNamespace (Parent->Common.Node, Op); - } - } - } - - Op = AcpiPsGetDepthNext (Root, Op); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmAddResourcesToNamespace - * - * PARAMETERS: BufferNode - Node for the parent buffer - * Op - Parse op for the buffer - * - * RETURN: None - * - * DESCRIPTION: Add an entire resource template to the namespace. Each - * resource descriptor is added as a namespace node. - * - ******************************************************************************/ - -static void -AcpiDmAddResourcesToNamespace ( - ACPI_NAMESPACE_NODE *BufferNode, - ACPI_PARSE_OBJECT *Op) -{ - ACPI_PARSE_OBJECT *NextOp; - - - /* Get to the ByteData list */ - - NextOp = Op->Common.Value.Arg; - NextOp = NextOp->Common.Next; - if (!NextOp) - { - return; - } - - /* Set Node and Op to point to each other */ - - BufferNode->Op = Op; - Op->Common.Node = BufferNode; - - /* - * Insert each resource into the namespace - * NextOp contains the Aml pointer and the Aml length - */ - AcpiUtWalkAmlResources (NULL, (UINT8 *) NextOp->Named.Data, - (ACPI_SIZE) NextOp->Common.Value.Integer, - AcpiDmAddResourceToNamespace, (void **) BufferNode); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmAddResourceToNamespace - * - * PARAMETERS: ACPI_WALK_AML_CALLBACK - * BufferNode - Node for the parent buffer - * - * RETURN: Status - * - * DESCRIPTION: Add one resource descriptor to the namespace as a child of the - * parent buffer. The same name is used for each descriptor. This - * is changed later to a unique name if the resource is actually - * referenced by an AML operator. - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiDmAddResourceToNamespace ( - UINT8 *Aml, - UINT32 Length, - UINT32 Offset, - UINT8 ResourceIndex, - void **Context) -{ - ACPI_STATUS Status; - ACPI_GENERIC_STATE ScopeInfo; - ACPI_NAMESPACE_NODE *Node; - - - /* TBD: Don't need to add descriptors that have no tags defined? */ - - /* Add the resource to the namespace, as child of the buffer */ - - ScopeInfo.Scope.Node = ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, Context); - Status = AcpiNsLookup (&ScopeInfo, "_TMP", ACPI_TYPE_LOCAL_RESOURCE, - ACPI_IMODE_LOAD_PASS2, - ACPI_NS_NO_UPSEARCH | ACPI_NS_DONT_OPEN_SCOPE | ACPI_NS_PREFIX_IS_SCOPE, - NULL, &Node); - if (ACPI_FAILURE (Status)) - { - return (AE_OK); - } - - /* Set the name to the default, changed later if resource is referenced */ - - Node->Name.Integer = ACPI_DEFAULT_RESNAME; - - /* Save the offset of the descriptor (within the original buffer) */ - - Node->Value = Offset; - Node->Length = Length; - return (AE_OK); -} diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/common/dmtable.c b/src/add-ons/kernel/bus_managers/acpi/acpica/common/dmtable.c deleted file mode 100644 index c301da100a..0000000000 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/common/dmtable.c +++ /dev/null @@ -1,1590 +0,0 @@ -/****************************************************************************** - * - * Module Name: dmtable - Support for ACPI tables that contain no AML code - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#include "acpi.h" -#include "accommon.h" -#include "acdisasm.h" -#include "actables.h" -#include "aslcompiler.h" -#include "dtcompiler.h" - -/* This module used for application-level code only */ - -#define _COMPONENT ACPI_CA_DISASSEMBLER - ACPI_MODULE_NAME ("dmtable") - -const AH_TABLE * -AcpiAhGetTableInfo ( - char *Signature); - - -/* Local Prototypes */ - -static void -AcpiDmCheckAscii ( - UINT8 *Target, - char *RepairedName, - UINT32 Count); - - -/* Common format strings for commented values */ - -#define UINT8_FORMAT "%2.2X [%s]\n" -#define UINT16_FORMAT "%4.4X [%s]\n" -#define UINT32_FORMAT "%8.8X [%s]\n" -#define STRING_FORMAT "[%s]\n" - -/* These tables map a subtable type to a description string */ - -static const char *AcpiDmAsfSubnames[] = -{ - "ASF Information", - "ASF Alerts", - "ASF Remote Control", - "ASF RMCP Boot Options", - "ASF Address", - "Unknown Subtable Type" /* Reserved */ -}; - -static const char *AcpiDmDmarSubnames[] = -{ - "Hardware Unit Definition", - "Reserved Memory Region", - "Root Port ATS Capability", - "Remapping Hardware Static Affinity", - "ACPI Namespace Device Declaration", - "Unknown Subtable Type" /* Reserved */ -}; - -static const char *AcpiDmDmarScope[] = -{ - "Reserved value", - "PCI Endpoint Device", - "PCI Bridge Device", - "IOAPIC Device", - "Message-capable HPET Device", - "Namespace Device", - "Unknown Scope Type" /* Reserved */ -}; - -static const char *AcpiDmEinjActions[] = -{ - "Begin Operation", - "Get Trigger Table", - "Set Error Type", - "Get Error Type", - "End Operation", - "Execute Operation", - "Check Busy Status", - "Get Command Status", - "Set Error Type With Address", - "Unknown Action" -}; - -static const char *AcpiDmEinjInstructions[] = -{ - "Read Register", - "Read Register Value", - "Write Register", - "Write Register Value", - "Noop", - "Flush Cacheline", - "Unknown Instruction" -}; - -static const char *AcpiDmErstActions[] = -{ - "Begin Write Operation", - "Begin Read Operation", - "Begin Clear Operation", - "End Operation", - "Set Record Offset", - "Execute Operation", - "Check Busy Status", - "Get Command Status", - "Get Record Identifier", - "Set Record Identifier", - "Get Record Count", - "Begin Dummy Write", - "Unused/Unknown Action", - "Get Error Address Range", - "Get Error Address Length", - "Get Error Attributes", - "Unknown Action" -}; - -static const char *AcpiDmErstInstructions[] = -{ - "Read Register", - "Read Register Value", - "Write Register", - "Write Register Value", - "Noop", - "Load Var1", - "Load Var2", - "Store Var1", - "Add", - "Subtract", - "Add Value", - "Subtract Value", - "Stall", - "Stall While True", - "Skip Next If True", - "GoTo", - "Set Source Address", - "Set Destination Address", - "Move Data", - "Unknown Instruction" -}; - -static const char *AcpiDmGtdtSubnames[] = -{ - "Generic Timer Block", - "Generic Watchdog Timer", - "Unknown Subtable Type" /* Reserved */ -}; - -static const char *AcpiDmHestSubnames[] = -{ - "IA-32 Machine Check Exception", - "IA-32 Corrected Machine Check", - "IA-32 Non-Maskable Interrupt", - "Unknown SubTable Type", /* 3 - Reserved */ - "Unknown SubTable Type", /* 4 - Reserved */ - "Unknown SubTable Type", /* 5 - Reserved */ - "PCI Express Root Port AER", - "PCI Express AER (AER Endpoint)", - "PCI Express/PCI-X Bridge AER", - "Generic Hardware Error Source", - "Unknown Subtable Type" /* Reserved */ -}; - -static const char *AcpiDmHestNotifySubnames[] = -{ - "Polled", - "External Interrupt", - "Local Interrupt", - "SCI", - "NMI", - "CMCI", /* ACPI 5.0 */ - "MCE", /* ACPI 5.0 */ - "Unknown Notify Type" /* Reserved */ -}; - -static const char *AcpiDmMadtSubnames[] = -{ - "Processor Local APIC", /* ACPI_MADT_TYPE_LOCAL_APIC */ - "I/O APIC", /* ACPI_MADT_TYPE_IO_APIC */ - "Interrupt Source Override", /* ACPI_MADT_TYPE_INTERRUPT_OVERRIDE */ - "NMI Source", /* ACPI_MADT_TYPE_NMI_SOURCE */ - "Local APIC NMI", /* ACPI_MADT_TYPE_LOCAL_APIC_NMI */ - "Local APIC Address Override", /* ACPI_MADT_TYPE_LOCAL_APIC_OVERRIDE */ - "I/O SAPIC", /* ACPI_MADT_TYPE_IO_SAPIC */ - "Local SAPIC", /* ACPI_MADT_TYPE_LOCAL_SAPIC */ - "Platform Interrupt Sources", /* ACPI_MADT_TYPE_INTERRUPT_SOURCE */ - "Processor Local x2APIC", /* ACPI_MADT_TYPE_LOCAL_X2APIC */ - "Local x2APIC NMI", /* ACPI_MADT_TYPE_LOCAL_X2APIC_NMI */ - "Generic Interrupt Controller", /* ACPI_MADT_GENERIC_INTERRUPT */ - "Generic Interrupt Distributor", /* ACPI_MADT_GENERIC_DISTRIBUTOR */ - "Generic MSI Frame", /* ACPI_MADT_GENERIC_MSI_FRAME */ - "Generic Interrupt Redistributor", /* ACPI_MADT_GENERIC_REDISTRIBUTOR */ - "Generic Interrupt Translator", /* ACPI_MADT_GENERIC_TRANSLATOR */ - "Unknown Subtable Type" /* Reserved */ -}; - -static const char *AcpiDmNfitSubnames[] = -{ - "System Physical Address Range", /* ACPI_NFIT_TYPE_SYSTEM_ADDRESS */ - "Memory Range Map", /* ACPI_NFIT_TYPE_MEMORY_MAP */ - "Interleave Info", /* ACPI_NFIT_TYPE_INTERLEAVE */ - "SMBIOS Information", /* ACPI_NFIT_TYPE_SMBIOS */ - "NVDIMM Control Region", /* ACPI_NFIT_TYPE_CONTROL_REGION */ - "NVDIMM Block Data Window Region", /* ACPI_NFIT_TYPE_DATA_REGION */ - "Flush Hint Address", /* ACPI_NFIT_TYPE_FLUSH_ADDRESS */ - "Unknown Subtable Type" /* Reserved */ -}; - -static const char *AcpiDmPcctSubnames[] = -{ - "Generic Communications Subspace", /* ACPI_PCCT_TYPE_GENERIC_SUBSPACE */ - "HW-Reduced Comm Subspace", /* ACPI_PCCT_TYPE_HW_REDUCED_SUBSPACE */ - "Unknown Subtable Type" /* Reserved */ -}; - -static const char *AcpiDmPmttSubnames[] = -{ - "Socket", /* ACPI_PMTT_TYPE_SOCKET */ - "Memory Controller", /* ACPI_PMTT_TYPE_CONTROLLER */ - "Physical Component (DIMM)", /* ACPI_PMTT_TYPE_DIMM */ - "Unknown Subtable Type" /* Reserved */ -}; - -static const char *AcpiDmSratSubnames[] = -{ - "Processor Local APIC/SAPIC Affinity", - "Memory Affinity", - "Processor Local x2APIC Affinity", - "GICC Affinity", - "Unknown Subtable Type" /* Reserved */ -}; - -static const char *AcpiDmIvrsSubnames[] = -{ - "Hardware Definition Block", - "Memory Definition Block", - "Unknown Subtable Type" /* Reserved */ -}; - -static const char *AcpiDmLpitSubnames[] = -{ - "Native C-state Idle Structure", - "Unknown Subtable Type" /* Reserved */ -}; - -#define ACPI_FADT_PM_RESERVED 9 - -static const char *AcpiDmFadtProfiles[] = -{ - "Unspecified", - "Desktop", - "Mobile", - "Workstation", - "Enterprise Server", - "SOHO Server", - "Appliance PC", - "Performance Server", - "Tablet", - "Unknown Profile Type" -}; - -#define ACPI_GAS_WIDTH_RESERVED 5 - -static const char *AcpiDmGasAccessWidth[] = -{ - "Undefined/Legacy", - "Byte Access:8", - "Word Access:16", - "DWord Access:32", - "QWord Access:64", - "Unknown Width Encoding" -}; - - -/******************************************************************************* - * - * ACPI Table Data, indexed by signature. - * - * Each entry contains: Signature, Table Info, Handler, DtHandler, - * Template, Description - * - * Simple tables have only a TableInfo structure, complex tables have a - * handler. This table must be NULL terminated. RSDP and FACS are - * special-cased elsewhere. - * - * Note: Any tables added here should be duplicated within AcpiSupportedTables - * in the file common/ahtable.c - * - ******************************************************************************/ - -const ACPI_DMTABLE_DATA AcpiDmTableData[] = -{ - {ACPI_SIG_ASF, NULL, AcpiDmDumpAsf, DtCompileAsf, TemplateAsf}, - {ACPI_SIG_BERT, AcpiDmTableInfoBert, NULL, NULL, TemplateBert}, - {ACPI_SIG_BGRT, AcpiDmTableInfoBgrt, NULL, NULL, TemplateBgrt}, - {ACPI_SIG_BOOT, AcpiDmTableInfoBoot, NULL, NULL, TemplateBoot}, - {ACPI_SIG_CPEP, NULL, AcpiDmDumpCpep, DtCompileCpep, TemplateCpep}, - {ACPI_SIG_CSRT, NULL, AcpiDmDumpCsrt, DtCompileCsrt, TemplateCsrt}, - {ACPI_SIG_DBG2, AcpiDmTableInfoDbg2, AcpiDmDumpDbg2, DtCompileDbg2, TemplateDbg2}, - {ACPI_SIG_DBGP, AcpiDmTableInfoDbgp, NULL, NULL, TemplateDbgp}, - {ACPI_SIG_DMAR, NULL, AcpiDmDumpDmar, DtCompileDmar, TemplateDmar}, - {ACPI_SIG_DRTM, NULL, AcpiDmDumpDrtm, DtCompileDrtm, TemplateDrtm}, - {ACPI_SIG_ECDT, AcpiDmTableInfoEcdt, NULL, NULL, TemplateEcdt}, - {ACPI_SIG_EINJ, NULL, AcpiDmDumpEinj, DtCompileEinj, TemplateEinj}, - {ACPI_SIG_ERST, NULL, AcpiDmDumpErst, DtCompileErst, TemplateErst}, - {ACPI_SIG_FADT, NULL, AcpiDmDumpFadt, DtCompileFadt, TemplateFadt}, - {ACPI_SIG_FPDT, NULL, AcpiDmDumpFpdt, DtCompileFpdt, TemplateFpdt}, - {ACPI_SIG_GTDT, NULL, AcpiDmDumpGtdt, DtCompileGtdt, TemplateGtdt}, - {ACPI_SIG_HEST, NULL, AcpiDmDumpHest, DtCompileHest, TemplateHest}, - {ACPI_SIG_HPET, AcpiDmTableInfoHpet, NULL, NULL, TemplateHpet}, - {ACPI_SIG_IORT, NULL, AcpiDmDumpIort, DtCompileIort, TemplateIort}, - {ACPI_SIG_IVRS, NULL, AcpiDmDumpIvrs, DtCompileIvrs, TemplateIvrs}, - {ACPI_SIG_LPIT, NULL, AcpiDmDumpLpit, DtCompileLpit, TemplateLpit}, - {ACPI_SIG_MADT, NULL, AcpiDmDumpMadt, DtCompileMadt, TemplateMadt}, - {ACPI_SIG_MCFG, NULL, AcpiDmDumpMcfg, DtCompileMcfg, TemplateMcfg}, - {ACPI_SIG_MCHI, AcpiDmTableInfoMchi, NULL, NULL, TemplateMchi}, - {ACPI_SIG_MPST, AcpiDmTableInfoMpst, AcpiDmDumpMpst, DtCompileMpst, TemplateMpst}, - {ACPI_SIG_MSCT, NULL, AcpiDmDumpMsct, DtCompileMsct, TemplateMsct}, - {ACPI_SIG_MSDM, NULL, AcpiDmDumpSlic, DtCompileSlic, TemplateMsdm}, - {ACPI_SIG_MTMR, NULL, AcpiDmDumpMtmr, DtCompileMtmr, TemplateMtmr}, - {ACPI_SIG_NFIT, AcpiDmTableInfoNfit, AcpiDmDumpNfit, DtCompileNfit, TemplateNfit}, - {ACPI_SIG_PCCT, AcpiDmTableInfoPcct, AcpiDmDumpPcct, DtCompilePcct, TemplatePcct}, - {ACPI_SIG_PMTT, NULL, AcpiDmDumpPmtt, DtCompilePmtt, TemplatePmtt}, - {ACPI_SIG_RSDT, NULL, AcpiDmDumpRsdt, DtCompileRsdt, TemplateRsdt}, - {ACPI_SIG_S3PT, NULL, NULL, NULL, TemplateS3pt}, - {ACPI_SIG_SBST, AcpiDmTableInfoSbst, NULL, NULL, TemplateSbst}, - {ACPI_SIG_SLIC, NULL, AcpiDmDumpSlic, DtCompileSlic, TemplateSlic}, - {ACPI_SIG_SLIT, NULL, AcpiDmDumpSlit, DtCompileSlit, TemplateSlit}, - {ACPI_SIG_SPCR, AcpiDmTableInfoSpcr, NULL, NULL, TemplateSpcr}, - {ACPI_SIG_SPMI, AcpiDmTableInfoSpmi, NULL, NULL, TemplateSpmi}, - {ACPI_SIG_SRAT, NULL, AcpiDmDumpSrat, DtCompileSrat, TemplateSrat}, - {ACPI_SIG_STAO, NULL, AcpiDmDumpStao, DtCompileStao, TemplateStao}, - {ACPI_SIG_TCPA, NULL, AcpiDmDumpTcpa, DtCompileTcpa, TemplateTcpa}, - {ACPI_SIG_TPM2, AcpiDmTableInfoTpm2, NULL, NULL, TemplateTpm2}, - {ACPI_SIG_UEFI, AcpiDmTableInfoUefi, NULL, DtCompileUefi, TemplateUefi}, - {ACPI_SIG_VRTC, AcpiDmTableInfoVrtc, AcpiDmDumpVrtc, DtCompileVrtc, TemplateVrtc}, - {ACPI_SIG_WAET, AcpiDmTableInfoWaet, NULL, NULL, TemplateWaet}, - {ACPI_SIG_WDAT, NULL, AcpiDmDumpWdat, DtCompileWdat, TemplateWdat}, - {ACPI_SIG_WDDT, AcpiDmTableInfoWddt, NULL, NULL, TemplateWddt}, - {ACPI_SIG_WDRT, AcpiDmTableInfoWdrt, NULL, NULL, TemplateWdrt}, - {ACPI_SIG_WPBT, NULL, AcpiDmDumpWpbt, DtCompileWpbt, TemplateWpbt}, - {ACPI_SIG_XENV, AcpiDmTableInfoXenv, NULL, NULL, TemplateXenv}, - {ACPI_SIG_XSDT, NULL, AcpiDmDumpXsdt, DtCompileXsdt, TemplateXsdt}, - {NULL, NULL, NULL, NULL, NULL} -}; - - -/******************************************************************************* - * - * FUNCTION: AcpiDmGenerateChecksum - * - * PARAMETERS: Table - Pointer to table to be checksummed - * Length - Length of the table - * OriginalChecksum - Value of the checksum field - * - * RETURN: 8 bit checksum of buffer - * - * DESCRIPTION: Computes an 8 bit checksum of the table. - * - ******************************************************************************/ - -UINT8 -AcpiDmGenerateChecksum ( - void *Table, - UINT32 Length, - UINT8 OriginalChecksum) -{ - UINT8 Checksum; - - - /* Sum the entire table as-is */ - - Checksum = AcpiTbChecksum ((UINT8 *) Table, Length); - - /* Subtract off the existing checksum value in the table */ - - Checksum = (UINT8) (Checksum - OriginalChecksum); - - /* Compute the final checksum */ - - Checksum = (UINT8) (0 - Checksum); - return (Checksum); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmGetTableData - * - * PARAMETERS: Signature - ACPI signature (4 chars) to match - * - * RETURN: Pointer to a valid ACPI_DMTABLE_DATA. Null if no match found. - * - * DESCRIPTION: Find a match in the global table of supported ACPI tables - * - ******************************************************************************/ - -const ACPI_DMTABLE_DATA * -AcpiDmGetTableData ( - char *Signature) -{ - const ACPI_DMTABLE_DATA *Info; - - - for (Info = AcpiDmTableData; Info->Signature; Info++) - { - if (ACPI_COMPARE_NAME (Signature, Info->Signature)) - { - return (Info); - } - } - - return (NULL); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmDumpDataTable - * - * PARAMETERS: Table - An ACPI table - * - * RETURN: None. - * - * DESCRIPTION: Format the contents of an ACPI data table (any table other - * than an SSDT or DSDT that does not contain executable AML code) - * - ******************************************************************************/ - -void -AcpiDmDumpDataTable ( - ACPI_TABLE_HEADER *Table) -{ - ACPI_STATUS Status; - const ACPI_DMTABLE_DATA *TableData; - UINT32 Length; - - - /* Ignore tables that contain AML */ - - if (AcpiUtIsAmlTable (Table)) - { - if (Gbl_VerboseTemplates) - { - /* Dump the raw table data */ - - Length = Table->Length; - - AcpiOsPrintf ("\n/*\n%s: Length %d (0x%X)\n\n", - ACPI_RAW_TABLE_DATA_HEADER, Length, Length); - AcpiUtDumpBuffer (ACPI_CAST_PTR (UINT8, Table), - Length, DB_BYTE_DISPLAY, 0); - AcpiOsPrintf (" */\n"); - } - return; - } - - /* - * Handle tables that don't use the common ACPI table header structure. - * Currently, these are the FACS, RSDP, and S3PT. - */ - if (ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_FACS)) - { - Length = Table->Length; - Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoFacs); - if (ACPI_FAILURE (Status)) - { - return; - } - } - else if (ACPI_VALIDATE_RSDP_SIG (Table->Signature)) - { - Length = AcpiDmDumpRsdp (Table); - } - else if (ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_S3PT)) - { - Length = AcpiDmDumpS3pt (Table); - } - else - { - /* - * All other tables must use the common ACPI table header, dump it now - */ - Length = Table->Length; - Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoHeader); - if (ACPI_FAILURE (Status)) - { - return; - } - AcpiOsPrintf ("\n"); - - /* Match signature and dispatch appropriately */ - - TableData = AcpiDmGetTableData (Table->Signature); - if (!TableData) - { - if (!strncmp (Table->Signature, "OEM", 3)) - { - AcpiOsPrintf ("\n**** OEM-defined ACPI table [%4.4s], unknown contents\n\n", - Table->Signature); - } - else - { - AcpiOsPrintf ("\n**** Unknown ACPI table signature [%4.4s]\n\n", - Table->Signature); - - fprintf (stderr, "Unknown ACPI table signature [%4.4s], ", - Table->Signature); - - if (!AcpiGbl_ForceAmlDisassembly) - { - fprintf (stderr, "decoding ACPI table header only\n"); - } - else - { - fprintf (stderr, "assuming table contains valid AML code\n"); - } - } - } - else if (TableData->TableHandler) - { - /* Complex table, has a handler */ - - TableData->TableHandler (Table); - } - else if (TableData->TableInfo) - { - /* Simple table, just walk the info table */ - - Status = AcpiDmDumpTable (Length, 0, Table, 0, TableData->TableInfo); - if (ACPI_FAILURE (Status)) - { - return; - } - } - } - - if (!Gbl_DoTemplates || Gbl_VerboseTemplates) - { - /* Dump the raw table data */ - - AcpiOsPrintf ("\n%s: Length %d (0x%X)\n\n", - ACPI_RAW_TABLE_DATA_HEADER, Length, Length); - AcpiUtDumpBuffer (ACPI_CAST_PTR (UINT8, Table), - Length, DB_BYTE_DISPLAY, 0); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmLineHeader - * - * PARAMETERS: Offset - Current byte offset, from table start - * ByteLength - Length of the field in bytes, 0 for flags - * Name - Name of this field - * - * RETURN: None - * - * DESCRIPTION: Utility routines for formatting output lines. Displays the - * current table offset in hex and decimal, the field length, - * and the field name. - * - ******************************************************************************/ - -void -AcpiDmLineHeader ( - UINT32 Offset, - UINT32 ByteLength, - char *Name) -{ - - /* Allow a null name for fields that span multiple lines (large buffers) */ - - if (!Name) - { - Name = ""; - } - - if (Gbl_DoTemplates && !Gbl_VerboseTemplates) /* Terse template */ - { - if (ByteLength) - { - AcpiOsPrintf ("[%.4d] %34s : ", ByteLength, Name); - } - else - { - if (*Name) - { - AcpiOsPrintf ("%41s : ", Name); - } - else - { - AcpiOsPrintf ("%41s ", Name); - } - } - } - else /* Normal disassembler or verbose template */ - { - if (ByteLength) - { - AcpiOsPrintf ("[%3.3Xh %4.4d% 4d] %28s : ", - Offset, Offset, ByteLength, Name); - } - else - { - if (*Name) - { - AcpiOsPrintf ("%44s : ", Name); - } - else - { - AcpiOsPrintf ("%44s ", Name); - } - } - } -} - -void -AcpiDmLineHeader2 ( - UINT32 Offset, - UINT32 ByteLength, - char *Name, - UINT32 Value) -{ - - if (Gbl_DoTemplates && !Gbl_VerboseTemplates) /* Terse template */ - { - if (ByteLength) - { - AcpiOsPrintf ("[%.4d] %30s %3d : ", - ByteLength, Name, Value); - } - else - { - AcpiOsPrintf ("%36s % 3d : ", - Name, Value); - } - } - else /* Normal disassembler or verbose template */ - { - if (ByteLength) - { - AcpiOsPrintf ("[%3.3Xh %4.4d %3d] %24s %3d : ", - Offset, Offset, ByteLength, Name, Value); - } - else - { - AcpiOsPrintf ("[%3.3Xh %4.4d ] %24s %3d : ", - Offset, Offset, Name, Value); - } - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmDumpTable - * - * PARAMETERS: TableLength - Length of the entire ACPI table - * TableOffset - Starting offset within the table for this - * sub-descriptor (0 if main table) - * Table - The ACPI table - * SubtableLength - Length of this sub-descriptor - * Info - Info table for this ACPI table - * - * RETURN: Status - * - * DESCRIPTION: Display ACPI table contents by walking the Info table. - * - * Note: This function must remain in sync with DtGetFieldLength. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiDmDumpTable ( - UINT32 TableLength, - UINT32 TableOffset, - void *Table, - UINT32 SubtableLength, - ACPI_DMTABLE_INFO *Info) -{ - UINT8 *Target; - UINT32 CurrentOffset; - UINT32 ByteLength; - UINT8 Temp8; - UINT16 Temp16; - UINT32 Temp32; - UINT64 Value; - const AH_TABLE *TableData; - const char *Name; - BOOLEAN LastOutputBlankLine = FALSE; - ACPI_STATUS Status; - char RepairedName[8]; - - - if (!Info) - { - AcpiOsPrintf ("Display not implemented\n"); - return (AE_NOT_IMPLEMENTED); - } - - /* Walk entire Info table; Null name terminates */ - - for (; Info->Name; Info++) - { - /* - * Target points to the field within the ACPI Table. CurrentOffset is - * the offset of the field from the start of the main table. - */ - Target = ACPI_ADD_PTR (UINT8, Table, Info->Offset); - CurrentOffset = TableOffset + Info->Offset; - - /* Check for beyond subtable end or (worse) beyond EOT */ - - if (SubtableLength && (Info->Offset >= SubtableLength)) - { - AcpiOsPrintf ( - "/**** ACPI subtable terminates early - " - "may be older version (dump table) */\n"); - - /* Move on to next subtable */ - - return (AE_OK); - } - - if (CurrentOffset >= TableLength) - { - AcpiOsPrintf ( - "/**** ACPI table terminates " - "in the middle of a data structure! (dump table) */\n"); - return (AE_BAD_DATA); - } - - /* Generate the byte length for this field */ - - switch (Info->Opcode) - { - case ACPI_DMT_UINT8: - case ACPI_DMT_CHKSUM: - case ACPI_DMT_SPACEID: - case ACPI_DMT_ACCWIDTH: - case ACPI_DMT_IVRS: - case ACPI_DMT_GTDT: - case ACPI_DMT_MADT: - case ACPI_DMT_PCCT: - case ACPI_DMT_PMTT: - case ACPI_DMT_SRAT: - case ACPI_DMT_ASF: - case ACPI_DMT_HESTNTYP: - case ACPI_DMT_FADTPM: - case ACPI_DMT_EINJACT: - case ACPI_DMT_EINJINST: - case ACPI_DMT_ERSTACT: - case ACPI_DMT_ERSTINST: - case ACPI_DMT_DMAR_SCOPE: - - ByteLength = 1; - break; - - case ACPI_DMT_UINT16: - case ACPI_DMT_DMAR: - case ACPI_DMT_HEST: - case ACPI_DMT_NFIT: - - ByteLength = 2; - break; - - case ACPI_DMT_UINT24: - - ByteLength = 3; - break; - - case ACPI_DMT_UINT32: - case ACPI_DMT_NAME4: - case ACPI_DMT_SIG: - case ACPI_DMT_LPIT: - - ByteLength = 4; - break; - - case ACPI_DMT_UINT40: - - ByteLength = 5; - break; - - case ACPI_DMT_UINT48: - case ACPI_DMT_NAME6: - - ByteLength = 6; - break; - - case ACPI_DMT_UINT56: - case ACPI_DMT_BUF7: - - ByteLength = 7; - break; - - case ACPI_DMT_UINT64: - case ACPI_DMT_NAME8: - - ByteLength = 8; - break; - - case ACPI_DMT_BUF10: - - ByteLength = 10; - break; - - case ACPI_DMT_BUF16: - case ACPI_DMT_UUID: - - ByteLength = 16; - break; - - case ACPI_DMT_BUF128: - - ByteLength = 128; - break; - - case ACPI_DMT_UNICODE: - case ACPI_DMT_BUFFER: - case ACPI_DMT_RAW_BUFFER: - - ByteLength = SubtableLength; - break; - - case ACPI_DMT_STRING: - - ByteLength = strlen (ACPI_CAST_PTR (char, Target)) + 1; - break; - - case ACPI_DMT_GAS: - - if (!LastOutputBlankLine) - { - AcpiOsPrintf ("\n"); - LastOutputBlankLine = TRUE; - } - ByteLength = sizeof (ACPI_GENERIC_ADDRESS); - break; - - case ACPI_DMT_HESTNTFY: - - if (!LastOutputBlankLine) - { - AcpiOsPrintf ("\n"); - LastOutputBlankLine = TRUE; - } - ByteLength = sizeof (ACPI_HEST_NOTIFY); - break; - - case ACPI_DMT_IORTMEM: - - if (!LastOutputBlankLine) - { - LastOutputBlankLine = FALSE; - } - ByteLength = sizeof (ACPI_IORT_MEMORY_ACCESS); - break; - - default: - - ByteLength = 0; - break; - } - - /* Check if we are beyond a subtable, or (worse) beyond EOT */ - - if (CurrentOffset + ByteLength > TableLength) - { - if (SubtableLength) - { - AcpiOsPrintf ( - "/**** ACPI subtable terminates early - " - "may be older version (dump table) */\n"); - - /* Move on to next subtable */ - - return (AE_OK); - } - - AcpiOsPrintf ( - "/**** ACPI table terminates " - "in the middle of a data structure! */\n"); - return (AE_BAD_DATA); - } - - if (Info->Opcode == ACPI_DMT_EXTRA_TEXT) - { - AcpiOsPrintf ("%s", Info->Name); - continue; - } - - /* Start a new line and decode the opcode */ - - AcpiDmLineHeader (CurrentOffset, ByteLength, Info->Name); - - switch (Info->Opcode) - { - /* Single-bit Flag fields. Note: Opcode is the bit position */ - - case ACPI_DMT_FLAG0: - case ACPI_DMT_FLAG1: - case ACPI_DMT_FLAG2: - case ACPI_DMT_FLAG3: - case ACPI_DMT_FLAG4: - case ACPI_DMT_FLAG5: - case ACPI_DMT_FLAG6: - case ACPI_DMT_FLAG7: - - AcpiOsPrintf ("%1.1X\n", (*Target >> Info->Opcode) & 0x01); - break; - - /* 2-bit Flag fields */ - - case ACPI_DMT_FLAGS0: - - AcpiOsPrintf ("%1.1X\n", *Target & 0x03); - break; - - case ACPI_DMT_FLAGS1: - - AcpiOsPrintf ("%1.1X\n", (*Target >> 1) & 0x03); - break; - - case ACPI_DMT_FLAGS2: - - AcpiOsPrintf ("%1.1X\n", (*Target >> 2) & 0x03); - break; - - case ACPI_DMT_FLAGS4: - - AcpiOsPrintf ("%1.1X\n", (*Target >> 4) & 0x03); - break; - - /* Integer Data Types */ - - case ACPI_DMT_UINT8: - case ACPI_DMT_UINT16: - case ACPI_DMT_UINT24: - case ACPI_DMT_UINT32: - case ACPI_DMT_UINT40: - case ACPI_DMT_UINT48: - case ACPI_DMT_UINT56: - case ACPI_DMT_UINT64: - /* - * Dump bytes - high byte first, low byte last. - * Note: All ACPI tables are little-endian. - */ - Value = 0; - for (Temp8 = (UINT8) ByteLength; Temp8 > 0; Temp8--) - { - AcpiOsPrintf ("%2.2X", Target[Temp8 - 1]); - Value |= Target[Temp8 - 1]; - Value <<= 8; - } - - if (!Value && (Info->Flags & DT_DESCRIBES_OPTIONAL)) - { - AcpiOsPrintf (" [Optional field not present]"); - } - - AcpiOsPrintf ("\n"); - break; - - case ACPI_DMT_BUF7: - case ACPI_DMT_BUF10: - case ACPI_DMT_BUF16: - case ACPI_DMT_BUF128: - /* - * Buffer: Size depends on the opcode and was set above. - * Each hex byte is separated with a space. - * Multiple lines are separated by line continuation char. - */ - for (Temp16 = 0; Temp16 < ByteLength; Temp16++) - { - AcpiOsPrintf ("%2.2X", Target[Temp16]); - if ((UINT32) (Temp16 + 1) < ByteLength) - { - if ((Temp16 > 0) && (!((Temp16+1) % 16))) - { - AcpiOsPrintf (" \\\n"); /* Line continuation */ - AcpiDmLineHeader (0, 0, NULL); - } - else - { - AcpiOsPrintf (" "); - } - } - } - AcpiOsPrintf ("\n"); - break; - - case ACPI_DMT_UUID: - - /* Convert 16-byte UUID buffer to 36-byte formatted UUID string */ - - (void) AuConvertUuidToString ((char *) Target, MsgBuffer); - - AcpiOsPrintf ("%s\n", MsgBuffer); - break; - - case ACPI_DMT_STRING: - - AcpiOsPrintf ("\"%s\"\n", ACPI_CAST_PTR (char, Target)); - break; - - /* Fixed length ASCII name fields */ - - case ACPI_DMT_SIG: - - AcpiDmCheckAscii (Target, RepairedName, 4); - AcpiOsPrintf ("\"%.4s\" ", RepairedName); - TableData = AcpiAhGetTableInfo (ACPI_CAST_PTR (char, Target)); - if (TableData) - { - AcpiOsPrintf (STRING_FORMAT, TableData->Description); - } - else - { - AcpiOsPrintf ("\n"); - } - break; - - case ACPI_DMT_NAME4: - - AcpiDmCheckAscii (Target, RepairedName, 4); - AcpiOsPrintf ("\"%.4s\"\n", RepairedName); - break; - - case ACPI_DMT_NAME6: - - AcpiDmCheckAscii (Target, RepairedName, 6); - AcpiOsPrintf ("\"%.6s\"\n", RepairedName); - break; - - case ACPI_DMT_NAME8: - - AcpiDmCheckAscii (Target, RepairedName, 8); - AcpiOsPrintf ("\"%.8s\"\n", RepairedName); - break; - - /* Special Data Types */ - - case ACPI_DMT_CHKSUM: - - /* Checksum, display and validate */ - - AcpiOsPrintf ("%2.2X", *Target); - Temp8 = AcpiDmGenerateChecksum (Table, - ACPI_CAST_PTR (ACPI_TABLE_HEADER, Table)->Length, - ACPI_CAST_PTR (ACPI_TABLE_HEADER, Table)->Checksum); - - if (Temp8 != ACPI_CAST_PTR (ACPI_TABLE_HEADER, Table)->Checksum) - { - AcpiOsPrintf ( - " /* Incorrect checksum, should be %2.2X */", Temp8); - } - AcpiOsPrintf ("\n"); - break; - - case ACPI_DMT_SPACEID: - - /* Address Space ID */ - - AcpiOsPrintf (UINT8_FORMAT, *Target, AcpiUtGetRegionName (*Target)); - break; - - case ACPI_DMT_ACCWIDTH: - - /* Encoded Access Width */ - - Temp8 = *Target; - if (Temp8 > ACPI_GAS_WIDTH_RESERVED) - { - Temp8 = ACPI_GAS_WIDTH_RESERVED; - } - - AcpiOsPrintf (UINT8_FORMAT, *Target, AcpiDmGasAccessWidth[Temp8]); - break; - - case ACPI_DMT_GAS: - - /* Generic Address Structure */ - - AcpiOsPrintf (STRING_FORMAT, "Generic Address Structure"); - Status = AcpiDmDumpTable (TableLength, CurrentOffset, Target, - sizeof (ACPI_GENERIC_ADDRESS), AcpiDmTableInfoGas); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - AcpiOsPrintf ("\n"); - LastOutputBlankLine = TRUE; - break; - - case ACPI_DMT_ASF: - - /* ASF subtable types */ - - Temp16 = (UINT16) ((*Target) & 0x7F); /* Top bit can be zero or one */ - if (Temp16 > ACPI_ASF_TYPE_RESERVED) - { - Temp16 = ACPI_ASF_TYPE_RESERVED; - } - - AcpiOsPrintf (UINT8_FORMAT, *Target, AcpiDmAsfSubnames[Temp16]); - break; - - case ACPI_DMT_DMAR: - - /* DMAR subtable types */ - - Temp16 = ACPI_GET16 (Target); - if (Temp16 > ACPI_DMAR_TYPE_RESERVED) - { - Temp16 = ACPI_DMAR_TYPE_RESERVED; - } - - AcpiOsPrintf (UINT16_FORMAT, ACPI_GET16 (Target), - AcpiDmDmarSubnames[Temp16]); - break; - - case ACPI_DMT_DMAR_SCOPE: - - /* DMAR device scope types */ - - Temp8 = *Target; - if (Temp8 > ACPI_DMAR_SCOPE_TYPE_RESERVED) - { - Temp8 = ACPI_DMAR_SCOPE_TYPE_RESERVED; - } - - AcpiOsPrintf (UINT8_FORMAT, *Target, - AcpiDmDmarScope[Temp8]); - break; - - case ACPI_DMT_EINJACT: - - /* EINJ Action types */ - - Temp8 = *Target; - if (Temp8 > ACPI_EINJ_ACTION_RESERVED) - { - Temp8 = ACPI_EINJ_ACTION_RESERVED; - } - - AcpiOsPrintf (UINT8_FORMAT, *Target, - AcpiDmEinjActions[Temp8]); - break; - - case ACPI_DMT_EINJINST: - - /* EINJ Instruction types */ - - Temp8 = *Target; - if (Temp8 > ACPI_EINJ_INSTRUCTION_RESERVED) - { - Temp8 = ACPI_EINJ_INSTRUCTION_RESERVED; - } - - AcpiOsPrintf (UINT8_FORMAT, *Target, - AcpiDmEinjInstructions[Temp8]); - break; - - case ACPI_DMT_ERSTACT: - - /* ERST Action types */ - - Temp8 = *Target; - if (Temp8 > ACPI_ERST_ACTION_RESERVED) - { - Temp8 = ACPI_ERST_ACTION_RESERVED; - } - - AcpiOsPrintf (UINT8_FORMAT, *Target, - AcpiDmErstActions[Temp8]); - break; - - case ACPI_DMT_ERSTINST: - - /* ERST Instruction types */ - - Temp8 = *Target; - if (Temp8 > ACPI_ERST_INSTRUCTION_RESERVED) - { - Temp8 = ACPI_ERST_INSTRUCTION_RESERVED; - } - - AcpiOsPrintf (UINT8_FORMAT, *Target, - AcpiDmErstInstructions[Temp8]); - break; - - case ACPI_DMT_GTDT: - - /* GTDT subtable types */ - - Temp8 = *Target; - if (Temp8 > ACPI_GTDT_TYPE_RESERVED) - { - Temp8 = ACPI_GTDT_TYPE_RESERVED; - } - - AcpiOsPrintf (UINT8_FORMAT, *Target, - AcpiDmGtdtSubnames[Temp8]); - break; - - case ACPI_DMT_HEST: - - /* HEST subtable types */ - - Temp16 = ACPI_GET16 (Target); - if (Temp16 > ACPI_HEST_TYPE_RESERVED) - { - Temp16 = ACPI_HEST_TYPE_RESERVED; - } - - AcpiOsPrintf (UINT16_FORMAT, ACPI_GET16 (Target), - AcpiDmHestSubnames[Temp16]); - break; - - case ACPI_DMT_HESTNTFY: - - AcpiOsPrintf (STRING_FORMAT, - "Hardware Error Notification Structure"); - - Status = AcpiDmDumpTable (TableLength, CurrentOffset, Target, - sizeof (ACPI_HEST_NOTIFY), AcpiDmTableInfoHestNotify); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - AcpiOsPrintf ("\n"); - LastOutputBlankLine = TRUE; - break; - - case ACPI_DMT_HESTNTYP: - - /* HEST Notify types */ - - Temp8 = *Target; - if (Temp8 > ACPI_HEST_NOTIFY_RESERVED) - { - Temp8 = ACPI_HEST_NOTIFY_RESERVED; - } - - AcpiOsPrintf (UINT8_FORMAT, *Target, - AcpiDmHestNotifySubnames[Temp8]); - break; - - case ACPI_DMT_IORTMEM: - - AcpiOsPrintf (STRING_FORMAT, - "IORT Memory Access Properties"); - - Status = AcpiDmDumpTable (TableLength, CurrentOffset, Target, - sizeof (ACPI_IORT_MEMORY_ACCESS), AcpiDmTableInfoIortAcc); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - - LastOutputBlankLine = TRUE; - break; - - case ACPI_DMT_MADT: - - /* MADT subtable types */ - - Temp8 = *Target; - if (Temp8 > ACPI_MADT_TYPE_RESERVED) - { - Temp8 = ACPI_MADT_TYPE_RESERVED; - } - - AcpiOsPrintf (UINT8_FORMAT, *Target, - AcpiDmMadtSubnames[Temp8]); - break; - - case ACPI_DMT_NFIT: - - /* NFIT subtable types */ - - Temp16 = ACPI_GET16 (Target); - if (Temp16 > ACPI_NFIT_TYPE_RESERVED) - { - Temp16 = ACPI_NFIT_TYPE_RESERVED; - } - - AcpiOsPrintf (UINT16_FORMAT, ACPI_GET16 (Target), - AcpiDmNfitSubnames[Temp16]); - break; - - case ACPI_DMT_PCCT: - - /* PCCT subtable types */ - - Temp8 = *Target; - if (Temp8 > ACPI_PCCT_TYPE_RESERVED) - { - Temp8 = ACPI_PCCT_TYPE_RESERVED; - } - - AcpiOsPrintf (UINT8_FORMAT, *Target, - AcpiDmPcctSubnames[Temp8]); - break; - - case ACPI_DMT_PMTT: - - /* PMTT subtable types */ - - Temp8 = *Target; - if (Temp8 > ACPI_PMTT_TYPE_RESERVED) - { - Temp8 = ACPI_PMTT_TYPE_RESERVED; - } - - AcpiOsPrintf (UINT8_FORMAT, *Target, - AcpiDmPmttSubnames[Temp8]); - break; - - case ACPI_DMT_UNICODE: - - if (ByteLength == 0) - { - AcpiOsPrintf ("/* Zero-length Data */\n"); - break; - } - - AcpiDmDumpUnicode (Table, CurrentOffset, ByteLength); - break; - - case ACPI_DMT_RAW_BUFFER: - - if (ByteLength == 0) - { - AcpiOsPrintf ("/* Zero-length Data */\n"); - break; - } - - AcpiDmDumpBuffer (Table, CurrentOffset, ByteLength, - CurrentOffset, NULL); - break; - - case ACPI_DMT_SRAT: - - /* SRAT subtable types */ - - Temp8 = *Target; - if (Temp8 > ACPI_SRAT_TYPE_RESERVED) - { - Temp8 = ACPI_SRAT_TYPE_RESERVED; - } - - AcpiOsPrintf (UINT8_FORMAT, *Target, - AcpiDmSratSubnames[Temp8]); - break; - - case ACPI_DMT_FADTPM: - - /* FADT Preferred PM Profile names */ - - Temp8 = *Target; - if (Temp8 > ACPI_FADT_PM_RESERVED) - { - Temp8 = ACPI_FADT_PM_RESERVED; - } - - AcpiOsPrintf (UINT8_FORMAT, *Target, - AcpiDmFadtProfiles[Temp8]); - break; - - case ACPI_DMT_IVRS: - - /* IVRS subtable types */ - - Temp8 = *Target; - switch (Temp8) - { - case ACPI_IVRS_TYPE_HARDWARE: - - Name = AcpiDmIvrsSubnames[0]; - break; - - case ACPI_IVRS_TYPE_MEMORY1: - case ACPI_IVRS_TYPE_MEMORY2: - case ACPI_IVRS_TYPE_MEMORY3: - - Name = AcpiDmIvrsSubnames[1]; - break; - - default: - - Name = AcpiDmIvrsSubnames[2]; - break; - } - - AcpiOsPrintf (UINT8_FORMAT, *Target, Name); - break; - - case ACPI_DMT_LPIT: - - /* LPIT subtable types */ - - Temp32 = ACPI_GET32 (Target); - if (Temp32 > ACPI_LPIT_TYPE_RESERVED) - { - Temp32 = ACPI_LPIT_TYPE_RESERVED; - } - - AcpiOsPrintf (UINT32_FORMAT, ACPI_GET32 (Target), - AcpiDmLpitSubnames[Temp32]); - break; - - case ACPI_DMT_EXIT: - - return (AE_OK); - - default: - - ACPI_ERROR ((AE_INFO, - "**** Invalid table opcode [0x%X] ****\n", Info->Opcode)); - return (AE_SUPPORT); - } - } - - if (TableOffset && !SubtableLength) - { - /* - * If this table is not the main table, the subtable must have a - * valid length - */ - AcpiOsPrintf ("Invalid zero length subtable\n"); - return (AE_BAD_DATA); - } - - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmCheckAscii - * - * PARAMETERS: Name - Ascii string - * Count - Number of characters to check - * - * RETURN: None - * - * DESCRIPTION: Ensure that the requested number of characters are printable - * Ascii characters. Sets non-printable and null chars to . - * - ******************************************************************************/ - -static void -AcpiDmCheckAscii ( - UINT8 *Name, - char *RepairedName, - UINT32 Count) -{ - UINT32 i; - - - for (i = 0; i < Count; i++) - { - RepairedName[i] = (char) Name[i]; - - if (!Name[i]) - { - return; - } - if (!isprint (Name[i])) - { - RepairedName[i] = ' '; - } - } -} diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/common/dmtbdump.c b/src/add-ons/kernel/bus_managers/acpi/acpica/common/dmtbdump.c deleted file mode 100644 index f1b55126bd..0000000000 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/common/dmtbdump.c +++ /dev/null @@ -1,3702 +0,0 @@ -/****************************************************************************** - * - * Module Name: dmtbdump - Dump ACPI data tables that contain no AML code - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#include "acpi.h" -#include "accommon.h" -#include "acdisasm.h" -#include "actables.h" - -/* This module used for application-level code only */ - -#define _COMPONENT ACPI_CA_DISASSEMBLER - ACPI_MODULE_NAME ("dmtbdump") - - -/* Local prototypes */ - -static void -AcpiDmValidateFadtLength ( - UINT32 Revision, - UINT32 Length); - - -/******************************************************************************* - * - * FUNCTION: AcpiDmDumpBuffer - * - * PARAMETERS: Table - ACPI Table or subtable - * BufferOffset - Offset of buffer from Table above - * Length - Length of the buffer - * AbsoluteOffset - Offset of buffer in the main ACPI table - * Header - Name of the buffer field (printed on the - * first line only.) - * - * RETURN: None - * - * DESCRIPTION: Format the contents of an arbitrary length data buffer (in the - * disassembler output format.) - * - ******************************************************************************/ - -void -AcpiDmDumpBuffer ( - void *Table, - UINT32 BufferOffset, - UINT32 Length, - UINT32 AbsoluteOffset, - char *Header) -{ - UINT8 *Buffer; - UINT32 i; - - - if (!Length) - { - return; - } - - Buffer = ACPI_CAST_PTR (UINT8, Table) + BufferOffset; - i = 0; - - while (i < Length) - { - if (!(i % 16)) - { - /* Insert a backslash - line continuation character */ - - if (Length > 16) - { - AcpiOsPrintf ("\\\n "); - } - } - - AcpiOsPrintf ("%.02X ", *Buffer); - i++; - Buffer++; - AbsoluteOffset++; - } - - AcpiOsPrintf ("\n"); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmDumpUnicode - * - * PARAMETERS: Table - ACPI Table or subtable - * BufferOffset - Offset of buffer from Table above - * ByteLength - Length of the buffer - * - * RETURN: None - * - * DESCRIPTION: Validate and dump the contents of a buffer that contains - * unicode data. The output is a standard ASCII string. If it - * appears that the data is not unicode, the buffer is dumped - * as hex characters. - * - ******************************************************************************/ - -void -AcpiDmDumpUnicode ( - void *Table, - UINT32 BufferOffset, - UINT32 ByteLength) -{ - UINT8 *Buffer; - UINT32 Length; - UINT32 i; - - - Buffer = ((UINT8 *) Table) + BufferOffset; - Length = ByteLength - 2; /* Last two bytes are the null terminator */ - - /* Ensure all low bytes are entirely printable ASCII */ - - for (i = 0; i < Length; i += 2) - { - if (!isprint (Buffer[i])) - { - goto DumpRawBuffer; - } - } - - /* Ensure all high bytes are zero */ - - for (i = 1; i < Length; i += 2) - { - if (Buffer[i]) - { - goto DumpRawBuffer; - } - } - - /* Dump the buffer as a normal string */ - - AcpiOsPrintf ("\""); - for (i = 0; i < Length; i += 2) - { - AcpiOsPrintf ("%c", Buffer[i]); - } - AcpiOsPrintf ("\"\n"); - return; - -DumpRawBuffer: - AcpiDmDumpBuffer (Table, BufferOffset, ByteLength, - BufferOffset, NULL); - AcpiOsPrintf ("\n"); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmDumpRsdp - * - * PARAMETERS: Table - A RSDP - * - * RETURN: Length of the table (there is not always a length field, - * use revision or length if available (ACPI 2.0+)) - * - * DESCRIPTION: Format the contents of a RSDP - * - ******************************************************************************/ - -UINT32 -AcpiDmDumpRsdp ( - ACPI_TABLE_HEADER *Table) -{ - ACPI_TABLE_RSDP *Rsdp = ACPI_CAST_PTR (ACPI_TABLE_RSDP, Table); - UINT32 Length = sizeof (ACPI_RSDP_COMMON); - UINT8 Checksum; - ACPI_STATUS Status; - - - /* Dump the common ACPI 1.0 portion */ - - Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoRsdp1); - if (ACPI_FAILURE (Status)) - { - return (Length); - } - - /* Validate the first checksum */ - - Checksum = AcpiDmGenerateChecksum (Rsdp, sizeof (ACPI_RSDP_COMMON), - Rsdp->Checksum); - if (Checksum != Rsdp->Checksum) - { - AcpiOsPrintf ("/* Incorrect Checksum above, should be 0x%2.2X */\n", - Checksum); - } - - /* The RSDP for ACPI 2.0+ contains more data and has a Length field */ - - if (Rsdp->Revision > 0) - { - Length = Rsdp->Length; - Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoRsdp2); - if (ACPI_FAILURE (Status)) - { - return (Length); - } - - /* Validate the extended checksum over entire RSDP */ - - Checksum = AcpiDmGenerateChecksum (Rsdp, sizeof (ACPI_TABLE_RSDP), - Rsdp->ExtendedChecksum); - if (Checksum != Rsdp->ExtendedChecksum) - { - AcpiOsPrintf ( - "/* Incorrect Extended Checksum above, should be 0x%2.2X */\n", - Checksum); - } - } - - return (Length); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmDumpRsdt - * - * PARAMETERS: Table - A RSDT - * - * RETURN: None - * - * DESCRIPTION: Format the contents of a RSDT - * - ******************************************************************************/ - -void -AcpiDmDumpRsdt ( - ACPI_TABLE_HEADER *Table) -{ - UINT32 *Array; - UINT32 Entries; - UINT32 Offset; - UINT32 i; - - - /* Point to start of table pointer array */ - - Array = ACPI_CAST_PTR (ACPI_TABLE_RSDT, Table)->TableOffsetEntry; - Offset = sizeof (ACPI_TABLE_HEADER); - - /* RSDT uses 32-bit pointers */ - - Entries = (Table->Length - sizeof (ACPI_TABLE_HEADER)) / sizeof (UINT32); - - for (i = 0; i < Entries; i++) - { - AcpiDmLineHeader2 (Offset, sizeof (UINT32), "ACPI Table Address", i); - AcpiOsPrintf ("%8.8X\n", Array[i]); - Offset += sizeof (UINT32); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmDumpXsdt - * - * PARAMETERS: Table - A XSDT - * - * RETURN: None - * - * DESCRIPTION: Format the contents of a XSDT - * - ******************************************************************************/ - -void -AcpiDmDumpXsdt ( - ACPI_TABLE_HEADER *Table) -{ - UINT64 *Array; - UINT32 Entries; - UINT32 Offset; - UINT32 i; - - - /* Point to start of table pointer array */ - - Array = ACPI_CAST_PTR (ACPI_TABLE_XSDT, Table)->TableOffsetEntry; - Offset = sizeof (ACPI_TABLE_HEADER); - - /* XSDT uses 64-bit pointers */ - - Entries = (Table->Length - sizeof (ACPI_TABLE_HEADER)) / sizeof (UINT64); - - for (i = 0; i < Entries; i++) - { - AcpiDmLineHeader2 (Offset, sizeof (UINT64), "ACPI Table Address", i); - AcpiOsPrintf ("%8.8X%8.8X\n", ACPI_FORMAT_UINT64 (Array[i])); - Offset += sizeof (UINT64); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmDumpFadt - * - * PARAMETERS: Table - A FADT - * - * RETURN: None - * - * DESCRIPTION: Format the contents of a FADT - * - * NOTE: We cannot depend on the FADT version to indicate the actual - * contents of the FADT because of BIOS bugs. The table length - * is the only reliable indicator. - * - ******************************************************************************/ - -void -AcpiDmDumpFadt ( - ACPI_TABLE_HEADER *Table) -{ - ACPI_STATUS Status; - - - /* Always dump the minimum FADT revision 1 fields (ACPI 1.0) */ - - Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoFadt1); - if (ACPI_FAILURE (Status)) - { - return; - } - - /* Check for FADT revision 2 fields (ACPI 1.0B MS extensions) */ - - if ((Table->Length > ACPI_FADT_V1_SIZE) && - (Table->Length <= ACPI_FADT_V2_SIZE)) - { - Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoFadt2); - if (ACPI_FAILURE (Status)) - { - return; - } - } - - /* Check for FADT revision 3/4 fields and up (ACPI 2.0+ extended data) */ - - else if (Table->Length > ACPI_FADT_V2_SIZE) - { - Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoFadt3); - if (ACPI_FAILURE (Status)) - { - return; - } - - /* Check for FADT revision 5 fields and up (ACPI 5.0+) */ - - if (Table->Length > ACPI_FADT_V3_SIZE) - { - Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoFadt5); - if (ACPI_FAILURE (Status)) - { - return; - } - } - - /* Check for FADT revision 6 fields and up (ACPI 6.0+) */ - - if (Table->Length > ACPI_FADT_V3_SIZE) - { - Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoFadt6); - if (ACPI_FAILURE (Status)) - { - return; - } - } - } - - /* Validate various fields in the FADT, including length */ - - AcpiTbCreateLocalFadt (Table, Table->Length); - - /* Validate FADT length against the revision */ - - AcpiDmValidateFadtLength (Table->Revision, Table->Length); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmValidateFadtLength - * - * PARAMETERS: Revision - FADT revision (Header->Revision) - * Length - FADT length (Header->Length - * - * RETURN: None - * - * DESCRIPTION: Check the FADT revision against the expected table length for - * that revision. Issue a warning if the length is not what was - * expected. This seems to be such a common BIOS bug that the - * FADT revision has been rendered virtually meaningless. - * - ******************************************************************************/ - -static void -AcpiDmValidateFadtLength ( - UINT32 Revision, - UINT32 Length) -{ - UINT32 ExpectedLength; - - - switch (Revision) - { - case 0: - - AcpiOsPrintf ("// ACPI Warning: Invalid FADT revision: 0\n"); - return; - - case 1: - - ExpectedLength = ACPI_FADT_V1_SIZE; - break; - - case 2: - - ExpectedLength = ACPI_FADT_V2_SIZE; - break; - - case 3: - case 4: - - ExpectedLength = ACPI_FADT_V3_SIZE; - break; - - case 5: - - ExpectedLength = ACPI_FADT_V5_SIZE; - break; - - default: - - return; - } - - if (Length == ExpectedLength) - { - return; - } - - AcpiOsPrintf ( - "\n// ACPI Warning: FADT revision %X does not match length: found %X expected %X\n", - Revision, Length, ExpectedLength); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmDumpAsf - * - * PARAMETERS: Table - A ASF table - * - * RETURN: None - * - * DESCRIPTION: Format the contents of a ASF table - * - ******************************************************************************/ - -void -AcpiDmDumpAsf ( - ACPI_TABLE_HEADER *Table) -{ - ACPI_STATUS Status; - UINT32 Offset = sizeof (ACPI_TABLE_HEADER); - ACPI_ASF_INFO *SubTable; - ACPI_DMTABLE_INFO *InfoTable; - ACPI_DMTABLE_INFO *DataInfoTable = NULL; - UINT8 *DataTable = NULL; - UINT32 DataCount = 0; - UINT32 DataLength = 0; - UINT32 DataOffset = 0; - UINT32 i; - UINT8 Type; - - - /* No main table, only subtables */ - - SubTable = ACPI_ADD_PTR (ACPI_ASF_INFO, Table, Offset); - while (Offset < Table->Length) - { - /* Common subtable header */ - - Status = AcpiDmDumpTable (Table->Length, Offset, SubTable, - SubTable->Header.Length, AcpiDmTableInfoAsfHdr); - if (ACPI_FAILURE (Status)) - { - return; - } - - /* The actual type is the lower 7 bits of Type */ - - Type = (UINT8) (SubTable->Header.Type & 0x7F); - - switch (Type) - { - case ACPI_ASF_TYPE_INFO: - - InfoTable = AcpiDmTableInfoAsf0; - break; - - case ACPI_ASF_TYPE_ALERT: - - InfoTable = AcpiDmTableInfoAsf1; - DataInfoTable = AcpiDmTableInfoAsf1a; - DataTable = ACPI_ADD_PTR (UINT8, SubTable, sizeof (ACPI_ASF_ALERT)); - DataCount = ACPI_CAST_PTR (ACPI_ASF_ALERT, SubTable)->Alerts; - DataLength = ACPI_CAST_PTR (ACPI_ASF_ALERT, SubTable)->DataLength; - DataOffset = Offset + sizeof (ACPI_ASF_ALERT); - break; - - case ACPI_ASF_TYPE_CONTROL: - - InfoTable = AcpiDmTableInfoAsf2; - DataInfoTable = AcpiDmTableInfoAsf2a; - DataTable = ACPI_ADD_PTR (UINT8, SubTable, sizeof (ACPI_ASF_REMOTE)); - DataCount = ACPI_CAST_PTR (ACPI_ASF_REMOTE, SubTable)->Controls; - DataLength = ACPI_CAST_PTR (ACPI_ASF_REMOTE, SubTable)->DataLength; - DataOffset = Offset + sizeof (ACPI_ASF_REMOTE); - break; - - case ACPI_ASF_TYPE_BOOT: - - InfoTable = AcpiDmTableInfoAsf3; - break; - - case ACPI_ASF_TYPE_ADDRESS: - - InfoTable = AcpiDmTableInfoAsf4; - DataTable = ACPI_ADD_PTR (UINT8, SubTable, sizeof (ACPI_ASF_ADDRESS)); - DataLength = ACPI_CAST_PTR (ACPI_ASF_ADDRESS, SubTable)->Devices; - DataOffset = Offset + sizeof (ACPI_ASF_ADDRESS); - break; - - default: - - AcpiOsPrintf ("\n**** Unknown ASF subtable type 0x%X\n", SubTable->Header.Type); - return; - } - - Status = AcpiDmDumpTable (Table->Length, Offset, SubTable, - SubTable->Header.Length, InfoTable); - if (ACPI_FAILURE (Status)) - { - return; - } - - /* Dump variable-length extra data */ - - switch (Type) - { - case ACPI_ASF_TYPE_ALERT: - case ACPI_ASF_TYPE_CONTROL: - - for (i = 0; i < DataCount; i++) - { - AcpiOsPrintf ("\n"); - Status = AcpiDmDumpTable (Table->Length, DataOffset, - DataTable, DataLength, DataInfoTable); - if (ACPI_FAILURE (Status)) - { - return; - } - - DataTable = ACPI_ADD_PTR (UINT8, DataTable, DataLength); - DataOffset += DataLength; - } - break; - - case ACPI_ASF_TYPE_ADDRESS: - - for (i = 0; i < DataLength; i++) - { - if (!(i % 16)) - { - AcpiDmLineHeader (DataOffset, 1, "Addresses"); - } - - AcpiOsPrintf ("%2.2X ", *DataTable); - DataTable++; - DataOffset++; - if (DataOffset > Table->Length) - { - AcpiOsPrintf ("**** ACPI table terminates in the middle of a data structure! (ASF! table)\n"); - return; - } - } - - AcpiOsPrintf ("\n"); - break; - - default: - - break; - } - - AcpiOsPrintf ("\n"); - - /* Point to next subtable */ - - if (!SubTable->Header.Length) - { - AcpiOsPrintf ("Invalid zero subtable header length\n"); - return; - } - - Offset += SubTable->Header.Length; - SubTable = ACPI_ADD_PTR (ACPI_ASF_INFO, SubTable, SubTable->Header.Length); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmDumpCpep - * - * PARAMETERS: Table - A CPEP table - * - * RETURN: None - * - * DESCRIPTION: Format the contents of a CPEP. This table type consists - * of an open-ended number of subtables. - * - ******************************************************************************/ - -void -AcpiDmDumpCpep ( - ACPI_TABLE_HEADER *Table) -{ - ACPI_STATUS Status; - ACPI_CPEP_POLLING *SubTable; - UINT32 Length = Table->Length; - UINT32 Offset = sizeof (ACPI_TABLE_CPEP); - - - /* Main table */ - - Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoCpep); - if (ACPI_FAILURE (Status)) - { - return; - } - - /* Subtables */ - - SubTable = ACPI_ADD_PTR (ACPI_CPEP_POLLING, Table, Offset); - while (Offset < Table->Length) - { - AcpiOsPrintf ("\n"); - Status = AcpiDmDumpTable (Length, Offset, SubTable, - SubTable->Header.Length, AcpiDmTableInfoCpep0); - if (ACPI_FAILURE (Status)) - { - return; - } - - /* Point to next subtable */ - - Offset += SubTable->Header.Length; - SubTable = ACPI_ADD_PTR (ACPI_CPEP_POLLING, SubTable, - SubTable->Header.Length); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmDumpCsrt - * - * PARAMETERS: Table - A CSRT table - * - * RETURN: None - * - * DESCRIPTION: Format the contents of a CSRT. This table type consists - * of an open-ended number of subtables. - * - ******************************************************************************/ - -void -AcpiDmDumpCsrt ( - ACPI_TABLE_HEADER *Table) -{ - ACPI_STATUS Status; - ACPI_CSRT_GROUP *SubTable; - ACPI_CSRT_SHARED_INFO *SharedInfoTable; - ACPI_CSRT_DESCRIPTOR *SubSubTable; - UINT32 Length = Table->Length; - UINT32 Offset = sizeof (ACPI_TABLE_CSRT); - UINT32 SubOffset; - UINT32 SubSubOffset; - UINT32 InfoLength; - - - /* The main table only contains the ACPI header, thus already handled */ - - /* Subtables (Resource Groups) */ - - SubTable = ACPI_ADD_PTR (ACPI_CSRT_GROUP, Table, Offset); - while (Offset < Table->Length) - { - /* Resource group subtable */ - - AcpiOsPrintf ("\n"); - Status = AcpiDmDumpTable (Length, Offset, SubTable, - SubTable->Length, AcpiDmTableInfoCsrt0); - if (ACPI_FAILURE (Status)) - { - return; - } - - /* Shared info subtable (One per resource group) */ - - SubOffset = sizeof (ACPI_CSRT_GROUP); - SharedInfoTable = ACPI_ADD_PTR (ACPI_CSRT_SHARED_INFO, Table, - Offset + SubOffset); - - AcpiOsPrintf ("\n"); - Status = AcpiDmDumpTable (Length, Offset + SubOffset, SharedInfoTable, - sizeof (ACPI_CSRT_SHARED_INFO), AcpiDmTableInfoCsrt1); - if (ACPI_FAILURE (Status)) - { - return; - } - - SubOffset += SubTable->SharedInfoLength; - - /* Sub-Subtables (Resource Descriptors) */ - - SubSubTable = ACPI_ADD_PTR (ACPI_CSRT_DESCRIPTOR, Table, - Offset + SubOffset); - - while ((SubOffset < SubTable->Length) && - ((Offset + SubOffset) < Table->Length)) - { - AcpiOsPrintf ("\n"); - Status = AcpiDmDumpTable (Length, Offset + SubOffset, SubSubTable, - SubSubTable->Length, AcpiDmTableInfoCsrt2); - if (ACPI_FAILURE (Status)) - { - return; - } - - SubSubOffset = sizeof (ACPI_CSRT_DESCRIPTOR); - - /* Resource-specific info buffer */ - - InfoLength = SubSubTable->Length - SubSubOffset; - if (InfoLength) - { - Status = AcpiDmDumpTable (Length, - Offset + SubOffset + SubSubOffset, Table, - InfoLength, AcpiDmTableInfoCsrt2a); - if (ACPI_FAILURE (Status)) - { - return; - } - SubSubOffset += InfoLength; - } - - /* Point to next sub-subtable */ - - SubOffset += SubSubTable->Length; - SubSubTable = ACPI_ADD_PTR (ACPI_CSRT_DESCRIPTOR, SubSubTable, - SubSubTable->Length); - } - - /* Point to next subtable */ - - Offset += SubTable->Length; - SubTable = ACPI_ADD_PTR (ACPI_CSRT_GROUP, SubTable, - SubTable->Length); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmDumpDbg2 - * - * PARAMETERS: Table - A DBG2 table - * - * RETURN: None - * - * DESCRIPTION: Format the contents of a DBG2. This table type consists - * of an open-ended number of subtables. - * - ******************************************************************************/ - -void -AcpiDmDumpDbg2 ( - ACPI_TABLE_HEADER *Table) -{ - ACPI_STATUS Status; - ACPI_DBG2_DEVICE *SubTable; - UINT32 Length = Table->Length; - UINT32 Offset = sizeof (ACPI_TABLE_DBG2); - UINT32 i; - UINT32 ArrayOffset; - UINT32 AbsoluteOffset; - UINT8 *Array; - - - /* Main table */ - - Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoDbg2); - if (ACPI_FAILURE (Status)) - { - return; - } - - /* Subtables */ - - SubTable = ACPI_ADD_PTR (ACPI_DBG2_DEVICE, Table, Offset); - while (Offset < Table->Length) - { - AcpiOsPrintf ("\n"); - Status = AcpiDmDumpTable (Length, Offset, SubTable, - SubTable->Length, AcpiDmTableInfoDbg2Device); - if (ACPI_FAILURE (Status)) - { - return; - } - - /* Dump the BaseAddress array */ - - for (i = 0; i < SubTable->RegisterCount; i++) - { - ArrayOffset = SubTable->BaseAddressOffset + - (sizeof (ACPI_GENERIC_ADDRESS) * i); - AbsoluteOffset = Offset + ArrayOffset; - Array = (UINT8 *) SubTable + ArrayOffset; - - Status = AcpiDmDumpTable (Length, AbsoluteOffset, Array, - SubTable->Length, AcpiDmTableInfoDbg2Addr); - if (ACPI_FAILURE (Status)) - { - return; - } - } - - /* Dump the AddressSize array */ - - for (i = 0; i < SubTable->RegisterCount; i++) - { - ArrayOffset = SubTable->AddressSizeOffset + - (sizeof (UINT32) * i); - AbsoluteOffset = Offset + ArrayOffset; - Array = (UINT8 *) SubTable + ArrayOffset; - - Status = AcpiDmDumpTable (Length, AbsoluteOffset, Array, - SubTable->Length, AcpiDmTableInfoDbg2Size); - if (ACPI_FAILURE (Status)) - { - return; - } - } - - /* Dump the Namestring (required) */ - - AcpiOsPrintf ("\n"); - ArrayOffset = SubTable->NamepathOffset; - AbsoluteOffset = Offset + ArrayOffset; - Array = (UINT8 *) SubTable + ArrayOffset; - - Status = AcpiDmDumpTable (Length, AbsoluteOffset, Array, - SubTable->Length, AcpiDmTableInfoDbg2Name); - if (ACPI_FAILURE (Status)) - { - return; - } - - /* Dump the OemData (optional) */ - - if (SubTable->OemDataOffset) - { - Status = AcpiDmDumpTable (Length, Offset + SubTable->OemDataOffset, - Table, SubTable->OemDataLength, - AcpiDmTableInfoDbg2OemData); - if (ACPI_FAILURE (Status)) - { - return; - } - } - - /* Point to next subtable */ - - Offset += SubTable->Length; - SubTable = ACPI_ADD_PTR (ACPI_DBG2_DEVICE, SubTable, - SubTable->Length); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmDumpDmar - * - * PARAMETERS: Table - A DMAR table - * - * RETURN: None - * - * DESCRIPTION: Format the contents of a DMAR. This table type consists - * of an open-ended number of subtables. - * - ******************************************************************************/ - -void -AcpiDmDumpDmar ( - ACPI_TABLE_HEADER *Table) -{ - ACPI_STATUS Status; - ACPI_DMAR_HEADER *SubTable; - UINT32 Length = Table->Length; - UINT32 Offset = sizeof (ACPI_TABLE_DMAR); - ACPI_DMTABLE_INFO *InfoTable; - ACPI_DMAR_DEVICE_SCOPE *ScopeTable; - UINT32 ScopeOffset; - UINT8 *PciPath; - UINT32 PathOffset; - - - /* Main table */ - - Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoDmar); - if (ACPI_FAILURE (Status)) - { - return; - } - - /* Subtables */ - - SubTable = ACPI_ADD_PTR (ACPI_DMAR_HEADER, Table, Offset); - while (Offset < Table->Length) - { - /* Common subtable header */ - - AcpiOsPrintf ("\n"); - Status = AcpiDmDumpTable (Length, Offset, SubTable, - SubTable->Length, AcpiDmTableInfoDmarHdr); - if (ACPI_FAILURE (Status)) - { - return; - } - AcpiOsPrintf ("\n"); - - switch (SubTable->Type) - { - case ACPI_DMAR_TYPE_HARDWARE_UNIT: - - InfoTable = AcpiDmTableInfoDmar0; - ScopeOffset = sizeof (ACPI_DMAR_HARDWARE_UNIT); - break; - - case ACPI_DMAR_TYPE_RESERVED_MEMORY: - - InfoTable = AcpiDmTableInfoDmar1; - ScopeOffset = sizeof (ACPI_DMAR_RESERVED_MEMORY); - break; - - case ACPI_DMAR_TYPE_ROOT_ATS: - - InfoTable = AcpiDmTableInfoDmar2; - ScopeOffset = sizeof (ACPI_DMAR_ATSR); - break; - - case ACPI_DMAR_TYPE_HARDWARE_AFFINITY: - - InfoTable = AcpiDmTableInfoDmar3; - ScopeOffset = sizeof (ACPI_DMAR_RHSA); - break; - - case ACPI_DMAR_TYPE_NAMESPACE: - - InfoTable = AcpiDmTableInfoDmar4; - ScopeOffset = sizeof (ACPI_DMAR_ANDD); - break; - - default: - - AcpiOsPrintf ("\n**** Unknown DMAR subtable type 0x%X\n\n", SubTable->Type); - return; - } - - Status = AcpiDmDumpTable (Length, Offset, SubTable, - SubTable->Length, InfoTable); - if (ACPI_FAILURE (Status)) - { - return; - } - - /* - * Dump the optional device scope entries - */ - if ((SubTable->Type == ACPI_DMAR_TYPE_HARDWARE_AFFINITY) || - (SubTable->Type == ACPI_DMAR_TYPE_NAMESPACE)) - { - /* These types do not support device scopes */ - - goto NextSubtable; - } - - ScopeTable = ACPI_ADD_PTR (ACPI_DMAR_DEVICE_SCOPE, SubTable, ScopeOffset); - while (ScopeOffset < SubTable->Length) - { - AcpiOsPrintf ("\n"); - Status = AcpiDmDumpTable (Length, Offset + ScopeOffset, ScopeTable, - ScopeTable->Length, AcpiDmTableInfoDmarScope); - if (ACPI_FAILURE (Status)) - { - return; - } - AcpiOsPrintf ("\n"); - - /* Dump the PCI Path entries for this device scope */ - - PathOffset = sizeof (ACPI_DMAR_DEVICE_SCOPE); /* Path entries start at this offset */ - - PciPath = ACPI_ADD_PTR (UINT8, ScopeTable, - sizeof (ACPI_DMAR_DEVICE_SCOPE)); - - while (PathOffset < ScopeTable->Length) - { - AcpiDmLineHeader ((PathOffset + ScopeOffset + Offset), 2, "PCI Path"); - AcpiOsPrintf ("%2.2X,%2.2X\n", PciPath[0], PciPath[1]); - - /* Point to next PCI Path entry */ - - PathOffset += 2; - PciPath += 2; - AcpiOsPrintf ("\n"); - } - - /* Point to next device scope entry */ - - ScopeOffset += ScopeTable->Length; - ScopeTable = ACPI_ADD_PTR (ACPI_DMAR_DEVICE_SCOPE, - ScopeTable, ScopeTable->Length); - } - -NextSubtable: - /* Point to next subtable */ - - Offset += SubTable->Length; - SubTable = ACPI_ADD_PTR (ACPI_DMAR_HEADER, SubTable, SubTable->Length); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmDumpDrtm - * - * PARAMETERS: Table - A DRTM table - * - * RETURN: None - * - * DESCRIPTION: Format the contents of a DRTM. - * - ******************************************************************************/ - -void -AcpiDmDumpDrtm ( - ACPI_TABLE_HEADER *Table) -{ - ACPI_STATUS Status; - UINT32 Offset; - ACPI_DRTM_VTABLE_LIST *DrtmVtl; - ACPI_DRTM_RESOURCE_LIST *DrtmRl; - ACPI_DRTM_DPS_ID *DrtmDps; - UINT32 Count; - - - /* Main table */ - - Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, - AcpiDmTableInfoDrtm); - if (ACPI_FAILURE (Status)) - { - return; - } - - Offset = sizeof (ACPI_TABLE_DRTM); - - /* Sub-tables */ - - /* Dump ValidatedTable length */ - - DrtmVtl = ACPI_ADD_PTR (ACPI_DRTM_VTABLE_LIST, Table, Offset); - AcpiOsPrintf ("\n"); - Status = AcpiDmDumpTable (Table->Length, Offset, - DrtmVtl, ACPI_OFFSET (ACPI_DRTM_VTABLE_LIST, ValidatedTables), - AcpiDmTableInfoDrtm0); - if (ACPI_FAILURE (Status)) - { - return; - } - Offset += ACPI_OFFSET (ACPI_DRTM_VTABLE_LIST, ValidatedTables); - - /* Dump Validated table addresses */ - - Count = 0; - while ((Offset < Table->Length) && - (DrtmVtl->ValidatedTableCount > Count)) - { - Status = AcpiDmDumpTable (Table->Length, Offset, - ACPI_ADD_PTR (void, Table, Offset), sizeof (UINT64), - AcpiDmTableInfoDrtm0a); - if (ACPI_FAILURE (Status)) - { - return; - } - Offset += sizeof (UINT64); - Count++; - } - - /* Dump ResourceList length */ - - DrtmRl = ACPI_ADD_PTR (ACPI_DRTM_RESOURCE_LIST, Table, Offset); - AcpiOsPrintf ("\n"); - Status = AcpiDmDumpTable (Table->Length, Offset, - DrtmRl, ACPI_OFFSET (ACPI_DRTM_RESOURCE_LIST, Resources), - AcpiDmTableInfoDrtm1); - if (ACPI_FAILURE (Status)) - { - return; - } - - Offset += ACPI_OFFSET (ACPI_DRTM_RESOURCE_LIST, Resources); - - /* Dump the Resource List */ - - Count = 0; - while ((Offset < Table->Length) && - (DrtmRl->ResourceCount > Count)) - { - Status = AcpiDmDumpTable (Table->Length, Offset, - ACPI_ADD_PTR (void, Table, Offset), - sizeof (ACPI_DRTM_RESOURCE), - AcpiDmTableInfoDrtm1a); - if (ACPI_FAILURE (Status)) - { - return; - } - - Offset += sizeof (ACPI_DRTM_RESOURCE); - Count++; - } - - /* Dump DPS */ - - DrtmDps = ACPI_ADD_PTR (ACPI_DRTM_DPS_ID, Table, Offset); - AcpiOsPrintf ("\n"); - (void) AcpiDmDumpTable (Table->Length, Offset, - DrtmDps, sizeof (ACPI_DRTM_DPS_ID), - AcpiDmTableInfoDrtm2); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmDumpEinj - * - * PARAMETERS: Table - A EINJ table - * - * RETURN: None - * - * DESCRIPTION: Format the contents of a EINJ. This table type consists - * of an open-ended number of subtables. - * - ******************************************************************************/ - -void -AcpiDmDumpEinj ( - ACPI_TABLE_HEADER *Table) -{ - ACPI_STATUS Status; - ACPI_WHEA_HEADER *SubTable; - UINT32 Length = Table->Length; - UINT32 Offset = sizeof (ACPI_TABLE_EINJ); - - - /* Main table */ - - Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoEinj); - if (ACPI_FAILURE (Status)) - { - return; - } - - /* Subtables */ - - SubTable = ACPI_ADD_PTR (ACPI_WHEA_HEADER, Table, Offset); - while (Offset < Table->Length) - { - AcpiOsPrintf ("\n"); - Status = AcpiDmDumpTable (Length, Offset, SubTable, - sizeof (ACPI_WHEA_HEADER), AcpiDmTableInfoEinj0); - if (ACPI_FAILURE (Status)) - { - return; - } - - /* Point to next subtable (each subtable is of fixed length) */ - - Offset += sizeof (ACPI_WHEA_HEADER); - SubTable = ACPI_ADD_PTR (ACPI_WHEA_HEADER, SubTable, - sizeof (ACPI_WHEA_HEADER)); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmDumpErst - * - * PARAMETERS: Table - A ERST table - * - * RETURN: None - * - * DESCRIPTION: Format the contents of a ERST. This table type consists - * of an open-ended number of subtables. - * - ******************************************************************************/ - -void -AcpiDmDumpErst ( - ACPI_TABLE_HEADER *Table) -{ - ACPI_STATUS Status; - ACPI_WHEA_HEADER *SubTable; - UINT32 Length = Table->Length; - UINT32 Offset = sizeof (ACPI_TABLE_ERST); - - - /* Main table */ - - Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoErst); - if (ACPI_FAILURE (Status)) - { - return; - } - - /* Subtables */ - - SubTable = ACPI_ADD_PTR (ACPI_WHEA_HEADER, Table, Offset); - while (Offset < Table->Length) - { - AcpiOsPrintf ("\n"); - Status = AcpiDmDumpTable (Length, Offset, SubTable, - sizeof (ACPI_WHEA_HEADER), AcpiDmTableInfoErst0); - if (ACPI_FAILURE (Status)) - { - return; - } - - /* Point to next subtable (each subtable is of fixed length) */ - - Offset += sizeof (ACPI_WHEA_HEADER); - SubTable = ACPI_ADD_PTR (ACPI_WHEA_HEADER, SubTable, - sizeof (ACPI_WHEA_HEADER)); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmDumpFpdt - * - * PARAMETERS: Table - A FPDT table - * - * RETURN: None - * - * DESCRIPTION: Format the contents of a FPDT. This table type consists - * of an open-ended number of subtables. - * - ******************************************************************************/ - -void -AcpiDmDumpFpdt ( - ACPI_TABLE_HEADER *Table) -{ - ACPI_STATUS Status; - ACPI_FPDT_HEADER *SubTable; - UINT32 Length = Table->Length; - UINT32 Offset = sizeof (ACPI_TABLE_FPDT); - ACPI_DMTABLE_INFO *InfoTable; - - - /* There is no main table (other than the standard ACPI header) */ - - /* Subtables */ - - SubTable = ACPI_ADD_PTR (ACPI_FPDT_HEADER, Table, Offset); - while (Offset < Table->Length) - { - /* Common subtable header */ - - AcpiOsPrintf ("\n"); - Status = AcpiDmDumpTable (Length, Offset, SubTable, - SubTable->Length, AcpiDmTableInfoFpdtHdr); - if (ACPI_FAILURE (Status)) - { - return; - } - - switch (SubTable->Type) - { - case ACPI_FPDT_TYPE_BOOT: - - InfoTable = AcpiDmTableInfoFpdt0; - break; - - case ACPI_FPDT_TYPE_S3PERF: - - InfoTable = AcpiDmTableInfoFpdt1; - break; - - default: - - AcpiOsPrintf ("\n**** Unknown FPDT subtable type 0x%X\n\n", SubTable->Type); - - /* Attempt to continue */ - - if (!SubTable->Length) - { - AcpiOsPrintf ("Invalid zero length subtable\n"); - return; - } - goto NextSubTable; - } - - Status = AcpiDmDumpTable (Length, Offset, SubTable, - SubTable->Length, InfoTable); - if (ACPI_FAILURE (Status)) - { - return; - } - -NextSubTable: - /* Point to next subtable */ - - Offset += SubTable->Length; - SubTable = ACPI_ADD_PTR (ACPI_FPDT_HEADER, SubTable, SubTable->Length); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmDumpGtdt - * - * PARAMETERS: Table - A GTDT table - * - * RETURN: None - * - * DESCRIPTION: Format the contents of a GTDT. This table type consists - * of an open-ended number of subtables. - * - ******************************************************************************/ - -void -AcpiDmDumpGtdt ( - ACPI_TABLE_HEADER *Table) -{ - ACPI_STATUS Status; - ACPI_GTDT_HEADER *SubTable; - UINT32 Length = Table->Length; - UINT32 Offset = sizeof (ACPI_TABLE_GTDT); - ACPI_DMTABLE_INFO *InfoTable; - UINT32 SubTableLength; - UINT32 GtCount; - ACPI_GTDT_TIMER_ENTRY *GtxTable; - - - /* Main table */ - - Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoGtdt); - if (ACPI_FAILURE (Status)) - { - return; - } - - /* Subtables */ - - SubTable = ACPI_ADD_PTR (ACPI_GTDT_HEADER, Table, Offset); - while (Offset < Table->Length) - { - /* Common subtable header */ - - AcpiOsPrintf ("\n"); - Status = AcpiDmDumpTable (Length, Offset, SubTable, - SubTable->Length, AcpiDmTableInfoGtdtHdr); - if (ACPI_FAILURE (Status)) - { - return; - } - - GtCount = 0; - switch (SubTable->Type) - { - case ACPI_GTDT_TYPE_TIMER_BLOCK: - - SubTableLength = sizeof (ACPI_GTDT_TIMER_BLOCK); - GtCount = (ACPI_CAST_PTR (ACPI_GTDT_TIMER_BLOCK, - SubTable))->TimerCount; - - InfoTable = AcpiDmTableInfoGtdt0; - break; - - case ACPI_GTDT_TYPE_WATCHDOG: - - SubTableLength = sizeof (ACPI_GTDT_WATCHDOG); - - InfoTable = AcpiDmTableInfoGtdt1; - break; - - default: - - /* Cannot continue on unknown type - no length */ - - AcpiOsPrintf ("\n**** Unknown GTDT subtable type 0x%X\n", SubTable->Type); - return; - } - - Status = AcpiDmDumpTable (Length, Offset, SubTable, - SubTable->Length, InfoTable); - if (ACPI_FAILURE (Status)) - { - return; - } - - /* Point to end of current subtable (each subtable above is of fixed length) */ - - Offset += SubTableLength; - - /* If there are any Gt Timer Blocks from above, dump them now */ - - if (GtCount) - { - GtxTable = ACPI_ADD_PTR (ACPI_GTDT_TIMER_ENTRY, SubTable, SubTableLength); - SubTableLength += GtCount * sizeof (ACPI_GTDT_TIMER_ENTRY); - - while (GtCount) - { - AcpiOsPrintf ("\n"); - Status = AcpiDmDumpTable (Length, Offset, GtxTable, - sizeof (ACPI_GTDT_TIMER_ENTRY), AcpiDmTableInfoGtdt0a); - if (ACPI_FAILURE (Status)) - { - return; - } - Offset += sizeof (ACPI_GTDT_TIMER_ENTRY); - GtxTable++; - GtCount--; - } - } - - /* Point to next subtable */ - - SubTable = ACPI_ADD_PTR (ACPI_GTDT_HEADER, SubTable, SubTableLength); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmDumpHest - * - * PARAMETERS: Table - A HEST table - * - * RETURN: None - * - * DESCRIPTION: Format the contents of a HEST. This table type consists - * of an open-ended number of subtables. - * - ******************************************************************************/ - -void -AcpiDmDumpHest ( - ACPI_TABLE_HEADER *Table) -{ - ACPI_STATUS Status; - ACPI_HEST_HEADER *SubTable; - UINT32 Length = Table->Length; - UINT32 Offset = sizeof (ACPI_TABLE_HEST); - ACPI_DMTABLE_INFO *InfoTable; - UINT32 SubTableLength; - UINT32 BankCount; - ACPI_HEST_IA_ERROR_BANK *BankTable; - - - /* Main table */ - - Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoHest); - if (ACPI_FAILURE (Status)) - { - return; - } - - /* Subtables */ - - SubTable = ACPI_ADD_PTR (ACPI_HEST_HEADER, Table, Offset); - while (Offset < Table->Length) - { - BankCount = 0; - switch (SubTable->Type) - { - case ACPI_HEST_TYPE_IA32_CHECK: - - InfoTable = AcpiDmTableInfoHest0; - SubTableLength = sizeof (ACPI_HEST_IA_MACHINE_CHECK); - BankCount = (ACPI_CAST_PTR (ACPI_HEST_IA_MACHINE_CHECK, - SubTable))->NumHardwareBanks; - break; - - case ACPI_HEST_TYPE_IA32_CORRECTED_CHECK: - - InfoTable = AcpiDmTableInfoHest1; - SubTableLength = sizeof (ACPI_HEST_IA_CORRECTED); - BankCount = (ACPI_CAST_PTR (ACPI_HEST_IA_CORRECTED, - SubTable))->NumHardwareBanks; - break; - - case ACPI_HEST_TYPE_IA32_NMI: - - InfoTable = AcpiDmTableInfoHest2; - SubTableLength = sizeof (ACPI_HEST_IA_NMI); - break; - - case ACPI_HEST_TYPE_AER_ROOT_PORT: - - InfoTable = AcpiDmTableInfoHest6; - SubTableLength = sizeof (ACPI_HEST_AER_ROOT); - break; - - case ACPI_HEST_TYPE_AER_ENDPOINT: - - InfoTable = AcpiDmTableInfoHest7; - SubTableLength = sizeof (ACPI_HEST_AER); - break; - - case ACPI_HEST_TYPE_AER_BRIDGE: - - InfoTable = AcpiDmTableInfoHest8; - SubTableLength = sizeof (ACPI_HEST_AER_BRIDGE); - break; - - case ACPI_HEST_TYPE_GENERIC_ERROR: - - InfoTable = AcpiDmTableInfoHest9; - SubTableLength = sizeof (ACPI_HEST_GENERIC); - break; - - default: - - /* Cannot continue on unknown type - no length */ - - AcpiOsPrintf ("\n**** Unknown HEST subtable type 0x%X\n", SubTable->Type); - return; - } - - AcpiOsPrintf ("\n"); - Status = AcpiDmDumpTable (Length, Offset, SubTable, - SubTableLength, InfoTable); - if (ACPI_FAILURE (Status)) - { - return; - } - - /* Point to end of current subtable (each subtable above is of fixed length) */ - - Offset += SubTableLength; - - /* If there are any (fixed-length) Error Banks from above, dump them now */ - - if (BankCount) - { - BankTable = ACPI_ADD_PTR (ACPI_HEST_IA_ERROR_BANK, SubTable, SubTableLength); - SubTableLength += BankCount * sizeof (ACPI_HEST_IA_ERROR_BANK); - - while (BankCount) - { - AcpiOsPrintf ("\n"); - Status = AcpiDmDumpTable (Length, Offset, BankTable, - sizeof (ACPI_HEST_IA_ERROR_BANK), AcpiDmTableInfoHestBank); - if (ACPI_FAILURE (Status)) - { - return; - } - Offset += sizeof (ACPI_HEST_IA_ERROR_BANK); - BankTable++; - BankCount--; - } - } - - /* Point to next subtable */ - - SubTable = ACPI_ADD_PTR (ACPI_HEST_HEADER, SubTable, SubTableLength); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmDumpIort - * - * PARAMETERS: Table - A IORT table - * - * RETURN: None - * - * DESCRIPTION: Format the contents of a IORT - * - ******************************************************************************/ - -void -AcpiDmDumpIort ( - ACPI_TABLE_HEADER *Table) -{ - ACPI_STATUS Status; - ACPI_TABLE_IORT *Iort; - ACPI_IORT_NODE *IortNode; - ACPI_IORT_ITS_GROUP *IortItsGroup = NULL; - ACPI_IORT_SMMU *IortSmmu = NULL; - UINT32 Offset; - UINT32 NodeOffset; - UINT32 Length; - ACPI_DMTABLE_INFO *InfoTable; - char *String; - UINT32 i; - - - /* Main table */ - - Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoIort); - if (ACPI_FAILURE (Status)) - { - return; - } - - Iort = ACPI_CAST_PTR (ACPI_TABLE_IORT, Table); - Offset = sizeof (ACPI_TABLE_IORT); - - /* Dump the OptionalPadding (optional) */ - - if (Iort->NodeOffset > Offset) - { - Status = AcpiDmDumpTable (Table->Length, Offset, Table, - Iort->NodeOffset - Offset, AcpiDmTableInfoIortPad); - if (ACPI_FAILURE (Status)) - { - return; - } - } - - Offset = Iort->NodeOffset; - while (Offset < Table->Length) - { - /* Common subtable header */ - - IortNode = ACPI_ADD_PTR (ACPI_IORT_NODE, Table, Offset); - AcpiOsPrintf ("\n"); - Length = ACPI_OFFSET (ACPI_IORT_NODE, NodeData); - Status = AcpiDmDumpTable (Table->Length, Offset, - IortNode, Length, AcpiDmTableInfoIortHdr); - if (ACPI_FAILURE (Status)) - { - return; - } - - NodeOffset = Length; - - switch (IortNode->Type) - { - case ACPI_IORT_NODE_ITS_GROUP: - - InfoTable = AcpiDmTableInfoIort0; - Length = ACPI_OFFSET (ACPI_IORT_ITS_GROUP, Identifiers); - IortItsGroup = ACPI_ADD_PTR (ACPI_IORT_ITS_GROUP, IortNode, NodeOffset); - break; - - case ACPI_IORT_NODE_NAMED_COMPONENT: - - InfoTable = AcpiDmTableInfoIort1; - Length = ACPI_OFFSET (ACPI_IORT_NAMED_COMPONENT, DeviceName); - String = ACPI_ADD_PTR (char, IortNode, NodeOffset + Length); - Length += strlen (String) + 1; - break; - - case ACPI_IORT_NODE_PCI_ROOT_COMPLEX: - - InfoTable = AcpiDmTableInfoIort2; - Length = IortNode->Length - NodeOffset; - break; - - case ACPI_IORT_NODE_SMMU: - - InfoTable = AcpiDmTableInfoIort3; - Length = ACPI_OFFSET (ACPI_IORT_SMMU, Interrupts); - IortSmmu = ACPI_ADD_PTR (ACPI_IORT_SMMU, IortNode, NodeOffset); - break; - - default: - - AcpiOsPrintf ("\n**** Unknown IORT node type 0x%X\n", - IortNode->Type); - - /* Attempt to continue */ - - if (!IortNode->Length) - { - AcpiOsPrintf ("Invalid zero length IORT node\n"); - return; - } - goto NextSubTable; - } - - /* Dump the node subtable header */ - - AcpiOsPrintf ("\n"); - Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset, - ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset), - Length, InfoTable); - if (ACPI_FAILURE (Status)) - { - return; - } - - NodeOffset += Length; - - /* Dump the node specific data */ - - switch (IortNode->Type) - { - case ACPI_IORT_NODE_ITS_GROUP: - - /* Validate IortItsGroup to avoid compiler warnings */ - - if (IortItsGroup) - { - for (i = 0; i < IortItsGroup->ItsCount; i++) - { - Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset, - ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset), - 4, AcpiDmTableInfoIort0a); - NodeOffset += 4; - } - } - break; - - case ACPI_IORT_NODE_NAMED_COMPONENT: - - /* Dump the Padding (optional) */ - - if (IortNode->Length > NodeOffset) - { - Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset, - Table, IortNode->Length - NodeOffset, - AcpiDmTableInfoIort1a); - if (ACPI_FAILURE (Status)) - { - return; - } - } - break; - - case ACPI_IORT_NODE_SMMU: - - AcpiOsPrintf ("\n"); - - /* Validate IortSmmu to avoid compiler warnings */ - - if (IortSmmu) - { - Length = 2 * sizeof (UINT64); - NodeOffset = IortSmmu->GlobalInterruptOffset; - Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset, - ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset), - Length, AcpiDmTableInfoIort3a); - if (ACPI_FAILURE (Status)) - { - return; - } - - NodeOffset = IortSmmu->ContextInterruptOffset; - for (i = 0; i < IortSmmu->ContextInterruptCount; i++) - { - Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset, - ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset), - 8, AcpiDmTableInfoIort3b); - if (ACPI_FAILURE (Status)) - { - return; - } - NodeOffset += 8; - } - - NodeOffset = IortSmmu->PmuInterruptOffset; - for (i = 0; i < IortSmmu->PmuInterruptCount; i++) - { - Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset, - ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset), - 8, AcpiDmTableInfoIort3c); - if (ACPI_FAILURE (Status)) - { - return; - } - NodeOffset += 8; - } - } - break; - - default: - - break; - } - - /* Dump the ID mappings */ - - NodeOffset = IortNode->MappingOffset; - for (i = 0; i < IortNode->MappingCount; i++) - { - AcpiOsPrintf ("\n"); - Length = sizeof (ACPI_IORT_ID_MAPPING); - Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset, - ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset), - Length, AcpiDmTableInfoIortMap); - if (ACPI_FAILURE (Status)) - { - return; - } - NodeOffset += Length; - } - -NextSubTable: - /* Point to next node subtable */ - - Offset += IortNode->Length; - IortNode = ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, IortNode->Length); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmDumpIvrs - * - * PARAMETERS: Table - A IVRS table - * - * RETURN: None - * - * DESCRIPTION: Format the contents of a IVRS - * - ******************************************************************************/ - -static UINT8 EntrySizes[] = {4,8,16,32}; - -void -AcpiDmDumpIvrs ( - ACPI_TABLE_HEADER *Table) -{ - ACPI_STATUS Status; - UINT32 Offset = sizeof (ACPI_TABLE_IVRS); - UINT32 EntryOffset; - UINT32 EntryLength; - UINT32 EntryType; - ACPI_IVRS_DE_HEADER *DeviceEntry; - ACPI_IVRS_HEADER *SubTable; - ACPI_DMTABLE_INFO *InfoTable; - - - /* Main table */ - - Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoIvrs); - if (ACPI_FAILURE (Status)) - { - return; - } - - /* Subtables */ - - SubTable = ACPI_ADD_PTR (ACPI_IVRS_HEADER, Table, Offset); - while (Offset < Table->Length) - { - /* Common subtable header */ - - AcpiOsPrintf ("\n"); - Status = AcpiDmDumpTable (Table->Length, Offset, SubTable, - SubTable->Length, AcpiDmTableInfoIvrsHdr); - if (ACPI_FAILURE (Status)) - { - return; - } - - switch (SubTable->Type) - { - case ACPI_IVRS_TYPE_HARDWARE: - - InfoTable = AcpiDmTableInfoIvrs0; - break; - - case ACPI_IVRS_TYPE_MEMORY1: - case ACPI_IVRS_TYPE_MEMORY2: - case ACPI_IVRS_TYPE_MEMORY3: - - InfoTable = AcpiDmTableInfoIvrs1; - break; - - default: - - AcpiOsPrintf ("\n**** Unknown IVRS subtable type 0x%X\n", - SubTable->Type); - - /* Attempt to continue */ - - if (!SubTable->Length) - { - AcpiOsPrintf ("Invalid zero length subtable\n"); - return; - } - goto NextSubTable; - } - - /* Dump the subtable */ - - AcpiOsPrintf ("\n"); - Status = AcpiDmDumpTable (Table->Length, Offset, SubTable, - SubTable->Length, InfoTable); - if (ACPI_FAILURE (Status)) - { - return; - } - - /* The hardware subtable can contain multiple device entries */ - - if (SubTable->Type == ACPI_IVRS_TYPE_HARDWARE) - { - EntryOffset = Offset + sizeof (ACPI_IVRS_HARDWARE); - DeviceEntry = ACPI_ADD_PTR (ACPI_IVRS_DE_HEADER, SubTable, - sizeof (ACPI_IVRS_HARDWARE)); - - while (EntryOffset < (Offset + SubTable->Length)) - { - AcpiOsPrintf ("\n"); - /* - * Upper 2 bits of Type encode the length of the device entry - * - * 00 = 4 byte - * 01 = 8 byte - * 10 = 16 byte - currently no entries defined - * 11 = 32 byte - currently no entries defined - */ - EntryType = DeviceEntry->Type; - EntryLength = EntrySizes [EntryType >> 6]; - - switch (EntryType) - { - /* 4-byte device entries */ - - case ACPI_IVRS_TYPE_PAD4: - case ACPI_IVRS_TYPE_ALL: - case ACPI_IVRS_TYPE_SELECT: - case ACPI_IVRS_TYPE_START: - case ACPI_IVRS_TYPE_END: - - InfoTable = AcpiDmTableInfoIvrs4; - break; - - /* 8-byte entries, type A */ - - case ACPI_IVRS_TYPE_ALIAS_SELECT: - case ACPI_IVRS_TYPE_ALIAS_START: - - InfoTable = AcpiDmTableInfoIvrs8a; - break; - - /* 8-byte entries, type B */ - - case ACPI_IVRS_TYPE_PAD8: - case ACPI_IVRS_TYPE_EXT_SELECT: - case ACPI_IVRS_TYPE_EXT_START: - - InfoTable = AcpiDmTableInfoIvrs8b; - break; - - /* 8-byte entries, type C */ - - case ACPI_IVRS_TYPE_SPECIAL: - - InfoTable = AcpiDmTableInfoIvrs8c; - break; - - default: - InfoTable = AcpiDmTableInfoIvrs4; - AcpiOsPrintf ( - "\n**** Unknown IVRS device entry type/length: " - "0x%.2X/0x%X at offset 0x%.4X: (header below)\n", - EntryType, EntryLength, EntryOffset); - break; - } - - /* Dump the Device Entry */ - - Status = AcpiDmDumpTable (Table->Length, EntryOffset, - DeviceEntry, EntryLength, InfoTable); - if (ACPI_FAILURE (Status)) - { - return; - } - - EntryOffset += EntryLength; - DeviceEntry = ACPI_ADD_PTR (ACPI_IVRS_DE_HEADER, DeviceEntry, - EntryLength); - } - } - -NextSubTable: - /* Point to next subtable */ - - Offset += SubTable->Length; - SubTable = ACPI_ADD_PTR (ACPI_IVRS_HEADER, SubTable, SubTable->Length); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmDumpLpit - * - * PARAMETERS: Table - A LPIT table - * - * RETURN: None - * - * DESCRIPTION: Format the contents of a LPIT. This table type consists - * of an open-ended number of subtables. Note: There are no - * entries in the main table. An LPIT consists of the table - * header and then subtables only. - * - ******************************************************************************/ - -void -AcpiDmDumpLpit ( - ACPI_TABLE_HEADER *Table) -{ - ACPI_STATUS Status; - ACPI_LPIT_HEADER *SubTable; - UINT32 Length = Table->Length; - UINT32 Offset = sizeof (ACPI_TABLE_LPIT); - ACPI_DMTABLE_INFO *InfoTable; - UINT32 SubTableLength; - - - /* Subtables */ - - SubTable = ACPI_ADD_PTR (ACPI_LPIT_HEADER, Table, Offset); - while (Offset < Table->Length) - { - /* Common subtable header */ - - Status = AcpiDmDumpTable (Length, Offset, SubTable, - sizeof (ACPI_LPIT_HEADER), AcpiDmTableInfoLpitHdr); - if (ACPI_FAILURE (Status)) - { - return; - } - - switch (SubTable->Type) - { - case ACPI_LPIT_TYPE_NATIVE_CSTATE: - - InfoTable = AcpiDmTableInfoLpit0; - SubTableLength = sizeof (ACPI_LPIT_NATIVE); - break; - - default: - - /* Cannot continue on unknown type - no length */ - - AcpiOsPrintf ("\n**** Unknown LPIT subtable type 0x%X\n", SubTable->Type); - return; - } - - Status = AcpiDmDumpTable (Length, Offset, SubTable, - SubTableLength, InfoTable); - if (ACPI_FAILURE (Status)) - { - return; - } - AcpiOsPrintf ("\n"); - - /* Point to next subtable */ - - Offset += SubTableLength; - SubTable = ACPI_ADD_PTR (ACPI_LPIT_HEADER, SubTable, SubTableLength); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmDumpMadt - * - * PARAMETERS: Table - A MADT table - * - * RETURN: None - * - * DESCRIPTION: Format the contents of a MADT. This table type consists - * of an open-ended number of subtables. - * - ******************************************************************************/ - -void -AcpiDmDumpMadt ( - ACPI_TABLE_HEADER *Table) -{ - ACPI_STATUS Status; - ACPI_SUBTABLE_HEADER *SubTable; - UINT32 Length = Table->Length; - UINT32 Offset = sizeof (ACPI_TABLE_MADT); - ACPI_DMTABLE_INFO *InfoTable; - - - /* Main table */ - - Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoMadt); - if (ACPI_FAILURE (Status)) - { - return; - } - - /* Subtables */ - - SubTable = ACPI_ADD_PTR (ACPI_SUBTABLE_HEADER, Table, Offset); - while (Offset < Table->Length) - { - /* Common subtable header */ - - AcpiOsPrintf ("\n"); - Status = AcpiDmDumpTable (Length, Offset, SubTable, - SubTable->Length, AcpiDmTableInfoMadtHdr); - if (ACPI_FAILURE (Status)) - { - return; - } - - switch (SubTable->Type) - { - case ACPI_MADT_TYPE_LOCAL_APIC: - - InfoTable = AcpiDmTableInfoMadt0; - break; - - case ACPI_MADT_TYPE_IO_APIC: - - InfoTable = AcpiDmTableInfoMadt1; - break; - - case ACPI_MADT_TYPE_INTERRUPT_OVERRIDE: - - InfoTable = AcpiDmTableInfoMadt2; - break; - - case ACPI_MADT_TYPE_NMI_SOURCE: - - InfoTable = AcpiDmTableInfoMadt3; - break; - - case ACPI_MADT_TYPE_LOCAL_APIC_NMI: - - InfoTable = AcpiDmTableInfoMadt4; - break; - - case ACPI_MADT_TYPE_LOCAL_APIC_OVERRIDE: - - InfoTable = AcpiDmTableInfoMadt5; - break; - - case ACPI_MADT_TYPE_IO_SAPIC: - - InfoTable = AcpiDmTableInfoMadt6; - break; - - case ACPI_MADT_TYPE_LOCAL_SAPIC: - - InfoTable = AcpiDmTableInfoMadt7; - break; - - case ACPI_MADT_TYPE_INTERRUPT_SOURCE: - - InfoTable = AcpiDmTableInfoMadt8; - break; - - case ACPI_MADT_TYPE_LOCAL_X2APIC: - - InfoTable = AcpiDmTableInfoMadt9; - break; - - case ACPI_MADT_TYPE_LOCAL_X2APIC_NMI: - - InfoTable = AcpiDmTableInfoMadt10; - break; - - case ACPI_MADT_TYPE_GENERIC_INTERRUPT: - - InfoTable = AcpiDmTableInfoMadt11; - break; - - case ACPI_MADT_TYPE_GENERIC_DISTRIBUTOR: - - InfoTable = AcpiDmTableInfoMadt12; - break; - - case ACPI_MADT_TYPE_GENERIC_MSI_FRAME: - - InfoTable = AcpiDmTableInfoMadt13; - break; - - case ACPI_MADT_TYPE_GENERIC_REDISTRIBUTOR: - - InfoTable = AcpiDmTableInfoMadt14; - break; - - case ACPI_MADT_TYPE_GENERIC_TRANSLATOR: - - InfoTable = AcpiDmTableInfoMadt15; - break; - - default: - - AcpiOsPrintf ("\n**** Unknown MADT subtable type 0x%X\n\n", SubTable->Type); - - /* Attempt to continue */ - - if (!SubTable->Length) - { - AcpiOsPrintf ("Invalid zero length subtable\n"); - return; - } - goto NextSubTable; - } - - Status = AcpiDmDumpTable (Length, Offset, SubTable, - SubTable->Length, InfoTable); - if (ACPI_FAILURE (Status)) - { - return; - } - -NextSubTable: - /* Point to next subtable */ - - Offset += SubTable->Length; - SubTable = ACPI_ADD_PTR (ACPI_SUBTABLE_HEADER, SubTable, SubTable->Length); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmDumpMcfg - * - * PARAMETERS: Table - A MCFG Table - * - * RETURN: None - * - * DESCRIPTION: Format the contents of a MCFG table - * - ******************************************************************************/ - -void -AcpiDmDumpMcfg ( - ACPI_TABLE_HEADER *Table) -{ - ACPI_STATUS Status; - UINT32 Offset = sizeof (ACPI_TABLE_MCFG); - ACPI_MCFG_ALLOCATION *SubTable; - - - /* Main table */ - - Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoMcfg); - if (ACPI_FAILURE (Status)) - { - return; - } - - /* Subtables */ - - SubTable = ACPI_ADD_PTR (ACPI_MCFG_ALLOCATION, Table, Offset); - while (Offset < Table->Length) - { - if (Offset + sizeof (ACPI_MCFG_ALLOCATION) > Table->Length) - { - AcpiOsPrintf ("Warning: there are %u invalid trailing bytes\n", - sizeof (ACPI_MCFG_ALLOCATION) - (Offset - Table->Length)); - return; - } - - AcpiOsPrintf ("\n"); - Status = AcpiDmDumpTable (Table->Length, Offset, SubTable, - sizeof (ACPI_MCFG_ALLOCATION), AcpiDmTableInfoMcfg0); - if (ACPI_FAILURE (Status)) - { - return; - } - - /* Point to next subtable (each subtable is of fixed length) */ - - Offset += sizeof (ACPI_MCFG_ALLOCATION); - SubTable = ACPI_ADD_PTR (ACPI_MCFG_ALLOCATION, SubTable, - sizeof (ACPI_MCFG_ALLOCATION)); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmDumpMpst - * - * PARAMETERS: Table - A MPST Table - * - * RETURN: None - * - * DESCRIPTION: Format the contents of a MPST table - * - ******************************************************************************/ - -void -AcpiDmDumpMpst ( - ACPI_TABLE_HEADER *Table) -{ - ACPI_STATUS Status; - UINT32 Offset = sizeof (ACPI_TABLE_MPST); - ACPI_MPST_POWER_NODE *SubTable0; - ACPI_MPST_POWER_STATE *SubTable0A; - ACPI_MPST_COMPONENT *SubTable0B; - ACPI_MPST_DATA_HDR *SubTable1; - ACPI_MPST_POWER_DATA *SubTable2; - UINT16 SubtableCount; - UINT32 PowerStateCount; - UINT32 ComponentCount; - - - /* Main table */ - - Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoMpst); - if (ACPI_FAILURE (Status)) - { - return; - } - - /* Subtable: Memory Power Node(s) */ - - SubtableCount = (ACPI_CAST_PTR (ACPI_TABLE_MPST, Table))->PowerNodeCount; - SubTable0 = ACPI_ADD_PTR (ACPI_MPST_POWER_NODE, Table, Offset); - - while ((Offset < Table->Length) && SubtableCount) - { - AcpiOsPrintf ("\n"); - Status = AcpiDmDumpTable (Table->Length, Offset, SubTable0, - sizeof (ACPI_MPST_POWER_NODE), AcpiDmTableInfoMpst0); - if (ACPI_FAILURE (Status)) - { - return; - } - - /* Extract the sub-subtable counts */ - - PowerStateCount = SubTable0->NumPowerStates; - ComponentCount = SubTable0->NumPhysicalComponents; - Offset += sizeof (ACPI_MPST_POWER_NODE); - - /* Sub-subtables - Memory Power State Structure(s) */ - - SubTable0A = ACPI_ADD_PTR (ACPI_MPST_POWER_STATE, SubTable0, - sizeof (ACPI_MPST_POWER_NODE)); - - while (PowerStateCount) - { - AcpiOsPrintf ("\n"); - Status = AcpiDmDumpTable (Table->Length, Offset, SubTable0A, - sizeof (ACPI_MPST_POWER_STATE), AcpiDmTableInfoMpst0A); - if (ACPI_FAILURE (Status)) - { - return; - } - - SubTable0A++; - PowerStateCount--; - Offset += sizeof (ACPI_MPST_POWER_STATE); - } - - /* Sub-subtables - Physical Component ID Structure(s) */ - - SubTable0B = ACPI_CAST_PTR (ACPI_MPST_COMPONENT, SubTable0A); - - if (ComponentCount) - { - AcpiOsPrintf ("\n"); - } - - while (ComponentCount) - { - Status = AcpiDmDumpTable (Table->Length, Offset, SubTable0B, - sizeof (ACPI_MPST_COMPONENT), AcpiDmTableInfoMpst0B); - if (ACPI_FAILURE (Status)) - { - return; - } - - SubTable0B++; - ComponentCount--; - Offset += sizeof (ACPI_MPST_COMPONENT); - } - - /* Point to next Memory Power Node subtable */ - - SubtableCount--; - SubTable0 = ACPI_ADD_PTR (ACPI_MPST_POWER_NODE, SubTable0, - sizeof (ACPI_MPST_POWER_NODE) + - (sizeof (ACPI_MPST_POWER_STATE) * SubTable0->NumPowerStates) + - (sizeof (ACPI_MPST_COMPONENT) * SubTable0->NumPhysicalComponents)); - } - - /* Subtable: Count of Memory Power State Characteristic structures */ - - AcpiOsPrintf ("\n"); - SubTable1 = ACPI_CAST_PTR (ACPI_MPST_DATA_HDR, SubTable0); - Status = AcpiDmDumpTable (Table->Length, Offset, SubTable1, - sizeof (ACPI_MPST_DATA_HDR), AcpiDmTableInfoMpst1); - if (ACPI_FAILURE (Status)) - { - return; - } - - SubtableCount = SubTable1->CharacteristicsCount; - Offset += sizeof (ACPI_MPST_DATA_HDR); - - /* Subtable: Memory Power State Characteristics structure(s) */ - - SubTable2 = ACPI_ADD_PTR (ACPI_MPST_POWER_DATA, SubTable1, sizeof (ACPI_MPST_DATA_HDR)); - - while ((Offset < Table->Length) && SubtableCount) - { - AcpiOsPrintf ("\n"); - Status = AcpiDmDumpTable (Table->Length, Offset, SubTable2, - sizeof (ACPI_MPST_POWER_DATA), AcpiDmTableInfoMpst2); - if (ACPI_FAILURE (Status)) - { - return; - } - - SubTable2++; - SubtableCount--; - Offset += sizeof (ACPI_MPST_POWER_DATA); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmDumpMsct - * - * PARAMETERS: Table - A MSCT table - * - * RETURN: None - * - * DESCRIPTION: Format the contents of a MSCT - * - ******************************************************************************/ - -void -AcpiDmDumpMsct ( - ACPI_TABLE_HEADER *Table) -{ - ACPI_STATUS Status; - UINT32 Offset = sizeof (ACPI_TABLE_MSCT); - ACPI_MSCT_PROXIMITY *SubTable; - - - /* Main table */ - - Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoMsct); - if (ACPI_FAILURE (Status)) - { - return; - } - - /* Subtables */ - - SubTable = ACPI_ADD_PTR (ACPI_MSCT_PROXIMITY, Table, Offset); - while (Offset < Table->Length) - { - /* Common subtable header */ - - AcpiOsPrintf ("\n"); - Status = AcpiDmDumpTable (Table->Length, Offset, SubTable, - sizeof (ACPI_MSCT_PROXIMITY), AcpiDmTableInfoMsct0); - if (ACPI_FAILURE (Status)) - { - return; - } - - /* Point to next subtable */ - - Offset += sizeof (ACPI_MSCT_PROXIMITY); - SubTable = ACPI_ADD_PTR (ACPI_MSCT_PROXIMITY, SubTable, sizeof (ACPI_MSCT_PROXIMITY)); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmDumpMtmr - * - * PARAMETERS: Table - A MTMR table - * - * RETURN: None - * - * DESCRIPTION: Format the contents of a MTMR - * - ******************************************************************************/ - -void -AcpiDmDumpMtmr ( - ACPI_TABLE_HEADER *Table) -{ - ACPI_STATUS Status; - UINT32 Offset = sizeof (ACPI_TABLE_MTMR); - ACPI_MTMR_ENTRY *SubTable; - - - /* Main table */ - - Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoMtmr); - if (ACPI_FAILURE (Status)) - { - return; - } - - /* Subtables */ - - SubTable = ACPI_ADD_PTR (ACPI_MTMR_ENTRY, Table, Offset); - while (Offset < Table->Length) - { - /* Common subtable header */ - - AcpiOsPrintf ("\n"); - Status = AcpiDmDumpTable (Table->Length, Offset, SubTable, - sizeof (ACPI_MTMR_ENTRY), AcpiDmTableInfoMtmr0); - if (ACPI_FAILURE (Status)) - { - return; - } - - /* Point to next subtable */ - - Offset += sizeof (ACPI_MTMR_ENTRY); - SubTable = ACPI_ADD_PTR (ACPI_MTMR_ENTRY, SubTable, sizeof (ACPI_MTMR_ENTRY)); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmDumpNfit - * - * PARAMETERS: Table - A NFIT table - * - * RETURN: None - * - * DESCRIPTION: Format the contents of an NFIT. - * - ******************************************************************************/ - -void -AcpiDmDumpNfit ( - ACPI_TABLE_HEADER *Table) -{ - ACPI_STATUS Status; - UINT32 Offset = sizeof (ACPI_TABLE_NFIT); - UINT32 FieldOffset = 0; - UINT32 Length; - ACPI_NFIT_HEADER *SubTable; - ACPI_DMTABLE_INFO *InfoTable; - ACPI_NFIT_INTERLEAVE *Interleave = NULL; - ACPI_NFIT_SMBIOS *SmbiosInfo = NULL; - ACPI_NFIT_FLUSH_ADDRESS *Hint = NULL; - UINT32 i; - - - /* Main table */ - - Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoNfit); - if (ACPI_FAILURE (Status)) - { - return; - } - - /* Subtables */ - - SubTable = ACPI_ADD_PTR (ACPI_NFIT_HEADER, Table, Offset); - while (Offset < Table->Length) - { - /* NFIT subtable header */ - - AcpiOsPrintf ("\n"); - Status = AcpiDmDumpTable (Table->Length, Offset, SubTable, - SubTable->Length, AcpiDmTableInfoNfitHdr); - if (ACPI_FAILURE (Status)) - { - return; - } - - switch (SubTable->Type) - { - case ACPI_NFIT_TYPE_SYSTEM_ADDRESS: - - InfoTable = AcpiDmTableInfoNfit0; - break; - - case ACPI_NFIT_TYPE_MEMORY_MAP: - - InfoTable = AcpiDmTableInfoNfit1; - break; - - case ACPI_NFIT_TYPE_INTERLEAVE: - - /* Has a variable number of 32-bit values at the end */ - - InfoTable = AcpiDmTableInfoNfit2; - Interleave = ACPI_CAST_PTR (ACPI_NFIT_INTERLEAVE, SubTable); - FieldOffset = sizeof (ACPI_NFIT_INTERLEAVE); - break; - - case ACPI_NFIT_TYPE_SMBIOS: - - SmbiosInfo = ACPI_CAST_PTR (ACPI_NFIT_SMBIOS, SubTable); - InfoTable = AcpiDmTableInfoNfit3; - break; - - case ACPI_NFIT_TYPE_CONTROL_REGION: - - InfoTable = AcpiDmTableInfoNfit4; - break; - - case ACPI_NFIT_TYPE_DATA_REGION: - - InfoTable = AcpiDmTableInfoNfit5; - break; - - case ACPI_NFIT_TYPE_FLUSH_ADDRESS: - - /* Has a variable number of 64-bit addresses at the end */ - - InfoTable = AcpiDmTableInfoNfit6; - Hint = ACPI_CAST_PTR (ACPI_NFIT_FLUSH_ADDRESS, SubTable); - FieldOffset = sizeof (ACPI_NFIT_FLUSH_ADDRESS) - sizeof (UINT64); - break; - - default: - AcpiOsPrintf ("\n**** Unknown NFIT subtable type 0x%X\n", SubTable->Type); - - /* Attempt to continue */ - - if (!SubTable->Length) - { - AcpiOsPrintf ("Invalid zero length subtable\n"); - return; - } - goto NextSubTable; - } - - AcpiOsPrintf ("\n"); - Status = AcpiDmDumpTable (Table->Length, Offset, SubTable, - SubTable->Length, InfoTable); - if (ACPI_FAILURE (Status)) - { - return; - } - - /* Per-subtable variable-length fields */ - - switch (SubTable->Type) - { - case ACPI_NFIT_TYPE_INTERLEAVE: - - for (i = 0; i < Interleave->LineCount; i++) - { - Status = AcpiDmDumpTable (Table->Length, Offset + FieldOffset, - &Interleave->LineOffset[i], - sizeof (UINT32), AcpiDmTableInfoNfit2a); - if (ACPI_FAILURE (Status)) - { - return; - } - - FieldOffset += sizeof (UINT32); - } - break; - - case ACPI_NFIT_TYPE_SMBIOS: - - Length = SubTable->Length - sizeof (ACPI_NFIT_SMBIOS) + sizeof (UINT8); - if (Length) - { - Status = AcpiDmDumpTable (Table->Length, - sizeof (ACPI_NFIT_SMBIOS) - sizeof (UINT8), - SmbiosInfo, - Length, AcpiDmTableInfoNfit3a); - if (ACPI_FAILURE (Status)) - { - return; - } - } - - break; - - case ACPI_NFIT_TYPE_FLUSH_ADDRESS: - - for (i = 0; i < Hint->HintCount; i++) - { - Status = AcpiDmDumpTable (Table->Length, Offset + FieldOffset, - &Hint->HintAddress[i], - sizeof (UINT64), AcpiDmTableInfoNfit6a); - if (ACPI_FAILURE (Status)) - { - return; - } - - FieldOffset += sizeof (UINT64); - } - break; - - default: - break; - } - -NextSubTable: - /* Point to next subtable */ - - Offset += SubTable->Length; - SubTable = ACPI_ADD_PTR (ACPI_NFIT_HEADER, SubTable, SubTable->Length); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmDumpPcct - * - * PARAMETERS: Table - A PCCT table - * - * RETURN: None - * - * DESCRIPTION: Format the contents of a PCCT. This table type consists - * of an open-ended number of subtables. - * - ******************************************************************************/ - -void -AcpiDmDumpPcct ( - ACPI_TABLE_HEADER *Table) -{ - ACPI_STATUS Status; - ACPI_PCCT_SUBSPACE *SubTable; - ACPI_DMTABLE_INFO *InfoTable; - UINT32 Length = Table->Length; - UINT32 Offset = sizeof (ACPI_TABLE_PCCT); - - - /* Main table */ - - Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoPcct); - if (ACPI_FAILURE (Status)) - { - return; - } - - /* Subtables */ - - SubTable = ACPI_ADD_PTR (ACPI_PCCT_SUBSPACE, Table, Offset); - while (Offset < Table->Length) - { - /* Common subtable header */ - - AcpiOsPrintf ("\n"); - Status = AcpiDmDumpTable (Length, Offset, SubTable, - SubTable->Header.Length, AcpiDmTableInfoPcctHdr); - if (ACPI_FAILURE (Status)) - { - return; - } - - switch (SubTable->Header.Type) - { - case ACPI_PCCT_TYPE_GENERIC_SUBSPACE: - - InfoTable = AcpiDmTableInfoPcct0; - break; - - case ACPI_PCCT_TYPE_HW_REDUCED_SUBSPACE: - - InfoTable = AcpiDmTableInfoPcct1; - break; - - default: - - AcpiOsPrintf ( - "\n**** Unexpected or unknown PCCT subtable type 0x%X\n\n", - SubTable->Header.Type); - return; - } - - AcpiOsPrintf ("\n"); - Status = AcpiDmDumpTable (Length, Offset, SubTable, - SubTable->Header.Length, InfoTable); - if (ACPI_FAILURE (Status)) - { - return; - } - - /* Point to next subtable */ - - Offset += SubTable->Header.Length; - SubTable = ACPI_ADD_PTR (ACPI_PCCT_SUBSPACE, SubTable, - SubTable->Header.Length); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmDumpPmtt - * - * PARAMETERS: Table - A PMTT table - * - * RETURN: None - * - * DESCRIPTION: Format the contents of a PMTT. This table type consists - * of an open-ended number of subtables. - * - ******************************************************************************/ - -void -AcpiDmDumpPmtt ( - ACPI_TABLE_HEADER *Table) -{ - ACPI_STATUS Status; - ACPI_PMTT_HEADER *SubTable; - ACPI_PMTT_HEADER *MemSubTable; - ACPI_PMTT_HEADER *DimmSubTable; - ACPI_PMTT_DOMAIN *DomainArray; - UINT32 Length = Table->Length; - UINT32 Offset = sizeof (ACPI_TABLE_PMTT); - UINT32 MemOffset; - UINT32 DimmOffset; - UINT32 DomainOffset; - UINT32 DomainCount; - - - /* Main table */ - - Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoPmtt); - if (ACPI_FAILURE (Status)) - { - return; - } - - /* Subtables */ - - SubTable = ACPI_ADD_PTR (ACPI_PMTT_HEADER, Table, Offset); - while (Offset < Table->Length) - { - /* Common subtable header */ - - AcpiOsPrintf ("\n"); - Status = AcpiDmDumpTable (Length, Offset, SubTable, - SubTable->Length, AcpiDmTableInfoPmttHdr); - if (ACPI_FAILURE (Status)) - { - return; - } - - /* Only Socket subtables are expected at this level */ - - if (SubTable->Type != ACPI_PMTT_TYPE_SOCKET) - { - AcpiOsPrintf ( - "\n**** Unexpected or unknown PMTT subtable type 0x%X\n\n", - SubTable->Type); - return; - } - - /* Dump the fixed-length portion of the subtable */ - - Status = AcpiDmDumpTable (Length, Offset, SubTable, - SubTable->Length, AcpiDmTableInfoPmtt0); - if (ACPI_FAILURE (Status)) - { - return; - } - - /* Walk the memory controller subtables */ - - MemOffset = sizeof (ACPI_PMTT_SOCKET); - MemSubTable = ACPI_ADD_PTR (ACPI_PMTT_HEADER, SubTable, - sizeof (ACPI_PMTT_SOCKET)); - - while (((Offset + MemOffset) < Table->Length) && - (MemOffset < SubTable->Length)) - { - /* Common subtable header */ - - AcpiOsPrintf ("\n"); - Status = AcpiDmDumpTable (Length, - Offset + MemOffset, MemSubTable, - MemSubTable->Length, AcpiDmTableInfoPmttHdr); - if (ACPI_FAILURE (Status)) - { - return; - } - - /* Only memory controller subtables are expected at this level */ - - if (MemSubTable->Type != ACPI_PMTT_TYPE_CONTROLLER) - { - AcpiOsPrintf ( - "\n**** Unexpected or unknown PMTT subtable type 0x%X\n\n", - MemSubTable->Type); - return; - } - - /* Dump the fixed-length portion of the controller subtable */ - - Status = AcpiDmDumpTable (Length, - Offset + MemOffset, MemSubTable, - MemSubTable->Length, AcpiDmTableInfoPmtt1); - if (ACPI_FAILURE (Status)) - { - return; - } - - /* Walk the variable count of proximity domains */ - - DomainCount = ((ACPI_PMTT_CONTROLLER *) MemSubTable)->DomainCount; - DomainOffset = sizeof (ACPI_PMTT_CONTROLLER); - DomainArray = ACPI_ADD_PTR (ACPI_PMTT_DOMAIN, MemSubTable, - sizeof (ACPI_PMTT_CONTROLLER)); - - while (((Offset + MemOffset + DomainOffset) < Table->Length) && - ((MemOffset + DomainOffset) < SubTable->Length) && - DomainCount) - { - Status = AcpiDmDumpTable (Length, - Offset + MemOffset + DomainOffset, DomainArray, - sizeof (ACPI_PMTT_DOMAIN), AcpiDmTableInfoPmtt1a); - if (ACPI_FAILURE (Status)) - { - return; - } - - DomainOffset += sizeof (ACPI_PMTT_DOMAIN); - DomainArray++; - DomainCount--; - } - - if (DomainCount) - { - AcpiOsPrintf ( - "\n**** DomainCount exceeds subtable length\n\n"); - } - - /* Walk the physical component (DIMM) subtables */ - - DimmOffset = DomainOffset; - DimmSubTable = ACPI_ADD_PTR (ACPI_PMTT_HEADER, MemSubTable, - DomainOffset); - - while (((Offset + MemOffset + DimmOffset) < Table->Length) && - (DimmOffset < MemSubTable->Length)) - { - /* Common subtable header */ - - AcpiOsPrintf ("\n"); - Status = AcpiDmDumpTable (Length, - Offset + MemOffset + DimmOffset, DimmSubTable, - DimmSubTable->Length, AcpiDmTableInfoPmttHdr); - if (ACPI_FAILURE (Status)) - { - return; - } - - /* Only DIMM subtables are expected at this level */ - - if (DimmSubTable->Type != ACPI_PMTT_TYPE_DIMM) - { - AcpiOsPrintf ( - "\n**** Unexpected or unknown PMTT subtable type 0x%X\n\n", - DimmSubTable->Type); - return; - } - - /* Dump the fixed-length DIMM subtable */ - - Status = AcpiDmDumpTable (Length, - Offset + MemOffset + DimmOffset, DimmSubTable, - DimmSubTable->Length, AcpiDmTableInfoPmtt2); - if (ACPI_FAILURE (Status)) - { - return; - } - - /* Point to next DIMM subtable */ - - DimmOffset += DimmSubTable->Length; - DimmSubTable = ACPI_ADD_PTR (ACPI_PMTT_HEADER, - DimmSubTable, DimmSubTable->Length); - } - - /* Point to next Controller subtable */ - - MemOffset += MemSubTable->Length; - MemSubTable = ACPI_ADD_PTR (ACPI_PMTT_HEADER, - MemSubTable, MemSubTable->Length); - } - - /* Point to next Socket subtable */ - - Offset += SubTable->Length; - SubTable = ACPI_ADD_PTR (ACPI_PMTT_HEADER, - SubTable, SubTable->Length); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmDumpS3pt - * - * PARAMETERS: Table - A S3PT table - * - * RETURN: Length of the table - * - * DESCRIPTION: Format the contents of a S3PT - * - ******************************************************************************/ - -UINT32 -AcpiDmDumpS3pt ( - ACPI_TABLE_HEADER *Tables) -{ - ACPI_STATUS Status; - UINT32 Offset = sizeof (ACPI_TABLE_S3PT); - ACPI_S3PT_HEADER *SubTable; - ACPI_DMTABLE_INFO *InfoTable; - ACPI_TABLE_S3PT *S3ptTable = ACPI_CAST_PTR (ACPI_TABLE_S3PT, Tables); - - - /* Main table */ - - Status = AcpiDmDumpTable (Offset, 0, S3ptTable, 0, AcpiDmTableInfoS3pt); - if (ACPI_FAILURE (Status)) - { - return 0; - } - - SubTable = ACPI_ADD_PTR (ACPI_S3PT_HEADER, S3ptTable, Offset); - while (Offset < S3ptTable->Length) - { - /* Common subtable header */ - - AcpiOsPrintf ("\n"); - Status = AcpiDmDumpTable (S3ptTable->Length, Offset, SubTable, - SubTable->Length, AcpiDmTableInfoS3ptHdr); - if (ACPI_FAILURE (Status)) - { - return 0; - } - - switch (SubTable->Type) - { - case ACPI_S3PT_TYPE_RESUME: - - InfoTable = AcpiDmTableInfoS3pt0; - break; - - case ACPI_S3PT_TYPE_SUSPEND: - - InfoTable = AcpiDmTableInfoS3pt1; - break; - - default: - - AcpiOsPrintf ("\n**** Unknown S3PT subtable type 0x%X\n", SubTable->Type); - - /* Attempt to continue */ - - if (!SubTable->Length) - { - AcpiOsPrintf ("Invalid zero length subtable\n"); - return 0; - } - goto NextSubTable; - } - - AcpiOsPrintf ("\n"); - Status = AcpiDmDumpTable (S3ptTable->Length, Offset, SubTable, - SubTable->Length, InfoTable); - if (ACPI_FAILURE (Status)) - { - return 0; - } - -NextSubTable: - /* Point to next subtable */ - - Offset += SubTable->Length; - SubTable = ACPI_ADD_PTR (ACPI_S3PT_HEADER, SubTable, SubTable->Length); - } - - return (S3ptTable->Length); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmDumpSlic - * - * PARAMETERS: Table - A SLIC table - * - * RETURN: None - * - * DESCRIPTION: Format the contents of a SLIC - * - ******************************************************************************/ - -void -AcpiDmDumpSlic ( - ACPI_TABLE_HEADER *Table) -{ - (void) AcpiDmDumpTable (Table->Length, sizeof (ACPI_TABLE_HEADER), Table, - Table->Length - sizeof (*Table), AcpiDmTableInfoSlic); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmDumpSlit - * - * PARAMETERS: Table - An SLIT - * - * RETURN: None - * - * DESCRIPTION: Format the contents of a SLIT - * - ******************************************************************************/ - -void -AcpiDmDumpSlit ( - ACPI_TABLE_HEADER *Table) -{ - ACPI_STATUS Status; - UINT32 Offset; - UINT8 *Row; - UINT32 Localities; - UINT32 i; - UINT32 j; - - - /* Main table */ - - Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoSlit); - if (ACPI_FAILURE (Status)) - { - return; - } - - /* Display the Locality NxN Matrix */ - - Localities = (UINT32) ACPI_CAST_PTR (ACPI_TABLE_SLIT, Table)->LocalityCount; - Offset = ACPI_OFFSET (ACPI_TABLE_SLIT, Entry[0]); - Row = (UINT8 *) ACPI_CAST_PTR (ACPI_TABLE_SLIT, Table)->Entry; - - for (i = 0; i < Localities; i++) - { - /* Display one row of the matrix */ - - AcpiDmLineHeader2 (Offset, Localities, "Locality", i); - for (j = 0; j < Localities; j++) - { - /* Check for beyond EOT */ - - if (Offset >= Table->Length) - { - AcpiOsPrintf ("\n**** Not enough room in table for all localities\n"); - return; - } - - AcpiOsPrintf ("%2.2X", Row[j]); - Offset++; - - /* Display up to 16 bytes per output row */ - - if ((j+1) < Localities) - { - AcpiOsPrintf (" "); - - if (j && (((j+1) % 16) == 0)) - { - AcpiOsPrintf ("\\\n"); /* With line continuation char */ - AcpiDmLineHeader (Offset, 0, NULL); - } - } - } - - /* Point to next row */ - - AcpiOsPrintf ("\n"); - Row += Localities; - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmDumpSrat - * - * PARAMETERS: Table - A SRAT table - * - * RETURN: None - * - * DESCRIPTION: Format the contents of a SRAT - * - ******************************************************************************/ - -void -AcpiDmDumpSrat ( - ACPI_TABLE_HEADER *Table) -{ - ACPI_STATUS Status; - UINT32 Offset = sizeof (ACPI_TABLE_SRAT); - ACPI_SUBTABLE_HEADER *SubTable; - ACPI_DMTABLE_INFO *InfoTable; - - - /* Main table */ - - Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoSrat); - if (ACPI_FAILURE (Status)) - { - return; - } - - /* Subtables */ - - SubTable = ACPI_ADD_PTR (ACPI_SUBTABLE_HEADER, Table, Offset); - while (Offset < Table->Length) - { - /* Common subtable header */ - - AcpiOsPrintf ("\n"); - Status = AcpiDmDumpTable (Table->Length, Offset, SubTable, - SubTable->Length, AcpiDmTableInfoSratHdr); - if (ACPI_FAILURE (Status)) - { - return; - } - - switch (SubTable->Type) - { - case ACPI_SRAT_TYPE_CPU_AFFINITY: - - InfoTable = AcpiDmTableInfoSrat0; - break; - - case ACPI_SRAT_TYPE_MEMORY_AFFINITY: - - InfoTable = AcpiDmTableInfoSrat1; - break; - - case ACPI_SRAT_TYPE_X2APIC_CPU_AFFINITY: - - InfoTable = AcpiDmTableInfoSrat2; - break; - - case ACPI_SRAT_TYPE_GICC_AFFINITY: - - InfoTable = AcpiDmTableInfoSrat3; - break; - - default: - AcpiOsPrintf ("\n**** Unknown SRAT subtable type 0x%X\n", SubTable->Type); - - /* Attempt to continue */ - - if (!SubTable->Length) - { - AcpiOsPrintf ("Invalid zero length subtable\n"); - return; - } - goto NextSubTable; - } - - AcpiOsPrintf ("\n"); - Status = AcpiDmDumpTable (Table->Length, Offset, SubTable, - SubTable->Length, InfoTable); - if (ACPI_FAILURE (Status)) - { - return; - } - -NextSubTable: - /* Point to next subtable */ - - Offset += SubTable->Length; - SubTable = ACPI_ADD_PTR (ACPI_SUBTABLE_HEADER, SubTable, SubTable->Length); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmDumpStao - * - * PARAMETERS: Table - A STAO table - * - * RETURN: None - * - * DESCRIPTION: Format the contents of a STAO. This is a variable-length - * table that contains an open-ended number of ASCII strings - * at the end of the table. - * - ******************************************************************************/ - -void -AcpiDmDumpStao ( - ACPI_TABLE_HEADER *Table) -{ - ACPI_STATUS Status; - char *Namepath; - UINT32 Length = Table->Length; - UINT32 StringLength; - UINT32 Offset = sizeof (ACPI_TABLE_STAO); - - - /* Main table */ - - Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoStao); - if (ACPI_FAILURE (Status)) - { - return; - } - - /* The rest of the table consists of Namepath strings */ - - while (Offset < Table->Length) - { - Namepath = ACPI_ADD_PTR (char, Table, Offset); - StringLength = strlen (Namepath) + 1; - - AcpiDmLineHeader (Offset, StringLength, "Namestring"); - AcpiOsPrintf ("\"%s\"\n", Namepath); - - /* Point to next namepath */ - - Offset += StringLength; - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmDumpTcpa - * - * PARAMETERS: Table - A TCPA table - * - * RETURN: None - * - * DESCRIPTION: Format the contents of a TCPA. - * - * NOTE: There are two versions of the table with the same signature: - * the client version and the server version. The common - * PlatformClass field is used to differentiate the two types of - * tables. - * - ******************************************************************************/ - -void -AcpiDmDumpTcpa ( - ACPI_TABLE_HEADER *Table) -{ - UINT32 Offset = sizeof (ACPI_TABLE_TCPA_HDR); - ACPI_TABLE_TCPA_HDR *CommonHeader = ACPI_CAST_PTR ( - ACPI_TABLE_TCPA_HDR, Table); - ACPI_TABLE_TCPA_HDR *SubTable = ACPI_ADD_PTR ( - ACPI_TABLE_TCPA_HDR, Table, Offset); - ACPI_STATUS Status; - - - /* Main table */ - - Status = AcpiDmDumpTable (Table->Length, 0, Table, - 0, AcpiDmTableInfoTcpaHdr); - if (ACPI_FAILURE (Status)) - { - return; - } - - /* - * Examine the PlatformClass field to determine the table type. - * Either a client or server table. Only one. - */ - switch (CommonHeader->PlatformClass) - { - case ACPI_TCPA_CLIENT_TABLE: - - Status = AcpiDmDumpTable (Table->Length, Offset, SubTable, - Table->Length - Offset, AcpiDmTableInfoTcpaClient); - break; - - case ACPI_TCPA_SERVER_TABLE: - - Status = AcpiDmDumpTable (Table->Length, Offset, SubTable, - Table->Length - Offset, AcpiDmTableInfoTcpaServer); - break; - - default: - - AcpiOsPrintf ("\n**** Unknown TCPA Platform Class 0x%X\n", - CommonHeader->PlatformClass); - Status = AE_ERROR; - break; - } - - if (ACPI_FAILURE (Status)) - { - AcpiOsPrintf ("\n**** Cannot disassemble TCPA table\n"); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmDumpVrtc - * - * PARAMETERS: Table - A VRTC table - * - * RETURN: None - * - * DESCRIPTION: Format the contents of a VRTC - * - ******************************************************************************/ - -void -AcpiDmDumpVrtc ( - ACPI_TABLE_HEADER *Table) -{ - ACPI_STATUS Status; - UINT32 Offset = sizeof (ACPI_TABLE_VRTC); - ACPI_VRTC_ENTRY *SubTable; - - - /* Main table */ - - Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoVrtc); - if (ACPI_FAILURE (Status)) - { - return; - } - - /* Subtables */ - - SubTable = ACPI_ADD_PTR (ACPI_VRTC_ENTRY, Table, Offset); - while (Offset < Table->Length) - { - /* Common subtable header */ - - AcpiOsPrintf ("\n"); - Status = AcpiDmDumpTable (Table->Length, Offset, SubTable, - sizeof (ACPI_VRTC_ENTRY), AcpiDmTableInfoVrtc0); - if (ACPI_FAILURE (Status)) - { - return; - } - - /* Point to next subtable */ - - Offset += sizeof (ACPI_VRTC_ENTRY); - SubTable = ACPI_ADD_PTR (ACPI_VRTC_ENTRY, SubTable, sizeof (ACPI_VRTC_ENTRY)); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmDumpWdat - * - * PARAMETERS: Table - A WDAT table - * - * RETURN: None - * - * DESCRIPTION: Format the contents of a WDAT - * - ******************************************************************************/ - -void -AcpiDmDumpWdat ( - ACPI_TABLE_HEADER *Table) -{ - ACPI_STATUS Status; - UINT32 Offset = sizeof (ACPI_TABLE_WDAT); - ACPI_WDAT_ENTRY *SubTable; - - - /* Main table */ - - Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoWdat); - if (ACPI_FAILURE (Status)) - { - return; - } - - /* Subtables */ - - SubTable = ACPI_ADD_PTR (ACPI_WDAT_ENTRY, Table, Offset); - while (Offset < Table->Length) - { - /* Common subtable header */ - - AcpiOsPrintf ("\n"); - Status = AcpiDmDumpTable (Table->Length, Offset, SubTable, - sizeof (ACPI_WDAT_ENTRY), AcpiDmTableInfoWdat0); - if (ACPI_FAILURE (Status)) - { - return; - } - - /* Point to next subtable */ - - Offset += sizeof (ACPI_WDAT_ENTRY); - SubTable = ACPI_ADD_PTR (ACPI_WDAT_ENTRY, SubTable, sizeof (ACPI_WDAT_ENTRY)); - } -} - -/******************************************************************************* - * - * FUNCTION: AcpiDmDumpWpbt - * - * PARAMETERS: Table - A WPBT table - * - * RETURN: None - * - * DESCRIPTION: Format the contents of a WPBT. This table type consists - * of an open-ended arguments buffer at the end of the table. - * - ******************************************************************************/ - -void -AcpiDmDumpWpbt ( - ACPI_TABLE_HEADER *Table) -{ - ACPI_STATUS Status; - ACPI_TABLE_WPBT *SubTable; - UINT32 Length = Table->Length; - UINT16 ArgumentsLength; - - - /* Dump the main table */ - - Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoWpbt); - if (ACPI_FAILURE (Status)) - { - return; - } - - /* Extract the arguments buffer length from the main table */ - - SubTable = ACPI_CAST_PTR (ACPI_TABLE_WPBT, Table); - ArgumentsLength = SubTable->ArgumentsLength; - - /* Dump the arguments buffer */ - - (void) AcpiDmDumpTable (Table->Length, 0, Table, ArgumentsLength, - AcpiDmTableInfoWpbt0); -} diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/common/dmtbinfo.c b/src/add-ons/kernel/bus_managers/acpi/acpica/common/dmtbinfo.c deleted file mode 100644 index c10e089f28..0000000000 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/common/dmtbinfo.c +++ /dev/null @@ -1,2990 +0,0 @@ -/****************************************************************************** - * - * Module Name: dmtbinfo - Table info for non-AML tables - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#include "acpi.h" -#include "accommon.h" -#include "acdisasm.h" - -/* This module used for application-level code only */ - -#define _COMPONENT ACPI_CA_DISASSEMBLER - ACPI_MODULE_NAME ("dmtbinfo") - -/* - * How to add a new table: - * - * - Add the C table definition to the actbl1.h or actbl2.h header. - * - Add ACPI_xxxx_OFFSET macro(s) for the table (and subtables) to list below. - * - Define the table in this file (for the disassembler). If any - * new data types are required (ACPI_DMT_*), see below. - * - Add an external declaration for the new table definition (AcpiDmTableInfo*) - * in acdisam.h - * - Add new table definition to the dispatch table in dmtable.c (AcpiDmTableData) - * If a simple table (with no subtables), no disassembly code is needed. - * Otherwise, create the AcpiDmDump* function for to disassemble the table - * and add it to the dmtbdump.c file. - * - Add an external declaration for the new AcpiDmDump* function in acdisasm.h - * - Add the new AcpiDmDump* function to the dispatch table in dmtable.c - * - Create a template for the new table - * - Add data table compiler support - * - * How to add a new data type (ACPI_DMT_*): - * - * - Add new type at the end of the ACPI_DMT list in acdisasm.h - * - Add length and implementation cases in dmtable.c (disassembler) - * - Add type and length cases in dtutils.c (DT compiler) - */ - -/* - * Macros used to generate offsets to specific table fields - */ -#define ACPI_FACS_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_FACS,f) -#define ACPI_GAS_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_GENERIC_ADDRESS,f) -#define ACPI_HDR_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_HEADER,f) -#define ACPI_RSDP_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_RSDP,f) -#define ACPI_BERT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_BERT,f) -#define ACPI_BGRT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_BGRT,f) -#define ACPI_BOOT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_BOOT,f) -#define ACPI_CPEP_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_CPEP,f) -#define ACPI_DBG2_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_DBG2,f) -#define ACPI_DBGP_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_DBGP,f) -#define ACPI_DMAR_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_DMAR,f) -#define ACPI_DRTM_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_DRTM,f) -#define ACPI_ECDT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_ECDT,f) -#define ACPI_EINJ_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_EINJ,f) -#define ACPI_ERST_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_ERST,f) -#define ACPI_GTDT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_GTDT,f) -#define ACPI_HEST_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_HEST,f) -#define ACPI_HPET_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_HPET,f) -#define ACPI_IORT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_IORT,f) -#define ACPI_IVRS_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_IVRS,f) -#define ACPI_MADT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_MADT,f) -#define ACPI_MCFG_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_MCFG,f) -#define ACPI_MCHI_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_MCHI,f) -#define ACPI_MPST_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_MPST,f) -#define ACPI_MSCT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_MSCT,f) -#define ACPI_NFIT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_NFIT,f) -#define ACPI_PCCT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_PCCT,f) -#define ACPI_PMTT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_PMTT,f) -#define ACPI_S3PT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_S3PT,f) -#define ACPI_SBST_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_SBST,f) -#define ACPI_SLIT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_SLIT,f) -#define ACPI_SPCR_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_SPCR,f) -#define ACPI_SPMI_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_SPMI,f) -#define ACPI_SRAT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_SRAT,f) -#define ACPI_STAO_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_STAO,f) -#define ACPI_TCPA_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_TCPA_HDR,f) -#define ACPI_TPM2_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_TPM2,f) -#define ACPI_UEFI_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_UEFI,f) -#define ACPI_WAET_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_WAET,f) -#define ACPI_WDAT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_WDAT,f) -#define ACPI_WDDT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_WDDT,f) -#define ACPI_WDRT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_WDRT,f) -#define ACPI_WPBT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_WPBT,f) -#define ACPI_XENV_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_XENV,f) - -/* Subtables */ - -#define ACPI_ASF0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_ASF_INFO,f) -#define ACPI_ASF1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_ASF_ALERT,f) -#define ACPI_ASF1a_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_ASF_ALERT_DATA,f) -#define ACPI_ASF2_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_ASF_REMOTE,f) -#define ACPI_ASF2a_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_ASF_CONTROL_DATA,f) -#define ACPI_ASF3_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_ASF_RMCP,f) -#define ACPI_ASF4_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_ASF_ADDRESS,f) -#define ACPI_CPEP0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_CPEP_POLLING,f) -#define ACPI_CSRT0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_CSRT_GROUP,f) -#define ACPI_CSRT1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_CSRT_SHARED_INFO,f) -#define ACPI_CSRT2_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_CSRT_DESCRIPTOR,f) -#define ACPI_DBG20_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_DBG2_DEVICE,f) -#define ACPI_DMARS_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_DMAR_DEVICE_SCOPE,f) -#define ACPI_DMAR0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_DMAR_HARDWARE_UNIT,f) -#define ACPI_DMAR1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_DMAR_RESERVED_MEMORY,f) -#define ACPI_DMAR2_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_DMAR_ATSR,f) -#define ACPI_DMAR3_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_DMAR_RHSA,f) -#define ACPI_DMAR4_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_DMAR_ANDD,f) -#define ACPI_DRTM0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_DRTM_VTABLE_LIST,f) -#define ACPI_DRTM1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_DRTM_RESOURCE_LIST,f) -#define ACPI_DRTM1a_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_DRTM_RESOURCE,f) -#define ACPI_DRTM2_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_DRTM_DPS_ID,f) -#define ACPI_EINJ0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_WHEA_HEADER,f) -#define ACPI_ERST0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_WHEA_HEADER,f) -#define ACPI_FPDTH_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_FPDT_HEADER,f) -#define ACPI_FPDT0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_FPDT_BOOT,f) -#define ACPI_FPDT1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_FPDT_S3PT_PTR,f) -#define ACPI_GTDT0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_GTDT_TIMER_BLOCK,f) -#define ACPI_GTDT0a_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_GTDT_TIMER_ENTRY,f) -#define ACPI_GTDT1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_GTDT_WATCHDOG,f) -#define ACPI_GTDTH_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_GTDT_HEADER,f) -#define ACPI_HEST0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_HEST_IA_MACHINE_CHECK,f) -#define ACPI_HEST1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_HEST_IA_CORRECTED,f) -#define ACPI_HEST2_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_HEST_IA_NMI,f) -#define ACPI_HEST6_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_HEST_AER_ROOT,f) -#define ACPI_HEST7_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_HEST_AER,f) -#define ACPI_HEST8_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_HEST_AER_BRIDGE,f) -#define ACPI_HEST9_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_HEST_GENERIC,f) -#define ACPI_HESTN_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_HEST_NOTIFY,f) -#define ACPI_HESTB_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_HEST_IA_ERROR_BANK,f) -#define ACPI_IORT0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_IORT_ITS_GROUP,f) -#define ACPI_IORT1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_IORT_NAMED_COMPONENT,f) -#define ACPI_IORT2_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_IORT_ROOT_COMPLEX,f) -#define ACPI_IORT3_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_IORT_SMMU,f) -#define ACPI_IORTA_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_IORT_MEMORY_ACCESS,f) -#define ACPI_IORTH_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_IORT_NODE,f) -#define ACPI_IORTM_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_IORT_ID_MAPPING,f) -#define ACPI_IVRSH_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_IVRS_HEADER,f) -#define ACPI_IVRS0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_IVRS_HARDWARE,f) -#define ACPI_IVRS1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_IVRS_MEMORY,f) -#define ACPI_IVRSD_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_IVRS_DE_HEADER,f) -#define ACPI_IVRS8A_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_IVRS_DEVICE8A,f) -#define ACPI_IVRS8B_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_IVRS_DEVICE8B,f) -#define ACPI_IVRS8C_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_IVRS_DEVICE8C,f) -#define ACPI_LPITH_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_LPIT_HEADER,f) -#define ACPI_LPIT0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_LPIT_NATIVE,f) -#define ACPI_MADT0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MADT_LOCAL_APIC,f) -#define ACPI_MADT1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MADT_IO_APIC,f) -#define ACPI_MADT2_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MADT_INTERRUPT_OVERRIDE,f) -#define ACPI_MADT3_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MADT_NMI_SOURCE,f) -#define ACPI_MADT4_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MADT_LOCAL_APIC_NMI,f) -#define ACPI_MADT5_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MADT_LOCAL_APIC_OVERRIDE,f) -#define ACPI_MADT6_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MADT_IO_SAPIC,f) -#define ACPI_MADT7_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MADT_LOCAL_SAPIC,f) -#define ACPI_MADT8_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MADT_INTERRUPT_SOURCE,f) -#define ACPI_MADT9_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MADT_LOCAL_X2APIC,f) -#define ACPI_MADT10_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MADT_LOCAL_X2APIC_NMI,f) -#define ACPI_MADT11_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MADT_GENERIC_INTERRUPT,f) -#define ACPI_MADT12_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MADT_GENERIC_DISTRIBUTOR,f) -#define ACPI_MADT13_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MADT_GENERIC_MSI_FRAME,f) -#define ACPI_MADT14_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MADT_GENERIC_REDISTRIBUTOR,f) -#define ACPI_MADT15_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MADT_GENERIC_TRANSLATOR,f) -#define ACPI_MADTH_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_SUBTABLE_HEADER,f) -#define ACPI_MCFG0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MCFG_ALLOCATION,f) -#define ACPI_MPST0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MPST_POWER_NODE,f) -#define ACPI_MPST0A_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MPST_POWER_STATE,f) -#define ACPI_MPST0B_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MPST_COMPONENT,f) -#define ACPI_MPST1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MPST_DATA_HDR,f) -#define ACPI_MPST2_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MPST_POWER_DATA,f) -#define ACPI_MSCT0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MSCT_PROXIMITY,f) -#define ACPI_MTMR0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MTMR_ENTRY,f) -#define ACPI_NFITH_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_NFIT_HEADER,f) -#define ACPI_NFIT0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_NFIT_SYSTEM_ADDRESS,f) -#define ACPI_NFIT1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_NFIT_MEMORY_MAP,f) -#define ACPI_NFIT2_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_NFIT_INTERLEAVE,f) -#define ACPI_NFIT3_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_NFIT_SMBIOS,f) -#define ACPI_NFIT4_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_NFIT_CONTROL_REGION,f) -#define ACPI_NFIT5_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_NFIT_DATA_REGION,f) -#define ACPI_NFIT6_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_NFIT_FLUSH_ADDRESS,f) -#define ACPI_PCCT0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_PCCT_SUBSPACE,f) -#define ACPI_PCCT1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_PCCT_HW_REDUCED,f) -#define ACPI_PMTT0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_PMTT_SOCKET,f) -#define ACPI_PMTT1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_PMTT_CONTROLLER,f) -#define ACPI_PMTT1A_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_PMTT_DOMAIN,f) -#define ACPI_PMTT2_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_PMTT_PHYSICAL_COMPONENT,f) -#define ACPI_PMTTH_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_PMTT_HEADER,f) -#define ACPI_S3PTH_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_S3PT_HEADER,f) -#define ACPI_S3PT0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_S3PT_RESUME,f) -#define ACPI_S3PT1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_S3PT_SUSPEND,f) -#define ACPI_SLIC_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_SLIC,f) -#define ACPI_SRATH_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_SUBTABLE_HEADER,f) -#define ACPI_SRAT0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_SRAT_CPU_AFFINITY,f) -#define ACPI_SRAT1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_SRAT_MEM_AFFINITY,f) -#define ACPI_SRAT2_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_SRAT_X2APIC_CPU_AFFINITY,f) -#define ACPI_SRAT3_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_SRAT_GICC_AFFINITY,f) -#define ACPI_TCPA_CLIENT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_TCPA_CLIENT,f) -#define ACPI_TCPA_SERVER_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_TCPA_SERVER,f) -#define ACPI_VRTC0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_VRTC_ENTRY,f) -#define ACPI_WDAT0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_WDAT_ENTRY,f) - -/* - * Simplify access to flag fields by breaking them up into bytes - */ -#define ACPI_FLAG_OFFSET(d,f,o) (UINT16) (ACPI_OFFSET (d,f) + o) - -/* Flags */ - -#define ACPI_DRTM_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_TABLE_DRTM,f,o) -#define ACPI_DRTM1a_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_DRTM_RESOURCE,f,o) -#define ACPI_FADT_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_TABLE_FADT,f,o) -#define ACPI_FACS_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_TABLE_FACS,f,o) -#define ACPI_HPET_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_TABLE_HPET,f,o) -#define ACPI_SRAT0_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_SRAT_CPU_AFFINITY,f,o) -#define ACPI_SRAT1_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_SRAT_MEM_AFFINITY,f,o) -#define ACPI_SRAT2_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_SRAT_X2APIC_CPU_AFFINITY,f,o) -#define ACPI_SRAT3_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_SRAT_GICC_AFFINITY,f,o) -#define ACPI_GTDT_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_TABLE_GTDT,f,o) -#define ACPI_GTDT0a_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_GTDT_TIMER_ENTRY,f,o) -#define ACPI_GTDT1_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_GTDT_WATCHDOG,f,o) -#define ACPI_IORT3_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_IORT_SMMU,f,o) -#define ACPI_IORTA_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_IORT_MEMORY_ACCESS,f,o) -#define ACPI_IORTM_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_IORT_ID_MAPPING,f,o) -#define ACPI_LPITH_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_LPIT_HEADER,f,o) -#define ACPI_MADT_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_TABLE_MADT,f,o) -#define ACPI_MADT0_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_MADT_LOCAL_APIC,f,o) -#define ACPI_MADT2_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_MADT_INTERRUPT_OVERRIDE,f,o) -#define ACPI_MADT3_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_MADT_NMI_SOURCE,f,o) -#define ACPI_MADT4_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_MADT_LOCAL_APIC_NMI,f,o) -#define ACPI_MADT7_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_MADT_LOCAL_SAPIC,f,o) -#define ACPI_MADT8_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_MADT_INTERRUPT_SOURCE,f,o) -#define ACPI_MADT9_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_MADT_LOCAL_X2APIC,f,o) -#define ACPI_MADT10_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_MADT_LOCAL_X2APIC_NMI,f,o) -#define ACPI_MADT11_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_MADT_GENERIC_INTERRUPT,f,o) -#define ACPI_MADT13_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_MADT_GENERIC_MSI_FRAME,f,o) -#define ACPI_MPST0_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_MPST_POWER_NODE,f,o) -#define ACPI_MPST2_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_MPST_POWER_DATA,f,o) -#define ACPI_NFIT0_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_NFIT_SYSTEM_ADDRESS,f,o) -#define ACPI_NFIT1_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_NFIT_MEMORY_MAP,f,o) -#define ACPI_NFIT4_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_NFIT_CONTROL_REGION,f,o) -#define ACPI_PCCT_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_TABLE_PCCT,f,o) -#define ACPI_PCCT1_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_PCCT_HW_REDUCED,f,o) -#define ACPI_PMTTH_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_PMTT_HEADER,f,o) -#define ACPI_WDDT_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_TABLE_WDDT,f,o) -#define ACPI_EINJ0_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_WHEA_HEADER,f,o) -#define ACPI_ERST0_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_WHEA_HEADER,f,o) -#define ACPI_HEST0_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_HEST_IA_MACHINE_CHECK,f,o) -#define ACPI_HEST1_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_HEST_IA_CORRECTED,f,o) -#define ACPI_HEST6_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_HEST_AER_ROOT,f,o) - -/* - * Required terminator for all tables below - */ -#define ACPI_DMT_TERMINATOR {ACPI_DMT_EXIT, 0, NULL, 0} -#define ACPI_DMT_NEW_LINE {ACPI_DMT_EXTRA_TEXT, 0, "\n", 0} - - -/* - * ACPI Table Information, used to dump formatted ACPI tables - * - * Each entry is of the form: - */ - -/******************************************************************************* - * - * Common ACPI table header - * - ******************************************************************************/ - -ACPI_DMTABLE_INFO AcpiDmTableInfoHeader[] = -{ - {ACPI_DMT_SIG, ACPI_HDR_OFFSET (Signature[0]), "Signature", 0}, - {ACPI_DMT_UINT32, ACPI_HDR_OFFSET (Length), "Table Length", DT_LENGTH}, - {ACPI_DMT_UINT8, ACPI_HDR_OFFSET (Revision), "Revision", 0}, - {ACPI_DMT_CHKSUM, ACPI_HDR_OFFSET (Checksum), "Checksum", 0}, - {ACPI_DMT_NAME6, ACPI_HDR_OFFSET (OemId[0]), "Oem ID", 0}, - {ACPI_DMT_NAME8, ACPI_HDR_OFFSET (OemTableId[0]), "Oem Table ID", 0}, - {ACPI_DMT_UINT32, ACPI_HDR_OFFSET (OemRevision), "Oem Revision", 0}, - {ACPI_DMT_NAME4, ACPI_HDR_OFFSET (AslCompilerId[0]), "Asl Compiler ID", 0}, - {ACPI_DMT_UINT32, ACPI_HDR_OFFSET (AslCompilerRevision), "Asl Compiler Revision", 0}, - ACPI_DMT_TERMINATOR -}; - - -/******************************************************************************* - * - * GAS - Generic Address Structure - * - ******************************************************************************/ - -ACPI_DMTABLE_INFO AcpiDmTableInfoGas[] = -{ - {ACPI_DMT_SPACEID, ACPI_GAS_OFFSET (SpaceId), "Space ID", 0}, - {ACPI_DMT_UINT8, ACPI_GAS_OFFSET (BitWidth), "Bit Width", 0}, - {ACPI_DMT_UINT8, ACPI_GAS_OFFSET (BitOffset), "Bit Offset", 0}, - {ACPI_DMT_ACCWIDTH, ACPI_GAS_OFFSET (AccessWidth), "Encoded Access Width", 0}, - {ACPI_DMT_UINT64, ACPI_GAS_OFFSET (Address), "Address", 0}, - ACPI_DMT_TERMINATOR -}; - - -/******************************************************************************* - * - * RSDP - Root System Description Pointer (Signature is "RSD PTR ") - * - ******************************************************************************/ - -ACPI_DMTABLE_INFO AcpiDmTableInfoRsdp1[] = -{ - {ACPI_DMT_NAME8, ACPI_RSDP_OFFSET (Signature[0]), "Signature", 0}, - {ACPI_DMT_UINT8, ACPI_RSDP_OFFSET (Checksum), "Checksum", 0}, - {ACPI_DMT_NAME6, ACPI_RSDP_OFFSET (OemId[0]), "Oem ID", 0}, - {ACPI_DMT_UINT8, ACPI_RSDP_OFFSET (Revision), "Revision", 0}, - {ACPI_DMT_UINT32, ACPI_RSDP_OFFSET (RsdtPhysicalAddress), "RSDT Address", 0}, - ACPI_DMT_TERMINATOR -}; - -/* ACPI 2.0+ Extensions */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoRsdp2[] = -{ - {ACPI_DMT_UINT32, ACPI_RSDP_OFFSET (Length), "Length", DT_LENGTH}, - {ACPI_DMT_UINT64, ACPI_RSDP_OFFSET (XsdtPhysicalAddress), "XSDT Address", 0}, - {ACPI_DMT_UINT8, ACPI_RSDP_OFFSET (ExtendedChecksum), "Extended Checksum", 0}, - {ACPI_DMT_UINT24, ACPI_RSDP_OFFSET (Reserved[0]), "Reserved", 0}, - ACPI_DMT_TERMINATOR -}; - - -/******************************************************************************* - * - * FACS - Firmware ACPI Control Structure - * - ******************************************************************************/ - -ACPI_DMTABLE_INFO AcpiDmTableInfoFacs[] = -{ - {ACPI_DMT_NAME4, ACPI_FACS_OFFSET (Signature[0]), "Signature", 0}, - {ACPI_DMT_UINT32, ACPI_FACS_OFFSET (Length), "Length", DT_LENGTH}, - {ACPI_DMT_UINT32, ACPI_FACS_OFFSET (HardwareSignature), "Hardware Signature", 0}, - {ACPI_DMT_UINT32, ACPI_FACS_OFFSET (FirmwareWakingVector), "32 Firmware Waking Vector", 0}, - {ACPI_DMT_UINT32, ACPI_FACS_OFFSET (GlobalLock), "Global Lock", 0}, - {ACPI_DMT_UINT32, ACPI_FACS_OFFSET (Flags), "Flags (decoded below)", DT_FLAG}, - {ACPI_DMT_FLAG0, ACPI_FACS_FLAG_OFFSET (Flags,0), "S4BIOS Support Present", 0}, - {ACPI_DMT_FLAG1, ACPI_FACS_FLAG_OFFSET (Flags,0), "64-bit Wake Supported (V2)", 0}, - {ACPI_DMT_UINT64, ACPI_FACS_OFFSET (XFirmwareWakingVector), "64 Firmware Waking Vector", 0}, - {ACPI_DMT_UINT8, ACPI_FACS_OFFSET (Version), "Version", 0}, - {ACPI_DMT_UINT24, ACPI_FACS_OFFSET (Reserved[0]), "Reserved", 0}, - {ACPI_DMT_UINT32, ACPI_FACS_OFFSET (OspmFlags), "OspmFlags (decoded below)", DT_FLAG}, - {ACPI_DMT_FLAG0, ACPI_FACS_FLAG_OFFSET (OspmFlags,0), "64-bit Wake Env Required (V2)", 0}, - ACPI_DMT_TERMINATOR -}; - - -/******************************************************************************* - * - * FADT - Fixed ACPI Description Table (Signature is FACP) - * - ******************************************************************************/ - -/* ACPI 1.0 FADT (Version 1) */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoFadt1[] = -{ - {ACPI_DMT_UINT32, ACPI_FADT_OFFSET (Facs), "FACS Address", 0}, - {ACPI_DMT_UINT32, ACPI_FADT_OFFSET (Dsdt), "DSDT Address", DT_NON_ZERO}, - {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (Model), "Model", 0}, - {ACPI_DMT_FADTPM, ACPI_FADT_OFFSET (PreferredProfile), "PM Profile", 0}, - {ACPI_DMT_UINT16, ACPI_FADT_OFFSET (SciInterrupt), "SCI Interrupt", 0}, - {ACPI_DMT_UINT32, ACPI_FADT_OFFSET (SmiCommand), "SMI Command Port", 0}, - {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (AcpiEnable), "ACPI Enable Value", 0}, - {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (AcpiDisable), "ACPI Disable Value", 0}, - {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (S4BiosRequest), "S4BIOS Command", 0}, - {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (PstateControl), "P-State Control", 0}, - {ACPI_DMT_UINT32, ACPI_FADT_OFFSET (Pm1aEventBlock), "PM1A Event Block Address", 0}, - {ACPI_DMT_UINT32, ACPI_FADT_OFFSET (Pm1bEventBlock), "PM1B Event Block Address", 0}, - {ACPI_DMT_UINT32, ACPI_FADT_OFFSET (Pm1aControlBlock), "PM1A Control Block Address", 0}, - {ACPI_DMT_UINT32, ACPI_FADT_OFFSET (Pm1bControlBlock), "PM1B Control Block Address", 0}, - {ACPI_DMT_UINT32, ACPI_FADT_OFFSET (Pm2ControlBlock), "PM2 Control Block Address", 0}, - {ACPI_DMT_UINT32, ACPI_FADT_OFFSET (PmTimerBlock), "PM Timer Block Address", 0}, - {ACPI_DMT_UINT32, ACPI_FADT_OFFSET (Gpe0Block), "GPE0 Block Address", 0}, - {ACPI_DMT_UINT32, ACPI_FADT_OFFSET (Gpe1Block), "GPE1 Block Address", 0}, - {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (Pm1EventLength), "PM1 Event Block Length", 0}, - {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (Pm1ControlLength), "PM1 Control Block Length", 0}, - {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (Pm2ControlLength), "PM2 Control Block Length", 0}, - {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (PmTimerLength), "PM Timer Block Length", 0}, - {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (Gpe0BlockLength), "GPE0 Block Length", 0}, - {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (Gpe1BlockLength), "GPE1 Block Length", 0}, - {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (Gpe1Base), "GPE1 Base Offset", 0}, - {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (CstControl), "_CST Support", 0}, - {ACPI_DMT_UINT16, ACPI_FADT_OFFSET (C2Latency), "C2 Latency", 0}, - {ACPI_DMT_UINT16, ACPI_FADT_OFFSET (C3Latency), "C3 Latency", 0}, - {ACPI_DMT_UINT16, ACPI_FADT_OFFSET (FlushSize), "CPU Cache Size", 0}, - {ACPI_DMT_UINT16, ACPI_FADT_OFFSET (FlushStride), "Cache Flush Stride", 0}, - {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (DutyOffset), "Duty Cycle Offset", 0}, - {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (DutyWidth), "Duty Cycle Width", 0}, - {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (DayAlarm), "RTC Day Alarm Index", 0}, - {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (MonthAlarm), "RTC Month Alarm Index", 0}, - {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (Century), "RTC Century Index", 0}, - {ACPI_DMT_UINT16, ACPI_FADT_OFFSET (BootFlags), "Boot Flags (decoded below)", DT_FLAG}, - - /* Boot Architecture Flags byte 0 */ - - {ACPI_DMT_FLAG0, ACPI_FADT_FLAG_OFFSET (BootFlags,0), "Legacy Devices Supported (V2)", 0}, - {ACPI_DMT_FLAG1, ACPI_FADT_FLAG_OFFSET (BootFlags,0), "8042 Present on ports 60/64 (V2)", 0}, - {ACPI_DMT_FLAG2, ACPI_FADT_FLAG_OFFSET (BootFlags,0), "VGA Not Present (V4)", 0}, - {ACPI_DMT_FLAG3, ACPI_FADT_FLAG_OFFSET (BootFlags,0), "MSI Not Supported (V4)", 0}, - {ACPI_DMT_FLAG4, ACPI_FADT_FLAG_OFFSET (BootFlags,0), "PCIe ASPM Not Supported (V4)", 0}, - {ACPI_DMT_FLAG5, ACPI_FADT_FLAG_OFFSET (BootFlags,0), "CMOS RTC Not Present (V5)", 0}, - - {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (Reserved), "Reserved", 0}, - {ACPI_DMT_UINT32, ACPI_FADT_OFFSET (Flags), "Flags (decoded below)", DT_FLAG}, - - /* Flags byte 0 */ - - {ACPI_DMT_FLAG0, ACPI_FADT_FLAG_OFFSET (Flags,0), "WBINVD instruction is operational (V1)", 0}, - {ACPI_DMT_FLAG1, ACPI_FADT_FLAG_OFFSET (Flags,0), "WBINVD flushes all caches (V1)", 0}, - {ACPI_DMT_FLAG2, ACPI_FADT_FLAG_OFFSET (Flags,0), "All CPUs support C1 (V1)", 0}, - {ACPI_DMT_FLAG3, ACPI_FADT_FLAG_OFFSET (Flags,0), "C2 works on MP system (V1)", 0}, - {ACPI_DMT_FLAG4, ACPI_FADT_FLAG_OFFSET (Flags,0), "Control Method Power Button (V1)", 0}, - {ACPI_DMT_FLAG5, ACPI_FADT_FLAG_OFFSET (Flags,0), "Control Method Sleep Button (V1)", 0}, - {ACPI_DMT_FLAG6, ACPI_FADT_FLAG_OFFSET (Flags,0), "RTC wake not in fixed reg space (V1)", 0}, - {ACPI_DMT_FLAG7, ACPI_FADT_FLAG_OFFSET (Flags,0), "RTC can wake system from S4 (V1)", 0}, - - /* Flags byte 1 */ - - {ACPI_DMT_FLAG0, ACPI_FADT_FLAG_OFFSET (Flags,1), "32-bit PM Timer (V1)", 0}, - {ACPI_DMT_FLAG1, ACPI_FADT_FLAG_OFFSET (Flags,1), "Docking Supported (V1)", 0}, - {ACPI_DMT_FLAG2, ACPI_FADT_FLAG_OFFSET (Flags,1), "Reset Register Supported (V2)", 0}, - {ACPI_DMT_FLAG3, ACPI_FADT_FLAG_OFFSET (Flags,1), "Sealed Case (V3)", 0}, - {ACPI_DMT_FLAG4, ACPI_FADT_FLAG_OFFSET (Flags,1), "Headless - No Video (V3)", 0}, - {ACPI_DMT_FLAG5, ACPI_FADT_FLAG_OFFSET (Flags,1), "Use native instr after SLP_TYPx (V3)", 0}, - {ACPI_DMT_FLAG6, ACPI_FADT_FLAG_OFFSET (Flags,1), "PCIEXP_WAK Bits Supported (V4)", 0}, - {ACPI_DMT_FLAG7, ACPI_FADT_FLAG_OFFSET (Flags,1), "Use Platform Timer (V4)", 0}, - - /* Flags byte 2 */ - - {ACPI_DMT_FLAG0, ACPI_FADT_FLAG_OFFSET (Flags,2), "RTC_STS valid on S4 wake (V4)", 0}, - {ACPI_DMT_FLAG1, ACPI_FADT_FLAG_OFFSET (Flags,2), "Remote Power-on capable (V4)", 0}, - {ACPI_DMT_FLAG2, ACPI_FADT_FLAG_OFFSET (Flags,2), "Use APIC Cluster Model (V4)", 0}, - {ACPI_DMT_FLAG3, ACPI_FADT_FLAG_OFFSET (Flags,2), "Use APIC Physical Destination Mode (V4)", 0}, - {ACPI_DMT_FLAG4, ACPI_FADT_FLAG_OFFSET (Flags,2), "Hardware Reduced (V5)", 0}, - {ACPI_DMT_FLAG5, ACPI_FADT_FLAG_OFFSET (Flags,2), "Low Power S0 Idle (V5)", 0}, - ACPI_DMT_TERMINATOR -}; - -/* ACPI 1.0 MS Extensions (FADT version 2) */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoFadt2[] = -{ - {ACPI_DMT_GAS, ACPI_FADT_OFFSET (ResetRegister), "Reset Register", 0}, - {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (ResetValue), "Value to cause reset", 0}, - {ACPI_DMT_UINT16, ACPI_FADT_OFFSET (ArmBootFlags), "Reserved", 0}, - {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (MinorRevision), "Reserved", 0}, - ACPI_DMT_TERMINATOR -}; - -/* ACPI 2.0+ Extensions (FADT version 3, 4, and 5) */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoFadt3[] = -{ - {ACPI_DMT_GAS, ACPI_FADT_OFFSET (ResetRegister), "Reset Register", 0}, - {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (ResetValue), "Value to cause reset", 0}, - {ACPI_DMT_UINT16, ACPI_FADT_OFFSET (ArmBootFlags), "ARM Flags (decoded below)", DT_FLAG}, - {ACPI_DMT_FLAG0, ACPI_FADT_FLAG_OFFSET(ArmBootFlags,0), "PSCI Compliant", 0}, - {ACPI_DMT_FLAG1, ACPI_FADT_FLAG_OFFSET(ArmBootFlags,0), "Must use HVC for PSCI", 0}, - ACPI_DMT_NEW_LINE, - {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (MinorRevision), "FADT Minor Revision", 0}, - {ACPI_DMT_UINT64, ACPI_FADT_OFFSET (XFacs), "FACS Address", 0}, - {ACPI_DMT_UINT64, ACPI_FADT_OFFSET (XDsdt), "DSDT Address", 0}, - {ACPI_DMT_GAS, ACPI_FADT_OFFSET (XPm1aEventBlock), "PM1A Event Block", 0}, - {ACPI_DMT_GAS, ACPI_FADT_OFFSET (XPm1bEventBlock), "PM1B Event Block", 0}, - {ACPI_DMT_GAS, ACPI_FADT_OFFSET (XPm1aControlBlock), "PM1A Control Block", 0}, - {ACPI_DMT_GAS, ACPI_FADT_OFFSET (XPm1bControlBlock), "PM1B Control Block", 0}, - {ACPI_DMT_GAS, ACPI_FADT_OFFSET (XPm2ControlBlock), "PM2 Control Block", 0}, - {ACPI_DMT_GAS, ACPI_FADT_OFFSET (XPmTimerBlock), "PM Timer Block", 0}, - {ACPI_DMT_GAS, ACPI_FADT_OFFSET (XGpe0Block), "GPE0 Block", 0}, - {ACPI_DMT_GAS, ACPI_FADT_OFFSET (XGpe1Block), "GPE1 Block", 0}, - ACPI_DMT_TERMINATOR -}; - -/* ACPI 5.0 Extensions (FADT version 5) */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoFadt5[] = -{ - {ACPI_DMT_GAS, ACPI_FADT_OFFSET (SleepControl), "Sleep Control Register", 0}, - {ACPI_DMT_GAS, ACPI_FADT_OFFSET (SleepStatus), "Sleep Status Register", 0}, - ACPI_DMT_TERMINATOR -}; - -/* ACPI 6.0 Extensions (FADT version 6) */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoFadt6[] = -{ - {ACPI_DMT_UINT64, ACPI_FADT_OFFSET (HypervisorId), "Hypervisor ID", 0}, - ACPI_DMT_TERMINATOR -}; - - -/* - * Remaining tables are not consumed directly by the ACPICA subsystem - */ - -/******************************************************************************* - * - * ASF - Alert Standard Format table (Signature "ASF!") - * - ******************************************************************************/ - -/* Common Subtable header (one per Subtable) */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoAsfHdr[] = -{ - {ACPI_DMT_ASF, ACPI_ASF0_OFFSET (Header.Type), "Subtable Type", 0}, - {ACPI_DMT_UINT8, ACPI_ASF0_OFFSET (Header.Reserved), "Reserved", 0}, - {ACPI_DMT_UINT16, ACPI_ASF0_OFFSET (Header.Length), "Length", DT_LENGTH}, - ACPI_DMT_TERMINATOR -}; - -/* 0: ASF Information */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoAsf0[] = -{ - {ACPI_DMT_UINT8, ACPI_ASF0_OFFSET (MinResetValue), "Minimum Reset Value", 0}, - {ACPI_DMT_UINT8, ACPI_ASF0_OFFSET (MinPollInterval), "Minimum Polling Interval", 0}, - {ACPI_DMT_UINT16, ACPI_ASF0_OFFSET (SystemId), "System ID", 0}, - {ACPI_DMT_UINT32, ACPI_ASF0_OFFSET (MfgId), "Manufacturer ID", 0}, - {ACPI_DMT_UINT8, ACPI_ASF0_OFFSET (Flags), "Flags", 0}, - {ACPI_DMT_UINT24, ACPI_ASF0_OFFSET (Reserved2[0]), "Reserved", 0}, - ACPI_DMT_TERMINATOR -}; - -/* 1: ASF Alerts */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoAsf1[] = -{ - {ACPI_DMT_UINT8, ACPI_ASF1_OFFSET (AssertMask), "AssertMask", 0}, - {ACPI_DMT_UINT8, ACPI_ASF1_OFFSET (DeassertMask), "DeassertMask", 0}, - {ACPI_DMT_UINT8, ACPI_ASF1_OFFSET (Alerts), "Alert Count", 0}, - {ACPI_DMT_UINT8, ACPI_ASF1_OFFSET (DataLength), "Alert Data Length", 0}, - ACPI_DMT_TERMINATOR -}; - -/* 1a: ASF Alert data */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoAsf1a[] = -{ - {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (Address), "Address", 0}, - {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (Command), "Command", 0}, - {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (Mask), "Mask", 0}, - {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (Value), "Value", 0}, - {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (SensorType), "SensorType", 0}, - {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (Type), "Type", 0}, - {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (Offset), "Offset", 0}, - {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (SourceType), "SourceType", 0}, - {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (Severity), "Severity", 0}, - {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (SensorNumber), "SensorNumber", 0}, - {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (Entity), "Entity", 0}, - {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (Instance), "Instance", 0}, - ACPI_DMT_TERMINATOR -}; - -/* 2: ASF Remote Control */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoAsf2[] = -{ - {ACPI_DMT_UINT8, ACPI_ASF2_OFFSET (Controls), "Control Count", 0}, - {ACPI_DMT_UINT8, ACPI_ASF2_OFFSET (DataLength), "Control Data Length", 0}, - {ACPI_DMT_UINT16, ACPI_ASF2_OFFSET (Reserved2), "Reserved", 0}, - ACPI_DMT_TERMINATOR -}; - -/* 2a: ASF Control data */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoAsf2a[] = -{ - {ACPI_DMT_UINT8, ACPI_ASF2a_OFFSET (Function), "Function", 0}, - {ACPI_DMT_UINT8, ACPI_ASF2a_OFFSET (Address), "Address", 0}, - {ACPI_DMT_UINT8, ACPI_ASF2a_OFFSET (Command), "Command", 0}, - {ACPI_DMT_UINT8, ACPI_ASF2a_OFFSET (Value), "Value", 0}, - ACPI_DMT_TERMINATOR -}; - -/* 3: ASF RMCP Boot Options */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoAsf3[] = -{ - {ACPI_DMT_BUF7, ACPI_ASF3_OFFSET (Capabilities[0]), "Capabilities", 0}, - {ACPI_DMT_UINT8, ACPI_ASF3_OFFSET (CompletionCode), "Completion Code", 0}, - {ACPI_DMT_UINT32, ACPI_ASF3_OFFSET (EnterpriseId), "Enterprise ID", 0}, - {ACPI_DMT_UINT8, ACPI_ASF3_OFFSET (Command), "Command", 0}, - {ACPI_DMT_UINT16, ACPI_ASF3_OFFSET (Parameter), "Parameter", 0}, - {ACPI_DMT_UINT16, ACPI_ASF3_OFFSET (BootOptions), "Boot Options", 0}, - {ACPI_DMT_UINT16, ACPI_ASF3_OFFSET (OemParameters), "Oem Parameters", 0}, - ACPI_DMT_TERMINATOR -}; - -/* 4: ASF Address */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoAsf4[] = -{ - {ACPI_DMT_UINT8, ACPI_ASF4_OFFSET (EpromAddress), "Eprom Address", 0}, - {ACPI_DMT_UINT8, ACPI_ASF4_OFFSET (Devices), "Device Count", DT_COUNT}, - ACPI_DMT_TERMINATOR -}; - - -/******************************************************************************* - * - * BERT - Boot Error Record table - * - ******************************************************************************/ - -ACPI_DMTABLE_INFO AcpiDmTableInfoBert[] = -{ - {ACPI_DMT_UINT32, ACPI_BERT_OFFSET (RegionLength), "Boot Error Region Length", 0}, - {ACPI_DMT_UINT64, ACPI_BERT_OFFSET (Address), "Boot Error Region Address", 0}, - ACPI_DMT_TERMINATOR -}; - - -/******************************************************************************* - * - * BGRT - Boot Graphics Resource Table (ACPI 5.0) - * - ******************************************************************************/ - -ACPI_DMTABLE_INFO AcpiDmTableInfoBgrt[] = -{ - {ACPI_DMT_UINT16, ACPI_BGRT_OFFSET (Version), "Version", 0}, - {ACPI_DMT_UINT8, ACPI_BGRT_OFFSET (Status), "Status", 0}, - {ACPI_DMT_UINT8, ACPI_BGRT_OFFSET (ImageType), "Image Type", 0}, - {ACPI_DMT_UINT64, ACPI_BGRT_OFFSET (ImageAddress), "Image Address", 0}, - {ACPI_DMT_UINT32, ACPI_BGRT_OFFSET (ImageOffsetX), "Image OffsetX", 0}, - {ACPI_DMT_UINT32, ACPI_BGRT_OFFSET (ImageOffsetY), "Image OffsetY", 0}, - ACPI_DMT_TERMINATOR -}; - - -/******************************************************************************* - * - * BOOT - Simple Boot Flag Table - * - ******************************************************************************/ - -ACPI_DMTABLE_INFO AcpiDmTableInfoBoot[] = -{ - {ACPI_DMT_UINT8, ACPI_BOOT_OFFSET (CmosIndex), "Boot Register Index", 0}, - {ACPI_DMT_UINT24, ACPI_BOOT_OFFSET (Reserved[0]), "Reserved", 0}, - ACPI_DMT_TERMINATOR -}; - - -/******************************************************************************* - * - * CPEP - Corrected Platform Error Polling table - * - ******************************************************************************/ - -ACPI_DMTABLE_INFO AcpiDmTableInfoCpep[] = -{ - {ACPI_DMT_UINT64, ACPI_CPEP_OFFSET (Reserved), "Reserved", 0}, - ACPI_DMT_TERMINATOR -}; - -ACPI_DMTABLE_INFO AcpiDmTableInfoCpep0[] = -{ - {ACPI_DMT_UINT8, ACPI_CPEP0_OFFSET (Header.Type), "Subtable Type", 0}, - {ACPI_DMT_UINT8, ACPI_CPEP0_OFFSET (Header.Length), "Length", DT_LENGTH}, - {ACPI_DMT_UINT8, ACPI_CPEP0_OFFSET (Id), "Processor ID", 0}, - {ACPI_DMT_UINT8, ACPI_CPEP0_OFFSET (Eid), "Processor EID", 0}, - {ACPI_DMT_UINT32, ACPI_CPEP0_OFFSET (Interval), "Polling Interval", 0}, - ACPI_DMT_TERMINATOR -}; - - -/******************************************************************************* - * - * CSRT - Core System Resource Table - * - ******************************************************************************/ - -/* Main table consists only of the standard ACPI table header */ - -/* Resource Group subtable */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoCsrt0[] = -{ - {ACPI_DMT_UINT32, ACPI_CSRT0_OFFSET (Length), "Length", DT_LENGTH}, - {ACPI_DMT_UINT32, ACPI_CSRT0_OFFSET (VendorId), "Vendor ID", 0}, - {ACPI_DMT_UINT32, ACPI_CSRT0_OFFSET (SubvendorId), "Subvendor ID", 0}, - {ACPI_DMT_UINT16, ACPI_CSRT0_OFFSET (DeviceId), "Device ID", 0}, - {ACPI_DMT_UINT16, ACPI_CSRT0_OFFSET (SubdeviceId), "Subdevice ID", 0}, - {ACPI_DMT_UINT16, ACPI_CSRT0_OFFSET (Revision), "Revision", 0}, - {ACPI_DMT_UINT16, ACPI_CSRT0_OFFSET (Reserved), "Reserved", 0}, - {ACPI_DMT_UINT32, ACPI_CSRT0_OFFSET (SharedInfoLength), "Shared Info Length", 0}, - ACPI_DMT_TERMINATOR -}; - -/* Shared Info subtable */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoCsrt1[] = -{ - {ACPI_DMT_UINT16, ACPI_CSRT1_OFFSET (MajorVersion), "Major Version", 0}, - {ACPI_DMT_UINT16, ACPI_CSRT1_OFFSET (MinorVersion), "Minor Version", 0}, - {ACPI_DMT_UINT32, ACPI_CSRT1_OFFSET (MmioBaseLow), "MMIO Base Address Low", 0}, - {ACPI_DMT_UINT32, ACPI_CSRT1_OFFSET (MmioBaseHigh), "MMIO Base Address High", 0}, - {ACPI_DMT_UINT32, ACPI_CSRT1_OFFSET (GsiInterrupt), "GSI Interrupt", 0}, - {ACPI_DMT_UINT8, ACPI_CSRT1_OFFSET (InterruptPolarity), "Interrupt Polarity", 0}, - {ACPI_DMT_UINT8, ACPI_CSRT1_OFFSET (InterruptMode), "Interrupt Mode", 0}, - {ACPI_DMT_UINT8, ACPI_CSRT1_OFFSET (NumChannels), "Num Channels", 0}, - {ACPI_DMT_UINT8, ACPI_CSRT1_OFFSET (DmaAddressWidth), "DMA Address Width", 0}, - {ACPI_DMT_UINT16, ACPI_CSRT1_OFFSET (BaseRequestLine), "Base Request Line", 0}, - {ACPI_DMT_UINT16, ACPI_CSRT1_OFFSET (NumHandshakeSignals), "Num Handshake Signals", 0}, - {ACPI_DMT_UINT32, ACPI_CSRT1_OFFSET (MaxBlockSize), "Max Block Size", 0}, - ACPI_DMT_TERMINATOR -}; - - -/* Resource Descriptor subtable */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoCsrt2[] = -{ - {ACPI_DMT_UINT32, ACPI_CSRT2_OFFSET (Length), "Length", DT_LENGTH}, - {ACPI_DMT_UINT16, ACPI_CSRT2_OFFSET (Type), "Type", 0}, - {ACPI_DMT_UINT16, ACPI_CSRT2_OFFSET (Subtype), "Subtype", 0}, - {ACPI_DMT_UINT32, ACPI_CSRT2_OFFSET (Uid), "UID", 0}, - ACPI_DMT_TERMINATOR -}; - -ACPI_DMTABLE_INFO AcpiDmTableInfoCsrt2a[] = -{ - {ACPI_DMT_RAW_BUFFER, 0, "ResourceInfo", DT_OPTIONAL}, - ACPI_DMT_TERMINATOR -}; - - -/******************************************************************************* - * - * DBG2 - Debug Port Table 2 - * - ******************************************************************************/ - -ACPI_DMTABLE_INFO AcpiDmTableInfoDbg2[] = -{ - {ACPI_DMT_UINT32, ACPI_DBG2_OFFSET (InfoOffset), "Info Offset", 0}, - {ACPI_DMT_UINT32, ACPI_DBG2_OFFSET (InfoCount), "Info Count", 0}, - ACPI_DMT_TERMINATOR -}; - -/* Debug Device Information Subtable */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoDbg2Device[] = -{ - {ACPI_DMT_UINT8, ACPI_DBG20_OFFSET (Revision), "Revision", 0}, - {ACPI_DMT_UINT16, ACPI_DBG20_OFFSET (Length), "Length", DT_LENGTH}, - {ACPI_DMT_UINT8, ACPI_DBG20_OFFSET (RegisterCount), "Register Count", 0}, - {ACPI_DMT_UINT16, ACPI_DBG20_OFFSET (NamepathLength), "Namepath Length", 0}, - {ACPI_DMT_UINT16, ACPI_DBG20_OFFSET (NamepathOffset), "Namepath Offset", 0}, - {ACPI_DMT_UINT16, ACPI_DBG20_OFFSET (OemDataLength), "OEM Data Length", DT_DESCRIBES_OPTIONAL}, - {ACPI_DMT_UINT16, ACPI_DBG20_OFFSET (OemDataOffset), "OEM Data Offset", DT_DESCRIBES_OPTIONAL}, - {ACPI_DMT_UINT16, ACPI_DBG20_OFFSET (PortType), "Port Type", 0}, - {ACPI_DMT_UINT16, ACPI_DBG20_OFFSET (PortSubtype), "Port Subtype", 0}, - {ACPI_DMT_UINT16, ACPI_DBG20_OFFSET (Reserved), "Reserved", 0}, - {ACPI_DMT_UINT16, ACPI_DBG20_OFFSET (BaseAddressOffset), "Base Address Offset", 0}, - {ACPI_DMT_UINT16, ACPI_DBG20_OFFSET (AddressSizeOffset), "Address Size Offset", 0}, - ACPI_DMT_TERMINATOR -}; - -/* Variable-length data for the subtable */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoDbg2Addr[] = -{ - {ACPI_DMT_GAS, 0, "Base Address Register", 0}, - ACPI_DMT_TERMINATOR -}; - -ACPI_DMTABLE_INFO AcpiDmTableInfoDbg2Size[] = -{ - {ACPI_DMT_UINT32, 0, "Address Size", 0}, - ACPI_DMT_TERMINATOR -}; - -ACPI_DMTABLE_INFO AcpiDmTableInfoDbg2Name[] = -{ - {ACPI_DMT_STRING, 0, "Namepath", 0}, - ACPI_DMT_TERMINATOR -}; - -ACPI_DMTABLE_INFO AcpiDmTableInfoDbg2OemData[] = -{ - {ACPI_DMT_RAW_BUFFER, 0, "OEM Data", DT_OPTIONAL}, - ACPI_DMT_TERMINATOR -}; - - -/******************************************************************************* - * - * DBGP - Debug Port - * - ******************************************************************************/ - -ACPI_DMTABLE_INFO AcpiDmTableInfoDbgp[] = -{ - {ACPI_DMT_UINT8, ACPI_DBGP_OFFSET (Type), "Interface Type", 0}, - {ACPI_DMT_UINT24, ACPI_DBGP_OFFSET (Reserved[0]), "Reserved", 0}, - {ACPI_DMT_GAS, ACPI_DBGP_OFFSET (DebugPort), "Debug Port Register", 0}, - ACPI_DMT_TERMINATOR -}; - - -/******************************************************************************* - * - * DMAR - DMA Remapping table - * - ******************************************************************************/ - -ACPI_DMTABLE_INFO AcpiDmTableInfoDmar[] = -{ - {ACPI_DMT_UINT8, ACPI_DMAR_OFFSET (Width), "Host Address Width", 0}, - {ACPI_DMT_UINT8, ACPI_DMAR_OFFSET (Flags), "Flags", 0}, - {ACPI_DMT_BUF10, ACPI_DMAR_OFFSET (Reserved[0]), "Reserved", 0}, - ACPI_DMT_TERMINATOR -}; - -/* Common Subtable header (one per Subtable) */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoDmarHdr[] = -{ - {ACPI_DMT_DMAR, ACPI_DMAR0_OFFSET (Header.Type), "Subtable Type", 0}, - {ACPI_DMT_UINT16, ACPI_DMAR0_OFFSET (Header.Length), "Length", DT_LENGTH}, - ACPI_DMT_TERMINATOR -}; - -/* Common device scope entry */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoDmarScope[] = -{ - {ACPI_DMT_DMAR_SCOPE, ACPI_DMARS_OFFSET (EntryType), "Device Scope Type", 0}, - {ACPI_DMT_UINT8, ACPI_DMARS_OFFSET (Length), "Entry Length", DT_LENGTH}, - {ACPI_DMT_UINT16, ACPI_DMARS_OFFSET (Reserved), "Reserved", 0}, - {ACPI_DMT_UINT8, ACPI_DMARS_OFFSET (EnumerationId), "Enumeration ID", 0}, - {ACPI_DMT_UINT8, ACPI_DMARS_OFFSET (Bus), "PCI Bus Number", 0}, - ACPI_DMT_TERMINATOR -}; - -/* DMAR Subtables */ - -/* 0: Hardware Unit Definition */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoDmar0[] = -{ - {ACPI_DMT_UINT8, ACPI_DMAR0_OFFSET (Flags), "Flags", 0}, - {ACPI_DMT_UINT8, ACPI_DMAR0_OFFSET (Reserved), "Reserved", 0}, - {ACPI_DMT_UINT16, ACPI_DMAR0_OFFSET (Segment), "PCI Segment Number", 0}, - {ACPI_DMT_UINT64, ACPI_DMAR0_OFFSET (Address), "Register Base Address", 0}, - ACPI_DMT_TERMINATOR -}; - -/* 1: Reserved Memory Definition */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoDmar1[] = -{ - {ACPI_DMT_UINT16, ACPI_DMAR1_OFFSET (Reserved), "Reserved", 0}, - {ACPI_DMT_UINT16, ACPI_DMAR1_OFFSET (Segment), "PCI Segment Number", 0}, - {ACPI_DMT_UINT64, ACPI_DMAR1_OFFSET (BaseAddress), "Base Address", 0}, - {ACPI_DMT_UINT64, ACPI_DMAR1_OFFSET (EndAddress), "End Address (limit)", 0}, - ACPI_DMT_TERMINATOR -}; - -/* 2: Root Port ATS Capability Definition */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoDmar2[] = -{ - {ACPI_DMT_UINT8, ACPI_DMAR2_OFFSET (Flags), "Flags", 0}, - {ACPI_DMT_UINT8, ACPI_DMAR2_OFFSET (Reserved), "Reserved", 0}, - {ACPI_DMT_UINT16, ACPI_DMAR2_OFFSET (Segment), "PCI Segment Number", 0}, - ACPI_DMT_TERMINATOR -}; - -/* 3: Remapping Hardware Static Affinity Structure */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoDmar3[] = -{ - {ACPI_DMT_UINT32, ACPI_DMAR3_OFFSET (Reserved), "Reserved", 0}, - {ACPI_DMT_UINT64, ACPI_DMAR3_OFFSET (BaseAddress), "Base Address", 0}, - {ACPI_DMT_UINT32, ACPI_DMAR3_OFFSET (ProximityDomain), "Proximity Domain", 0}, - ACPI_DMT_TERMINATOR -}; - -/* 4: ACPI Namespace Device Declaration Structure */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoDmar4[] = -{ - {ACPI_DMT_UINT24, ACPI_DMAR4_OFFSET (Reserved[0]), "Reserved", 0}, - {ACPI_DMT_UINT8, ACPI_DMAR4_OFFSET (DeviceNumber), "Device Number", 0}, - {ACPI_DMT_STRING, ACPI_DMAR4_OFFSET (DeviceName[0]), "Device Name", 0}, - ACPI_DMT_TERMINATOR -}; - - -/******************************************************************************* - * - * DRTM - Dynamic Root of Trust for Measurement table - * - ******************************************************************************/ - -ACPI_DMTABLE_INFO AcpiDmTableInfoDrtm[] = -{ - {ACPI_DMT_UINT64, ACPI_DRTM_OFFSET (EntryBaseAddress), "Entry Base Address", 0}, - {ACPI_DMT_UINT64, ACPI_DRTM_OFFSET (EntryLength), "Entry Length", 0}, - {ACPI_DMT_UINT32, ACPI_DRTM_OFFSET (EntryAddress32), "Entry 32", 0}, - {ACPI_DMT_UINT64, ACPI_DRTM_OFFSET (EntryAddress64), "Entry 64", 0}, - {ACPI_DMT_UINT64, ACPI_DRTM_OFFSET (ExitAddress), "Exit Address", 0}, - {ACPI_DMT_UINT64, ACPI_DRTM_OFFSET (LogAreaAddress), "Log Area Start", 0}, - {ACPI_DMT_UINT32, ACPI_DRTM_OFFSET (LogAreaLength), "Log Area Length", 0}, - {ACPI_DMT_UINT64, ACPI_DRTM_OFFSET (ArchDependentAddress), "Arch Dependent Address", 0}, - {ACPI_DMT_UINT32, ACPI_DRTM_OFFSET (Flags), "Flags (decoded below)", 0}, - {ACPI_DMT_FLAG0, ACPI_DRTM_FLAG_OFFSET (Flags, 0), "Namespace in TCB", 0}, - {ACPI_DMT_FLAG1, ACPI_DRTM_FLAG_OFFSET (Flags, 0), "Gap Code on S3 Resume", 0}, - {ACPI_DMT_FLAG2, ACPI_DRTM_FLAG_OFFSET (Flags, 0), "Gap Code on DLME_Exit", 0}, - {ACPI_DMT_FLAG3, ACPI_DRTM_FLAG_OFFSET (Flags, 0), "PCR_Authorities Changed", 0}, - ACPI_DMT_TERMINATOR -}; - -ACPI_DMTABLE_INFO AcpiDmTableInfoDrtm0[] = -{ - {ACPI_DMT_UINT32, ACPI_DRTM0_OFFSET (ValidatedTableCount), "Validated Table Count", DT_COUNT}, - ACPI_DMT_TERMINATOR -}; - -ACPI_DMTABLE_INFO AcpiDmTableInfoDrtm0a[] = -{ - {ACPI_DMT_UINT64, 0, "Table Address", DT_OPTIONAL}, - ACPI_DMT_TERMINATOR -}; - -ACPI_DMTABLE_INFO AcpiDmTableInfoDrtm1[] = -{ - {ACPI_DMT_UINT32, ACPI_DRTM1_OFFSET (ResourceCount), "Resource Count", DT_COUNT}, - ACPI_DMT_TERMINATOR -}; - -ACPI_DMTABLE_INFO AcpiDmTableInfoDrtm1a[] = -{ - {ACPI_DMT_UINT56, ACPI_DRTM1a_OFFSET (Size[0]), "Size", DT_OPTIONAL}, - {ACPI_DMT_UINT8, ACPI_DRTM1a_OFFSET (Type), "Type", 0}, - {ACPI_DMT_FLAG0, ACPI_DRTM1a_FLAG_OFFSET (Type, 0), "Resource Type", 0}, - {ACPI_DMT_FLAG7, ACPI_DRTM1a_FLAG_OFFSET (Type, 0), "Protections", 0}, - {ACPI_DMT_UINT64, ACPI_DRTM1a_OFFSET (Address), "Address", 0}, - ACPI_DMT_TERMINATOR -}; - -ACPI_DMTABLE_INFO AcpiDmTableInfoDrtm2[] = -{ - {ACPI_DMT_UINT32, ACPI_DRTM2_OFFSET (DpsIdLength), "DLME Platform Id Length", DT_COUNT}, - {ACPI_DMT_BUF16, ACPI_DRTM2_OFFSET (DpsId), "DLME Platform Id", DT_COUNT}, - ACPI_DMT_TERMINATOR -}; - - -/******************************************************************************* - * - * ECDT - Embedded Controller Boot Resources Table - * - ******************************************************************************/ - -ACPI_DMTABLE_INFO AcpiDmTableInfoEcdt[] = -{ - {ACPI_DMT_GAS, ACPI_ECDT_OFFSET (Control), "Command/Status Register", 0}, - {ACPI_DMT_GAS, ACPI_ECDT_OFFSET (Data), "Data Register", 0}, - {ACPI_DMT_UINT32, ACPI_ECDT_OFFSET (Uid), "UID", 0}, - {ACPI_DMT_UINT8, ACPI_ECDT_OFFSET (Gpe), "GPE Number", 0}, - {ACPI_DMT_STRING, ACPI_ECDT_OFFSET (Id[0]), "Namepath", 0}, - ACPI_DMT_TERMINATOR -}; - - -/******************************************************************************* - * - * EINJ - Error Injection table - * - ******************************************************************************/ - -ACPI_DMTABLE_INFO AcpiDmTableInfoEinj[] = -{ - {ACPI_DMT_UINT32, ACPI_EINJ_OFFSET (HeaderLength), "Injection Header Length", 0}, - {ACPI_DMT_UINT8, ACPI_EINJ_OFFSET (Flags), "Flags", 0}, - {ACPI_DMT_UINT24, ACPI_EINJ_OFFSET (Reserved[0]), "Reserved", 0}, - {ACPI_DMT_UINT32, ACPI_EINJ_OFFSET (Entries), "Injection Entry Count", 0}, - ACPI_DMT_TERMINATOR -}; - -ACPI_DMTABLE_INFO AcpiDmTableInfoEinj0[] = -{ - {ACPI_DMT_EINJACT, ACPI_EINJ0_OFFSET (Action), "Action", 0}, - {ACPI_DMT_EINJINST, ACPI_EINJ0_OFFSET (Instruction), "Instruction", 0}, - {ACPI_DMT_UINT8, ACPI_EINJ0_OFFSET (Flags), "Flags (decoded below)", DT_FLAG}, - {ACPI_DMT_FLAG0, ACPI_EINJ0_FLAG_OFFSET (Flags,0), "Preserve Register Bits", 0}, - - {ACPI_DMT_UINT8, ACPI_EINJ0_OFFSET (Reserved), "Reserved", 0}, - {ACPI_DMT_GAS, ACPI_EINJ0_OFFSET (RegisterRegion), "Register Region", 0}, - {ACPI_DMT_UINT64, ACPI_EINJ0_OFFSET (Value), "Value", 0}, - {ACPI_DMT_UINT64, ACPI_EINJ0_OFFSET (Mask), "Mask", 0}, - ACPI_DMT_TERMINATOR -}; - - -/******************************************************************************* - * - * ERST - Error Record Serialization table - * - ******************************************************************************/ - -ACPI_DMTABLE_INFO AcpiDmTableInfoErst[] = -{ - {ACPI_DMT_UINT32, ACPI_ERST_OFFSET (HeaderLength), "Serialization Header Length", 0}, - {ACPI_DMT_UINT32, ACPI_ERST_OFFSET (Reserved), "Reserved", 0}, - {ACPI_DMT_UINT32, ACPI_ERST_OFFSET (Entries), "Instruction Entry Count", 0}, - ACPI_DMT_TERMINATOR -}; - -ACPI_DMTABLE_INFO AcpiDmTableInfoErst0[] = -{ - {ACPI_DMT_ERSTACT, ACPI_ERST0_OFFSET (Action), "Action", 0}, - {ACPI_DMT_ERSTINST, ACPI_ERST0_OFFSET (Instruction), "Instruction", 0}, - {ACPI_DMT_UINT8, ACPI_ERST0_OFFSET (Flags), "Flags (decoded below)", DT_FLAG}, - {ACPI_DMT_FLAG0, ACPI_ERST0_FLAG_OFFSET (Flags,0), "Preserve Register Bits", 0}, - - {ACPI_DMT_UINT8, ACPI_ERST0_OFFSET (Reserved), "Reserved", 0}, - {ACPI_DMT_GAS, ACPI_ERST0_OFFSET (RegisterRegion), "Register Region", 0}, - {ACPI_DMT_UINT64, ACPI_ERST0_OFFSET (Value), "Value", 0}, - {ACPI_DMT_UINT64, ACPI_ERST0_OFFSET (Mask), "Mask", 0}, - ACPI_DMT_TERMINATOR -}; - - -/******************************************************************************* - * - * FPDT - Firmware Performance Data Table (ACPI 5.0) - * - ******************************************************************************/ - -/* Main table consists of only the standard ACPI header - subtables follow */ - -/* FPDT subtable header */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoFpdtHdr[] = -{ - {ACPI_DMT_UINT16, ACPI_FPDTH_OFFSET (Type), "Subtable Type", 0}, - {ACPI_DMT_UINT8, ACPI_FPDTH_OFFSET (Length), "Length", DT_LENGTH}, - {ACPI_DMT_UINT8, ACPI_FPDTH_OFFSET (Revision), "Revision", 0}, - ACPI_DMT_TERMINATOR -}; - -/* 0: Firmware Basic Boot Performance Record */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoFpdt0[] = -{ - {ACPI_DMT_UINT32, ACPI_FPDT0_OFFSET (Reserved), "Reserved", 0}, - {ACPI_DMT_UINT64, ACPI_FPDT0_OFFSET (ResetEnd), "Reset End", 0}, - {ACPI_DMT_UINT64, ACPI_FPDT0_OFFSET (LoadStart), "Load Image Start", 0}, - {ACPI_DMT_UINT64, ACPI_FPDT0_OFFSET (StartupStart), "Start Image Start", 0}, - {ACPI_DMT_UINT64, ACPI_FPDT0_OFFSET (ExitServicesEntry), "Exit Services Entry", 0}, - {ACPI_DMT_UINT64, ACPI_FPDT0_OFFSET (ExitServicesExit), "Exit Services Exit", 0}, - ACPI_DMT_TERMINATOR -}; - -/* 1: S3 Performance Table Pointer Record */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoFpdt1[] = -{ - {ACPI_DMT_UINT32, ACPI_FPDT1_OFFSET (Reserved), "Reserved", 0}, - {ACPI_DMT_UINT64, ACPI_FPDT1_OFFSET (Address), "S3PT Address", 0}, - ACPI_DMT_TERMINATOR -}; - - -/******************************************************************************* - * - * GTDT - Generic Timer Description Table - * - ******************************************************************************/ - -ACPI_DMTABLE_INFO AcpiDmTableInfoGtdt[] = -{ - {ACPI_DMT_UINT64, ACPI_GTDT_OFFSET (CounterBlockAddresss), "Counter Block Address", 0}, - {ACPI_DMT_UINT32, ACPI_GTDT_OFFSET (Reserved), "Reserved", 0}, - ACPI_DMT_NEW_LINE, - {ACPI_DMT_UINT32, ACPI_GTDT_OFFSET (SecureEl1Interrupt), "Secure EL1 Interrupt", 0}, - {ACPI_DMT_UINT32, ACPI_GTDT_OFFSET (SecureEl1Flags), "EL1 Flags (decoded below)", DT_FLAG}, - {ACPI_DMT_FLAG0, ACPI_GTDT_FLAG_OFFSET (SecureEl1Flags,0), "Trigger Mode", 0}, - {ACPI_DMT_FLAG1, ACPI_GTDT_FLAG_OFFSET (SecureEl1Flags,0), "Polarity", 0}, - {ACPI_DMT_FLAG2, ACPI_GTDT_FLAG_OFFSET (SecureEl1Flags,0), "Always On", 0}, - ACPI_DMT_NEW_LINE, - {ACPI_DMT_UINT32, ACPI_GTDT_OFFSET (NonSecureEl1Interrupt), "Non-Secure EL1 Interrupt", 0}, - {ACPI_DMT_UINT32, ACPI_GTDT_OFFSET (NonSecureEl1Flags), "NEL1 Flags (decoded below)", DT_FLAG}, - {ACPI_DMT_FLAG0, ACPI_GTDT_FLAG_OFFSET (NonSecureEl1Flags,0),"Trigger Mode", 0}, - {ACPI_DMT_FLAG1, ACPI_GTDT_FLAG_OFFSET (NonSecureEl1Flags,0),"Polarity", 0}, - {ACPI_DMT_FLAG2, ACPI_GTDT_FLAG_OFFSET (NonSecureEl1Flags,0),"Always On", 0}, - ACPI_DMT_NEW_LINE, - {ACPI_DMT_UINT32, ACPI_GTDT_OFFSET (VirtualTimerInterrupt), "Virtual Timer Interrupt", 0}, - {ACPI_DMT_UINT32, ACPI_GTDT_OFFSET (VirtualTimerFlags), "VT Flags (decoded below)", DT_FLAG}, - {ACPI_DMT_FLAG0, ACPI_GTDT_FLAG_OFFSET (VirtualTimerFlags,0),"Trigger Mode", 0}, - {ACPI_DMT_FLAG1, ACPI_GTDT_FLAG_OFFSET (VirtualTimerFlags,0),"Polarity", 0}, - {ACPI_DMT_FLAG2, ACPI_GTDT_FLAG_OFFSET (VirtualTimerFlags,0),"Always On", 0}, - ACPI_DMT_NEW_LINE, - {ACPI_DMT_UINT32, ACPI_GTDT_OFFSET (NonSecureEl2Interrupt), "Non-Secure EL2 Interrupt", 0}, - {ACPI_DMT_UINT32, ACPI_GTDT_OFFSET (NonSecureEl2Flags), "NEL2 Flags (decoded below)", DT_FLAG}, - {ACPI_DMT_FLAG0, ACPI_GTDT_FLAG_OFFSET (NonSecureEl2Flags,0),"Trigger Mode", 0}, - {ACPI_DMT_FLAG1, ACPI_GTDT_FLAG_OFFSET (NonSecureEl2Flags,0),"Polarity", 0}, - {ACPI_DMT_FLAG2, ACPI_GTDT_FLAG_OFFSET (NonSecureEl2Flags,0),"Always On", 0}, - {ACPI_DMT_UINT64, ACPI_GTDT_OFFSET (CounterReadBlockAddress), "Counter Read Block Address", 0}, - ACPI_DMT_NEW_LINE, - {ACPI_DMT_UINT32, ACPI_GTDT_OFFSET (PlatformTimerCount), "Platform Timer Count", 0}, - {ACPI_DMT_UINT32, ACPI_GTDT_OFFSET (PlatformTimerOffset), "Platform Timer Offset", 0}, - ACPI_DMT_TERMINATOR -}; - -/* GTDT Subtable header (one per Subtable) */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoGtdtHdr[] = -{ - {ACPI_DMT_GTDT, ACPI_GTDTH_OFFSET (Type), "Subtable Type", 0}, - {ACPI_DMT_UINT16, ACPI_GTDTH_OFFSET (Length), "Length", DT_LENGTH}, - ACPI_DMT_TERMINATOR -}; - -/* GTDT Subtables */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoGtdt0[] = -{ - {ACPI_DMT_UINT8, ACPI_GTDT0_OFFSET (Reserved), "Reserved", 0}, - {ACPI_DMT_UINT64, ACPI_GTDT0_OFFSET (BlockAddress), "Block Address", 0}, - {ACPI_DMT_UINT32, ACPI_GTDT0_OFFSET (TimerCount), "Timer Count", 0}, - {ACPI_DMT_UINT32, ACPI_GTDT0_OFFSET (TimerOffset), "Timer Offset", 0}, - ACPI_DMT_TERMINATOR -}; - -ACPI_DMTABLE_INFO AcpiDmTableInfoGtdt0a[] = -{ - {ACPI_DMT_UINT8 , ACPI_GTDT0a_OFFSET (FrameNumber), "Frame Number", 0}, - {ACPI_DMT_UINT24, ACPI_GTDT0a_OFFSET (Reserved[0]), "Reserved", 0}, - {ACPI_DMT_UINT64, ACPI_GTDT0a_OFFSET (BaseAddress), "Base Address", 0}, - {ACPI_DMT_UINT64, ACPI_GTDT0a_OFFSET (El0BaseAddress), "EL0 Base Address", 0}, - {ACPI_DMT_UINT32, ACPI_GTDT0a_OFFSET (TimerInterrupt), "Timer Interrupt", 0}, - {ACPI_DMT_UINT32, ACPI_GTDT0a_OFFSET (TimerFlags), "Timer Flags (decoded below)", 0}, - {ACPI_DMT_FLAG0, ACPI_GTDT0a_FLAG_OFFSET (TimerFlags,0), "Trigger Mode", 0}, - {ACPI_DMT_FLAG1, ACPI_GTDT0a_FLAG_OFFSET (TimerFlags,0), "Polarity", 0}, - {ACPI_DMT_UINT32, ACPI_GTDT0a_OFFSET (VirtualTimerInterrupt), "Virtual Timer Interrupt", 0}, - {ACPI_DMT_UINT32, ACPI_GTDT0a_OFFSET (VirtualTimerFlags), "Virtual Timer Flags (decoded below)", 0}, - {ACPI_DMT_FLAG0, ACPI_GTDT0a_FLAG_OFFSET (VirtualTimerFlags,0), "Trigger Mode", 0}, - {ACPI_DMT_FLAG1, ACPI_GTDT0a_FLAG_OFFSET (VirtualTimerFlags,0), "Polarity", 0}, - {ACPI_DMT_UINT32, ACPI_GTDT0a_OFFSET (CommonFlags), "Common Flags (decoded below)", 0}, - {ACPI_DMT_FLAG0, ACPI_GTDT0a_FLAG_OFFSET (CommonFlags,0), "Secure", 0}, - {ACPI_DMT_FLAG1, ACPI_GTDT0a_FLAG_OFFSET (CommonFlags,0), "Always On", 0}, - ACPI_DMT_TERMINATOR -}; - -ACPI_DMTABLE_INFO AcpiDmTableInfoGtdt1[] = -{ - {ACPI_DMT_UINT8, ACPI_GTDT1_OFFSET (Reserved), "Reserved", 0}, - {ACPI_DMT_UINT64, ACPI_GTDT1_OFFSET (RefreshFrameAddress), "Refresh Frame Address", 0}, - {ACPI_DMT_UINT64, ACPI_GTDT1_OFFSET (ControlFrameAddress), "Control Frame Address", 0}, - {ACPI_DMT_UINT32, ACPI_GTDT1_OFFSET (TimerInterrupt), "Timer Interrupt", 0}, - {ACPI_DMT_UINT32, ACPI_GTDT1_OFFSET (TimerFlags), "Timer Flags (decoded below)", DT_FLAG}, - {ACPI_DMT_FLAG0, ACPI_GTDT1_FLAG_OFFSET (TimerFlags,0), "Trigger Mode", 0}, - {ACPI_DMT_FLAG1, ACPI_GTDT1_FLAG_OFFSET (TimerFlags,0), "Polarity", 0}, - {ACPI_DMT_FLAG2, ACPI_GTDT1_FLAG_OFFSET (TimerFlags,0), "Security", 0}, - ACPI_DMT_TERMINATOR -}; - - -/******************************************************************************* - * - * HEST - Hardware Error Source table - * - ******************************************************************************/ - -ACPI_DMTABLE_INFO AcpiDmTableInfoHest[] = -{ - {ACPI_DMT_UINT32, ACPI_HEST_OFFSET (ErrorSourceCount), "Error Source Count", 0}, - ACPI_DMT_TERMINATOR -}; - -/* Common HEST structures for subtables */ - -#define ACPI_DM_HEST_HEADER \ - {ACPI_DMT_HEST, ACPI_HEST0_OFFSET (Header.Type), "Subtable Type", 0}, \ - {ACPI_DMT_UINT16, ACPI_HEST0_OFFSET (Header.SourceId), "Source Id", 0} - -#define ACPI_DM_HEST_AER \ - {ACPI_DMT_UINT16, ACPI_HEST6_OFFSET (Aer.Reserved1), "Reserved", 0}, \ - {ACPI_DMT_UINT8, ACPI_HEST6_OFFSET (Aer.Flags), "Flags (decoded below)", DT_FLAG}, \ - {ACPI_DMT_FLAG0, ACPI_HEST6_FLAG_OFFSET (Aer.Flags,0), "Firmware First", 0}, \ - {ACPI_DMT_UINT8, ACPI_HEST6_OFFSET (Aer.Enabled), "Enabled", 0}, \ - {ACPI_DMT_UINT32, ACPI_HEST6_OFFSET (Aer.RecordsToPreallocate), "Records To Preallocate", 0}, \ - {ACPI_DMT_UINT32, ACPI_HEST6_OFFSET (Aer.MaxSectionsPerRecord), "Max Sections Per Record", 0}, \ - {ACPI_DMT_UINT32, ACPI_HEST6_OFFSET (Aer.Bus), "Bus", 0}, \ - {ACPI_DMT_UINT16, ACPI_HEST6_OFFSET (Aer.Device), "Device", 0}, \ - {ACPI_DMT_UINT16, ACPI_HEST6_OFFSET (Aer.Function), "Function", 0}, \ - {ACPI_DMT_UINT16, ACPI_HEST6_OFFSET (Aer.DeviceControl), "DeviceControl", 0}, \ - {ACPI_DMT_UINT16, ACPI_HEST6_OFFSET (Aer.Reserved2), "Reserved", 0}, \ - {ACPI_DMT_UINT32, ACPI_HEST6_OFFSET (Aer.UncorrectableMask), "Uncorrectable Mask", 0}, \ - {ACPI_DMT_UINT32, ACPI_HEST6_OFFSET (Aer.UncorrectableSeverity), "Uncorrectable Severity", 0}, \ - {ACPI_DMT_UINT32, ACPI_HEST6_OFFSET (Aer.CorrectableMask), "Correctable Mask", 0}, \ - {ACPI_DMT_UINT32, ACPI_HEST6_OFFSET (Aer.AdvancedCapabilities), "Advanced Capabilities", 0} - - -/* HEST Subtables */ - -/* 0: IA32 Machine Check Exception */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoHest0[] = -{ - ACPI_DM_HEST_HEADER, - {ACPI_DMT_UINT16, ACPI_HEST0_OFFSET (Reserved1), "Reserved1", 0}, - {ACPI_DMT_UINT8, ACPI_HEST0_OFFSET (Flags), "Flags (decoded below)", DT_FLAG}, - {ACPI_DMT_FLAG0, ACPI_HEST0_FLAG_OFFSET (Flags,0), "Firmware First", 0}, - - {ACPI_DMT_UINT8, ACPI_HEST0_OFFSET (Enabled), "Enabled", 0}, - {ACPI_DMT_UINT32, ACPI_HEST0_OFFSET (RecordsToPreallocate), "Records To Preallocate", 0}, - {ACPI_DMT_UINT32, ACPI_HEST0_OFFSET (MaxSectionsPerRecord), "Max Sections Per Record", 0}, - {ACPI_DMT_UINT64, ACPI_HEST0_OFFSET (GlobalCapabilityData), "Global Capability Data", 0}, - {ACPI_DMT_UINT64, ACPI_HEST0_OFFSET (GlobalControlData), "Global Control Data", 0}, - {ACPI_DMT_UINT8, ACPI_HEST0_OFFSET (NumHardwareBanks), "Num Hardware Banks", 0}, - {ACPI_DMT_UINT56, ACPI_HEST0_OFFSET (Reserved3[0]), "Reserved2", 0}, - ACPI_DMT_TERMINATOR -}; - -/* 1: IA32 Corrected Machine Check */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoHest1[] = -{ - ACPI_DM_HEST_HEADER, - {ACPI_DMT_UINT16, ACPI_HEST1_OFFSET (Reserved1), "Reserved1", 0}, - {ACPI_DMT_UINT8, ACPI_HEST1_OFFSET (Flags), "Flags (decoded below)", DT_FLAG}, - {ACPI_DMT_FLAG0, ACPI_HEST1_FLAG_OFFSET (Flags,0), "Firmware First", 0}, - - {ACPI_DMT_UINT8, ACPI_HEST1_OFFSET (Enabled), "Enabled", 0}, - {ACPI_DMT_UINT32, ACPI_HEST1_OFFSET (RecordsToPreallocate), "Records To Preallocate", 0}, - {ACPI_DMT_UINT32, ACPI_HEST1_OFFSET (MaxSectionsPerRecord), "Max Sections Per Record", 0}, - {ACPI_DMT_HESTNTFY, ACPI_HEST1_OFFSET (Notify), "Notify", 0}, - {ACPI_DMT_UINT8, ACPI_HEST1_OFFSET (NumHardwareBanks), "Num Hardware Banks", 0}, - {ACPI_DMT_UINT24, ACPI_HEST1_OFFSET (Reserved2[0]), "Reserved2", 0}, - ACPI_DMT_TERMINATOR -}; - -/* 2: IA32 Non-Maskable Interrupt */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoHest2[] = -{ - ACPI_DM_HEST_HEADER, - {ACPI_DMT_UINT32, ACPI_HEST2_OFFSET (Reserved), "Reserved", 0}, - {ACPI_DMT_UINT32, ACPI_HEST2_OFFSET (RecordsToPreallocate), "Records To Preallocate", 0}, - {ACPI_DMT_UINT32, ACPI_HEST2_OFFSET (MaxSectionsPerRecord), "Max Sections Per Record", 0}, - {ACPI_DMT_UINT32, ACPI_HEST2_OFFSET (MaxRawDataLength), "Max Raw Data Length", 0}, - ACPI_DMT_TERMINATOR -}; - -/* 6: PCI Express Root Port AER */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoHest6[] = -{ - ACPI_DM_HEST_HEADER, - ACPI_DM_HEST_AER, - {ACPI_DMT_UINT32, ACPI_HEST6_OFFSET (RootErrorCommand), "Root Error Command", 0}, - ACPI_DMT_TERMINATOR -}; - -/* 7: PCI Express AER (AER Endpoint) */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoHest7[] = -{ - ACPI_DM_HEST_HEADER, - ACPI_DM_HEST_AER, - ACPI_DMT_TERMINATOR -}; - -/* 8: PCI Express/PCI-X Bridge AER */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoHest8[] = -{ - ACPI_DM_HEST_HEADER, - ACPI_DM_HEST_AER, - {ACPI_DMT_UINT32, ACPI_HEST8_OFFSET (UncorrectableMask2), "2nd Uncorrectable Mask", 0}, - {ACPI_DMT_UINT32, ACPI_HEST8_OFFSET (UncorrectableSeverity2), "2nd Uncorrectable Severity", 0}, - {ACPI_DMT_UINT32, ACPI_HEST8_OFFSET (AdvancedCapabilities2), "2nd Advanced Capabilities", 0}, - ACPI_DMT_TERMINATOR -}; - -/* 9: Generic Hardware Error Source */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoHest9[] = -{ - ACPI_DM_HEST_HEADER, - {ACPI_DMT_UINT16, ACPI_HEST9_OFFSET (RelatedSourceId), "Related Source Id", 0}, - {ACPI_DMT_UINT8, ACPI_HEST9_OFFSET (Reserved), "Reserved", 0}, - {ACPI_DMT_UINT8, ACPI_HEST9_OFFSET (Enabled), "Enabled", 0}, - {ACPI_DMT_UINT32, ACPI_HEST9_OFFSET (RecordsToPreallocate), "Records To Preallocate", 0}, - {ACPI_DMT_UINT32, ACPI_HEST9_OFFSET (MaxSectionsPerRecord), "Max Sections Per Record", 0}, - {ACPI_DMT_UINT32, ACPI_HEST9_OFFSET (MaxRawDataLength), "Max Raw Data Length", 0}, - {ACPI_DMT_GAS, ACPI_HEST9_OFFSET (ErrorStatusAddress), "Error Status Address", 0}, - {ACPI_DMT_HESTNTFY, ACPI_HEST9_OFFSET (Notify), "Notify", 0}, - {ACPI_DMT_UINT32, ACPI_HEST9_OFFSET (ErrorBlockLength), "Error Status Block Length", 0}, - ACPI_DMT_TERMINATOR -}; - -ACPI_DMTABLE_INFO AcpiDmTableInfoHestNotify[] = -{ - {ACPI_DMT_HESTNTYP, ACPI_HESTN_OFFSET (Type), "Notify Type", 0}, - {ACPI_DMT_UINT8, ACPI_HESTN_OFFSET (Length), "Notify Length", DT_LENGTH}, - {ACPI_DMT_UINT16, ACPI_HESTN_OFFSET (ConfigWriteEnable), "Configuration Write Enable", 0}, - {ACPI_DMT_UINT32, ACPI_HESTN_OFFSET (PollInterval), "PollInterval", 0}, - {ACPI_DMT_UINT32, ACPI_HESTN_OFFSET (Vector), "Vector", 0}, - {ACPI_DMT_UINT32, ACPI_HESTN_OFFSET (PollingThresholdValue), "Polling Threshold Value", 0}, - {ACPI_DMT_UINT32, ACPI_HESTN_OFFSET (PollingThresholdWindow), "Polling Threshold Window", 0}, - {ACPI_DMT_UINT32, ACPI_HESTN_OFFSET (ErrorThresholdValue), "Error Threshold Value", 0}, - {ACPI_DMT_UINT32, ACPI_HESTN_OFFSET (ErrorThresholdWindow), "Error Threshold Window", 0}, - ACPI_DMT_TERMINATOR -}; - - -/* - * IA32 Error Bank(s) - Follows the ACPI_HEST_IA_MACHINE_CHECK and - * ACPI_HEST_IA_CORRECTED structures. - */ -ACPI_DMTABLE_INFO AcpiDmTableInfoHestBank[] = -{ - {ACPI_DMT_UINT8, ACPI_HESTB_OFFSET (BankNumber), "Bank Number", 0}, - {ACPI_DMT_UINT8, ACPI_HESTB_OFFSET (ClearStatusOnInit), "Clear Status On Init", 0}, - {ACPI_DMT_UINT8, ACPI_HESTB_OFFSET (StatusFormat), "Status Format", 0}, - {ACPI_DMT_UINT8, ACPI_HESTB_OFFSET (Reserved), "Reserved", 0}, - {ACPI_DMT_UINT32, ACPI_HESTB_OFFSET (ControlRegister), "Control Register", 0}, - {ACPI_DMT_UINT64, ACPI_HESTB_OFFSET (ControlData), "Control Data", 0}, - {ACPI_DMT_UINT32, ACPI_HESTB_OFFSET (StatusRegister), "Status Register", 0}, - {ACPI_DMT_UINT32, ACPI_HESTB_OFFSET (AddressRegister), "Address Register", 0}, - {ACPI_DMT_UINT32, ACPI_HESTB_OFFSET (MiscRegister), "Misc Register", 0}, - ACPI_DMT_TERMINATOR -}; - - -/******************************************************************************* - * - * HPET - High Precision Event Timer table - * - ******************************************************************************/ - -ACPI_DMTABLE_INFO AcpiDmTableInfoHpet[] = -{ - {ACPI_DMT_UINT32, ACPI_HPET_OFFSET (Id), "Hardware Block ID", 0}, - {ACPI_DMT_GAS, ACPI_HPET_OFFSET (Address), "Timer Block Register", 0}, - {ACPI_DMT_UINT8, ACPI_HPET_OFFSET (Sequence), "Sequence Number", 0}, - {ACPI_DMT_UINT16, ACPI_HPET_OFFSET (MinimumTick), "Minimum Clock Ticks", 0}, - {ACPI_DMT_UINT8, ACPI_HPET_OFFSET (Flags), "Flags (decoded below)", DT_FLAG}, - {ACPI_DMT_FLAG0, ACPI_HPET_FLAG_OFFSET (Flags,0), "4K Page Protect", 0}, - {ACPI_DMT_FLAG1, ACPI_HPET_FLAG_OFFSET (Flags,0), "64K Page Protect", 0}, - ACPI_DMT_TERMINATOR -}; - - -/******************************************************************************* - * - * IORT - IO Remapping Table - * - ******************************************************************************/ - -ACPI_DMTABLE_INFO AcpiDmTableInfoIort[] = -{ - {ACPI_DMT_UINT32, ACPI_IORT_OFFSET (NodeCount), "Node Count", 0}, - {ACPI_DMT_UINT32, ACPI_IORT_OFFSET (NodeOffset), "Node Offset", 0}, - {ACPI_DMT_UINT32, ACPI_IORT_OFFSET (Reserved), "Reserved", 0}, - ACPI_DMT_TERMINATOR -}; - -/* Optional padding field */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoIortPad[] = -{ - {ACPI_DMT_RAW_BUFFER, 0, "Optional Padding", DT_OPTIONAL}, - ACPI_DMT_TERMINATOR -}; - -/* Common Subtable header (one per Subtable) */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoIortHdr[] = -{ - {ACPI_DMT_UINT8, ACPI_IORTH_OFFSET (Type), "Type", 0}, - {ACPI_DMT_UINT16, ACPI_IORTH_OFFSET (Length), "Length", DT_LENGTH}, - {ACPI_DMT_UINT8, ACPI_IORTH_OFFSET (Revision), "Revision", 0}, - {ACPI_DMT_UINT32, ACPI_IORTH_OFFSET (Reserved), "Reserved", 0}, - {ACPI_DMT_UINT32, ACPI_IORTH_OFFSET (MappingCount), "Mapping Count", 0}, - {ACPI_DMT_UINT32, ACPI_IORTH_OFFSET (MappingOffset), "Mapping Offset", 0}, - ACPI_DMT_TERMINATOR -}; - -ACPI_DMTABLE_INFO AcpiDmTableInfoIortMap[] = -{ - {ACPI_DMT_UINT32, ACPI_IORTM_OFFSET (InputBase), "Input base", DT_OPTIONAL}, - {ACPI_DMT_UINT32, ACPI_IORTM_OFFSET (IdCount), "ID Count", 0}, - {ACPI_DMT_UINT32, ACPI_IORTM_OFFSET (OutputBase), "Output Base", 0}, - {ACPI_DMT_UINT32, ACPI_IORTM_OFFSET (OutputReference), "Output Reference", 0}, - {ACPI_DMT_UINT32, ACPI_IORTM_OFFSET (Flags), "Flags (decoded below)", 0}, - {ACPI_DMT_FLAG0, ACPI_IORTM_FLAG_OFFSET (Flags, 0), "Single Mapping", 0}, - ACPI_DMT_TERMINATOR -}; - -ACPI_DMTABLE_INFO AcpiDmTableInfoIortAcc[] = -{ - {ACPI_DMT_UINT32, ACPI_IORTA_OFFSET (CacheCoherency), "Cache Coherency", 0}, - {ACPI_DMT_UINT8, ACPI_IORTA_OFFSET (Hints), "Hints (decoded below)", 0}, - {ACPI_DMT_FLAG0, ACPI_IORTA_FLAG_OFFSET (Hints, 0), "Transient", 0}, - {ACPI_DMT_FLAG1, ACPI_IORTA_FLAG_OFFSET (Hints, 0), "Write Allocate", 0}, - {ACPI_DMT_FLAG2, ACPI_IORTA_FLAG_OFFSET (Hints, 0), "Read Allocate", 0}, - {ACPI_DMT_FLAG3, ACPI_IORTA_FLAG_OFFSET (Hints, 0), "Override", 0}, - {ACPI_DMT_UINT16, ACPI_IORTA_OFFSET (Reserved), "Reserved", 0}, - {ACPI_DMT_UINT8, ACPI_IORTA_OFFSET (MemoryFlags), "Memory Flags (decoded below)", 0}, - {ACPI_DMT_FLAG0, ACPI_IORTA_FLAG_OFFSET (MemoryFlags, 0), "Coherency", 0}, - {ACPI_DMT_FLAG1, ACPI_IORTA_FLAG_OFFSET (MemoryFlags, 0), "Device Attribute", 0}, - ACPI_DMT_TERMINATOR -}; - -/* IORT subtables */ - -/* 0x00: ITS Group */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoIort0[] = -{ - {ACPI_DMT_UINT32, ACPI_IORT0_OFFSET (ItsCount), "ItsCount", 0}, - ACPI_DMT_TERMINATOR -}; - -ACPI_DMTABLE_INFO AcpiDmTableInfoIort0a[] = -{ - {ACPI_DMT_UINT32, 0, "Identifiers", DT_OPTIONAL}, - ACPI_DMT_TERMINATOR -}; - -/* 0x01: Named Component */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoIort1[] = -{ - {ACPI_DMT_UINT32, ACPI_IORT1_OFFSET (NodeFlags), "Node Flags", 0}, - {ACPI_DMT_IORTMEM, ACPI_IORT1_OFFSET (MemoryProperties), "Memory Properties", 0}, - {ACPI_DMT_UINT8, ACPI_IORT1_OFFSET (MemoryAddressLimit), "Memory Size Limit", 0}, - {ACPI_DMT_STRING, ACPI_IORT1_OFFSET (DeviceName[0]), "Device Name", 0}, - ACPI_DMT_TERMINATOR -}; - -ACPI_DMTABLE_INFO AcpiDmTableInfoIort1a[] = -{ - {ACPI_DMT_RAW_BUFFER, 0, "Padding", DT_OPTIONAL}, - ACPI_DMT_TERMINATOR -}; - -/* 0x02: PCI Root Complex */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoIort2[] = -{ - {ACPI_DMT_IORTMEM, ACPI_IORT2_OFFSET (MemoryProperties), "Memory Properties", 0}, - {ACPI_DMT_UINT32, ACPI_IORT2_OFFSET (AtsAttribute), "ATS Attribute", 0}, - {ACPI_DMT_UINT32, ACPI_IORT2_OFFSET (PciSegmentNumber), "PCI Segment Number", 0}, - ACPI_DMT_TERMINATOR -}; - -/* 0x03: SMMUv1/2 */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoIort3[] = -{ - {ACPI_DMT_UINT64, ACPI_IORT3_OFFSET (BaseAddress), "Base Address", 0}, - {ACPI_DMT_UINT64, ACPI_IORT3_OFFSET (Span), "Span", 0}, - {ACPI_DMT_UINT32, ACPI_IORT3_OFFSET (Model), "Model", 0}, - {ACPI_DMT_UINT32, ACPI_IORT3_OFFSET (Flags), "Flags (decoded below)", 0}, - {ACPI_DMT_FLAG0, ACPI_IORT3_FLAG_OFFSET (Flags, 0), "DVM Supported", 0}, - {ACPI_DMT_FLAG1, ACPI_IORT3_FLAG_OFFSET (Flags, 0), "Coherent Walk", 0}, - {ACPI_DMT_UINT32, ACPI_IORT3_OFFSET (GlobalInterruptOffset), "Global Interrupt Offset", 0}, - {ACPI_DMT_UINT32, ACPI_IORT3_OFFSET (ContextInterruptCount), "Context Interrupt Count", 0}, - {ACPI_DMT_UINT32, ACPI_IORT3_OFFSET (ContextInterruptOffset), "Context Interrupt Offset", 0}, - {ACPI_DMT_UINT32, ACPI_IORT3_OFFSET (PmuInterruptCount), "PMU Interrupt Count", 0}, - {ACPI_DMT_UINT32, ACPI_IORT3_OFFSET (PmuInterruptOffset), "PMU Interrupt Offset", 0}, - ACPI_DMT_TERMINATOR -}; - -ACPI_DMTABLE_INFO AcpiDmTableInfoIort3a[] = -{ - {ACPI_DMT_UINT64, 0, "SMMU_NSgIrpt Interrupt", 0}, - {ACPI_DMT_UINT64, 0, "SMMU_NSgCfgIrpt Interrupt", 0}, - ACPI_DMT_TERMINATOR -}; - -ACPI_DMTABLE_INFO AcpiDmTableInfoIort3b[] = -{ - {ACPI_DMT_UINT64, 0, "Context Interrupt", DT_OPTIONAL}, - ACPI_DMT_TERMINATOR -}; - -ACPI_DMTABLE_INFO AcpiDmTableInfoIort3c[] = -{ - {ACPI_DMT_UINT64, 0, "PMU Interrupt", DT_OPTIONAL}, - ACPI_DMT_TERMINATOR -}; - - -/******************************************************************************* - * - * IVRS - I/O Virtualization Reporting Structure - * - ******************************************************************************/ - -ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs[] = -{ - {ACPI_DMT_UINT32, ACPI_IVRS_OFFSET (Info), "Virtualization Info", 0}, - {ACPI_DMT_UINT64, ACPI_IVRS_OFFSET (Reserved), "Reserved", 0}, - ACPI_DMT_TERMINATOR -}; - -/* Common Subtable header (one per Subtable) */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoIvrsHdr[] = -{ - {ACPI_DMT_IVRS, ACPI_IVRSH_OFFSET (Type), "Subtable Type", 0}, - {ACPI_DMT_UINT8, ACPI_IVRSH_OFFSET (Flags), "Flags", 0}, - {ACPI_DMT_UINT16, ACPI_IVRSH_OFFSET (Length), "Length", DT_LENGTH}, - {ACPI_DMT_UINT16, ACPI_IVRSH_OFFSET (DeviceId), "DeviceId", 0}, - ACPI_DMT_TERMINATOR -}; - -/* IVRS subtables */ - -/* 0x10: I/O Virtualization Hardware Definition (IVHD) Block */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs0[] = -{ - {ACPI_DMT_UINT16, ACPI_IVRS0_OFFSET (CapabilityOffset), "Capability Offset", 0}, - {ACPI_DMT_UINT64, ACPI_IVRS0_OFFSET (BaseAddress), "Base Address", 0}, - {ACPI_DMT_UINT16, ACPI_IVRS0_OFFSET (PciSegmentGroup), "PCI Segment Group", 0}, - {ACPI_DMT_UINT16, ACPI_IVRS0_OFFSET (Info), "Virtualization Info", 0}, - {ACPI_DMT_UINT32, ACPI_IVRS0_OFFSET (Reserved), "Reserved", 0}, - ACPI_DMT_TERMINATOR -}; - -/* 0x20, 0x21, 0x22: I/O Virtualization Memory Definition (IVMD) Block */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs1[] = -{ - {ACPI_DMT_UINT16, ACPI_IVRS1_OFFSET (AuxData), "Auxiliary Data", 0}, - {ACPI_DMT_UINT64, ACPI_IVRS1_OFFSET (Reserved), "Reserved", 0}, - {ACPI_DMT_UINT64, ACPI_IVRS1_OFFSET (StartAddress), "Start Address", 0}, - {ACPI_DMT_UINT64, ACPI_IVRS1_OFFSET (MemoryLength), "Memory Length", 0}, - ACPI_DMT_TERMINATOR -}; - -/* Device entry header for IVHD block */ - -#define ACPI_DMT_IVRS_DE_HEADER \ - {ACPI_DMT_UINT8, ACPI_IVRSD_OFFSET (Type), "Entry Type", 0}, \ - {ACPI_DMT_UINT16, ACPI_IVRSD_OFFSET (Id), "Device ID", 0}, \ - {ACPI_DMT_UINT8, ACPI_IVRSD_OFFSET (DataSetting), "Data Setting", 0} - -/* 4-byte device entry */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs4[] = -{ - ACPI_DMT_IVRS_DE_HEADER, - {ACPI_DMT_EXIT, 0, NULL, 0}, -}; - -/* 8-byte device entry */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs8a[] = -{ - ACPI_DMT_IVRS_DE_HEADER, - {ACPI_DMT_UINT8, ACPI_IVRS8A_OFFSET (Reserved1), "Reserved", 0}, - {ACPI_DMT_UINT16, ACPI_IVRS8A_OFFSET (UsedId), "Source Used Device ID", 0}, - {ACPI_DMT_UINT8, ACPI_IVRS8A_OFFSET (Reserved2), "Reserved", 0}, - ACPI_DMT_TERMINATOR -}; - -/* 8-byte device entry */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs8b[] = -{ - ACPI_DMT_IVRS_DE_HEADER, - {ACPI_DMT_UINT32, ACPI_IVRS8B_OFFSET (ExtendedData), "Extended Data", 0}, - ACPI_DMT_TERMINATOR -}; - -/* 8-byte device entry */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs8c[] = -{ - ACPI_DMT_IVRS_DE_HEADER, - {ACPI_DMT_UINT8, ACPI_IVRS8C_OFFSET (Handle), "Handle", 0}, - {ACPI_DMT_UINT16, ACPI_IVRS8C_OFFSET (UsedId), "Source Used Device ID", 0}, - {ACPI_DMT_UINT8, ACPI_IVRS8C_OFFSET (Variety), "Variety", 0}, - ACPI_DMT_TERMINATOR -}; - - -/******************************************************************************* - * - * LPIT - Low Power Idle Table - * - ******************************************************************************/ - -/* Main table consists only of the standard ACPI table header */ - -/* Common Subtable header (one per Subtable) */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoLpitHdr[] = -{ - {ACPI_DMT_LPIT, ACPI_LPITH_OFFSET (Type), "Subtable Type", 0}, - {ACPI_DMT_UINT32, ACPI_LPITH_OFFSET (Length), "Length", DT_LENGTH}, - {ACPI_DMT_UINT16, ACPI_LPITH_OFFSET (UniqueId), "Unique ID", 0}, - {ACPI_DMT_UINT16, ACPI_LPITH_OFFSET (Reserved), "Reserved", 0}, - {ACPI_DMT_UINT32, ACPI_LPITH_OFFSET (Flags), "Flags (decoded below)", DT_FLAG}, - {ACPI_DMT_FLAG0, ACPI_LPITH_FLAG_OFFSET (Flags, 0), "State Disabled", 0}, - {ACPI_DMT_FLAG1, ACPI_LPITH_FLAG_OFFSET (Flags, 0), "No Counter", 0}, - ACPI_DMT_TERMINATOR -}; - -/* LPIT Subtables */ - -/* 0: Native C-state */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoLpit0[] = -{ - {ACPI_DMT_GAS, ACPI_LPIT0_OFFSET (EntryTrigger), "Entry Trigger", 0}, - {ACPI_DMT_UINT32, ACPI_LPIT0_OFFSET (Residency), "Residency", 0}, - {ACPI_DMT_UINT32, ACPI_LPIT0_OFFSET (Latency), "Latency", 0}, - {ACPI_DMT_GAS, ACPI_LPIT0_OFFSET (ResidencyCounter), "Residency Counter", 0}, - {ACPI_DMT_UINT64, ACPI_LPIT0_OFFSET (CounterFrequency), "Counter Frequency", 0}, - ACPI_DMT_TERMINATOR -}; - - -/******************************************************************************* - * - * MADT - Multiple APIC Description Table and subtables - * - ******************************************************************************/ - -ACPI_DMTABLE_INFO AcpiDmTableInfoMadt[] = -{ - {ACPI_DMT_UINT32, ACPI_MADT_OFFSET (Address), "Local Apic Address", 0}, - {ACPI_DMT_UINT32, ACPI_MADT_OFFSET (Flags), "Flags (decoded below)", DT_FLAG}, - {ACPI_DMT_FLAG0, ACPI_MADT_FLAG_OFFSET (Flags,0), "PC-AT Compatibility", 0}, - ACPI_DMT_TERMINATOR -}; - -/* Common Subtable header (one per Subtable) */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoMadtHdr[] = -{ - {ACPI_DMT_MADT, ACPI_MADTH_OFFSET (Type), "Subtable Type", 0}, - {ACPI_DMT_UINT8, ACPI_MADTH_OFFSET (Length), "Length", DT_LENGTH}, - ACPI_DMT_TERMINATOR -}; - -/* MADT Subtables */ - -/* 0: processor APIC */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoMadt0[] = -{ - {ACPI_DMT_UINT8, ACPI_MADT0_OFFSET (ProcessorId), "Processor ID", 0}, - {ACPI_DMT_UINT8, ACPI_MADT0_OFFSET (Id), "Local Apic ID", 0}, - {ACPI_DMT_UINT32, ACPI_MADT0_OFFSET (LapicFlags), "Flags (decoded below)", DT_FLAG}, - {ACPI_DMT_FLAG0, ACPI_MADT0_FLAG_OFFSET (LapicFlags,0), "Processor Enabled", 0}, - ACPI_DMT_TERMINATOR -}; - -/* 1: IO APIC */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoMadt1[] = -{ - {ACPI_DMT_UINT8, ACPI_MADT1_OFFSET (Id), "I/O Apic ID", 0}, - {ACPI_DMT_UINT8, ACPI_MADT1_OFFSET (Reserved), "Reserved", 0}, - {ACPI_DMT_UINT32, ACPI_MADT1_OFFSET (Address), "Address", 0}, - {ACPI_DMT_UINT32, ACPI_MADT1_OFFSET (GlobalIrqBase), "Interrupt", 0}, - ACPI_DMT_TERMINATOR -}; - -/* 2: Interrupt Override */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoMadt2[] = -{ - {ACPI_DMT_UINT8, ACPI_MADT2_OFFSET (Bus), "Bus", 0}, - {ACPI_DMT_UINT8, ACPI_MADT2_OFFSET (SourceIrq), "Source", 0}, - {ACPI_DMT_UINT32, ACPI_MADT2_OFFSET (GlobalIrq), "Interrupt", 0}, - {ACPI_DMT_UINT16, ACPI_MADT2_OFFSET (IntiFlags), "Flags (decoded below)", DT_FLAG}, - {ACPI_DMT_FLAGS0, ACPI_MADT2_FLAG_OFFSET (IntiFlags,0), "Polarity", 0}, - {ACPI_DMT_FLAGS2, ACPI_MADT2_FLAG_OFFSET (IntiFlags,0), "Trigger Mode", 0}, - ACPI_DMT_TERMINATOR -}; - -/* 3: NMI Sources */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoMadt3[] = -{ - {ACPI_DMT_UINT16, ACPI_MADT3_OFFSET (IntiFlags), "Flags (decoded below)", DT_FLAG}, - {ACPI_DMT_FLAGS0, ACPI_MADT3_FLAG_OFFSET (IntiFlags,0), "Polarity", 0}, - {ACPI_DMT_FLAGS2, ACPI_MADT3_FLAG_OFFSET (IntiFlags,0), "Trigger Mode", 0}, - {ACPI_DMT_UINT32, ACPI_MADT3_OFFSET (GlobalIrq), "Interrupt", 0}, - ACPI_DMT_TERMINATOR -}; - -/* 4: Local APIC NMI */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoMadt4[] = -{ - {ACPI_DMT_UINT8, ACPI_MADT4_OFFSET (ProcessorId), "Processor ID", 0}, - {ACPI_DMT_UINT16, ACPI_MADT4_OFFSET (IntiFlags), "Flags (decoded below)", DT_FLAG}, - {ACPI_DMT_FLAGS0, ACPI_MADT4_FLAG_OFFSET (IntiFlags,0), "Polarity", 0}, - {ACPI_DMT_FLAGS2, ACPI_MADT4_FLAG_OFFSET (IntiFlags,0), "Trigger Mode", 0}, - {ACPI_DMT_UINT8, ACPI_MADT4_OFFSET (Lint), "Interrupt Input LINT", 0}, - ACPI_DMT_TERMINATOR -}; - -/* 5: Address Override */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoMadt5[] = -{ - {ACPI_DMT_UINT16, ACPI_MADT5_OFFSET (Reserved), "Reserved", 0}, - {ACPI_DMT_UINT64, ACPI_MADT5_OFFSET (Address), "APIC Address", 0}, - ACPI_DMT_TERMINATOR -}; - -/* 6: I/O Sapic */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoMadt6[] = -{ - {ACPI_DMT_UINT8, ACPI_MADT6_OFFSET (Id), "I/O Sapic ID", 0}, - {ACPI_DMT_UINT8, ACPI_MADT6_OFFSET (Reserved), "Reserved", 0}, - {ACPI_DMT_UINT32, ACPI_MADT6_OFFSET (GlobalIrqBase), "Interrupt Base", 0}, - {ACPI_DMT_UINT64, ACPI_MADT6_OFFSET (Address), "Address", 0}, - ACPI_DMT_TERMINATOR -}; - -/* 7: Local Sapic */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoMadt7[] = -{ - {ACPI_DMT_UINT8, ACPI_MADT7_OFFSET (ProcessorId), "Processor ID", 0}, - {ACPI_DMT_UINT8, ACPI_MADT7_OFFSET (Id), "Local Sapic ID", 0}, - {ACPI_DMT_UINT8, ACPI_MADT7_OFFSET (Eid), "Local Sapic EID", 0}, - {ACPI_DMT_UINT24, ACPI_MADT7_OFFSET (Reserved[0]), "Reserved", 0}, - {ACPI_DMT_UINT32, ACPI_MADT7_OFFSET (LapicFlags), "Flags (decoded below)", DT_FLAG}, - {ACPI_DMT_FLAG0, ACPI_MADT7_FLAG_OFFSET (LapicFlags,0), "Processor Enabled", 0}, - {ACPI_DMT_UINT32, ACPI_MADT7_OFFSET (Uid), "Processor UID", 0}, - {ACPI_DMT_STRING, ACPI_MADT7_OFFSET (UidString[0]), "Processor UID String", 0}, - ACPI_DMT_TERMINATOR -}; - -/* 8: Platform Interrupt Source */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoMadt8[] = -{ - {ACPI_DMT_UINT16, ACPI_MADT8_OFFSET (IntiFlags), "Flags (decoded below)", DT_FLAG}, - {ACPI_DMT_FLAGS0, ACPI_MADT8_FLAG_OFFSET (IntiFlags,0), "Polarity", 0}, - {ACPI_DMT_FLAGS2, ACPI_MADT8_FLAG_OFFSET (IntiFlags,0), "Trigger Mode", 0}, - {ACPI_DMT_UINT8, ACPI_MADT8_OFFSET (Type), "InterruptType", 0}, - {ACPI_DMT_UINT8, ACPI_MADT8_OFFSET (Id), "Processor ID", 0}, - {ACPI_DMT_UINT8, ACPI_MADT8_OFFSET (Eid), "Processor EID", 0}, - {ACPI_DMT_UINT8, ACPI_MADT8_OFFSET (IoSapicVector), "I/O Sapic Vector", 0}, - {ACPI_DMT_UINT32, ACPI_MADT8_OFFSET (GlobalIrq), "Interrupt", 0}, - {ACPI_DMT_UINT32, ACPI_MADT8_OFFSET (Flags), "Flags (decoded below)", DT_FLAG}, - {ACPI_DMT_FLAG0, ACPI_MADT8_OFFSET (Flags), "CPEI Override", 0}, - ACPI_DMT_TERMINATOR -}; - -/* 9: Processor Local X2_APIC (ACPI 4.0) */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoMadt9[] = -{ - {ACPI_DMT_UINT16, ACPI_MADT9_OFFSET (Reserved), "Reserved", 0}, - {ACPI_DMT_UINT32, ACPI_MADT9_OFFSET (LocalApicId), "Processor x2Apic ID", 0}, - {ACPI_DMT_UINT32, ACPI_MADT9_OFFSET (LapicFlags), "Flags (decoded below)", DT_FLAG}, - {ACPI_DMT_FLAG0, ACPI_MADT9_FLAG_OFFSET (LapicFlags,0), "Processor Enabled", 0}, - {ACPI_DMT_UINT32, ACPI_MADT9_OFFSET (Uid), "Processor UID", 0}, - ACPI_DMT_TERMINATOR -}; - -/* 10: Local X2_APIC NMI (ACPI 4.0) */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoMadt10[] = -{ - {ACPI_DMT_UINT16, ACPI_MADT10_OFFSET (IntiFlags), "Flags (decoded below)", DT_FLAG}, - {ACPI_DMT_FLAGS0, ACPI_MADT10_FLAG_OFFSET (IntiFlags,0), "Polarity", 0}, - {ACPI_DMT_FLAGS2, ACPI_MADT10_FLAG_OFFSET (IntiFlags,0), "Trigger Mode", 0}, - {ACPI_DMT_UINT32, ACPI_MADT10_OFFSET (Uid), "Processor UID", 0}, - {ACPI_DMT_UINT8, ACPI_MADT10_OFFSET (Lint), "Interrupt Input LINT", 0}, - {ACPI_DMT_UINT24, ACPI_MADT10_OFFSET (Reserved[0]), "Reserved", 0}, - ACPI_DMT_TERMINATOR -}; - -/* 11: Generic Interrupt Controller (ACPI 5.0) */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoMadt11[] = -{ - {ACPI_DMT_UINT16, ACPI_MADT11_OFFSET (Reserved), "Reserved", 0}, - {ACPI_DMT_UINT32, ACPI_MADT11_OFFSET (CpuInterfaceNumber), "CPU Interface Number", 0}, - {ACPI_DMT_UINT32, ACPI_MADT11_OFFSET (Uid), "Processor UID", 0}, - {ACPI_DMT_UINT32, ACPI_MADT11_OFFSET (Flags), "Flags (decoded below)", DT_FLAG}, - {ACPI_DMT_FLAG0, ACPI_MADT11_FLAG_OFFSET (Flags,0), "Processor Enabled", 0}, - {ACPI_DMT_FLAG1, ACPI_MADT11_FLAG_OFFSET (Flags,0), "Performance Interrupt Trigger Mode", 0}, - {ACPI_DMT_FLAG2, ACPI_MADT11_FLAG_OFFSET (Flags,0), "Virtual GIC Interrupt Trigger Mode", 0}, - {ACPI_DMT_UINT32, ACPI_MADT11_OFFSET (ParkingVersion), "Parking Protocol Version", 0}, - {ACPI_DMT_UINT32, ACPI_MADT11_OFFSET (PerformanceInterrupt), "Performance Interrupt", 0}, - {ACPI_DMT_UINT64, ACPI_MADT11_OFFSET (ParkedAddress), "Parked Address", 0}, - {ACPI_DMT_UINT64, ACPI_MADT11_OFFSET (BaseAddress), "Base Address", 0}, - {ACPI_DMT_UINT64, ACPI_MADT11_OFFSET (GicvBaseAddress), "Virtual GIC Base Address", 0}, - {ACPI_DMT_UINT64, ACPI_MADT11_OFFSET (GichBaseAddress), "Hypervisor GIC Base Address", 0}, - {ACPI_DMT_UINT32, ACPI_MADT11_OFFSET (VgicInterrupt), "Virtual GIC Interrupt", 0}, - {ACPI_DMT_UINT64, ACPI_MADT11_OFFSET (GicrBaseAddress), "Redistributor Base Address", 0}, - {ACPI_DMT_UINT64, ACPI_MADT11_OFFSET (ArmMpidr), "ARM MPIDR", 0}, - {ACPI_DMT_UINT8, ACPI_MADT11_OFFSET (EfficiencyClass), "Efficiency Class", 0}, - {ACPI_DMT_UINT24, ACPI_MADT11_OFFSET (Reserved2[0]), "Reserved", 0}, - ACPI_DMT_TERMINATOR -}; - -/* 12: Generic Interrupt Distributor (ACPI 5.0) */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoMadt12[] = -{ - {ACPI_DMT_UINT16, ACPI_MADT12_OFFSET (Reserved), "Reserved", 0}, - {ACPI_DMT_UINT32, ACPI_MADT12_OFFSET (GicId), "Local GIC Hardware ID", 0}, - {ACPI_DMT_UINT64, ACPI_MADT12_OFFSET (BaseAddress), "Base Address", 0}, - {ACPI_DMT_UINT32, ACPI_MADT12_OFFSET (GlobalIrqBase), "Interrupt Base", 0}, - {ACPI_DMT_UINT8, ACPI_MADT12_OFFSET (Version), "Version", 0}, - {ACPI_DMT_UINT24, ACPI_MADT12_OFFSET (Reserved2[0]), "Reserved", 0}, - ACPI_DMT_TERMINATOR -}; - -/* 13: Generic MSI Frame (ACPI 5.1) */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoMadt13[] = -{ - {ACPI_DMT_UINT16, ACPI_MADT13_OFFSET (Reserved), "Reserved", 0}, - {ACPI_DMT_UINT32, ACPI_MADT13_OFFSET (MsiFrameId), "MSI Frame ID", 0}, - {ACPI_DMT_UINT64, ACPI_MADT13_OFFSET (BaseAddress), "Base Address", 0}, - {ACPI_DMT_UINT32, ACPI_MADT13_OFFSET (Flags), "Flags (decoded below)", DT_FLAG}, - {ACPI_DMT_FLAG0, ACPI_MADT13_FLAG_OFFSET (Flags,0), "Select SPI", 0}, - {ACPI_DMT_UINT16, ACPI_MADT13_OFFSET (SpiCount), "SPI Count", 0}, - {ACPI_DMT_UINT16, ACPI_MADT13_OFFSET (SpiBase), "SPI Base", 0}, - ACPI_DMT_TERMINATOR -}; - -/* 14: Generic Redistributor (ACPI 5.1) */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoMadt14[] = -{ - {ACPI_DMT_UINT16, ACPI_MADT14_OFFSET (Reserved), "Reserved", 0}, - {ACPI_DMT_UINT64, ACPI_MADT14_OFFSET (BaseAddress), "Base Address", 0}, - {ACPI_DMT_UINT32, ACPI_MADT14_OFFSET (Length), "Length", 0}, - ACPI_DMT_TERMINATOR -}; - -/* 15: Generic Translator (ACPI 6.0) */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoMadt15[] = -{ - {ACPI_DMT_UINT16, ACPI_MADT15_OFFSET (Reserved), "Reserved", 0}, - {ACPI_DMT_UINT32, ACPI_MADT15_OFFSET (TranslationId), "Translation ID", 0}, - {ACPI_DMT_UINT64, ACPI_MADT15_OFFSET (BaseAddress), "Base Address", 0}, - {ACPI_DMT_UINT32, ACPI_MADT15_OFFSET (Reserved2), "Reserved", 0}, - ACPI_DMT_TERMINATOR -}; - -/******************************************************************************* - * - * MCFG - PCI Memory Mapped Configuration table and Subtable - * - ******************************************************************************/ - -ACPI_DMTABLE_INFO AcpiDmTableInfoMcfg[] = -{ - {ACPI_DMT_UINT64, ACPI_MCFG_OFFSET (Reserved[0]), "Reserved", 0}, - ACPI_DMT_TERMINATOR -}; - -ACPI_DMTABLE_INFO AcpiDmTableInfoMcfg0[] = -{ - {ACPI_DMT_UINT64, ACPI_MCFG0_OFFSET (Address), "Base Address", 0}, - {ACPI_DMT_UINT16, ACPI_MCFG0_OFFSET (PciSegment), "Segment Group Number", 0}, - {ACPI_DMT_UINT8, ACPI_MCFG0_OFFSET (StartBusNumber), "Start Bus Number", 0}, - {ACPI_DMT_UINT8, ACPI_MCFG0_OFFSET (EndBusNumber), "End Bus Number", 0}, - {ACPI_DMT_UINT32, ACPI_MCFG0_OFFSET (Reserved), "Reserved", 0}, - ACPI_DMT_TERMINATOR -}; - - -/******************************************************************************* - * - * MCHI - Management Controller Host Interface table - * - ******************************************************************************/ - -ACPI_DMTABLE_INFO AcpiDmTableInfoMchi[] = -{ - {ACPI_DMT_UINT8, ACPI_MCHI_OFFSET (InterfaceType), "Interface Type", 0}, - {ACPI_DMT_UINT8, ACPI_MCHI_OFFSET (Protocol), "Protocol", 0}, - {ACPI_DMT_UINT64, ACPI_MCHI_OFFSET (ProtocolData), "Protocol Data", 0}, - {ACPI_DMT_UINT8, ACPI_MCHI_OFFSET (InterruptType), "Interrupt Type", 0}, - {ACPI_DMT_UINT8, ACPI_MCHI_OFFSET (Gpe), "Gpe", 0}, - {ACPI_DMT_UINT8, ACPI_MCHI_OFFSET (PciDeviceFlag), "Pci Device Flag", 0}, - {ACPI_DMT_UINT32, ACPI_MCHI_OFFSET (GlobalInterrupt), "Global Interrupt", 0}, - {ACPI_DMT_GAS, ACPI_MCHI_OFFSET (ControlRegister), "Control Register", 0}, - {ACPI_DMT_UINT8, ACPI_MCHI_OFFSET (PciSegment), "Pci Segment", 0}, - {ACPI_DMT_UINT8, ACPI_MCHI_OFFSET (PciBus), "Pci Bus", 0}, - {ACPI_DMT_UINT8, ACPI_MCHI_OFFSET (PciDevice), "Pci Device", 0}, - {ACPI_DMT_UINT8, ACPI_MCHI_OFFSET (PciFunction), "Pci Function", 0}, - ACPI_DMT_TERMINATOR -}; - - -/******************************************************************************* - * - * MPST - Memory Power State Table - * - ******************************************************************************/ - -ACPI_DMTABLE_INFO AcpiDmTableInfoMpst[] = -{ - {ACPI_DMT_UINT8, ACPI_MPST_OFFSET (ChannelId), "Channel ID", 0}, - {ACPI_DMT_UINT24, ACPI_MPST_OFFSET (Reserved1[0]), "Reserved", 0}, - {ACPI_DMT_UINT16, ACPI_MPST_OFFSET (PowerNodeCount), "Power Node Count", 0}, - {ACPI_DMT_UINT16, ACPI_MPST_OFFSET (Reserved2), "Reserved", 0}, - ACPI_DMT_TERMINATOR -}; - -/* MPST subtables */ - -/* 0: Memory Power Node Structure */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoMpst0[] = -{ - {ACPI_DMT_UINT8, ACPI_MPST0_OFFSET (Flags), "Flags (decoded below)", DT_FLAG}, - {ACPI_DMT_FLAG0, ACPI_MPST0_FLAG_OFFSET (Flags,0), "Node Enabled", 0}, - {ACPI_DMT_FLAG1, ACPI_MPST0_FLAG_OFFSET (Flags,0), "Power Managed", 0}, - {ACPI_DMT_FLAG2, ACPI_MPST0_FLAG_OFFSET (Flags,0), "Hot Plug Capable", 0}, - - {ACPI_DMT_UINT8, ACPI_MPST0_OFFSET (Reserved1), "Reserved", 0}, - {ACPI_DMT_UINT16, ACPI_MPST0_OFFSET (NodeId), "Node ID", 0}, - {ACPI_DMT_UINT32, ACPI_MPST0_OFFSET (Length), "Length", 0}, - {ACPI_DMT_UINT64, ACPI_MPST0_OFFSET (RangeAddress), "Range Address", 0}, - {ACPI_DMT_UINT64, ACPI_MPST0_OFFSET (RangeLength), "Range Length", 0}, - {ACPI_DMT_UINT32, ACPI_MPST0_OFFSET (NumPowerStates), "Num Power States", 0}, - {ACPI_DMT_UINT32, ACPI_MPST0_OFFSET (NumPhysicalComponents), "Num Physical Components", 0}, - ACPI_DMT_TERMINATOR -}; - -/* 0A: Sub-subtable - Memory Power State Structure (follows Memory Power Node above) */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoMpst0A[] = -{ - {ACPI_DMT_UINT8, ACPI_MPST0A_OFFSET (PowerState), "Power State", 0}, - {ACPI_DMT_UINT8, ACPI_MPST0A_OFFSET (InfoIndex), "InfoIndex", 0}, - ACPI_DMT_TERMINATOR -}; - -/* 0B: Sub-subtable - Physical Component ID Structure (follows Memory Power State(s) above) */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoMpst0B[] = -{ - {ACPI_DMT_UINT16, ACPI_MPST0B_OFFSET (ComponentId), "Component Id", 0}, - ACPI_DMT_TERMINATOR -}; - -/* 01: Power Characteristics Count (follows all Power Node(s) above) */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoMpst1[] = -{ - {ACPI_DMT_UINT16, ACPI_MPST1_OFFSET (CharacteristicsCount), "Characteristics Count", 0}, - {ACPI_DMT_UINT16, ACPI_MPST1_OFFSET (Reserved), "Reserved", 0}, - ACPI_DMT_TERMINATOR -}; - -/* 02: Memory Power State Characteristics Structure */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoMpst2[] = -{ - {ACPI_DMT_UINT8, ACPI_MPST2_OFFSET (StructureId), "Structure ID", 0}, - {ACPI_DMT_UINT8, ACPI_MPST2_OFFSET (Flags), "Flags (decoded below)", DT_FLAG}, - {ACPI_DMT_FLAG0, ACPI_MPST2_FLAG_OFFSET (Flags,0), "Memory Preserved", 0}, - {ACPI_DMT_FLAG1, ACPI_MPST2_FLAG_OFFSET (Flags,0), "Auto Entry", 0}, - {ACPI_DMT_FLAG2, ACPI_MPST2_FLAG_OFFSET (Flags,0), "Auto Exit", 0}, - - {ACPI_DMT_UINT16, ACPI_MPST2_OFFSET (Reserved1), "Reserved", 0}, - {ACPI_DMT_UINT32, ACPI_MPST2_OFFSET (AveragePower), "Average Power", 0}, - {ACPI_DMT_UINT32, ACPI_MPST2_OFFSET (PowerSaving), "Power Saving", 0}, - {ACPI_DMT_UINT64, ACPI_MPST2_OFFSET (ExitLatency), "Exit Latency", 0}, - {ACPI_DMT_UINT64, ACPI_MPST2_OFFSET (Reserved2), "Reserved", 0}, - ACPI_DMT_TERMINATOR -}; - - -/******************************************************************************* - * - * MSCT - Maximum System Characteristics Table (ACPI 4.0) - * - ******************************************************************************/ - -ACPI_DMTABLE_INFO AcpiDmTableInfoMsct[] = -{ - {ACPI_DMT_UINT32, ACPI_MSCT_OFFSET (ProximityOffset), "Proximity Offset", 0}, - {ACPI_DMT_UINT32, ACPI_MSCT_OFFSET (MaxProximityDomains), "Max Proximity Domains", 0}, - {ACPI_DMT_UINT32, ACPI_MSCT_OFFSET (MaxClockDomains), "Max Clock Domains", 0}, - {ACPI_DMT_UINT64, ACPI_MSCT_OFFSET (MaxAddress), "Max Physical Address", 0}, - ACPI_DMT_TERMINATOR -}; - -/* Subtable - Maximum Proximity Domain Information. Version 1 */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoMsct0[] = -{ - {ACPI_DMT_UINT8, ACPI_MSCT0_OFFSET (Revision), "Revision", 0}, - {ACPI_DMT_UINT8, ACPI_MSCT0_OFFSET (Length), "Length", DT_LENGTH}, - {ACPI_DMT_UINT32, ACPI_MSCT0_OFFSET (RangeStart), "Domain Range Start", 0}, - {ACPI_DMT_UINT32, ACPI_MSCT0_OFFSET (RangeEnd), "Domain Range End", 0}, - {ACPI_DMT_UINT32, ACPI_MSCT0_OFFSET (ProcessorCapacity), "Processor Capacity", 0}, - {ACPI_DMT_UINT64, ACPI_MSCT0_OFFSET (MemoryCapacity), "Memory Capacity", 0}, - ACPI_DMT_TERMINATOR -}; - - -/******************************************************************************* - * - * MTMR - MID Timer Table - * - ******************************************************************************/ - -ACPI_DMTABLE_INFO AcpiDmTableInfoMtmr[] = -{ - ACPI_DMT_TERMINATOR -}; - -/* MTMR Subtables - MTMR Entry */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoMtmr0[] = -{ - {ACPI_DMT_GAS, ACPI_MTMR0_OFFSET (PhysicalAddress), "PhysicalAddress", 0}, - {ACPI_DMT_UINT32, ACPI_MTMR0_OFFSET (Frequency), "Frequency", 0}, - {ACPI_DMT_UINT32, ACPI_MTMR0_OFFSET (Irq), "IRQ", 0}, - ACPI_DMT_TERMINATOR -}; - - -/******************************************************************************* - * - * NFIT - NVDIMM Firmware Interface Table and Subtables - (ACPI 6.0) - * - ******************************************************************************/ - -ACPI_DMTABLE_INFO AcpiDmTableInfoNfit[] = -{ - {ACPI_DMT_UINT32, ACPI_NFIT_OFFSET (Reserved), "Reserved", 0}, - ACPI_DMT_TERMINATOR -}; - -/* Common Subtable header */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoNfitHdr[] = -{ - {ACPI_DMT_NFIT, ACPI_NFITH_OFFSET (Type), "Subtable Type", 0}, - {ACPI_DMT_UINT16, ACPI_NFITH_OFFSET (Length), "Length", DT_LENGTH}, - ACPI_DMT_TERMINATOR -}; - -/* 0: System Physical Address Range Structure */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoNfit0[] = -{ - {ACPI_DMT_UINT16, ACPI_NFIT0_OFFSET (RangeIndex), "Range Index", 0}, - {ACPI_DMT_UINT16, ACPI_NFIT0_OFFSET (Flags), "Flags (decoded below)", DT_FLAG}, - {ACPI_DMT_FLAG0, ACPI_NFIT0_FLAG_OFFSET (Flags,0), "Add/Online Operation Only", 0}, - {ACPI_DMT_FLAG1, ACPI_NFIT0_FLAG_OFFSET (Flags,0), "Proximity Domain Valid", 0}, - {ACPI_DMT_UINT32, ACPI_NFIT0_OFFSET (Reserved), "Reserved", 0}, - {ACPI_DMT_UINT32, ACPI_NFIT0_OFFSET (ProximityDomain), "Proximity Domain", 0}, - {ACPI_DMT_UUID, ACPI_NFIT0_OFFSET (RangeGuid[0]), "Address Range GUID", 0}, - {ACPI_DMT_UINT64, ACPI_NFIT0_OFFSET (Address), "Address Range Base", 0}, - {ACPI_DMT_UINT64, ACPI_NFIT0_OFFSET (Length), "Address Range Length", 0}, - {ACPI_DMT_UINT64, ACPI_NFIT0_OFFSET (MemoryMapping), "Memory Map Attribute", 0}, - ACPI_DMT_TERMINATOR -}; - -/* 1: Memory Device to System Address Range Map Structure */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoNfit1[] = -{ - {ACPI_DMT_UINT32, ACPI_NFIT1_OFFSET (DeviceHandle), "Device Handle", 0}, - {ACPI_DMT_UINT16, ACPI_NFIT1_OFFSET (PhysicalId), "Physical Id", 0}, - {ACPI_DMT_UINT16, ACPI_NFIT1_OFFSET (RegionId), "Region Id", 0}, - {ACPI_DMT_UINT16, ACPI_NFIT1_OFFSET (RangeIndex), "Range Index", 0}, - {ACPI_DMT_UINT16, ACPI_NFIT1_OFFSET (RegionIndex), "Control Region Index", 0}, - {ACPI_DMT_UINT64, ACPI_NFIT1_OFFSET (RegionSize), "Region Size", 0}, - {ACPI_DMT_UINT64, ACPI_NFIT1_OFFSET (RegionOffset), "Region Offset", 0}, - {ACPI_DMT_UINT64, ACPI_NFIT1_OFFSET (Address), "Address Region Base", 0}, - {ACPI_DMT_UINT16, ACPI_NFIT1_OFFSET (InterleaveIndex), "Interleave Index", 0}, - {ACPI_DMT_UINT16, ACPI_NFIT1_OFFSET (InterleaveWays), "Interleave Ways", 0}, - {ACPI_DMT_UINT16, ACPI_NFIT1_OFFSET (Flags), "Flags", DT_FLAG}, - {ACPI_DMT_FLAG0, ACPI_NFIT1_FLAG_OFFSET (Flags,0), "Save to device failed", 0}, - {ACPI_DMT_FLAG1, ACPI_NFIT1_FLAG_OFFSET (Flags,0), "Restore from device failed", 0}, - {ACPI_DMT_FLAG2, ACPI_NFIT1_FLAG_OFFSET (Flags,0), "Platform flush failed", 0}, - {ACPI_DMT_FLAG3, ACPI_NFIT1_FLAG_OFFSET (Flags,0), "Device not armed", 0}, - {ACPI_DMT_FLAG4, ACPI_NFIT1_FLAG_OFFSET (Flags,0), "Health events observed", 0}, - {ACPI_DMT_FLAG5, ACPI_NFIT1_FLAG_OFFSET (Flags,0), "Health events enabled", 0}, - {ACPI_DMT_UINT16, ACPI_NFIT1_OFFSET (Reserved), "Reserved", 0}, - ACPI_DMT_TERMINATOR -}; - -/* 2: Interleave Structure */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoNfit2[] = -{ - {ACPI_DMT_UINT16, ACPI_NFIT2_OFFSET (InterleaveIndex), "Interleave Index", 0}, - {ACPI_DMT_UINT16, ACPI_NFIT2_OFFSET (Reserved), "Reserved", 0}, - {ACPI_DMT_UINT32, ACPI_NFIT2_OFFSET (LineCount), "Line Count", 0}, - {ACPI_DMT_UINT32, ACPI_NFIT2_OFFSET (LineSize), "Line Size", 0}, - ACPI_DMT_TERMINATOR -}; - -ACPI_DMTABLE_INFO AcpiDmTableInfoNfit2a[] = -{ - {ACPI_DMT_UINT32, 0, "Line Offset", DT_OPTIONAL}, - ACPI_DMT_TERMINATOR -}; - -/* 3: SMBIOS Management Information Structure */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoNfit3[] = -{ - {ACPI_DMT_UINT32, ACPI_NFIT3_OFFSET (Reserved), "Reserved", 0}, - ACPI_DMT_TERMINATOR -}; - -ACPI_DMTABLE_INFO AcpiDmTableInfoNfit3a[] = -{ - {ACPI_DMT_RAW_BUFFER, 0, "SMBIOS Table Entries", DT_OPTIONAL}, - ACPI_DMT_TERMINATOR -}; - -/* 4: NVDIMM Control Region Structure */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoNfit4[] = -{ - {ACPI_DMT_UINT16, ACPI_NFIT4_OFFSET (RegionIndex), "Region Index", 0}, - {ACPI_DMT_UINT16, ACPI_NFIT4_OFFSET (VendorId), "Vendor Id", 0}, - {ACPI_DMT_UINT16, ACPI_NFIT4_OFFSET (DeviceId), "Device Id", 0}, - {ACPI_DMT_UINT16, ACPI_NFIT4_OFFSET (RevisionId), "Revision Id", 0}, - {ACPI_DMT_UINT16, ACPI_NFIT4_OFFSET (SubsystemVendorId), "Subsystem Vendor Id", 0}, - {ACPI_DMT_UINT16, ACPI_NFIT4_OFFSET (SubsystemDeviceId), "Subsystem Device Id", 0}, - {ACPI_DMT_UINT16, ACPI_NFIT4_OFFSET (SubsystemRevisionId), "Subsystem Revision Id", 0}, - {ACPI_DMT_UINT48, ACPI_NFIT4_OFFSET (Reserved[0]), "Reserved", 0}, - {ACPI_DMT_UINT32, ACPI_NFIT4_OFFSET (SerialNumber), "Serial Number", 0}, - {ACPI_DMT_UINT16, ACPI_NFIT4_OFFSET (Code), "Code", 0}, - {ACPI_DMT_UINT16, ACPI_NFIT4_OFFSET (Windows), "Window Count", 0}, - {ACPI_DMT_UINT64, ACPI_NFIT4_OFFSET (WindowSize), "Window Size", 0}, - {ACPI_DMT_UINT64, ACPI_NFIT4_OFFSET (CommandOffset), "Command Offset", 0}, - {ACPI_DMT_UINT64, ACPI_NFIT4_OFFSET (CommandSize), "Command Size", 0}, - {ACPI_DMT_UINT64, ACPI_NFIT4_OFFSET (StatusOffset), "Status Offset", 0}, - {ACPI_DMT_UINT64, ACPI_NFIT4_OFFSET (StatusSize), "Status Size", 0}, - {ACPI_DMT_UINT16, ACPI_NFIT4_OFFSET (Flags), "Flags", DT_FLAG}, - {ACPI_DMT_FLAG0, ACPI_NFIT4_FLAG_OFFSET (Flags,0), "Windows buffered", 0}, - {ACPI_DMT_UINT48, ACPI_NFIT4_OFFSET (Reserved1[0]), "Reserved1", 0}, - ACPI_DMT_TERMINATOR -}; - -/* 5: NVDIMM Block Data Window Region Structure */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoNfit5[] = -{ - {ACPI_DMT_UINT16, ACPI_NFIT5_OFFSET (RegionIndex), "Region Index", 0}, - {ACPI_DMT_UINT16, ACPI_NFIT5_OFFSET (Windows), "Window Count", 0}, - {ACPI_DMT_UINT64, ACPI_NFIT5_OFFSET (Offset), "Offset", 0}, - {ACPI_DMT_UINT64, ACPI_NFIT5_OFFSET (Size), "Size", 0}, - {ACPI_DMT_UINT64, ACPI_NFIT5_OFFSET (Capacity), "Capacity", 0}, - {ACPI_DMT_UINT64, ACPI_NFIT5_OFFSET (StartAddress), "Start Address", 0}, - ACPI_DMT_TERMINATOR -}; - -/* 6: Flush Hint Address Structure */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoNfit6[] = -{ - {ACPI_DMT_UINT32, ACPI_NFIT6_OFFSET (DeviceHandle), "Device Handle", 0}, - {ACPI_DMT_UINT16, ACPI_NFIT6_OFFSET (HintCount), "Hint Count", 0}, - {ACPI_DMT_UINT48, ACPI_NFIT6_OFFSET (Reserved[0]), "Reserved", 0}, - ACPI_DMT_TERMINATOR -}; - -ACPI_DMTABLE_INFO AcpiDmTableInfoNfit6a[] = -{ - {ACPI_DMT_UINT64, 0, "Hint Address", DT_OPTIONAL}, - ACPI_DMT_TERMINATOR -}; - - -/******************************************************************************* - * - * PCCT - Platform Communications Channel Table (ACPI 5.0) - * - ******************************************************************************/ - -ACPI_DMTABLE_INFO AcpiDmTableInfoPcct[] = -{ - {ACPI_DMT_UINT32, ACPI_PCCT_OFFSET (Flags), "Flags (decoded below)", DT_FLAG}, - {ACPI_DMT_FLAG0, ACPI_PCCT_FLAG_OFFSET (Flags,0), "Doorbell", 0}, - {ACPI_DMT_UINT64, ACPI_PCCT_OFFSET (Reserved), "Reserved", 0}, - ACPI_DMT_TERMINATOR -}; - -/* PCCT subtables */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoPcctHdr[] = -{ - {ACPI_DMT_PCCT, ACPI_PCCT0_OFFSET (Header.Type), "Subtable Type", 0}, - {ACPI_DMT_UINT8, ACPI_PCCT0_OFFSET (Header.Length), "Length", DT_LENGTH}, - ACPI_DMT_TERMINATOR -}; - -/* 0: Generic Communications Subspace */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoPcct0[] = -{ - {ACPI_DMT_UINT48, ACPI_PCCT0_OFFSET (Reserved[0]), "Reserved", 0}, - {ACPI_DMT_UINT64, ACPI_PCCT0_OFFSET (BaseAddress), "Base Address", 0}, - {ACPI_DMT_UINT64, ACPI_PCCT0_OFFSET (Length), "Address Length", 0}, - {ACPI_DMT_GAS, ACPI_PCCT0_OFFSET (DoorbellRegister), "Doorbell Register", 0}, - {ACPI_DMT_UINT64, ACPI_PCCT0_OFFSET (PreserveMask), "Preserve Mask", 0}, - {ACPI_DMT_UINT64, ACPI_PCCT0_OFFSET (WriteMask), "Write Mask", 0}, - {ACPI_DMT_UINT32, ACPI_PCCT0_OFFSET (Latency), "Command Latency", 0}, - {ACPI_DMT_UINT32, ACPI_PCCT0_OFFSET (MaxAccessRate), "Maximum Access Rate", 0}, - {ACPI_DMT_UINT16, ACPI_PCCT0_OFFSET (MinTurnaroundTime), "Minimum Turnaround Time", 0}, - ACPI_DMT_TERMINATOR -}; - -/* 1: HW-reduced Communications Subspace (ACPI 5.1) */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoPcct1[] = -{ - {ACPI_DMT_UINT32, ACPI_PCCT1_OFFSET (DoorbellInterrupt), "Doorbell Interrupt", 0}, - {ACPI_DMT_UINT8, ACPI_PCCT1_OFFSET (Flags), "Flags (Decoded Below)", DT_FLAG}, - {ACPI_DMT_FLAG0, ACPI_PCCT1_FLAG_OFFSET (Flags,0), "Polarity", 0}, - {ACPI_DMT_FLAG1, ACPI_PCCT1_FLAG_OFFSET (Flags,0), "Mode", 0}, - {ACPI_DMT_UINT8, ACPI_PCCT1_OFFSET (Reserved), "Reserved", 0}, - {ACPI_DMT_UINT64, ACPI_PCCT1_OFFSET (BaseAddress), "Base Address", 0}, - {ACPI_DMT_UINT64, ACPI_PCCT1_OFFSET (Length), "Address Length", 0}, - {ACPI_DMT_GAS, ACPI_PCCT1_OFFSET (DoorbellRegister), "Doorbell Register", 0}, - {ACPI_DMT_UINT64, ACPI_PCCT1_OFFSET (PreserveMask), "Preserve Mask", 0}, - {ACPI_DMT_UINT64, ACPI_PCCT1_OFFSET (WriteMask), "Write Mask", 0}, - {ACPI_DMT_UINT32, ACPI_PCCT1_OFFSET (Latency), "Command Latency", 0}, - {ACPI_DMT_UINT32, ACPI_PCCT1_OFFSET (MaxAccessRate), "Maximum Access Rate", 0}, - {ACPI_DMT_UINT16, ACPI_PCCT1_OFFSET (MinTurnaroundTime), "Minimum Turnaround Time", 0}, - ACPI_DMT_TERMINATOR -}; - - -/******************************************************************************* - * - * PMTT - Platform Memory Topology Table - * - ******************************************************************************/ - -ACPI_DMTABLE_INFO AcpiDmTableInfoPmtt[] = -{ - {ACPI_DMT_UINT32, ACPI_PMTT_OFFSET (Reserved), "Reserved", 0}, - ACPI_DMT_TERMINATOR -}; - -/* Common Subtable header (one per Subtable) */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoPmttHdr[] = -{ - {ACPI_DMT_PMTT, ACPI_PMTTH_OFFSET (Type), "Subtable Type", 0}, - {ACPI_DMT_UINT8, ACPI_PMTTH_OFFSET (Reserved1), "Reserved", 0}, - {ACPI_DMT_UINT16, ACPI_PMTTH_OFFSET (Length), "Length", DT_LENGTH}, - {ACPI_DMT_UINT16, ACPI_PMTTH_OFFSET (Flags), "Flags (decoded below)", DT_FLAG}, - {ACPI_DMT_FLAG0, ACPI_PMTTH_FLAG_OFFSET (Flags,0), "Top-level Device", 0}, - {ACPI_DMT_FLAG1, ACPI_PMTTH_FLAG_OFFSET (Flags,0), "Physical Element", 0}, - {ACPI_DMT_FLAGS2, ACPI_PMTTH_FLAG_OFFSET (Flags,0), "Memory Type", 0}, - {ACPI_DMT_UINT16, ACPI_PMTTH_OFFSET (Reserved2), "Reserved", 0}, - ACPI_DMT_TERMINATOR -}; - -/* PMTT Subtables */ - -/* 0: Socket */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoPmtt0[] = -{ - {ACPI_DMT_UINT16, ACPI_PMTT0_OFFSET (SocketId), "Socket ID", 0}, - {ACPI_DMT_UINT16, ACPI_PMTT0_OFFSET (Reserved), "Reserved", 0}, - ACPI_DMT_TERMINATOR -}; - -/* 1: Memory Controller */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoPmtt1[] = -{ - {ACPI_DMT_UINT32, ACPI_PMTT1_OFFSET (ReadLatency), "Read Latency", 0}, - {ACPI_DMT_UINT32, ACPI_PMTT1_OFFSET (WriteLatency), "Write Latency", 0}, - {ACPI_DMT_UINT32, ACPI_PMTT1_OFFSET (ReadBandwidth), "Read Bandwidth", 0}, - {ACPI_DMT_UINT32, ACPI_PMTT1_OFFSET (WriteBandwidth), "Write Bandwidth", 0}, - {ACPI_DMT_UINT16, ACPI_PMTT1_OFFSET (AccessWidth), "Access Width", 0}, - {ACPI_DMT_UINT16, ACPI_PMTT1_OFFSET (Alignment), "Alignment", 0}, - {ACPI_DMT_UINT16, ACPI_PMTT1_OFFSET (Reserved), "Reserved", 0}, - {ACPI_DMT_UINT16, ACPI_PMTT1_OFFSET (DomainCount), "Domain Count", 0}, - ACPI_DMT_TERMINATOR -}; - -/* 1a: Proximity Domain */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoPmtt1a[] = -{ - {ACPI_DMT_UINT32, ACPI_PMTT1A_OFFSET (ProximityDomain), "Proximity Domain", 0}, - ACPI_DMT_TERMINATOR -}; - -/* 2: Physical Component */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoPmtt2[] = -{ - {ACPI_DMT_UINT16, ACPI_PMTT2_OFFSET (ComponentId), "Component ID", 0}, - {ACPI_DMT_UINT16, ACPI_PMTT2_OFFSET (Reserved), "Reserved", 0}, - {ACPI_DMT_UINT32, ACPI_PMTT2_OFFSET (MemorySize), "Memory Size", 0}, - {ACPI_DMT_UINT32, ACPI_PMTT2_OFFSET (BiosHandle), "Bios Handle", 0}, - ACPI_DMT_TERMINATOR -}; - - -/******************************************************************************* - * - * S3PT - S3 Performance Table - * - ******************************************************************************/ - -ACPI_DMTABLE_INFO AcpiDmTableInfoS3pt[] = -{ - {ACPI_DMT_SIG, ACPI_S3PT_OFFSET (Signature[0]), "Signature", 0}, - {ACPI_DMT_UINT32, ACPI_S3PT_OFFSET (Length), "Length", DT_LENGTH}, - ACPI_DMT_TERMINATOR -}; - -/* S3PT subtable header */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoS3ptHdr[] = -{ - {ACPI_DMT_UINT16, ACPI_S3PTH_OFFSET (Type), "Type", 0}, - {ACPI_DMT_UINT8, ACPI_S3PTH_OFFSET (Length), "Length", DT_LENGTH}, - {ACPI_DMT_UINT8, ACPI_S3PTH_OFFSET (Revision), "Revision", 0}, - ACPI_DMT_TERMINATOR -}; - -/* 0: Basic S3 Resume Performance Record */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoS3pt0[] = -{ - {ACPI_DMT_UINT32, ACPI_S3PT0_OFFSET (ResumeCount), "Resume Count", 0}, - {ACPI_DMT_UINT64, ACPI_S3PT0_OFFSET (FullResume), "Full Resume", 0}, - {ACPI_DMT_UINT64, ACPI_S3PT0_OFFSET (AverageResume), "Average Resume", 0}, - ACPI_DMT_TERMINATOR -}; - -/* 1: Basic S3 Suspend Performance Record */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoS3pt1[] = -{ - {ACPI_DMT_UINT64, ACPI_S3PT1_OFFSET (SuspendStart), "Suspend Start", 0}, - {ACPI_DMT_UINT64, ACPI_S3PT1_OFFSET (SuspendEnd), "Suspend End", 0}, - ACPI_DMT_TERMINATOR -}; - - -/******************************************************************************* - * - * SBST - Smart Battery Specification Table - * - ******************************************************************************/ - -ACPI_DMTABLE_INFO AcpiDmTableInfoSbst[] = -{ - {ACPI_DMT_UINT32, ACPI_SBST_OFFSET (WarningLevel), "Warning Level", 0}, - {ACPI_DMT_UINT32, ACPI_SBST_OFFSET (LowLevel), "Low Level", 0}, - {ACPI_DMT_UINT32, ACPI_SBST_OFFSET (CriticalLevel), "Critical Level", 0}, - ACPI_DMT_TERMINATOR -}; - - -/******************************************************************************* - * - * SLIC - Software Licensing Description Table. This table contains the standard - * ACPI header followed by proprietary data structures - * - ******************************************************************************/ - -/* Single subtable, a proprietary format, so treat it as a buffer */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoSlic[] = -{ - {ACPI_DMT_RAW_BUFFER, 0, "Software Licensing Structure", 0}, - ACPI_DMT_TERMINATOR -}; - - -/******************************************************************************* - * - * SLIT - System Locality Information Table - * - ******************************************************************************/ - -ACPI_DMTABLE_INFO AcpiDmTableInfoSlit[] = -{ - {ACPI_DMT_UINT64, ACPI_SLIT_OFFSET (LocalityCount), "Localities", 0}, - ACPI_DMT_TERMINATOR -}; - - -/******************************************************************************* - * - * SPCR - Serial Port Console Redirection table - * - ******************************************************************************/ - -ACPI_DMTABLE_INFO AcpiDmTableInfoSpcr[] = -{ - {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (InterfaceType), "Interface Type", 0}, - {ACPI_DMT_UINT24, ACPI_SPCR_OFFSET (Reserved[0]), "Reserved", 0}, - {ACPI_DMT_GAS, ACPI_SPCR_OFFSET (SerialPort), "Serial Port Register", 0}, - {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (InterruptType), "Interrupt Type", 0}, - {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (PcInterrupt), "PCAT-compatible IRQ", 0}, - {ACPI_DMT_UINT32, ACPI_SPCR_OFFSET (Interrupt), "Interrupt", 0}, - {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (BaudRate), "Baud Rate", 0}, - {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (Parity), "Parity", 0}, - {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (StopBits), "Stop Bits", 0}, - {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (FlowControl), "Flow Control", 0}, - {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (TerminalType), "Terminal Type", 0}, - {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (Reserved2), "Reserved", 0}, - {ACPI_DMT_UINT16, ACPI_SPCR_OFFSET (PciDeviceId), "PCI Device ID", 0}, - {ACPI_DMT_UINT16, ACPI_SPCR_OFFSET (PciVendorId), "PCI Vendor ID", 0}, - {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (PciBus), "PCI Bus", 0}, - {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (PciDevice), "PCI Device", 0}, - {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (PciFunction), "PCI Function", 0}, - {ACPI_DMT_UINT32, ACPI_SPCR_OFFSET (PciFlags), "PCI Flags", 0}, - {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (PciSegment), "PCI Segment", 0}, - {ACPI_DMT_UINT32, ACPI_SPCR_OFFSET (Reserved2), "Reserved", 0}, - ACPI_DMT_TERMINATOR -}; - - -/******************************************************************************* - * - * SPMI - Server Platform Management Interface table - * - ******************************************************************************/ - -ACPI_DMTABLE_INFO AcpiDmTableInfoSpmi[] = -{ - {ACPI_DMT_UINT8, ACPI_SPMI_OFFSET (InterfaceType), "Interface Type", 0}, - {ACPI_DMT_UINT8, ACPI_SPMI_OFFSET (Reserved), "Reserved", DT_NON_ZERO}, /* Value must be 1 */ - {ACPI_DMT_UINT16, ACPI_SPMI_OFFSET (SpecRevision), "IPMI Spec Version", 0}, - {ACPI_DMT_UINT8, ACPI_SPMI_OFFSET (InterruptType), "Interrupt Type", 0}, - {ACPI_DMT_UINT8, ACPI_SPMI_OFFSET (GpeNumber), "GPE Number", 0}, - {ACPI_DMT_UINT8, ACPI_SPMI_OFFSET (Reserved1), "Reserved", 0}, - {ACPI_DMT_UINT8, ACPI_SPMI_OFFSET (PciDeviceFlag), "PCI Device Flag", 0}, - {ACPI_DMT_UINT32, ACPI_SPMI_OFFSET (Interrupt), "Interrupt", 0}, - {ACPI_DMT_GAS, ACPI_SPMI_OFFSET (IpmiRegister), "IPMI Register", 0}, - {ACPI_DMT_UINT8, ACPI_SPMI_OFFSET (PciSegment), "PCI Segment", 0}, - {ACPI_DMT_UINT8, ACPI_SPMI_OFFSET (PciBus), "PCI Bus", 0}, - {ACPI_DMT_UINT8, ACPI_SPMI_OFFSET (PciDevice), "PCI Device", 0}, - {ACPI_DMT_UINT8, ACPI_SPMI_OFFSET (PciFunction), "PCI Function", 0}, - {ACPI_DMT_UINT8, ACPI_SPMI_OFFSET (Reserved2), "Reserved", 0}, - ACPI_DMT_TERMINATOR -}; - - -/******************************************************************************* - * - * SRAT - System Resource Affinity Table and Subtables - * - ******************************************************************************/ - -ACPI_DMTABLE_INFO AcpiDmTableInfoSrat[] = -{ - {ACPI_DMT_UINT32, ACPI_SRAT_OFFSET (TableRevision), "Table Revision", 0}, - {ACPI_DMT_UINT64, ACPI_SRAT_OFFSET (Reserved), "Reserved", 0}, - ACPI_DMT_TERMINATOR -}; - -/* Common Subtable header (one per Subtable) */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoSratHdr[] = -{ - {ACPI_DMT_SRAT, ACPI_SRATH_OFFSET (Type), "Subtable Type", 0}, - {ACPI_DMT_UINT8, ACPI_SRATH_OFFSET (Length), "Length", DT_LENGTH}, - ACPI_DMT_TERMINATOR -}; - -/* SRAT Subtables */ - -/* 0: Processor Local APIC/SAPIC Affinity */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoSrat0[] = -{ - {ACPI_DMT_UINT8, ACPI_SRAT0_OFFSET (ProximityDomainLo), "Proximity Domain Low(8)", 0}, - {ACPI_DMT_UINT8, ACPI_SRAT0_OFFSET (ApicId), "Apic ID", 0}, - {ACPI_DMT_UINT32, ACPI_SRAT0_OFFSET (Flags), "Flags (decoded below)", DT_FLAG}, - {ACPI_DMT_FLAG0, ACPI_SRAT0_FLAG_OFFSET (Flags,0), "Enabled", 0}, - {ACPI_DMT_UINT8, ACPI_SRAT0_OFFSET (LocalSapicEid), "Local Sapic EID", 0}, - {ACPI_DMT_UINT24, ACPI_SRAT0_OFFSET (ProximityDomainHi[0]), "Proximity Domain High(24)", 0}, - {ACPI_DMT_UINT32, ACPI_SRAT0_OFFSET (ClockDomain), "Clock Domain", 0}, - ACPI_DMT_TERMINATOR -}; - -/* 1: Memory Affinity */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoSrat1[] = -{ - {ACPI_DMT_UINT32, ACPI_SRAT1_OFFSET (ProximityDomain), "Proximity Domain", 0}, - {ACPI_DMT_UINT16, ACPI_SRAT1_OFFSET (Reserved), "Reserved1", 0}, - {ACPI_DMT_UINT64, ACPI_SRAT1_OFFSET (BaseAddress), "Base Address", 0}, - {ACPI_DMT_UINT64, ACPI_SRAT1_OFFSET (Length), "Address Length", 0}, - {ACPI_DMT_UINT32, ACPI_SRAT1_OFFSET (Reserved1), "Reserved2", 0}, - {ACPI_DMT_UINT32, ACPI_SRAT1_OFFSET (Flags), "Flags (decoded below)", DT_FLAG}, - {ACPI_DMT_FLAG0, ACPI_SRAT1_FLAG_OFFSET (Flags,0), "Enabled", 0}, - {ACPI_DMT_FLAG1, ACPI_SRAT1_FLAG_OFFSET (Flags,0), "Hot Pluggable", 0}, - {ACPI_DMT_FLAG2, ACPI_SRAT1_FLAG_OFFSET (Flags,0), "Non-Volatile", 0}, - {ACPI_DMT_UINT64, ACPI_SRAT1_OFFSET (Reserved2), "Reserved3", 0}, - ACPI_DMT_TERMINATOR -}; - -/* 2: Processor Local X2_APIC Affinity (ACPI 4.0) */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoSrat2[] = -{ - {ACPI_DMT_UINT16, ACPI_SRAT2_OFFSET (Reserved), "Reserved1", 0}, - {ACPI_DMT_UINT32, ACPI_SRAT2_OFFSET (ProximityDomain), "Proximity Domain", 0}, - {ACPI_DMT_UINT32, ACPI_SRAT2_OFFSET (ApicId), "Apic ID", 0}, - {ACPI_DMT_UINT32, ACPI_SRAT2_OFFSET (Flags), "Flags (decoded below)", DT_FLAG}, - {ACPI_DMT_FLAG0, ACPI_SRAT2_FLAG_OFFSET (Flags,0), "Enabled", 0}, - {ACPI_DMT_UINT32, ACPI_SRAT2_OFFSET (ClockDomain), "Clock Domain", 0}, - {ACPI_DMT_UINT32, ACPI_SRAT2_OFFSET (Reserved2), "Reserved2", 0}, - ACPI_DMT_TERMINATOR -}; - -/* : GICC Affinity (ACPI 5.1) */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoSrat3[] = -{ - {ACPI_DMT_UINT32, ACPI_SRAT3_OFFSET (ProximityDomain), "Proximity Domain", 0}, - {ACPI_DMT_UINT32, ACPI_SRAT3_OFFSET (AcpiProcessorUid), "Acpi Processor UID", 0}, - {ACPI_DMT_UINT32, ACPI_SRAT3_OFFSET (Flags), "Flags (decoded below)", DT_FLAG}, - {ACPI_DMT_FLAG0, ACPI_SRAT3_FLAG_OFFSET (Flags,0), "Enabled", 0}, - {ACPI_DMT_UINT32, ACPI_SRAT3_OFFSET (ClockDomain), "Clock Domain", 0}, - ACPI_DMT_TERMINATOR -}; - - -/******************************************************************************* - * - * STAO - Status Override Table (_STA override) - ACPI 6.0 - * - ******************************************************************************/ - -ACPI_DMTABLE_INFO AcpiDmTableInfoStao[] = -{ - {ACPI_DMT_UINT8, ACPI_STAO_OFFSET (IgnoreUart), "Ignore UART", 0}, - ACPI_DMT_TERMINATOR -}; - -ACPI_DMTABLE_INFO AcpiDmTableInfoStaoStr[] = -{ - {ACPI_DMT_STRING, 0, "Namepath", 0}, - ACPI_DMT_TERMINATOR -}; - - -/******************************************************************************* - * - * TCPA - Trusted Computing Platform Alliance table (Client) - * - * NOTE: There are two versions of the table with the same signature -- - * the client version and the server version. The common PlatformClass - * field is used to differentiate the two types of tables. - * - ******************************************************************************/ - -ACPI_DMTABLE_INFO AcpiDmTableInfoTcpaHdr[] = -{ - {ACPI_DMT_UINT16, ACPI_TCPA_OFFSET (PlatformClass), "Platform Class", 0}, - ACPI_DMT_TERMINATOR -}; - -ACPI_DMTABLE_INFO AcpiDmTableInfoTcpaClient[] = -{ - {ACPI_DMT_UINT32, ACPI_TCPA_CLIENT_OFFSET (MinimumLogLength), "Min Event Log Length", 0}, - {ACPI_DMT_UINT64, ACPI_TCPA_CLIENT_OFFSET (LogAddress), "Event Log Address", 0}, - ACPI_DMT_TERMINATOR -}; - -ACPI_DMTABLE_INFO AcpiDmTableInfoTcpaServer[] = -{ - {ACPI_DMT_UINT16, ACPI_TCPA_SERVER_OFFSET (Reserved), "Reserved", 0}, - {ACPI_DMT_UINT64, ACPI_TCPA_SERVER_OFFSET (MinimumLogLength), "Min Event Log Length", 0}, - {ACPI_DMT_UINT64, ACPI_TCPA_SERVER_OFFSET (LogAddress), "Event Log Address", 0}, - {ACPI_DMT_UINT16, ACPI_TCPA_SERVER_OFFSET (SpecRevision), "Specification Revision", 0}, - {ACPI_DMT_UINT8, ACPI_TCPA_SERVER_OFFSET (DeviceFlags), "Device Flags (decoded below)", DT_FLAG}, - {ACPI_DMT_FLAG0, ACPI_TCPA_SERVER_OFFSET (DeviceFlags), "Pci Device", 0}, - {ACPI_DMT_FLAG1, ACPI_TCPA_SERVER_OFFSET (DeviceFlags), "Bus is Pnp", 0}, - {ACPI_DMT_FLAG2, ACPI_TCPA_SERVER_OFFSET (DeviceFlags), "Address Valid", 0}, - {ACPI_DMT_UINT8, ACPI_TCPA_SERVER_OFFSET (InterruptFlags), "Interrupt Flags (decoded below)", DT_FLAG}, - {ACPI_DMT_FLAG0, ACPI_TCPA_SERVER_OFFSET (InterruptFlags), "Mode", 0}, - {ACPI_DMT_FLAG1, ACPI_TCPA_SERVER_OFFSET (InterruptFlags), "Polarity", 0}, - {ACPI_DMT_FLAG2, ACPI_TCPA_SERVER_OFFSET (InterruptFlags), "GPE SCI Triggered", 0}, - {ACPI_DMT_FLAG3, ACPI_TCPA_SERVER_OFFSET (InterruptFlags), "Global System Interrupt", 0}, - {ACPI_DMT_UINT8, ACPI_TCPA_SERVER_OFFSET (GpeNumber), "Gpe Number", 0}, - {ACPI_DMT_UINT24, ACPI_TCPA_SERVER_OFFSET (Reserved2[0]), "Reserved", 0}, - {ACPI_DMT_UINT32, ACPI_TCPA_SERVER_OFFSET (GlobalInterrupt), "Global Interrupt", 0}, - {ACPI_DMT_GAS, ACPI_TCPA_SERVER_OFFSET (Address), "Address", 0}, - {ACPI_DMT_UINT32, ACPI_TCPA_SERVER_OFFSET (Reserved3), "Reserved", 0}, - {ACPI_DMT_GAS, ACPI_TCPA_SERVER_OFFSET (ConfigAddress), "Configuration Address", 0}, - {ACPI_DMT_UINT8, ACPI_TCPA_SERVER_OFFSET (Group), "Pci Group", 0}, - {ACPI_DMT_UINT8, ACPI_TCPA_SERVER_OFFSET (Bus), "Pci Bus", 0}, - {ACPI_DMT_UINT8, ACPI_TCPA_SERVER_OFFSET (Device), "Pci Device", 0}, - {ACPI_DMT_UINT8, ACPI_TCPA_SERVER_OFFSET (Function), "Pci Function", 0}, - ACPI_DMT_TERMINATOR -}; - - -/******************************************************************************* - * - * TPM2 - Trusted Platform Module (TPM) 2.0 Hardware Interface Table - * - ******************************************************************************/ - -ACPI_DMTABLE_INFO AcpiDmTableInfoTpm2[] = -{ - {ACPI_DMT_UINT16, ACPI_TPM2_OFFSET (PlatformClass), "Platform Class", 0}, - {ACPI_DMT_UINT16, ACPI_TPM2_OFFSET (Reserved), "Reserved", 0}, - {ACPI_DMT_UINT64, ACPI_TPM2_OFFSET (ControlAddress), "Control Address", 0}, - {ACPI_DMT_UINT32, ACPI_TPM2_OFFSET (StartMethod), "Start Method", 0}, - ACPI_DMT_TERMINATOR -}; - - -/******************************************************************************* - * - * UEFI - UEFI Boot optimization Table - * - ******************************************************************************/ - -ACPI_DMTABLE_INFO AcpiDmTableInfoUefi[] = -{ - {ACPI_DMT_UUID, ACPI_UEFI_OFFSET (Identifier[0]), "UUID Identifier", 0}, - {ACPI_DMT_UINT16, ACPI_UEFI_OFFSET (DataOffset), "Data Offset", 0}, - ACPI_DMT_TERMINATOR -}; - - -/******************************************************************************* - * - * VRTC - Virtual Real Time Clock Table - * - ******************************************************************************/ - -ACPI_DMTABLE_INFO AcpiDmTableInfoVrtc[] = -{ - ACPI_DMT_TERMINATOR -}; - -/* VRTC Subtables - VRTC Entry */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoVrtc0[] = -{ - {ACPI_DMT_GAS, ACPI_VRTC0_OFFSET (PhysicalAddress), "PhysicalAddress", 0}, - {ACPI_DMT_UINT32, ACPI_VRTC0_OFFSET (Irq), "IRQ", 0}, - ACPI_DMT_TERMINATOR -}; - - -/******************************************************************************* - * - * WAET - Windows ACPI Emulated devices Table - * - ******************************************************************************/ - -ACPI_DMTABLE_INFO AcpiDmTableInfoWaet[] = -{ - {ACPI_DMT_UINT32, ACPI_WAET_OFFSET (Flags), "Flags (decoded below)", DT_FLAG}, - {ACPI_DMT_FLAG0, ACPI_WAET_OFFSET (Flags), "RTC needs no INT ack", 0}, - {ACPI_DMT_FLAG1, ACPI_WAET_OFFSET (Flags), "PM timer, one read only", 0}, - ACPI_DMT_TERMINATOR -}; - - -/******************************************************************************* - * - * WDAT - Watchdog Action Table - * - ******************************************************************************/ - -ACPI_DMTABLE_INFO AcpiDmTableInfoWdat[] = -{ - {ACPI_DMT_UINT32, ACPI_WDAT_OFFSET (HeaderLength), "Header Length", DT_LENGTH}, - {ACPI_DMT_UINT16, ACPI_WDAT_OFFSET (PciSegment), "PCI Segment", 0}, - {ACPI_DMT_UINT8, ACPI_WDAT_OFFSET (PciBus), "PCI Bus", 0}, - {ACPI_DMT_UINT8, ACPI_WDAT_OFFSET (PciDevice), "PCI Device", 0}, - {ACPI_DMT_UINT8, ACPI_WDAT_OFFSET (PciFunction), "PCI Function", 0}, - {ACPI_DMT_UINT24, ACPI_WDAT_OFFSET (Reserved[0]), "Reserved", 0}, - {ACPI_DMT_UINT32, ACPI_WDAT_OFFSET (TimerPeriod), "Timer Period", 0}, - {ACPI_DMT_UINT32, ACPI_WDAT_OFFSET (MaxCount), "Max Count", 0}, - {ACPI_DMT_UINT32, ACPI_WDAT_OFFSET (MinCount), "Min Count", 0}, - {ACPI_DMT_UINT8, ACPI_WDAT_OFFSET (Flags), "Flags (decoded below)", DT_FLAG}, - {ACPI_DMT_FLAG0, ACPI_WDAT_OFFSET (Flags), "Enabled", 0}, - {ACPI_DMT_FLAG7, ACPI_WDAT_OFFSET (Flags), "Stopped When Asleep", 0}, - {ACPI_DMT_UINT24, ACPI_WDAT_OFFSET (Reserved2[0]), "Reserved", 0}, - {ACPI_DMT_UINT32, ACPI_WDAT_OFFSET (Entries), "Watchdog Entry Count", 0}, - ACPI_DMT_TERMINATOR -}; - -/* WDAT Subtables - Watchdog Instruction Entries */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoWdat0[] = -{ - {ACPI_DMT_UINT8, ACPI_WDAT0_OFFSET (Action), "Watchdog Action", 0}, - {ACPI_DMT_UINT8, ACPI_WDAT0_OFFSET (Instruction), "Instruction", 0}, - {ACPI_DMT_UINT16, ACPI_WDAT0_OFFSET (Reserved), "Reserved", 0}, - {ACPI_DMT_GAS, ACPI_WDAT0_OFFSET (RegisterRegion), "Register Region", 0}, - {ACPI_DMT_UINT32, ACPI_WDAT0_OFFSET (Value), "Value", 0}, - {ACPI_DMT_UINT32, ACPI_WDAT0_OFFSET (Mask), "Register Mask", 0}, - ACPI_DMT_TERMINATOR -}; - - -/******************************************************************************* - * - * WDDT - Watchdog Description Table - * - ******************************************************************************/ - -ACPI_DMTABLE_INFO AcpiDmTableInfoWddt[] = -{ - {ACPI_DMT_UINT16, ACPI_WDDT_OFFSET (SpecVersion), "Specification Version", 0}, - {ACPI_DMT_UINT16, ACPI_WDDT_OFFSET (TableVersion), "Table Version", 0}, - {ACPI_DMT_UINT16, ACPI_WDDT_OFFSET (PciVendorId), "PCI Vendor ID", 0}, - {ACPI_DMT_GAS, ACPI_WDDT_OFFSET (Address), "Timer Register", 0}, - {ACPI_DMT_UINT16, ACPI_WDDT_OFFSET (MaxCount), "Max Count", 0}, - {ACPI_DMT_UINT16, ACPI_WDDT_OFFSET (MinCount), "Min Count", 0}, - {ACPI_DMT_UINT16, ACPI_WDDT_OFFSET (Period), "Period", 0}, - {ACPI_DMT_UINT16, ACPI_WDDT_OFFSET (Status), "Status (decoded below)", 0}, - - /* Status Flags byte 0 */ - - {ACPI_DMT_FLAG0, ACPI_WDDT_FLAG_OFFSET (Status,0), "Available", 0}, - {ACPI_DMT_FLAG1, ACPI_WDDT_FLAG_OFFSET (Status,0), "Active", 0}, - {ACPI_DMT_FLAG2, ACPI_WDDT_FLAG_OFFSET (Status,0), "OS Owns", 0}, - - /* Status Flags byte 1 */ - - {ACPI_DMT_FLAG3, ACPI_WDDT_FLAG_OFFSET (Status,1), "User Reset", 0}, - {ACPI_DMT_FLAG4, ACPI_WDDT_FLAG_OFFSET (Status,1), "Timeout Reset", 0}, - {ACPI_DMT_FLAG5, ACPI_WDDT_FLAG_OFFSET (Status,1), "Power Fail Reset", 0}, - {ACPI_DMT_FLAG6, ACPI_WDDT_FLAG_OFFSET (Status,1), "Unknown Reset", 0}, - - {ACPI_DMT_UINT16, ACPI_WDDT_OFFSET (Capability), "Capability (decoded below)", 0}, - - /* Capability Flags byte 0 */ - - {ACPI_DMT_FLAG0, ACPI_WDDT_FLAG_OFFSET (Capability,0), "Auto Reset", 0}, - {ACPI_DMT_FLAG1, ACPI_WDDT_FLAG_OFFSET (Capability,0), "Timeout Alert", 0}, - ACPI_DMT_TERMINATOR -}; - - -/******************************************************************************* - * - * WDRT - Watchdog Resource Table - * - ******************************************************************************/ - -ACPI_DMTABLE_INFO AcpiDmTableInfoWdrt[] = -{ - {ACPI_DMT_GAS, ACPI_WDRT_OFFSET (ControlRegister), "Control Register", 0}, - {ACPI_DMT_GAS, ACPI_WDRT_OFFSET (CountRegister), "Count Register", 0}, - {ACPI_DMT_UINT16, ACPI_WDRT_OFFSET (PciDeviceId), "PCI Device ID", 0}, - {ACPI_DMT_UINT16, ACPI_WDRT_OFFSET (PciVendorId), "PCI Vendor ID", 0}, - {ACPI_DMT_UINT8, ACPI_WDRT_OFFSET (PciBus), "PCI Bus", 0}, - {ACPI_DMT_UINT8, ACPI_WDRT_OFFSET (PciDevice), "PCI Device", 0}, - {ACPI_DMT_UINT8, ACPI_WDRT_OFFSET (PciFunction), "PCI Function", 0}, - {ACPI_DMT_UINT8, ACPI_WDRT_OFFSET (PciSegment), "PCI Segment", 0}, - {ACPI_DMT_UINT16, ACPI_WDRT_OFFSET (MaxCount), "Max Count", 0}, - {ACPI_DMT_UINT8, ACPI_WDRT_OFFSET (Units), "Counter Units", 0}, - ACPI_DMT_TERMINATOR -}; - - -/******************************************************************************* - * - * WPBT - Windows Platform Environment Table (ACPI 6.0) - * Version 1 - * - * Conforms to "Windows Platform Binary Table (WPBT)" 29 November 2011 - * - ******************************************************************************/ - -ACPI_DMTABLE_INFO AcpiDmTableInfoWpbt[] = -{ - {ACPI_DMT_UINT32, ACPI_WPBT_OFFSET (HandoffSize), "Handoff Size", 0}, - {ACPI_DMT_UINT64, ACPI_WPBT_OFFSET (HandoffAddress), "Handoff Address", 0}, - {ACPI_DMT_UINT8, ACPI_WPBT_OFFSET (Layout), "Layout", 0}, - {ACPI_DMT_UINT8, ACPI_WPBT_OFFSET (Type), "Type", 0}, - {ACPI_DMT_UINT16, ACPI_WPBT_OFFSET (ArgumentsLength), "Arguments Length", 0}, - ACPI_DMT_TERMINATOR -}; - -ACPI_DMTABLE_INFO AcpiDmTableInfoWpbt0[] = -{ - {ACPI_DMT_UNICODE, sizeof (ACPI_TABLE_WPBT), "Command-line Arguments", 0}, - ACPI_DMT_TERMINATOR -}; - - -/******************************************************************************* - * - * XENV - Xen Environment table (ACPI 6.0) - * - ******************************************************************************/ - -ACPI_DMTABLE_INFO AcpiDmTableInfoXenv[] = -{ - {ACPI_DMT_UINT64, ACPI_XENV_OFFSET (GrantTableAddress), "Grant Table Address", 0}, - {ACPI_DMT_UINT64, ACPI_XENV_OFFSET (GrantTableSize), "Grant Table Size", 0}, - {ACPI_DMT_UINT32, ACPI_XENV_OFFSET (EventInterrupt), "Event Interrupt", 0}, - {ACPI_DMT_UINT8, ACPI_XENV_OFFSET (EventFlags), "Event Flags", 0}, - ACPI_DMT_TERMINATOR -}; - - -/*! [Begin] no source code translation */ - -/* - * Generic types (used in UEFI and custom tables) - * - * Examples: - * - * Buffer : cc 04 ff bb - * UINT8 : 11 - * UINT16 : 1122 - * UINT24 : 112233 - * UINT32 : 11223344 - * UINT56 : 11223344556677 - * UINT64 : 1122334455667788 - * - * String : "This is string" - * Unicode : "This string encoded to Unicode" - * - * GUID : 11223344-5566-7788-99aa-bbccddeeff00 - * DevicePath : "\PciRoot(0)\Pci(0x1f,1)\Usb(0,0)" - */ - -#define ACPI_DM_GENERIC_ENTRY(FieldType, FieldName) \ - {{FieldType, 0, FieldName, 0}, ACPI_DMT_TERMINATOR} - -ACPI_DMTABLE_INFO AcpiDmTableInfoGeneric[][2] = -{ - ACPI_DM_GENERIC_ENTRY (ACPI_DMT_UINT8, "UINT8"), - ACPI_DM_GENERIC_ENTRY (ACPI_DMT_UINT16, "UINT16"), - ACPI_DM_GENERIC_ENTRY (ACPI_DMT_UINT24, "UINT24"), - ACPI_DM_GENERIC_ENTRY (ACPI_DMT_UINT32, "UINT32"), - ACPI_DM_GENERIC_ENTRY (ACPI_DMT_UINT40, "UINT40"), - ACPI_DM_GENERIC_ENTRY (ACPI_DMT_UINT48, "UINT48"), - ACPI_DM_GENERIC_ENTRY (ACPI_DMT_UINT56, "UINT56"), - ACPI_DM_GENERIC_ENTRY (ACPI_DMT_UINT64, "UINT64"), - ACPI_DM_GENERIC_ENTRY (ACPI_DMT_STRING, "String"), - ACPI_DM_GENERIC_ENTRY (ACPI_DMT_UNICODE, "Unicode"), - ACPI_DM_GENERIC_ENTRY (ACPI_DMT_BUFFER, "Buffer"), - ACPI_DM_GENERIC_ENTRY (ACPI_DMT_UUID, "GUID"), - ACPI_DM_GENERIC_ENTRY (ACPI_DMT_STRING, "DevicePath"), - ACPI_DM_GENERIC_ENTRY (ACPI_DMT_LABEL, "Label"), - {ACPI_DMT_TERMINATOR} -}; -/*! [End] no source code translation !*/ diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/common/getopt.c b/src/add-ons/kernel/bus_managers/acpi/acpica/common/getopt.c deleted file mode 100644 index 7d0e8e21ec..0000000000 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/common/getopt.c +++ /dev/null @@ -1,343 +0,0 @@ -/****************************************************************************** - * - * Module Name: getopt - * - *****************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -/* - * ACPICA getopt() implementation - * - * Option strings: - * "f" - Option has no arguments - * "f:" - Option requires an argument - * "f^" - Option has optional single-char sub-options - * "f|" - Option has required single-char sub-options - */ - -#include "acpi.h" -#include "accommon.h" -#include "acapps.h" - -#define ACPI_OPTION_ERROR(msg, badchar) \ - if (AcpiGbl_Opterr) {AcpiLogError ("%s%c\n", msg, badchar);} - - -int AcpiGbl_Opterr = 1; -int AcpiGbl_Optind = 1; -int AcpiGbl_SubOptChar = 0; -char *AcpiGbl_Optarg; - -static int CurrentCharPtr = 1; - - -/******************************************************************************* - * - * FUNCTION: AcpiGetoptArgument - * - * PARAMETERS: argc, argv - from main - * - * RETURN: 0 if an argument was found, -1 otherwise. Sets AcpiGbl_Optarg - * to point to the next argument. - * - * DESCRIPTION: Get the next argument. Used to obtain arguments for the - * two-character options after the original call to AcpiGetopt. - * Note: Either the argument starts at the next character after - * the option, or it is pointed to by the next argv entry. - * (After call to AcpiGetopt, we need to backup to the previous - * argv entry). - * - ******************************************************************************/ - -int -AcpiGetoptArgument ( - int argc, - char **argv) -{ - AcpiGbl_Optind--; - CurrentCharPtr++; - - if (argv[AcpiGbl_Optind][(int) (CurrentCharPtr+1)] != '\0') - { - AcpiGbl_Optarg = &argv[AcpiGbl_Optind++][(int) (CurrentCharPtr+1)]; - } - else if (++AcpiGbl_Optind >= argc) - { - ACPI_OPTION_ERROR ("Option requires an argument: -", 'v'); - - CurrentCharPtr = 1; - return (-1); - } - else - { - AcpiGbl_Optarg = argv[AcpiGbl_Optind++]; - } - - CurrentCharPtr = 1; - return (0); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiGetopt - * - * PARAMETERS: argc, argv - from main - * opts - options info list - * - * RETURN: Option character or ACPI_OPT_END - * - * DESCRIPTION: Get the next option - * - ******************************************************************************/ - -int -AcpiGetopt( - int argc, - char **argv, - char *opts) -{ - int CurrentChar; - char *OptsPtr; - - - if (CurrentCharPtr == 1) - { - if (AcpiGbl_Optind >= argc || - argv[AcpiGbl_Optind][0] != '-' || - argv[AcpiGbl_Optind][1] == '\0') - { - return (ACPI_OPT_END); - } - else if (strcmp (argv[AcpiGbl_Optind], "--") == 0) - { - AcpiGbl_Optind++; - return (ACPI_OPT_END); - } - } - - /* Get the option */ - - CurrentChar = argv[AcpiGbl_Optind][CurrentCharPtr]; - - /* Make sure that the option is legal */ - - if (CurrentChar == ':' || - (OptsPtr = strchr (opts, CurrentChar)) == NULL) - { - ACPI_OPTION_ERROR ("Illegal option: -", CurrentChar); - - if (argv[AcpiGbl_Optind][++CurrentCharPtr] == '\0') - { - AcpiGbl_Optind++; - CurrentCharPtr = 1; - } - - return ('?'); - } - - /* Option requires an argument? */ - - if (*++OptsPtr == ':') - { - if (argv[AcpiGbl_Optind][(int) (CurrentCharPtr+1)] != '\0') - { - AcpiGbl_Optarg = &argv[AcpiGbl_Optind++][(int) (CurrentCharPtr+1)]; - } - else if (++AcpiGbl_Optind >= argc) - { - ACPI_OPTION_ERROR ("Option requires an argument: -", CurrentChar); - - CurrentCharPtr = 1; - return ('?'); - } - else - { - AcpiGbl_Optarg = argv[AcpiGbl_Optind++]; - } - - CurrentCharPtr = 1; - } - - /* Option has an optional argument? */ - - else if (*OptsPtr == '+') - { - if (argv[AcpiGbl_Optind][(int) (CurrentCharPtr+1)] != '\0') - { - AcpiGbl_Optarg = &argv[AcpiGbl_Optind++][(int) (CurrentCharPtr+1)]; - } - else if (++AcpiGbl_Optind >= argc) - { - AcpiGbl_Optarg = NULL; - } - else - { - AcpiGbl_Optarg = argv[AcpiGbl_Optind++]; - } - - CurrentCharPtr = 1; - } - - /* Option has optional single-char arguments? */ - - else if (*OptsPtr == '^') - { - if (argv[AcpiGbl_Optind][(int) (CurrentCharPtr+1)] != '\0') - { - AcpiGbl_Optarg = &argv[AcpiGbl_Optind][(int) (CurrentCharPtr+1)]; - } - else - { - AcpiGbl_Optarg = "^"; - } - - AcpiGbl_SubOptChar = AcpiGbl_Optarg[0]; - AcpiGbl_Optind++; - CurrentCharPtr = 1; - } - - /* Option has a required single-char argument? */ - - else if (*OptsPtr == '|') - { - if (argv[AcpiGbl_Optind][(int) (CurrentCharPtr+1)] != '\0') - { - AcpiGbl_Optarg = &argv[AcpiGbl_Optind][(int) (CurrentCharPtr+1)]; - } - else - { - ACPI_OPTION_ERROR ("Option requires a single-character suboption: -", CurrentChar); - - CurrentCharPtr = 1; - return ('?'); - } - - AcpiGbl_SubOptChar = AcpiGbl_Optarg[0]; - AcpiGbl_Optind++; - CurrentCharPtr = 1; - } - - /* Option with no arguments */ - - else - { - if (argv[AcpiGbl_Optind][++CurrentCharPtr] == '\0') - { - CurrentCharPtr = 1; - AcpiGbl_Optind++; - } - - AcpiGbl_Optarg = NULL; - } - - return (CurrentChar); -} diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsargs.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsargs.c index 344e55ec35..f641f18021 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsargs.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsargs.c @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -186,7 +186,7 @@ AcpiDsExecuteArguments ( } Status = AcpiDsInitAmlWalk (WalkState, Op, NULL, AmlStart, - AmlLength, NULL, ACPI_IMODE_LOAD_PASS1); + AmlLength, NULL, ACPI_IMODE_LOAD_PASS1); if (ACPI_FAILURE (Status)) { AcpiDsDeleteWalkState (WalkState); @@ -233,7 +233,7 @@ AcpiDsExecuteArguments ( /* Execute the opcode and arguments */ Status = AcpiDsInitAmlWalk (WalkState, Op, NULL, AmlStart, - AmlLength, NULL, ACPI_IMODE_EXECUTE); + AmlLength, NULL, ACPI_IMODE_EXECUTE); if (ACPI_FAILURE (Status)) { AcpiDsDeleteWalkState (WalkState); @@ -286,8 +286,8 @@ AcpiDsGetBufferFieldArguments ( ExtraDesc = AcpiNsGetSecondaryObject (ObjDesc); Node = ObjDesc->BufferField.Node; - ACPI_DEBUG_EXEC (AcpiUtDisplayInitPathname (ACPI_TYPE_BUFFER_FIELD, - Node, NULL)); + ACPI_DEBUG_EXEC (AcpiUtDisplayInitPathname ( + ACPI_TYPE_BUFFER_FIELD, Node, NULL)); ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "[%4.4s] BufferField Arg Init\n", AcpiUtGetNodeName (Node))); @@ -295,7 +295,7 @@ AcpiDsGetBufferFieldArguments ( /* Execute the AML code for the TermArg arguments */ Status = AcpiDsExecuteArguments (Node, Node->Parent, - ExtraDesc->Extra.AmlLength, ExtraDesc->Extra.AmlStart); + ExtraDesc->Extra.AmlLength, ExtraDesc->Extra.AmlStart); return_ACPI_STATUS (Status); } @@ -335,8 +335,8 @@ AcpiDsGetBankFieldArguments ( ExtraDesc = AcpiNsGetSecondaryObject (ObjDesc); Node = ObjDesc->BankField.Node; - ACPI_DEBUG_EXEC (AcpiUtDisplayInitPathname (ACPI_TYPE_LOCAL_BANK_FIELD, - Node, NULL)); + ACPI_DEBUG_EXEC (AcpiUtDisplayInitPathname ( + ACPI_TYPE_LOCAL_BANK_FIELD, Node, NULL)); ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "[%4.4s] BankField Arg Init\n", AcpiUtGetNodeName (Node))); @@ -344,7 +344,7 @@ AcpiDsGetBankFieldArguments ( /* Execute the AML code for the TermArg arguments */ Status = AcpiDsExecuteArguments (Node, Node->Parent, - ExtraDesc->Extra.AmlLength, ExtraDesc->Extra.AmlStart); + ExtraDesc->Extra.AmlLength, ExtraDesc->Extra.AmlStart); return_ACPI_STATUS (Status); } @@ -384,7 +384,8 @@ AcpiDsGetBufferArguments ( if (!Node) { ACPI_ERROR ((AE_INFO, - "No pointer back to namespace node in buffer object %p", ObjDesc)); + "No pointer back to namespace node in buffer object %p", + ObjDesc)); return_ACPI_STATUS (AE_AML_INTERNAL); } @@ -393,7 +394,7 @@ AcpiDsGetBufferArguments ( /* Execute the AML code for the TermArg arguments */ Status = AcpiDsExecuteArguments (Node, Node, - ObjDesc->Buffer.AmlLength, ObjDesc->Buffer.AmlStart); + ObjDesc->Buffer.AmlLength, ObjDesc->Buffer.AmlStart); return_ACPI_STATUS (Status); } @@ -442,7 +443,7 @@ AcpiDsGetPackageArguments ( /* Execute the AML code for the TermArg arguments */ Status = AcpiDsExecuteArguments (Node, Node, - ObjDesc->Package.AmlLength, ObjDesc->Package.AmlStart); + ObjDesc->Package.AmlLength, ObjDesc->Package.AmlStart); return_ACPI_STATUS (Status); } @@ -487,22 +488,23 @@ AcpiDsGetRegionArguments ( Node = ObjDesc->Region.Node; - ACPI_DEBUG_EXEC (AcpiUtDisplayInitPathname (ACPI_TYPE_REGION, Node, NULL)); + ACPI_DEBUG_EXEC (AcpiUtDisplayInitPathname ( + ACPI_TYPE_REGION, Node, NULL)); - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "[%4.4s] OpRegion Arg Init at AML %p\n", + ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, + "[%4.4s] OpRegion Arg Init at AML %p\n", AcpiUtGetNodeName (Node), ExtraDesc->Extra.AmlStart)); /* Execute the argument AML */ Status = AcpiDsExecuteArguments (Node, ExtraDesc->Extra.ScopeNode, - ExtraDesc->Extra.AmlLength, ExtraDesc->Extra.AmlStart); + ExtraDesc->Extra.AmlLength, ExtraDesc->Extra.AmlStart); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } Status = AcpiUtAddAddressRange (ObjDesc->Region.SpaceId, - ObjDesc->Region.Address, ObjDesc->Region.Length, - Node); + ObjDesc->Region.Address, ObjDesc->Region.Length, Node); return_ACPI_STATUS (Status); } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dscontrol.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dscontrol.c index a069ed51a1..5739983b37 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dscontrol.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dscontrol.c @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -119,6 +119,7 @@ #include "amlcode.h" #include "acdispat.h" #include "acinterp.h" +#include "acdebug.h" #define _COMPONENT ACPI_DISPATCHER ACPI_MODULE_NAME ("dscontrol") @@ -191,9 +192,12 @@ AcpiDsExecBeginControlOp ( * Save a pointer to the predicate for multiple executions * of a loop */ - ControlState->Control.AmlPredicateStart = WalkState->ParserState.Aml - 1; - ControlState->Control.PackageEnd = WalkState->ParserState.PkgEnd; - ControlState->Control.Opcode = Op->Common.AmlOpcode; + ControlState->Control.AmlPredicateStart = + WalkState->ParserState.Aml - 1; + ControlState->Control.PackageEnd = + WalkState->ParserState.PkgEnd; + ControlState->Control.Opcode = + Op->Common.AmlOpcode; /* Push the control state on this walk's control stack */ @@ -304,7 +308,8 @@ AcpiDsExecEndControlOp ( * another time */ Status = AE_CTRL_PENDING; - WalkState->AmlLastWhile = ControlState->Control.AmlPredicateStart; + WalkState->AmlLastWhile = + ControlState->Control.AmlPredicateStart; break; } @@ -348,7 +353,8 @@ AcpiDsExecEndControlOp ( * an arg or local), resolve it now because it may * cease to exist at the end of the method. */ - Status = AcpiExResolveToValue (&WalkState->Operands [0], WalkState); + Status = AcpiExResolveToValue ( + &WalkState->Operands [0], WalkState); if (ACPI_FAILURE (Status)) { return (Status); @@ -377,11 +383,15 @@ AcpiDsExecEndControlOp ( * Allow references created by the Index operator to return * unchanged. */ - if ((ACPI_GET_DESCRIPTOR_TYPE (WalkState->Results->Results.ObjDesc[0]) == ACPI_DESC_TYPE_OPERAND) && - ((WalkState->Results->Results.ObjDesc [0])->Common.Type == ACPI_TYPE_LOCAL_REFERENCE) && - ((WalkState->Results->Results.ObjDesc [0])->Reference.Class != ACPI_REFCLASS_INDEX)) + if ((ACPI_GET_DESCRIPTOR_TYPE (WalkState->Results->Results.ObjDesc[0]) == + ACPI_DESC_TYPE_OPERAND) && + ((WalkState->Results->Results.ObjDesc [0])->Common.Type == + ACPI_TYPE_LOCAL_REFERENCE) && + ((WalkState->Results->Results.ObjDesc [0])->Reference.Class != + ACPI_REFCLASS_INDEX)) { - Status = AcpiExResolveToValue (&WalkState->Results->Results.ObjDesc [0], WalkState); + Status = AcpiExResolveToValue ( + &WalkState->Results->Results.ObjDesc [0], WalkState); if (ACPI_FAILURE (Status)) { return (Status); @@ -399,9 +409,9 @@ AcpiDsExecEndControlOp ( AcpiUtRemoveReference (WalkState->Operands [0]); } - WalkState->Operands [0] = NULL; - WalkState->NumOperands = 0; - WalkState->ReturnDesc = NULL; + WalkState->Operands[0] = NULL; + WalkState->NumOperands = 0; + WalkState->ReturnDesc = NULL; } @@ -422,20 +432,12 @@ AcpiDsExecEndControlOp ( case AML_BREAK_POINT_OP: - /* - * Set the single-step flag. This will cause the debugger (if present) - * to break to the console within the AML debugger at the start of the - * next AML instruction. - */ - ACPI_DEBUGGER_EXEC ( - AcpiGbl_CmSingleStep = TRUE); - ACPI_DEBUGGER_EXEC ( - AcpiOsPrintf ("**break** Executed AML BreakPoint opcode\n")); + AcpiDbSignalBreakPoint (WalkState); /* Call to the OSL in case OS wants a piece of the action */ Status = AcpiOsSignal (ACPI_SIGNAL_BREAKPOINT, - "Executed AML Breakpoint opcode"); + "Executed AML Breakpoint opcode"); break; case AML_BREAK_OP: @@ -459,7 +461,8 @@ AcpiDsExecEndControlOp ( /* Was: WalkState->AmlLastWhile = WalkState->ControlState->Control.AmlPredicateStart; */ - WalkState->AmlLastWhile = WalkState->ControlState->Control.PackageEnd; + WalkState->AmlLastWhile = + WalkState->ControlState->Control.PackageEnd; /* Return status depending on opcode */ diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsdebug.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsdebug.c index 80b3e0cbbf..97043edba3 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsdebug.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsdebug.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -247,6 +247,7 @@ AcpiDsDumpMethodStack ( ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "\n**** Exception %s during execution of method ", AcpiFormatException (Status))); + AcpiDsPrintNodePathname (WalkState->MethodNode, NULL); /* Display stack of executing methods */ @@ -263,8 +264,8 @@ AcpiDsDumpMethodStack ( if (MethodDesc) { AcpiExStopTraceMethod ( - (ACPI_NAMESPACE_NODE *) MethodDesc->Method.Node, - MethodDesc, WalkState); + (ACPI_NAMESPACE_NODE *) MethodDesc->Method.Node, + MethodDesc, WalkState); } ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, @@ -292,8 +293,8 @@ AcpiDsDumpMethodStack ( { /* * This method has called another method - * NOTE: the method call parse subtree is already deleted at this - * point, so we cannot disassemble the method invocation. + * NOTE: the method call parse subtree is already deleted at + * this point, so we cannot disassemble the method invocation. */ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_DISPATCH, "Call to method ")); AcpiDsPrintNodePathname (PreviousMethod, NULL); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsfield.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsfield.c index cf8c189460..3728c8d24c 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsfield.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsfield.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -187,6 +187,7 @@ AcpiDsCreateExternalRegion ( * insert the name into the namespace. */ AcpiDmAddOpToExternalList (Op, Path, ACPI_TYPE_REGION, 0, 0); + Status = AcpiNsLookup (WalkState->ScopeInfo, Path, ACPI_TYPE_REGION, ACPI_IMODE_LOAD_PASS1, ACPI_NS_SEARCH_PARENT, WalkState, Node); if (ACPI_FAILURE (Status)) @@ -282,7 +283,7 @@ AcpiDsCreateBufferField ( /* Creating new namespace node, should not already exist */ Flags = ACPI_NS_NO_UPSEARCH | ACPI_NS_DONT_OPEN_SCOPE | - ACPI_NS_ERROR_IF_FOUND; + ACPI_NS_ERROR_IF_FOUND; /* * Mark node temporary if we are executing a normal control @@ -296,9 +297,9 @@ AcpiDsCreateBufferField ( /* Enter the NameString into the namespace */ - Status = AcpiNsLookup (WalkState->ScopeInfo, Arg->Common.Value.String, - ACPI_TYPE_ANY, ACPI_IMODE_LOAD_PASS1, - Flags, WalkState, &Node); + Status = AcpiNsLookup (WalkState->ScopeInfo, + Arg->Common.Value.String, ACPI_TYPE_ANY, + ACPI_IMODE_LOAD_PASS1, Flags, WalkState, &Node); if (ACPI_FAILURE (Status)) { ACPI_ERROR_NAMESPACE (Arg->Common.Value.String, Status); @@ -339,13 +340,13 @@ AcpiDsCreateBufferField ( } /* - * Remember location in AML stream of the field unit opcode and operands -- - * since the buffer and index operands must be evaluated. + * Remember location in AML stream of the field unit opcode and operands + * -- since the buffer and index operands must be evaluated. */ - SecondDesc = ObjDesc->Common.NextObject; - SecondDesc->Extra.AmlStart = Op->Named.Data; + SecondDesc = ObjDesc->Common.NextObject; + SecondDesc->Extra.AmlStart = Op->Named.Data; SecondDesc->Extra.AmlLength = Op->Named.Length; - ObjDesc->BufferField.Node = Node; + ObjDesc->BufferField.Node = Node; /* Attach constructed field descriptors to parent node */ @@ -413,8 +414,8 @@ AcpiDsGetFieldNames ( { case AML_INT_RESERVEDFIELD_OP: - Position = (UINT64) Info->FieldBitPosition - + (UINT64) Arg->Common.Value.Size; + Position = (UINT64) Info->FieldBitPosition + + (UINT64) Arg->Common.Value.Size; if (Position > ACPI_UINT32_MAX) { @@ -447,11 +448,13 @@ AcpiDsGetFieldNames ( /* AccessAttribute (AttribQuick, AttribByte, etc.) */ - Info->Attribute = (UINT8) ((Arg->Common.Value.Integer >> 8) & 0xFF); + Info->Attribute = (UINT8) + ((Arg->Common.Value.Integer >> 8) & 0xFF); /* AccessLength (for serial/buffer protocols) */ - Info->AccessLength = (UINT8) ((Arg->Common.Value.Integer >> 16) & 0xFF); + Info->AccessLength = (UINT8) + ((Arg->Common.Value.Integer >> 16) & 0xFF); break; case AML_INT_CONNECTION_OP: @@ -478,9 +481,9 @@ AcpiDsGetFieldNames ( /* Lookup the Connection() namepath, it should already exist */ Status = AcpiNsLookup (WalkState->ScopeInfo, - Child->Common.Value.Name, ACPI_TYPE_ANY, - ACPI_IMODE_EXECUTE, ACPI_NS_DONT_OPEN_SCOPE, - WalkState, &Info->ConnectionNode); + Child->Common.Value.Name, ACPI_TYPE_ANY, + ACPI_IMODE_EXECUTE, ACPI_NS_DONT_OPEN_SCOPE, + WalkState, &Info->ConnectionNode); if (ACPI_FAILURE (Status)) { ACPI_ERROR_NAMESPACE (Child->Common.Value.Name, Status); @@ -494,9 +497,9 @@ AcpiDsGetFieldNames ( /* Lookup the name, it should already exist */ Status = AcpiNsLookup (WalkState->ScopeInfo, - (char *) &Arg->Named.Name, Info->FieldType, - ACPI_IMODE_EXECUTE, ACPI_NS_DONT_OPEN_SCOPE, - WalkState, &Info->FieldNode); + (char *) &Arg->Named.Name, Info->FieldType, + ACPI_IMODE_EXECUTE, ACPI_NS_DONT_OPEN_SCOPE, + WalkState, &Info->FieldNode); if (ACPI_FAILURE (Status)) { ACPI_ERROR_NAMESPACE ((char *) &Arg->Named.Name, Status); @@ -525,8 +528,8 @@ AcpiDsGetFieldNames ( /* Keep track of bit position for the next field */ - Position = (UINT64) Info->FieldBitPosition - + (UINT64) Arg->Common.Value.Size; + Position = (UINT64) Info->FieldBitPosition + + (UINT64) Arg->Common.Value.Size; if (Position > ACPI_UINT32_MAX) { @@ -543,7 +546,8 @@ AcpiDsGetFieldNames ( default: ACPI_ERROR ((AE_INFO, - "Invalid opcode in field list: 0x%X", Arg->Common.AmlOpcode)); + "Invalid opcode in field list: 0x%X", + Arg->Common.AmlOpcode)); return_ACPI_STATUS (AE_AML_BAD_OPCODE); } @@ -589,8 +593,8 @@ AcpiDsCreateField ( if (!RegionNode) { Status = AcpiNsLookup (WalkState->ScopeInfo, Arg->Common.Value.Name, - ACPI_TYPE_REGION, ACPI_IMODE_EXECUTE, - ACPI_NS_SEARCH_PARENT, WalkState, &RegionNode); + ACPI_TYPE_REGION, ACPI_IMODE_EXECUTE, + ACPI_NS_SEARCH_PARENT, WalkState, &RegionNode); #ifdef ACPI_ASL_COMPILER Status = AcpiDsCreateExternalRegion (Status, Arg, Arg->Common.Value.Name, WalkState, &RegionNode); @@ -696,7 +700,7 @@ AcpiDsInitFieldObjects ( /* Creating new namespace node(s), should not already exist */ Flags = ACPI_NS_NO_UPSEARCH | ACPI_NS_DONT_OPEN_SCOPE | - ACPI_NS_ERROR_IF_FOUND; + ACPI_NS_ERROR_IF_FOUND; /* * Mark node(s) temporary if we are executing a normal control @@ -721,8 +725,8 @@ AcpiDsInitFieldObjects ( if (Arg->Common.AmlOpcode == AML_INT_NAMEDFIELD_OP) { Status = AcpiNsLookup (WalkState->ScopeInfo, - (char *) &Arg->Named.Name, Type, ACPI_IMODE_LOAD_PASS1, - Flags, WalkState, &Node); + (char *) &Arg->Named.Name, Type, ACPI_IMODE_LOAD_PASS1, + Flags, WalkState, &Node); if (ACPI_FAILURE (Status)) { ACPI_ERROR_NAMESPACE ((char *) &Arg->Named.Name, Status); @@ -782,8 +786,8 @@ AcpiDsCreateBankField ( if (!RegionNode) { Status = AcpiNsLookup (WalkState->ScopeInfo, Arg->Common.Value.Name, - ACPI_TYPE_REGION, ACPI_IMODE_EXECUTE, - ACPI_NS_SEARCH_PARENT, WalkState, &RegionNode); + ACPI_TYPE_REGION, ACPI_IMODE_EXECUTE, + ACPI_NS_SEARCH_PARENT, WalkState, &RegionNode); #ifdef ACPI_ASL_COMPILER Status = AcpiDsCreateExternalRegion (Status, Arg, Arg->Common.Value.Name, WalkState, &RegionNode); @@ -799,8 +803,8 @@ AcpiDsCreateBankField ( Arg = Arg->Common.Next; Status = AcpiNsLookup (WalkState->ScopeInfo, Arg->Common.Value.String, - ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE, - ACPI_NS_SEARCH_PARENT, WalkState, &Info.RegisterNode); + ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE, + ACPI_NS_SEARCH_PARENT, WalkState, &Info.RegisterNode); if (ACPI_FAILURE (Status)) { ACPI_ERROR_NAMESPACE (Arg->Common.Value.String, Status); @@ -826,11 +830,12 @@ AcpiDsCreateBankField ( /* * Use Info.DataRegisterNode to store BankField Op - * It's safe because DataRegisterNode will never be used when create bank field - * We store AmlStart and AmlLength in the BankField Op for late evaluation - * Used in AcpiExPrepFieldValue(Info) + * It's safe because DataRegisterNode will never be used when create + * bank field \we store AmlStart and AmlLength in the BankField Op for + * late evaluation. Used in AcpiExPrepFieldValue(Info) * - * TBD: Or, should we add a field in ACPI_CREATE_FIELD_INFO, like "void *ParentOp"? + * TBD: Or, should we add a field in ACPI_CREATE_FIELD_INFO, like + * "void *ParentOp"? */ Info.DataRegisterNode = (ACPI_NAMESPACE_NODE*) Op; @@ -871,8 +876,8 @@ AcpiDsCreateIndexField ( Arg = Op->Common.Value.Arg; Status = AcpiNsLookup (WalkState->ScopeInfo, Arg->Common.Value.String, - ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE, - ACPI_NS_SEARCH_PARENT, WalkState, &Info.RegisterNode); + ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE, + ACPI_NS_SEARCH_PARENT, WalkState, &Info.RegisterNode); if (ACPI_FAILURE (Status)) { ACPI_ERROR_NAMESPACE (Arg->Common.Value.String, Status); @@ -883,8 +888,8 @@ AcpiDsCreateIndexField ( Arg = Arg->Common.Next; Status = AcpiNsLookup (WalkState->ScopeInfo, Arg->Common.Value.String, - ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE, - ACPI_NS_SEARCH_PARENT, WalkState, &Info.DataRegisterNode); + ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE, + ACPI_NS_SEARCH_PARENT, WalkState, &Info.DataRegisterNode); if (ACPI_FAILURE (Status)) { ACPI_ERROR_NAMESPACE (Arg->Common.Value.String, Status); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsinit.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsinit.c index d24cc016f3..390a63f6e4 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsinit.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsinit.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -314,7 +314,7 @@ AcpiDsInitializeObjects ( * the namespace reader lock. */ Status = AcpiNsWalkNamespace (ACPI_TYPE_ANY, StartNode, ACPI_UINT32_MAX, - ACPI_NS_WALK_UNLOCK, AcpiDsInitOneObject, NULL, &Info, NULL); + ACPI_NS_WALK_UNLOCK, AcpiDsInitOneObject, NULL, &Info, NULL); if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, "During WalkNamespace")); @@ -331,17 +331,19 @@ AcpiDsInitializeObjects ( if (ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_DSDT)) { - ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INIT, "\nInitializing Namespace objects:\n")); + ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INIT, + "\nInitializing Namespace objects:\n")); } /* Summary of objects initialized */ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INIT, - "Table [%4.4s:%8.8s] (id %.2X) - %4u Objects with %3u Devices, " + "Table [%4.4s: %-8.8s] (id %.2X) - %4u Objects with %3u Devices, " "%3u Regions, %4u Methods (%u/%u/%u Serial/Non/Cvt)\n", - Table->Signature, Table->OemTableId, OwnerId, Info.ObjectCount, Info.DeviceCount, - Info.OpRegionCount, Info.MethodCount, Info.SerialMethodCount, - Info.NonSerialMethodCount, Info.SerializedMethodCount)); + Table->Signature, Table->OemTableId, OwnerId, Info.ObjectCount, + Info.DeviceCount,Info.OpRegionCount, Info.MethodCount, + Info.SerialMethodCount, Info.NonSerialMethodCount, + Info.SerializedMethodCount)); ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "%u Methods, %u Regions\n", Info.MethodCount, Info.OpRegionCount)); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsmethod.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsmethod.c index 10c354821e..393b1d0de8 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsmethod.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsmethod.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -199,8 +199,8 @@ AcpiDsAutoSerializeMethod ( return_ACPI_STATUS (AE_NO_MEMORY); } - Status = AcpiDsInitAmlWalk (WalkState, Op, Node, ObjDesc->Method.AmlStart, - ObjDesc->Method.AmlLength, NULL, 0); + Status = AcpiDsInitAmlWalk (WalkState, Op, Node, + ObjDesc->Method.AmlStart, ObjDesc->Method.AmlLength, NULL, 0); if (ACPI_FAILURE (Status)) { AcpiDsDeleteWalkState (WalkState); @@ -323,12 +323,12 @@ AcpiDsMethodError ( * AE_OK, in which case the executing method will not be aborted. */ AmlOffset = (UINT32) ACPI_PTR_DIFF (WalkState->Aml, - WalkState->ParserState.AmlStart); + WalkState->ParserState.AmlStart); Status = AcpiGbl_ExceptionHandler (Status, - WalkState->MethodNode ? - WalkState->MethodNode->Name.Integer : 0, - WalkState->Opcode, AmlOffset, NULL); + WalkState->MethodNode ? + WalkState->MethodNode->Name.Integer : 0, + WalkState->Opcode, AmlOffset, NULL); AcpiExEnterInterpreter (); } @@ -472,10 +472,12 @@ AcpiDsBeginMethodExecution ( */ if (WalkState && (!(ObjDesc->Method.InfoFlags & ACPI_METHOD_IGNORE_SYNC_LEVEL)) && - (WalkState->Thread->CurrentSyncLevel > ObjDesc->Method.Mutex->Mutex.SyncLevel)) + (WalkState->Thread->CurrentSyncLevel > + ObjDesc->Method.Mutex->Mutex.SyncLevel)) { ACPI_ERROR ((AE_INFO, - "Cannot acquire Mutex for method [%4.4s], current SyncLevel is too large (%u)", + "Cannot acquire Mutex for method [%4.4s]" + ", current SyncLevel is too large (%u)", AcpiUtGetNodeName (MethodNode), WalkState->Thread->CurrentSyncLevel)); @@ -488,14 +490,15 @@ AcpiDsBeginMethodExecution ( */ if (!WalkState || !ObjDesc->Method.Mutex->Mutex.ThreadId || - (WalkState->Thread->ThreadId != ObjDesc->Method.Mutex->Mutex.ThreadId)) + (WalkState->Thread->ThreadId != + ObjDesc->Method.Mutex->Mutex.ThreadId)) { /* * Acquire the method mutex. This releases the interpreter if we * block (and reacquires it before it returns) */ - Status = AcpiExSystemWaitMutex (ObjDesc->Method.Mutex->Mutex.OsMutex, - ACPI_WAIT_FOREVER); + Status = AcpiExSystemWaitMutex ( + ObjDesc->Method.Mutex->Mutex.OsMutex, ACPI_WAIT_FOREVER); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -508,8 +511,22 @@ AcpiDsBeginMethodExecution ( ObjDesc->Method.Mutex->Mutex.OriginalSyncLevel = WalkState->Thread->CurrentSyncLevel; - ObjDesc->Method.Mutex->Mutex.ThreadId = WalkState->Thread->ThreadId; - WalkState->Thread->CurrentSyncLevel = ObjDesc->Method.SyncLevel; + ObjDesc->Method.Mutex->Mutex.ThreadId = + WalkState->Thread->ThreadId; + + /* + * Update the current SyncLevel only if this is not an auto- + * serialized method. In the auto case, we have to ignore + * the sync level for the method mutex (created for the + * auto-serialization) because we have no idea of what the + * sync level should be. Therefore, just ignore it. + */ + if (!(ObjDesc->Method.InfoFlags & + ACPI_METHOD_IGNORE_SYNC_LEVEL)) + { + WalkState->Thread->CurrentSyncLevel = + ObjDesc->Method.SyncLevel; + } } else { @@ -587,7 +604,8 @@ AcpiDsCallControlMethod ( ACPI_FUNCTION_TRACE_PTR (DsCallControlMethod, ThisWalkState); - ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Calling method %p, currentstate=%p\n", + ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, + "Calling method %p, currentstate=%p\n", ThisWalkState->PrevOp, ThisWalkState)); /* @@ -607,8 +625,8 @@ AcpiDsCallControlMethod ( /* Init for new method, possibly wait on method mutex */ - Status = AcpiDsBeginMethodExecution (MethodNode, ObjDesc, - ThisWalkState); + Status = AcpiDsBeginMethodExecution ( + MethodNode, ObjDesc, ThisWalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -616,8 +634,8 @@ AcpiDsCallControlMethod ( /* Begin method parse/execution. Create a new walk state */ - NextWalkState = AcpiDsCreateWalkState (ObjDesc->Method.OwnerId, - NULL, ObjDesc, Thread); + NextWalkState = AcpiDsCreateWalkState ( + ObjDesc->Method.OwnerId, NULL, ObjDesc, Thread); if (!NextWalkState) { Status = AE_NO_MEMORY; @@ -646,8 +664,8 @@ AcpiDsCallControlMethod ( Info->Parameters = &ThisWalkState->Operands[0]; Status = AcpiDsInitAmlWalk (NextWalkState, NULL, MethodNode, - ObjDesc->Method.AmlStart, ObjDesc->Method.AmlLength, - Info, ACPI_IMODE_EXECUTE); + ObjDesc->Method.AmlStart, ObjDesc->Method.AmlLength, + Info, ACPI_IMODE_EXECUTE); ACPI_FREE (Info); if (ACPI_FAILURE (Status)) @@ -842,7 +860,8 @@ AcpiDsTerminateControlMethod ( WalkState->Thread->CurrentSyncLevel = MethodDesc->Method.Mutex->Mutex.OriginalSyncLevel; - AcpiOsReleaseMutex (MethodDesc->Method.Mutex->Mutex.OsMutex); + AcpiOsReleaseMutex ( + MethodDesc->Method.Mutex->Mutex.OsMutex); MethodDesc->Method.Mutex->Mutex.ThreadId = 0; } } @@ -872,7 +891,8 @@ AcpiDsTerminateControlMethod ( if (MethodDesc->Method.InfoFlags & ACPI_METHOD_MODIFIED_NAMESPACE) { AcpiNsDeleteNamespaceByOwner (MethodDesc->Method.OwnerId); - MethodDesc->Method.InfoFlags &= ~ACPI_METHOD_MODIFIED_NAMESPACE; + MethodDesc->Method.InfoFlags &= + ~ACPI_METHOD_MODIFIED_NAMESPACE; } } } @@ -920,7 +940,8 @@ AcpiDsTerminateControlMethod ( if (WalkState) { ACPI_INFO ((AE_INFO, - "Marking method %4.4s as Serialized because of AE_ALREADY_EXISTS error", + "Marking method %4.4s as Serialized " + "because of AE_ALREADY_EXISTS error", WalkState->MethodNode->Name.Ascii)); } @@ -935,7 +956,9 @@ AcpiDsTerminateControlMethod ( * marking the method permanently as Serialized when the last * thread exits here. */ - MethodDesc->Method.InfoFlags &= ~ACPI_METHOD_SERIALIZED_PENDING; + MethodDesc->Method.InfoFlags &= + ~ACPI_METHOD_SERIALIZED_PENDING; + MethodDesc->Method.InfoFlags |= (ACPI_METHOD_SERIALIZED | ACPI_METHOD_IGNORE_SYNC_LEVEL); MethodDesc->Method.SyncLevel = 0; @@ -950,7 +973,7 @@ AcpiDsTerminateControlMethod ( } AcpiExStopTraceMethod ((ACPI_NAMESPACE_NODE *) MethodDesc->Method.Node, - MethodDesc, WalkState); + MethodDesc, WalkState); return_VOID; } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsmthdat.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsmthdat.c index 2b7fce243c..1ae66beb29 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsmthdat.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsmthdat.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -182,7 +182,9 @@ AcpiDsMethodDataInit ( for (i = 0; i < ACPI_METHOD_NUM_ARGS; i++) { - ACPI_MOVE_32_TO_32 (&WalkState->Arguments[i].Name, NAMEOF_ARG_NTE); + ACPI_MOVE_32_TO_32 (&WalkState->Arguments[i].Name, + NAMEOF_ARG_NTE); + WalkState->Arguments[i].Name.Integer |= (i << 24); WalkState->Arguments[i].DescriptorType = ACPI_DESC_TYPE_NAMED; WalkState->Arguments[i].Type = ACPI_TYPE_ANY; @@ -193,7 +195,8 @@ AcpiDsMethodDataInit ( for (i = 0; i < ACPI_METHOD_NUM_LOCALS; i++) { - ACPI_MOVE_32_TO_32 (&WalkState->LocalVariables[i].Name, NAMEOF_LOCAL_NTE); + ACPI_MOVE_32_TO_32 (&WalkState->LocalVariables[i].Name, + NAMEOF_LOCAL_NTE); WalkState->LocalVariables[i].Name.Integer |= (i << 24); WalkState->LocalVariables[i].DescriptorType = ACPI_DESC_TYPE_NAMED; @@ -235,7 +238,7 @@ AcpiDsMethodDataDeleteAll ( if (WalkState->LocalVariables[Index].Object) { ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Deleting Local%u=%p\n", - Index, WalkState->LocalVariables[Index].Object)); + Index, WalkState->LocalVariables[Index].Object)); /* Detach object (if present) and remove a reference */ @@ -250,7 +253,7 @@ AcpiDsMethodDataDeleteAll ( if (WalkState->Arguments[Index].Object) { ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Deleting Arg%u=%p\n", - Index, WalkState->Arguments[Index].Object)); + Index, WalkState->Arguments[Index].Object)); /* Detach object (if present) and remove a reference */ @@ -293,7 +296,8 @@ AcpiDsMethodDataInitArgs ( if (!Params) { - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "No param list passed to method\n")); + ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, + "No parameter list passed to method\n")); return_ACPI_STATUS (AE_OK); } @@ -308,8 +312,8 @@ AcpiDsMethodDataInitArgs ( * Store the argument in the method/walk descriptor. * Do not copy the arg in order to implement call by reference */ - Status = AcpiDsMethodDataSetValue (ACPI_REFCLASS_ARG, Index, - Params[Index], WalkState); + Status = AcpiDsMethodDataSetValue ( + ACPI_REFCLASS_ARG, Index, Params[Index], WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -699,7 +703,8 @@ AcpiDsStoreObjectToLocal ( NewObjDesc = ObjDesc; if (ObjDesc->Common.ReferenceCount > 1) { - Status = AcpiUtCopyIobjectToIobject (ObjDesc, &NewObjDesc, WalkState); + Status = AcpiUtCopyIobjectToIobject ( + ObjDesc, &NewObjDesc, WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -736,13 +741,16 @@ AcpiDsStoreObjectToLocal ( * If we have a valid reference object that came from RefOf(), * do the indirect store */ - if ((ACPI_GET_DESCRIPTOR_TYPE (CurrentObjDesc) == ACPI_DESC_TYPE_OPERAND) && - (CurrentObjDesc->Common.Type == ACPI_TYPE_LOCAL_REFERENCE) && - (CurrentObjDesc->Reference.Class == ACPI_REFCLASS_REFOF)) + if ((ACPI_GET_DESCRIPTOR_TYPE (CurrentObjDesc) == + ACPI_DESC_TYPE_OPERAND) && + (CurrentObjDesc->Common.Type == + ACPI_TYPE_LOCAL_REFERENCE) && + (CurrentObjDesc->Reference.Class == + ACPI_REFCLASS_REFOF)) { ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, - "Arg (%p) is an ObjRef(Node), storing in node %p\n", - NewObjDesc, CurrentObjDesc)); + "Arg (%p) is an ObjRef(Node), storing in node %p\n", + NewObjDesc, CurrentObjDesc)); /* * Store this object to the Node (perform the indirect store) @@ -750,8 +758,8 @@ AcpiDsStoreObjectToLocal ( * specification rules on storing to Locals/Args. */ Status = AcpiExStoreObjectToNode (NewObjDesc, - CurrentObjDesc->Reference.Object, WalkState, - ACPI_NO_IMPLICIT_CONVERSION); + CurrentObjDesc->Reference.Object, WalkState, + ACPI_NO_IMPLICIT_CONVERSION); /* Remove local reference if we copied the object above */ @@ -759,6 +767,7 @@ AcpiDsStoreObjectToLocal ( { AcpiUtRemoveReference (NewObjDesc); } + return_ACPI_STATUS (Status); } } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsobject.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsobject.c index 0eb2f44272..8dac6c975e 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsobject.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsobject.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -174,10 +174,10 @@ AcpiDsBuildInternalObject ( if (!Op->Common.Node) { Status = AcpiNsLookup (WalkState->ScopeInfo, - Op->Common.Value.String, - ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE, - ACPI_NS_SEARCH_PARENT | ACPI_NS_DONT_OPEN_SCOPE, NULL, - ACPI_CAST_INDIRECT_PTR (ACPI_NAMESPACE_NODE, &(Op->Common.Node))); + Op->Common.Value.String, + ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE, + ACPI_NS_SEARCH_PARENT | ACPI_NS_DONT_OPEN_SCOPE, NULL, + ACPI_CAST_INDIRECT_PTR (ACPI_NAMESPACE_NODE, &(Op->Common.Node))); if (ACPI_FAILURE (Status)) { /* Check if we are resolving a named reference within a package */ @@ -233,8 +233,8 @@ AcpiDsBuildInternalObject ( ObjDesc = ACPI_CAST_PTR (ACPI_OPERAND_OBJECT, Op->Common.Node); Status = AcpiExResolveNodeToValue ( - ACPI_CAST_INDIRECT_PTR (ACPI_NAMESPACE_NODE, &ObjDesc), - WalkState); + ACPI_CAST_INDIRECT_PTR (ACPI_NAMESPACE_NODE, &ObjDesc), + WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -294,14 +294,14 @@ AcpiDsBuildInternalObject ( /* Create and init a new internal ACPI object */ ObjDesc = AcpiUtCreateInternalObject ( - (AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode))->ObjectType); + (AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode))->ObjectType); if (!ObjDesc) { return_ACPI_STATUS (AE_NO_MEMORY); } - Status = AcpiDsInitObjectFromOp (WalkState, Op, Op->Common.AmlOpcode, - &ObjDesc); + Status = AcpiDsInitObjectFromOp ( + WalkState, Op, Op->Common.AmlOpcode, &ObjDesc); if (ACPI_FAILURE (Status)) { AcpiUtRemoveReference (ObjDesc); @@ -408,8 +408,8 @@ AcpiDsBuildInternalBufferObj ( } else { - ObjDesc->Buffer.Pointer = ACPI_ALLOCATE_ZEROED ( - ObjDesc->Buffer.Length); + ObjDesc->Buffer.Pointer = + ACPI_ALLOCATE_ZEROED (ObjDesc->Buffer.Length); if (!ObjDesc->Buffer.Pointer) { AcpiUtDeleteObjectDesc (ObjDesc); @@ -421,7 +421,7 @@ AcpiDsBuildInternalBufferObj ( if (ByteList) { memcpy (ObjDesc->Buffer.Pointer, ByteList->Named.Data, - ByteListLength); + ByteListLength); } } @@ -540,8 +540,8 @@ AcpiDsBuildInternalPackageObj ( * invocation, so we special case it here */ Arg->Common.AmlOpcode = AML_INT_NAMEPATH_OP; - Status = AcpiDsBuildInternalObject (WalkState, Arg, - &ObjDesc->Package.Elements[i]); + Status = AcpiDsBuildInternalObject ( + WalkState, Arg, &ObjDesc->Package.Elements[i]); } else { @@ -553,8 +553,8 @@ AcpiDsBuildInternalPackageObj ( } else { - Status = AcpiDsBuildInternalObject (WalkState, Arg, - &ObjDesc->Package.Elements[i]); + Status = AcpiDsBuildInternalObject ( + WalkState, Arg, &ObjDesc->Package.Elements[i]); } if (*ObjDescPtr) @@ -611,7 +611,8 @@ AcpiDsBuildInternalPackageObj ( } ACPI_INFO ((AE_INFO, - "Actual Package length (%u) is larger than NumElements field (%u), truncated", + "Actual Package length (%u) is larger than " + "NumElements field (%u), truncated", i, ElementCount)); } else if (i < ElementCount) @@ -621,7 +622,8 @@ AcpiDsBuildInternalPackageObj ( * Note: this is not an error, the package is padded out with NULLs. */ ACPI_DEBUG_PRINT ((ACPI_DB_INFO, - "Package List length (%u) smaller than NumElements count (%u), padded with null elements\n", + "Package List length (%u) smaller than NumElements " + "count (%u), padded with null elements\n", i, ElementCount)); } @@ -677,8 +679,8 @@ AcpiDsCreateNode ( /* Build an internal object for the argument(s) */ - Status = AcpiDsBuildInternalObject (WalkState, Op->Common.Value.Arg, - &ObjDesc); + Status = AcpiDsBuildInternalObject ( + WalkState, Op->Common.Value.Arg, &ObjDesc); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -750,9 +752,9 @@ AcpiDsInitObjectFromOp ( /* * Defer evaluation of Buffer TermArg operand */ - ObjDesc->Buffer.Node = ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, - WalkState->Operands[0]); - ObjDesc->Buffer.AmlStart = Op->Named.Data; + ObjDesc->Buffer.Node = ACPI_CAST_PTR ( + ACPI_NAMESPACE_NODE, WalkState->Operands[0]); + ObjDesc->Buffer.AmlStart = Op->Named.Data; ObjDesc->Buffer.AmlLength = Op->Named.Length; break; @@ -760,9 +762,9 @@ AcpiDsInitObjectFromOp ( /* * Defer evaluation of Package TermArg operand */ - ObjDesc->Package.Node = ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, - WalkState->Operands[0]); - ObjDesc->Package.AmlStart = Op->Named.Data; + ObjDesc->Package.Node = ACPI_CAST_PTR ( + ACPI_NAMESPACE_NODE, WalkState->Operands[0]); + ObjDesc->Package.AmlStart = Op->Named.Data; ObjDesc->Package.AmlLength = Op->Named.Length; break; @@ -872,9 +874,9 @@ AcpiDsInitObjectFromOp ( #ifndef ACPI_NO_METHOD_EXECUTION Status = AcpiDsMethodDataGetNode (ACPI_REFCLASS_LOCAL, - ObjDesc->Reference.Value, WalkState, - ACPI_CAST_INDIRECT_PTR (ACPI_NAMESPACE_NODE, - &ObjDesc->Reference.Object)); + ObjDesc->Reference.Value, WalkState, + ACPI_CAST_INDIRECT_PTR (ACPI_NAMESPACE_NODE, + &ObjDesc->Reference.Object)); #endif break; @@ -887,9 +889,9 @@ AcpiDsInitObjectFromOp ( #ifndef ACPI_NO_METHOD_EXECUTION Status = AcpiDsMethodDataGetNode (ACPI_REFCLASS_ARG, - ObjDesc->Reference.Value, WalkState, - ACPI_CAST_INDIRECT_PTR (ACPI_NAMESPACE_NODE, - &ObjDesc->Reference.Object)); + ObjDesc->Reference.Value, WalkState, + ACPI_CAST_INDIRECT_PTR (ACPI_NAMESPACE_NODE, + &ObjDesc->Reference.Object)); #endif break; diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsopcode.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsopcode.c index 6e2c784816..ea0f11eabb 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsopcode.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsopcode.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -331,8 +331,8 @@ AcpiDsInitBufferField ( * For FieldFlags, use LOCK_RULE = 0 (NO_LOCK), * UPDATE_RULE = 0 (UPDATE_PRESERVE) */ - Status = AcpiExPrepCommonFieldObject (ObjDesc, FieldFlags, 0, - BitOffset, BitCount); + Status = AcpiExPrepCommonFieldObject ( + ObjDesc, FieldFlags, 0, BitOffset, BitCount); if (ACPI_FAILURE (Status)) { goto Cleanup; @@ -429,8 +429,8 @@ AcpiDsEvalBufferFieldOperands ( /* Resolve the operands */ - Status = AcpiExResolveOperands (Op->Common.AmlOpcode, - ACPI_WALK_OPERANDS, WalkState); + Status = AcpiExResolveOperands ( + Op->Common.AmlOpcode, ACPI_WALK_OPERANDS, WalkState); if (ACPI_FAILURE (Status)) { ACPI_ERROR ((AE_INFO, "(%s) bad operand(s), status 0x%X", @@ -446,16 +446,16 @@ AcpiDsEvalBufferFieldOperands ( /* NOTE: Slightly different operands for this opcode */ Status = AcpiDsInitBufferField (Op->Common.AmlOpcode, ObjDesc, - WalkState->Operands[0], WalkState->Operands[1], - WalkState->Operands[2], WalkState->Operands[3]); + WalkState->Operands[0], WalkState->Operands[1], + WalkState->Operands[2], WalkState->Operands[3]); } else { /* All other, CreateXxxField opcodes */ Status = AcpiDsInitBufferField (Op->Common.AmlOpcode, ObjDesc, - WalkState->Operands[0], WalkState->Operands[1], - NULL, WalkState->Operands[2]); + WalkState->Operands[0], WalkState->Operands[1], + NULL, WalkState->Operands[2]); } return_ACPI_STATUS (Status); @@ -515,8 +515,8 @@ AcpiDsEvalRegionOperands ( /* Resolve the length and address operands to numbers */ - Status = AcpiExResolveOperands (Op->Common.AmlOpcode, - ACPI_WALK_OPERANDS, WalkState); + Status = AcpiExResolveOperands ( + Op->Common.AmlOpcode, ACPI_WALK_OPERANDS, WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -544,18 +544,16 @@ AcpiDsEvalRegionOperands ( OperandDesc = WalkState->Operands[WalkState->NumOperands - 2]; ObjDesc->Region.Address = (ACPI_PHYSICAL_ADDRESS) - OperandDesc->Integer.Value; + OperandDesc->Integer.Value; AcpiUtRemoveReference (OperandDesc); ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "RgnObj %p Addr %8.8X%8.8X Len %X\n", - ObjDesc, - ACPI_FORMAT_UINT64 (ObjDesc->Region.Address), + ObjDesc, ACPI_FORMAT_UINT64 (ObjDesc->Region.Address), ObjDesc->Region.Length)); /* Now the address and length are valid for this opregion */ ObjDesc->Region.Flags |= AOPOBJ_DATA_VALID; - return_ACPI_STATUS (Status); } @@ -618,8 +616,8 @@ AcpiDsEvalTableRegionOperands ( * Resolve the Signature string, OemId string, * and OemTableId string operands */ - Status = AcpiExResolveOperands (Op->Common.AmlOpcode, - ACPI_WALK_OPERANDS, WalkState); + Status = AcpiExResolveOperands ( + Op->Common.AmlOpcode, ACPI_WALK_OPERANDS, WalkState); if (ACPI_FAILURE (Status)) { goto Cleanup; @@ -628,9 +626,9 @@ AcpiDsEvalTableRegionOperands ( /* Find the ACPI table */ Status = AcpiTbFindTable ( - Operand[0]->String.Pointer, - Operand[1]->String.Pointer, - Operand[2]->String.Pointer, &TableIndex); + Operand[0]->String.Pointer, + Operand[1]->String.Pointer, + Operand[2]->String.Pointer, &TableIndex); if (ACPI_FAILURE (Status)) { if (Status == AE_NOT_FOUND) @@ -721,8 +719,8 @@ AcpiDsEvalDataObjectOperands ( } Status = AcpiExResolveOperands (WalkState->Opcode, - &(WalkState->Operands [WalkState->NumOperands -1]), - WalkState); + &(WalkState->Operands [WalkState->NumOperands -1]), + WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -750,13 +748,15 @@ AcpiDsEvalDataObjectOperands ( { case AML_BUFFER_OP: - Status = AcpiDsBuildInternalBufferObj (WalkState, Op, Length, &ObjDesc); + Status = AcpiDsBuildInternalBufferObj ( + WalkState, Op, Length, &ObjDesc); break; case AML_PACKAGE_OP: case AML_VAR_PACKAGE_OP: - Status = AcpiDsBuildInternalPackageObj (WalkState, Op, Length, &ObjDesc); + Status = AcpiDsBuildInternalPackageObj ( + WalkState, Op, Length, &ObjDesc); break; default: diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsutils.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsutils.c index 0ba26fab86..52e9ca8f2f 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsutils.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dsutils.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -212,9 +212,9 @@ AcpiDsDoImplicitReturn ( } ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, - "Result %p will be implicitly returned; Prev=%p\n", - ReturnDesc, - WalkState->ImplicitReturnObj)); + "Result %p will be implicitly returned; Prev=%p\n", + ReturnDesc, + WalkState->ImplicitReturnObj)); /* * Delete any "stale" implicit return value first. However, in @@ -338,7 +338,8 @@ AcpiDsIsResultUsed ( * If we are executing the predicate AND this is the predicate op, * we will use the return value */ - if ((WalkState->ControlState->Common.State == ACPI_CONTROL_PREDICATE_EXECUTING) && + if ((WalkState->ControlState->Common.State == + ACPI_CONTROL_PREDICATE_EXECUTING) && (WalkState->ControlState->Control.PredicateOp == Op)) { goto ResultUsed; @@ -595,8 +596,8 @@ AcpiDsCreateOperand ( /* Get the entire name string from the AML stream */ - Status = AcpiExGetNameString (ACPI_TYPE_ANY, Arg->Common.Value.Buffer, - &NameString, &NameLength); + Status = AcpiExGetNameString (ACPI_TYPE_ANY, + Arg->Common.Value.Buffer, &NameString, &NameLength); if (ACPI_FAILURE (Status)) { @@ -616,10 +617,11 @@ AcpiDsCreateOperand ( */ if ((WalkState->DeferredNode) && (WalkState->DeferredNode->Type == ACPI_TYPE_BUFFER_FIELD) && - (ArgIndex == (UINT32) ((WalkState->Opcode == AML_CREATE_FIELD_OP) ? 3 : 2))) + (ArgIndex == (UINT32) + ((WalkState->Opcode == AML_CREATE_FIELD_OP) ? 3 : 2))) { ObjDesc = ACPI_CAST_PTR ( - ACPI_OPERAND_OBJECT, WalkState->DeferredNode); + ACPI_OPERAND_OBJECT, WalkState->DeferredNode); Status = AE_OK; } else /* All other opcodes */ @@ -632,6 +634,7 @@ AcpiDsCreateOperand ( */ ParentOp = Arg->Common.Parent; OpInfo = AcpiPsGetOpcodeInfo (ParentOp->Common.AmlOpcode); + if ((OpInfo->Flags & AML_NSNODE) && (ParentOp->Common.AmlOpcode != AML_INT_METHODCALL_OP) && (ParentOp->Common.AmlOpcode != AML_REGION_OP) && @@ -649,10 +652,9 @@ AcpiDsCreateOperand ( } Status = AcpiNsLookup (WalkState->ScopeInfo, NameString, - ACPI_TYPE_ANY, InterpreterMode, - ACPI_NS_SEARCH_PARENT | ACPI_NS_DONT_OPEN_SCOPE, - WalkState, - ACPI_CAST_INDIRECT_PTR (ACPI_NAMESPACE_NODE, &ObjDesc)); + ACPI_TYPE_ANY, InterpreterMode, + ACPI_NS_SEARCH_PARENT | ACPI_NS_DONT_OPEN_SCOPE, WalkState, + ACPI_CAST_INDIRECT_PTR (ACPI_NAMESPACE_NODE, &ObjDesc)); /* * The only case where we pass through (ignore) a NOT_FOUND * error is for the CondRefOf opcode. @@ -668,7 +670,7 @@ AcpiDsCreateOperand ( * object to the root */ ObjDesc = ACPI_CAST_PTR ( - ACPI_OPERAND_OBJECT, AcpiGbl_RootNode); + ACPI_OPERAND_OBJECT, AcpiGbl_RootNode); Status = AE_OK; } else if (ParentOp->Common.AmlOpcode == AML_EXTERNAL_OP) @@ -714,7 +716,8 @@ AcpiDsCreateOperand ( { return_ACPI_STATUS (Status); } - ACPI_DEBUGGER_EXEC (AcpiDbDisplayArgumentObject (ObjDesc, WalkState)); + + AcpiDbDisplayArgumentObject (ObjDesc, WalkState); } else { @@ -747,13 +750,14 @@ AcpiDsCreateOperand ( return_ACPI_STATUS (AE_NOT_IMPLEMENTED); } - if ((OpInfo->Flags & AML_HAS_RETVAL) || (Arg->Common.Flags & ACPI_PARSEOP_IN_STACK)) + if ((OpInfo->Flags & AML_HAS_RETVAL) || + (Arg->Common.Flags & ACPI_PARSEOP_IN_STACK)) { ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Argument previously created, already stacked\n")); - ACPI_DEBUGGER_EXEC (AcpiDbDisplayArgumentObject ( - WalkState->Operands [WalkState->NumOperands - 1], WalkState)); + AcpiDbDisplayArgumentObject ( + WalkState->Operands [WalkState->NumOperands - 1], WalkState); /* * Use value that was already previously returned @@ -784,7 +788,7 @@ AcpiDsCreateOperand ( /* Initialize the new object */ Status = AcpiDsInitObjectFromOp ( - WalkState, Arg, Opcode, &ObjDesc); + WalkState, Arg, Opcode, &ObjDesc); if (ACPI_FAILURE (Status)) { AcpiUtDeleteObjectDesc (ObjDesc); @@ -800,7 +804,7 @@ AcpiDsCreateOperand ( return_ACPI_STATUS (Status); } - ACPI_DEBUGGER_EXEC (AcpiDbDisplayArgumentObject (ObjDesc, WalkState)); + AcpiDbDisplayArgumentObject (ObjDesc, WalkState); } return_ACPI_STATUS (AE_OK); @@ -970,7 +974,8 @@ AcpiDsEvaluateNamePath ( AcpiUtRemoveReference (*Operand); - Status = AcpiUtCopyIobjectToIobject (*Operand, &NewObjDesc, WalkState); + Status = AcpiUtCopyIobjectToIobject ( + *Operand, &NewObjDesc, WalkState); if (ACPI_FAILURE (Status)) { goto Exit; diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dswexec.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dswexec.c index f650cedf64..5cedfa8630 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dswexec.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dswexec.c @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -261,12 +261,13 @@ AcpiDsGetPredicateValue ( Cleanup: - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Completed a predicate eval=%X Op=%p\n", + ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, + "Completed a predicate eval=%X Op=%p\n", WalkState->ControlState->Common.Value, WalkState->Op)); - /* Break to debugger to display result */ + /* Break to debugger to display result */ - ACPI_DEBUGGER_EXEC (AcpiDbDisplayResultObject (LocalObjDesc, WalkState)); + AcpiDbDisplayResultObject (LocalObjDesc, WalkState); /* * Delete the predicate result object (we know that @@ -358,10 +359,12 @@ AcpiDsExecBeginOp ( (WalkState->ControlState->Common.State == ACPI_CONTROL_CONDITIONAL_EXECUTING)) { - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Exec predicate Op=%p State=%p\n", - Op, WalkState)); + ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, + "Exec predicate Op=%p State=%p\n", + Op, WalkState)); - WalkState->ControlState->Common.State = ACPI_CONTROL_PREDICATE_EXECUTING; + WalkState->ControlState->Common.State = + ACPI_CONTROL_PREDICATE_EXECUTING; /* Save start of predicate */ @@ -409,8 +412,8 @@ AcpiDsExecBeginOp ( } else { - Status = AcpiDsScopeStackPush (Op->Named.Node, - Op->Named.Node->Type, WalkState); + Status = AcpiDsScopeStackPush ( + Op->Named.Node, Op->Named.Node->Type, WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -469,8 +472,8 @@ AcpiDsExecEndOp ( ACPI_FUNCTION_TRACE_PTR (DsExecEndOp, WalkState); - Op = WalkState->Op; - OpType = WalkState->OpInfo->Type; + Op = WalkState->Op; + OpType = WalkState->OpInfo->Type; OpClass = WalkState->OpInfo->Class; if (OpClass == AML_CLASS_UNKNOWN) @@ -490,8 +493,11 @@ AcpiDsExecEndOp ( /* Call debugger for single step support (DEBUG build only) */ - ACPI_DEBUGGER_EXEC (Status = AcpiDbSingleStep (WalkState, Op, OpClass)); - ACPI_DEBUGGER_EXEC (if (ACPI_FAILURE (Status)) {return_ACPI_STATUS (Status);}); + Status = AcpiDbSingleStep (WalkState, Op, OpClass); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } /* Decode the Opcode Class */ @@ -528,8 +534,8 @@ AcpiDsExecEndOp ( /* Resolve all operands */ Status = AcpiExResolveOperands (WalkState->Opcode, - &(WalkState->Operands [WalkState->NumOperands -1]), - WalkState); + &(WalkState->Operands [WalkState->NumOperands -1]), + WalkState); } if (ACPI_SUCCESS (Status)) @@ -606,7 +612,8 @@ AcpiDsExecEndOp ( ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Method Reference in a Package, Op=%p\n", Op)); - Op->Common.Node = (ACPI_NAMESPACE_NODE *) Op->Asl.Value.Arg->Asl.Node; + Op->Common.Node = (ACPI_NAMESPACE_NODE *) + Op->Asl.Value.Arg->Asl.Node; AcpiUtAddReference (Op->Asl.Value.Arg->Asl.Node->Object); return_ACPI_STATUS (AE_OK); } @@ -688,12 +695,12 @@ AcpiDsExecEndOp ( * Put the Node on the object stack (Contains the ACPI Name * of this object) */ - WalkState->Operands[0] = (void *) Op->Common.Parent->Common.Node; + WalkState->Operands[0] = (void *) + Op->Common.Parent->Common.Node; WalkState->NumOperands = 1; Status = AcpiDsCreateNode (WalkState, - Op->Common.Parent->Common.Node, - Op->Common.Parent); + Op->Common.Parent->Common.Node, Op->Common.Parent); if (ACPI_FAILURE (Status)) { break; @@ -705,7 +712,7 @@ AcpiDsExecEndOp ( case AML_INT_EVAL_SUBTREE_OP: Status = AcpiDsEvalDataObjectOperands (WalkState, Op, - AcpiNsGetAttachedObject (Op->Common.Parent->Common.Node)); + AcpiNsGetAttachedObject (Op->Common.Parent->Common.Node)); break; default: @@ -786,7 +793,8 @@ AcpiDsExecEndOp ( default: ACPI_ERROR ((AE_INFO, - "Unimplemented opcode, class=0x%X type=0x%X Opcode=0x%X Op=%p", + "Unimplemented opcode, class=0x%X " + "type=0x%X Opcode=0x%X Op=%p", OpClass, OpType, Op->Common.AmlOpcode, Op)); Status = AE_NOT_IMPLEMENTED; @@ -821,8 +829,7 @@ Cleanup: { /* Break to debugger to display result */ - ACPI_DEBUGGER_EXEC (AcpiDbDisplayResultObject (WalkState->ResultObj, - WalkState)); + AcpiDbDisplayResultObject (WalkState->ResultObj,WalkState); /* * Delete the result op if and only if: diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dswload.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dswload.c index a9840755de..09e1338610 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dswload.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dswload.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -260,7 +260,8 @@ AcpiDsLoad1BeginOp ( ObjectType = WalkState->OpInfo->ObjectType; ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, - "State=%p Op=%p [%s]\n", WalkState, Op, AcpiUtGetTypeName (ObjectType))); + "State=%p Op=%p [%s]\n", WalkState, Op, + AcpiUtGetTypeName (ObjectType))); switch (WalkState->Opcode) { @@ -271,7 +272,7 @@ AcpiDsLoad1BeginOp ( * Allow search-to-root for single namesegs. */ Status = AcpiNsLookup (WalkState->ScopeInfo, Path, ObjectType, - ACPI_IMODE_EXECUTE, ACPI_NS_SEARCH_PARENT, WalkState, &(Node)); + ACPI_IMODE_EXECUTE, ACPI_NS_SEARCH_PARENT, WalkState, &(Node)); #ifdef ACPI_ASL_COMPILER if (Status == AE_NOT_FOUND) { @@ -282,8 +283,8 @@ AcpiDsLoad1BeginOp ( */ AcpiDmAddOpToExternalList (Op, Path, ACPI_TYPE_DEVICE, 0, 0); Status = AcpiNsLookup (WalkState->ScopeInfo, Path, ObjectType, - ACPI_IMODE_LOAD_PASS1, ACPI_NS_SEARCH_PARENT, - WalkState, &Node); + ACPI_IMODE_LOAD_PASS1, ACPI_NS_SEARCH_PARENT, + WalkState, &Node); } #endif if (ACPI_FAILURE (Status)) @@ -401,20 +402,20 @@ AcpiDsLoad1BeginOp ( { Flags |= ACPI_NS_OVERRIDE_IF_FOUND; ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "[%s] Override allowed\n", - AcpiUtGetTypeName (ObjectType))); + AcpiUtGetTypeName (ObjectType))); } else { Flags |= ACPI_NS_ERROR_IF_FOUND; ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "[%s] Cannot already exist\n", - AcpiUtGetTypeName (ObjectType))); + AcpiUtGetTypeName (ObjectType))); } } else { ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "[%s] Both Find or Create allowed\n", - AcpiUtGetTypeName (ObjectType))); + AcpiUtGetTypeName (ObjectType))); } /* @@ -424,7 +425,7 @@ AcpiDsLoad1BeginOp ( * parse tree later. */ Status = AcpiNsLookup (WalkState->ScopeInfo, Path, ObjectType, - ACPI_IMODE_LOAD_PASS1, Flags, WalkState, &Node); + ACPI_IMODE_LOAD_PASS1, Flags, WalkState, &Node); if (ACPI_FAILURE (Status)) { if (Status == AE_ALREADY_EXISTS) @@ -444,7 +445,8 @@ AcpiDsLoad1BeginOp ( if (AcpiNsOpensScope (ObjectType)) { - Status = AcpiDsScopeStackPush (Node, ObjectType, WalkState); + Status = AcpiDsScopeStackPush ( + Node, ObjectType, WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -566,8 +568,9 @@ AcpiDsLoad1EndOp ( if (Op->Common.AmlOpcode == AML_REGION_OP) { Status = AcpiExCreateRegion (Op->Named.Data, Op->Named.Length, - (ACPI_ADR_SPACE_TYPE) ((Op->Common.Value.Arg)->Common.Value.Integer), - WalkState); + (ACPI_ADR_SPACE_TYPE) + ((Op->Common.Value.Arg)->Common.Value.Integer), + WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -576,7 +579,7 @@ AcpiDsLoad1EndOp ( else if (Op->Common.AmlOpcode == AML_DATA_REGION_OP) { Status = AcpiExCreateRegion (Op->Named.Data, Op->Named.Length, - ACPI_ADR_SPACE_DATA_TABLE, WalkState); + ACPI_ADR_SPACE_DATA_TABLE, WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -628,11 +631,12 @@ AcpiDsLoad1EndOp ( WalkState->Operands[0] = ACPI_CAST_PTR (void, Op->Named.Node); WalkState->NumOperands = 1; - Status = AcpiDsCreateOperands (WalkState, Op->Common.Value.Arg); + Status = AcpiDsCreateOperands ( + WalkState, Op->Common.Value.Arg); if (ACPI_SUCCESS (Status)) { Status = AcpiExCreateMethod (Op->Named.Data, - Op->Named.Length, WalkState); + Op->Named.Length, WalkState); } WalkState->Operands[0] = NULL; diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dswload2.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dswload2.c index d5f9b1c17d..fa164c8058 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dswload2.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dswload2.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -231,8 +231,8 @@ AcpiDsLoad2BeginOp ( * for use later. */ Status = AcpiNsLookup (WalkState->ScopeInfo, BufferPtr, ObjectType, - ACPI_IMODE_EXECUTE, ACPI_NS_SEARCH_PARENT, - WalkState, &(Node)); + ACPI_IMODE_EXECUTE, ACPI_NS_SEARCH_PARENT, + WalkState, &(Node)); break; case AML_SCOPE_OP: @@ -257,8 +257,8 @@ AcpiDsLoad2BeginOp ( * for use later. */ Status = AcpiNsLookup (WalkState->ScopeInfo, BufferPtr, ObjectType, - ACPI_IMODE_EXECUTE, ACPI_NS_SEARCH_PARENT, - WalkState, &(Node)); + ACPI_IMODE_EXECUTE, ACPI_NS_SEARCH_PARENT, + WalkState, &(Node)); if (ACPI_FAILURE (Status)) { #ifdef ACPI_ASL_COMPILER @@ -395,7 +395,7 @@ AcpiDsLoad2BeginOp ( /* Add new entry or lookup existing entry */ Status = AcpiNsLookup (WalkState->ScopeInfo, BufferPtr, ObjectType, - ACPI_IMODE_LOAD_PASS2, Flags, WalkState, &Node); + ACPI_IMODE_LOAD_PASS2, Flags, WalkState, &Node); if (ACPI_SUCCESS (Status) && (Flags & ACPI_NS_TEMPORARY)) { @@ -473,7 +473,7 @@ AcpiDsLoad2EndOp ( Op = WalkState->Op; ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Opcode [%s] Op %p State %p\n", - WalkState->OpInfo->Name, Op, WalkState)); + WalkState->OpInfo->Name, Op, WalkState)); /* Check if opcode had an associated namespace object */ @@ -579,8 +579,8 @@ AcpiDsLoad2EndOp ( { case AML_INDEX_FIELD_OP: - Status = AcpiDsCreateIndexField (Op, (ACPI_HANDLE) Arg->Common.Node, - WalkState); + Status = AcpiDsCreateIndexField ( + Op, (ACPI_HANDLE) Arg->Common.Node, WalkState); break; case AML_BANK_FIELD_OP: @@ -665,7 +665,7 @@ AcpiDsLoad2EndOp ( if (Op->Common.AmlOpcode == AML_REGION_OP) { RegionSpace = (ACPI_ADR_SPACE_TYPE) - ((Op->Common.Value.Arg)->Common.Value.Integer); + ((Op->Common.Value.Arg)->Common.Value.Integer); } else { @@ -690,8 +690,8 @@ AcpiDsLoad2EndOp ( * Executing a method: initialize the region and unlock * the interpreter */ - Status = AcpiExCreateRegion (Op->Named.Data, Op->Named.Length, - RegionSpace, WalkState); + Status = AcpiExCreateRegion (Op->Named.Data, + Op->Named.Length, RegionSpace, WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -700,8 +700,8 @@ AcpiDsLoad2EndOp ( AcpiExExitInterpreter (); } - Status = AcpiEvInitializeRegion (AcpiNsGetAttachedObject (Node), - FALSE); + Status = AcpiEvInitializeRegion ( + AcpiNsGetAttachedObject (Node), FALSE); if (WalkState->MethodNode) { AcpiExEnterInterpreter (); @@ -744,12 +744,14 @@ AcpiDsLoad2EndOp ( WalkState->Operands[0] = ACPI_CAST_PTR (void, Op->Named.Node); WalkState->NumOperands = 1; - Status = AcpiDsCreateOperands (WalkState, Op->Common.Value.Arg); + Status = AcpiDsCreateOperands ( + WalkState, Op->Common.Value.Arg); if (ACPI_SUCCESS (Status)) { - Status = AcpiExCreateMethod (Op->Named.Data, - Op->Named.Length, WalkState); + Status = AcpiExCreateMethod ( + Op->Named.Data, Op->Named.Length, WalkState); } + WalkState->Operands[0] = NULL; WalkState->NumOperands = 0; @@ -784,9 +786,9 @@ AcpiDsLoad2EndOp ( * Lookup the method name and save the Node */ Status = AcpiNsLookup (WalkState->ScopeInfo, Arg->Common.Value.String, - ACPI_TYPE_ANY, ACPI_IMODE_LOAD_PASS2, - ACPI_NS_SEARCH_PARENT | ACPI_NS_DONT_OPEN_SCOPE, - WalkState, &(NewNode)); + ACPI_TYPE_ANY, ACPI_IMODE_LOAD_PASS2, + ACPI_NS_SEARCH_PARENT | ACPI_NS_DONT_OPEN_SCOPE, + WalkState, &(NewNode)); if (ACPI_SUCCESS (Status)) { /* diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dswscope.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dswscope.c index 9865dcd9db..9cbfa57568 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dswscope.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dswscope.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -154,6 +154,7 @@ AcpiDsScopeStackClear ( ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Popped object type (%s)\n", AcpiUtGetTypeName (ScopeInfo->Common.Value))); + AcpiUtDeleteGenericState (ScopeInfo); } } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dswstate.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dswstate.c index e5ea5085f7..72a3dc3a13 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dswstate.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/dispatcher/dswstate.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -371,8 +371,8 @@ AcpiDsResultStackPop ( if (WalkState->Results == NULL) { - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Result stack underflow - State=%p\n", - WalkState)); + ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, + "Result stack underflow - State=%p\n", WalkState)); return (AE_AML_NO_OPERAND); } @@ -779,7 +779,8 @@ AcpiDsInitAmlWalk ( /* Push start scope on scope stack and make it current */ - Status = AcpiDsScopeStackPush (MethodNode, ACPI_TYPE_METHOD, WalkState); + Status = AcpiDsScopeStackPush ( + MethodNode, ACPI_TYPE_METHOD, WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -822,7 +823,7 @@ AcpiDsInitAmlWalk ( /* Push start scope on scope stack and make it current */ Status = AcpiDsScopeStackPush (ParserState->StartNode, - ParserState->StartNode->Type, WalkState); + ParserState->StartNode->Type, WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evevent.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evevent.c index e4473561a5..5e6c8348f0 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evevent.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evevent.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -275,8 +275,8 @@ AcpiEvFixedEventInitialize ( if (AcpiGbl_FixedEventInfo[i].EnableRegisterId != 0xFF) { Status = AcpiWriteBitRegister ( - AcpiGbl_FixedEventInfo[i].EnableRegisterId, - ACPI_DISABLE_EVENT); + AcpiGbl_FixedEventInfo[i].EnableRegisterId, + ACPI_DISABLE_EVENT); if (ACPI_FAILURE (Status)) { return (Status); @@ -379,8 +379,8 @@ AcpiEvFixedEventDispatch ( /* Clear the status bit */ (void) AcpiWriteBitRegister ( - AcpiGbl_FixedEventInfo[Event].StatusRegisterId, - ACPI_CLEAR_STATUS); + AcpiGbl_FixedEventInfo[Event].StatusRegisterId, + ACPI_CLEAR_STATUS); /* * Make sure that a handler exists. If not, report an error @@ -389,8 +389,8 @@ AcpiEvFixedEventDispatch ( if (!AcpiGbl_FixedEventHandlers[Event].Handler) { (void) AcpiWriteBitRegister ( - AcpiGbl_FixedEventInfo[Event].EnableRegisterId, - ACPI_DISABLE_EVENT); + AcpiGbl_FixedEventInfo[Event].EnableRegisterId, + ACPI_DISABLE_EVENT); ACPI_ERROR ((AE_INFO, "No installed handler for fixed event - %s (%u), disabling", @@ -402,7 +402,7 @@ AcpiEvFixedEventDispatch ( /* Invoke the Fixed Event handler */ return ((AcpiGbl_FixedEventHandlers[Event].Handler)( - AcpiGbl_FixedEventHandlers[Event].Context)); + AcpiGbl_FixedEventHandlers[Event].Context)); } #endif /* !ACPI_REDUCED_HARDWARE */ diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evglock.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evglock.c index e1ebf190f0..48a9c96f90 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evglock.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evglock.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -162,7 +162,7 @@ AcpiEvInitGlobalLockHandler ( /* Attempt installation of the global lock handler */ Status = AcpiInstallFixedEventHandler (ACPI_EVENT_GLOBAL, - AcpiEvGlobalLockHandler, NULL); + AcpiEvGlobalLockHandler, NULL); /* * If the global lock does not exist on this platform, the attempt to @@ -212,9 +212,10 @@ AcpiEvRemoveGlobalLockHandler ( ACPI_FUNCTION_TRACE (EvRemoveGlobalLockHandler); + AcpiGbl_GlobalLockPresent = FALSE; Status = AcpiRemoveFixedEventHandler (ACPI_EVENT_GLOBAL, - AcpiEvGlobalLockHandler); + AcpiEvGlobalLockHandler); AcpiOsDeleteLock (AcpiGbl_GlobalLockPendingLock); return_ACPI_STATUS (Status); @@ -374,8 +375,8 @@ AcpiEvAcquireGlobalLock ( * Wait for handshake with the global lock interrupt handler. * This interface releases the interpreter if we must wait. */ - Status = AcpiExSystemWaitSemaphore (AcpiGbl_GlobalLockSemaphore, - ACPI_WAIT_FOREVER); + Status = AcpiExSystemWaitSemaphore ( + AcpiGbl_GlobalLockSemaphore, ACPI_WAIT_FOREVER); Flags = AcpiOsAcquireLock (AcpiGbl_GlobalLockPendingLock); @@ -433,7 +434,7 @@ AcpiEvReleaseGlobalLock ( if (Pending) { Status = AcpiWriteBitRegister ( - ACPI_BITREG_GLOBAL_LOCK_RELEASE, ACPI_ENABLE_EVENT); + ACPI_BITREG_GLOBAL_LOCK_RELEASE, ACPI_ENABLE_EVENT); } ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Released hardware Global Lock\n")); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evgpe.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evgpe.c index 4dceaa4721..9adedb8794 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evgpe.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evgpe.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -176,8 +176,8 @@ AcpiEvUpdateGpeEnableMask ( { ACPI_SET_BIT (GpeRegisterInfo->EnableForRun, (UINT8) RegisterBit); } - GpeRegisterInfo->EnableMask = GpeRegisterInfo->EnableForRun; + GpeRegisterInfo->EnableMask = GpeRegisterInfo->EnableForRun; return_ACPI_STATUS (AE_OK); } @@ -399,7 +399,7 @@ AcpiEvGetGpeEventInfo ( for (i = 0; i < ACPI_MAX_GPE_BLOCKS; i++) { GpeInfo = AcpiEvLowGetGpeInfo (GpeNumber, - AcpiGbl_GpeFadtBlocks[i]); + AcpiGbl_GpeFadtBlocks[i]); if (GpeInfo) { return (GpeInfo); @@ -660,8 +660,8 @@ AcpiEvAsynchExecuteGpeMethod ( Notify = GpeEventInfo->Dispatch.NotifyList; while (ACPI_SUCCESS (Status) && Notify) { - Status = AcpiEvQueueNotifyRequest (Notify->DeviceNode, - ACPI_NOTIFY_DEVICE_WAKE); + Status = AcpiEvQueueNotifyRequest ( + Notify->DeviceNode, ACPI_NOTIFY_DEVICE_WAKE); Notify = Notify->Next; } @@ -705,7 +705,7 @@ AcpiEvAsynchExecuteGpeMethod ( /* Defer enabling of GPE until all notify handlers are done */ Status = AcpiOsExecute (OSL_NOTIFY_HANDLER, - AcpiEvAsynchEnableGpe, GpeEventInfo); + AcpiEvAsynchEnableGpe, GpeEventInfo); if (ACPI_SUCCESS (Status)) { return_VOID; @@ -850,8 +850,8 @@ AcpiEvGpeDispatch ( { ACPI_EXCEPTION ((AE_INFO, Status, "Unable to clear GPE %02X", GpeNumber)); - (void) AcpiHwLowSetGpe (GpeEventInfo, - ACPI_GPE_CONDITIONAL_ENABLE); + (void) AcpiHwLowSetGpe ( + GpeEventInfo, ACPI_GPE_CONDITIONAL_ENABLE); return_UINT32 (ACPI_INTERRUPT_NOT_HANDLED); } } @@ -888,7 +888,7 @@ AcpiEvGpeDispatch ( * NOTE: Level-triggered GPEs are cleared after the method completes. */ Status = AcpiOsExecute (OSL_GPE_HANDLER, - AcpiEvAsynchExecuteGpeMethod, GpeEventInfo); + AcpiEvAsynchExecuteGpeMethod, GpeEventInfo); if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evgpeblk.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evgpeblk.c index e067457c64..392ba37ad5 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evgpeblk.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evgpeblk.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -265,6 +265,7 @@ AcpiEvDeleteGpeBlock ( { GpeBlock->Next->Previous = GpeBlock->Previous; } + AcpiOsReleaseLock (AcpiGbl_GpeLock, Flags); } @@ -313,8 +314,8 @@ AcpiEvCreateGpeInfoBlocks ( /* Allocate the GPE register information block */ GpeRegisterInfo = ACPI_ALLOCATE_ZEROED ( - (ACPI_SIZE) GpeBlock->RegisterCount * - sizeof (ACPI_GPE_REGISTER_INFO)); + (ACPI_SIZE) GpeBlock->RegisterCount * + sizeof (ACPI_GPE_REGISTER_INFO)); if (!GpeRegisterInfo) { ACPI_ERROR ((AE_INFO, @@ -327,7 +328,7 @@ AcpiEvCreateGpeInfoBlocks ( * per register. Initialization to zeros is sufficient. */ GpeEventInfo = ACPI_ALLOCATE_ZEROED ((ACPI_SIZE) GpeBlock->GpeCount * - sizeof (ACPI_GPE_EVENT_INFO)); + sizeof (ACPI_GPE_EVENT_INFO)); if (!GpeEventInfo) { ACPI_ERROR ((AE_INFO, @@ -339,7 +340,7 @@ AcpiEvCreateGpeInfoBlocks ( /* Save the new Info arrays in the GPE block */ GpeBlock->RegisterInfo = GpeRegisterInfo; - GpeBlock->EventInfo = GpeEventInfo; + GpeBlock->EventInfo = GpeEventInfo; /* * Initialize the GPE Register and Event structures. A goal of these @@ -348,7 +349,7 @@ AcpiEvCreateGpeInfoBlocks ( * first half, and the enable registers occupy the second half. */ ThisRegister = GpeRegisterInfo; - ThisEvent = GpeEventInfo; + ThisEvent = GpeEventInfo; for (i = 0; i < GpeBlock->RegisterCount; i++) { @@ -506,8 +507,8 @@ AcpiEvCreateGpeBlock ( WalkInfo.ExecuteByOwnerId = FALSE; Status = AcpiNsWalkNamespace (ACPI_TYPE_METHOD, GpeDevice, - ACPI_UINT32_MAX, ACPI_NS_WALK_NO_UNLOCK, - AcpiEvMatchGpeMethod, NULL, &WalkInfo, NULL); + ACPI_UINT32_MAX, ACPI_NS_WALK_NO_UNLOCK, + AcpiEvMatchGpeMethod, NULL, &WalkInfo, NULL); /* Return the new block */ diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evgpeinit.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evgpeinit.c index bf3c6e5cce..5bb554bc89 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evgpeinit.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evgpeinit.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -210,10 +210,10 @@ AcpiEvGpeInitialize ( /* Install GPE Block 0 */ Status = AcpiEvCreateGpeBlock (AcpiGbl_FadtGpeDevice, - AcpiGbl_FADT.XGpe0Block.Address, - AcpiGbl_FADT.XGpe0Block.SpaceId, - RegisterCount0, 0, - AcpiGbl_FADT.SciInterrupt, &AcpiGbl_GpeFadtBlocks[0]); + AcpiGbl_FADT.XGpe0Block.Address, + AcpiGbl_FADT.XGpe0Block.SpaceId, + RegisterCount0, 0, + AcpiGbl_FADT.SciInterrupt, &AcpiGbl_GpeFadtBlocks[0]); if (ACPI_FAILURE (Status)) { @@ -250,11 +250,11 @@ AcpiEvGpeInitialize ( /* Install GPE Block 1 */ Status = AcpiEvCreateGpeBlock (AcpiGbl_FadtGpeDevice, - AcpiGbl_FADT.XGpe1Block.Address, - AcpiGbl_FADT.XGpe1Block.SpaceId, - RegisterCount1, - AcpiGbl_FADT.Gpe1Base, - AcpiGbl_FADT.SciInterrupt, &AcpiGbl_GpeFadtBlocks[1]); + AcpiGbl_FADT.XGpe1Block.Address, + AcpiGbl_FADT.XGpe1Block.SpaceId, + RegisterCount1, + AcpiGbl_FADT.Gpe1Base, + AcpiGbl_FADT.SciInterrupt, &AcpiGbl_GpeFadtBlocks[1]); if (ACPI_FAILURE (Status)) { @@ -267,7 +267,7 @@ AcpiEvGpeInitialize ( * space. However, GPE0 always starts at GPE number zero. */ GpeNumberMax = AcpiGbl_FADT.Gpe1Base + - ((RegisterCount1 * ACPI_GPE_REGISTER_WIDTH) - 1); + ((RegisterCount1 * ACPI_GPE_REGISTER_WIDTH) - 1); } } @@ -347,9 +347,9 @@ AcpiEvUpdateGpes ( WalkInfo.GpeDevice = GpeBlock->Node; Status = AcpiNsWalkNamespace (ACPI_TYPE_METHOD, - WalkInfo.GpeDevice, ACPI_UINT32_MAX, - ACPI_NS_WALK_NO_UNLOCK, AcpiEvMatchGpeMethod, - NULL, &WalkInfo, NULL); + WalkInfo.GpeDevice, ACPI_UINT32_MAX, + ACPI_NS_WALK_NO_UNLOCK, AcpiEvMatchGpeMethod, + NULL, &WalkInfo, NULL); if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, @@ -502,7 +502,7 @@ AcpiEvMatchGpeMethod ( } if (ACPI_GPE_DISPATCH_TYPE (GpeEventInfo->Flags) == - ACPI_GPE_DISPATCH_METHOD) + ACPI_GPE_DISPATCH_METHOD) { /* * If there is already a method, ignore this method. But check diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evgpeutil.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evgpeutil.c index f204bbadc5..ee41e3a62f 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evgpeutil.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evgpeutil.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -310,7 +310,7 @@ AcpiEvGetGpeXruptBlock ( if (InterruptNumber != AcpiGbl_FADT.SciInterrupt) { Status = AcpiOsInstallInterruptHandler (InterruptNumber, - AcpiEvGpeXruptHandler, GpeXrupt); + AcpiEvGpeXruptHandler, GpeXrupt); if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, @@ -360,7 +360,7 @@ AcpiEvDeleteGpeXrupt ( /* Disable this interrupt */ Status = AcpiOsRemoveInterruptHandler ( - GpeXrupt->InterruptNumber, AcpiEvGpeXruptHandler); + GpeXrupt->InterruptNumber, AcpiEvGpeXruptHandler); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -446,7 +446,7 @@ AcpiEvDeleteGpeHandlers ( GpeEventInfo->Flags &= ~ACPI_GPE_DISPATCH_MASK; } else if (ACPI_GPE_DISPATCH_TYPE (GpeEventInfo->Flags) == - ACPI_GPE_DISPATCH_NOTIFY) + ACPI_GPE_DISPATCH_NOTIFY) { /* Delete the implicit notification device list */ @@ -457,6 +457,7 @@ AcpiEvDeleteGpeHandlers ( ACPI_FREE (Notify); Notify = Next; } + GpeEventInfo->Dispatch.NotifyList = NULL; GpeEventInfo->Flags &= ~ACPI_GPE_DISPATCH_MASK; } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evhandler.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evhandler.c index d02ea5325f..707cda5ab0 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evhandler.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evhandler.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -132,6 +132,7 @@ AcpiEvInstallHandler ( void *Context, void **ReturnValue); + /* These are the address spaces that will get default handlers */ UINT8 AcpiGbl_DefaultAddressSpaces[ACPI_NUM_DEFAULT_SPACES] = @@ -194,8 +195,8 @@ AcpiEvInstallRegionHandlers ( for (i = 0; i < ACPI_NUM_DEFAULT_SPACES; i++) { Status = AcpiEvInstallSpaceHandler (AcpiGbl_RootNode, - AcpiGbl_DefaultAddressSpaces[i], - ACPI_DEFAULT_HANDLER, NULL, NULL); + AcpiGbl_DefaultAddressSpaces[i], + ACPI_DEFAULT_HANDLER, NULL, NULL); switch (Status) { case AE_OK: @@ -247,7 +248,7 @@ AcpiEvHasDefaultHandler ( ObjDesc = AcpiNsGetAttachedObject (Node); if (ObjDesc) { - HandlerObj = ObjDesc->Device.Handler; + HandlerObj = ObjDesc->CommonNotify.Handler; /* Walk the linked list of handlers for this object */ @@ -256,7 +257,7 @@ AcpiEvHasDefaultHandler ( if (HandlerObj->AddressSpace.SpaceId == SpaceId) { if (HandlerObj->AddressSpace.HandlerFlags & - ACPI_ADDR_HANDLER_DEFAULT_INSTALLED) + ACPI_ADDR_HANDLER_DEFAULT_INSTALLED) { return (TRUE); } @@ -348,33 +349,25 @@ AcpiEvInstallHandler ( { /* Check if this Device already has a handler for this address space */ - NextHandlerObj = ObjDesc->Device.Handler; - while (NextHandlerObj) + NextHandlerObj = AcpiEvFindRegionHandler ( + HandlerObj->AddressSpace.SpaceId, ObjDesc->CommonNotify.Handler); + if (NextHandlerObj) { /* Found a handler, is it for the same address space? */ - if (NextHandlerObj->AddressSpace.SpaceId == - HandlerObj->AddressSpace.SpaceId) - { - ACPI_DEBUG_PRINT ((ACPI_DB_OPREGION, - "Found handler for region [%s] in device %p(%p) " - "handler %p\n", - AcpiUtGetRegionName (HandlerObj->AddressSpace.SpaceId), - ObjDesc, NextHandlerObj, HandlerObj)); + ACPI_DEBUG_PRINT ((ACPI_DB_OPREGION, + "Found handler for region [%s] in device %p(%p) handler %p\n", + AcpiUtGetRegionName (HandlerObj->AddressSpace.SpaceId), + ObjDesc, NextHandlerObj, HandlerObj)); - /* - * Since the object we found it on was a device, then it - * means that someone has already installed a handler for - * the branch of the namespace from this device on. Just - * bail out telling the walk routine to not traverse this - * branch. This preserves the scoping rule for handlers. - */ - return (AE_CTRL_DEPTH); - } - - /* Walk the linked list of handlers attached to this device */ - - NextHandlerObj = NextHandlerObj->AddressSpace.Next; + /* + * Since the object we found it on was a device, then it means + * that someone has already installed a handler for the branch + * of the namespace from this device on. Just bail out telling + * the walk routine to not traverse this branch. This preserves + * the scoping rule for handlers. + */ + return (AE_CTRL_DEPTH); } /* @@ -407,6 +400,46 @@ AcpiEvInstallHandler ( } +/******************************************************************************* + * + * FUNCTION: AcpiEvFindRegionHandler + * + * PARAMETERS: SpaceId - The address space ID + * HandlerObj - Head of the handler object list + * + * RETURN: Matching handler object. NULL if space ID not matched + * + * DESCRIPTION: Search a handler object list for a match on the address + * space ID. + * + ******************************************************************************/ + +ACPI_OPERAND_OBJECT * +AcpiEvFindRegionHandler ( + ACPI_ADR_SPACE_TYPE SpaceId, + ACPI_OPERAND_OBJECT *HandlerObj) +{ + + /* Walk the handler list for this device */ + + while (HandlerObj) + { + /* Same SpaceId indicates a handler is installed */ + + if (HandlerObj->AddressSpace.SpaceId == SpaceId) + { + return (HandlerObj); + } + + /* Next handler object */ + + HandlerObj = HandlerObj->AddressSpace.Next; + } + + return (NULL); +} + + /******************************************************************************* * * FUNCTION: AcpiEvInstallSpaceHandler @@ -434,17 +467,17 @@ AcpiEvInstallSpaceHandler ( { ACPI_OPERAND_OBJECT *ObjDesc; ACPI_OPERAND_OBJECT *HandlerObj; - ACPI_STATUS Status; + ACPI_STATUS Status = AE_OK; ACPI_OBJECT_TYPE Type; - UINT8 Flags = 0; + UINT8 Flags = 0; ACPI_FUNCTION_TRACE (EvInstallSpaceHandler); /* - * This registration is valid for only the types below and the root. This - * is where the default handlers get placed. + * This registration is valid for only the types below and the root. + * The root node is where the default handlers get installed. */ if ((Node->Type != ACPI_TYPE_DEVICE) && (Node->Type != ACPI_TYPE_PROCESSOR) && @@ -517,47 +550,39 @@ AcpiEvInstallSpaceHandler ( if (ObjDesc) { /* - * The attached device object already exists. Make sure the handler - * is not already installed. + * The attached device object already exists. Now make sure + * the handler is not already installed. */ - HandlerObj = ObjDesc->Device.Handler; + HandlerObj = AcpiEvFindRegionHandler (SpaceId, + ObjDesc->CommonNotify.Handler); - /* Walk the handler list for this device */ - - while (HandlerObj) + if (HandlerObj) { - /* Same SpaceId indicates a handler already installed */ - - if (HandlerObj->AddressSpace.SpaceId == SpaceId) + if (HandlerObj->AddressSpace.Handler == Handler) { - if (HandlerObj->AddressSpace.Handler == Handler) - { - /* - * It is (relatively) OK to attempt to install the SAME - * handler twice. This can easily happen with the - * PCI_Config space. - */ - Status = AE_SAME_HANDLER; - goto UnlockAndExit; - } - else - { - /* A handler is already installed */ - - Status = AE_ALREADY_EXISTS; - } + /* + * It is (relatively) OK to attempt to install the SAME + * handler twice. This can easily happen with the + * PCI_Config space. + */ + Status = AE_SAME_HANDLER; goto UnlockAndExit; } + else + { + /* A handler is already installed */ - /* Walk the linked list of handlers */ + Status = AE_ALREADY_EXISTS; + } - HandlerObj = HandlerObj->AddressSpace.Next; + goto UnlockAndExit; } } else { ACPI_DEBUG_PRINT ((ACPI_DB_OPREGION, - "Creating object on Device %p while installing handler\n", Node)); + "Creating object on Device %p while installing handler\n", + Node)); /* ObjDesc does not exist, create one */ @@ -596,7 +621,8 @@ AcpiEvInstallSpaceHandler ( } ACPI_DEBUG_PRINT ((ACPI_DB_OPREGION, - "Installing address handler for region %s(%X) on Device %4.4s %p(%p)\n", + "Installing address handler for region %s(%X) " + "on Device %4.4s %p(%p)\n", AcpiUtGetRegionName (SpaceId), SpaceId, AcpiUtGetNodeName (Node), Node, ObjDesc)); @@ -621,33 +647,31 @@ AcpiEvInstallSpaceHandler ( HandlerObj->AddressSpace.Node = Node; HandlerObj->AddressSpace.Handler = Handler; HandlerObj->AddressSpace.Context = Context; - HandlerObj->AddressSpace.Setup = Setup; + HandlerObj->AddressSpace.Setup = Setup; /* Install at head of Device.AddressSpace list */ - HandlerObj->AddressSpace.Next = ObjDesc->Device.Handler; + HandlerObj->AddressSpace.Next = ObjDesc->CommonNotify.Handler; /* * The Device object is the first reference on the HandlerObj. * Each region that uses the handler adds a reference. */ - ObjDesc->Device.Handler = HandlerObj; + ObjDesc->CommonNotify.Handler = HandlerObj; /* - * Walk the namespace finding all of the regions this - * handler will manage. + * Walk the namespace finding all of the regions this handler will + * manage. * - * Start at the device and search the branch toward - * the leaf nodes until either the leaf is encountered or - * a device is detected that has an address handler of the - * same type. + * Start at the device and search the branch toward the leaf nodes + * until either the leaf is encountered or a device is detected that + * has an address handler of the same type. * - * In either case, back up and search down the remainder - * of the branch + * In either case, back up and search down the remainder of the branch */ - Status = AcpiNsWalkNamespace (ACPI_TYPE_ANY, Node, ACPI_UINT32_MAX, - ACPI_NS_WALK_UNLOCK, AcpiEvInstallHandler, NULL, - HandlerObj, NULL); + Status = AcpiNsWalkNamespace (ACPI_TYPE_ANY, Node, + ACPI_UINT32_MAX, ACPI_NS_WALK_UNLOCK, + AcpiEvInstallHandler, NULL, HandlerObj, NULL); UnlockAndExit: return_ACPI_STATUS (Status); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evmisc.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evmisc.c index 1735038d4c..dfde633875 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evmisc.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evmisc.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -147,6 +147,7 @@ BOOLEAN AcpiEvIsNotifyObject ( ACPI_NAMESPACE_NODE *Node) { + switch (Node->Type) { case ACPI_TYPE_DEVICE: @@ -255,8 +256,8 @@ AcpiEvQueueNotifyRequest ( AcpiUtGetNodeName (Node), AcpiUtGetTypeName (Node->Type), NotifyValue, AcpiUtGetNotifyName (NotifyValue, ACPI_TYPE_ANY), Node)); - Status = AcpiOsExecute (OSL_NOTIFY_HANDLER, AcpiEvNotifyDispatch, - Info); + Status = AcpiOsExecute (OSL_NOTIFY_HANDLER, + AcpiEvNotifyDispatch, Info); if (ACPI_FAILURE (Status)) { AcpiUtDeleteGenericState (Info); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evregion.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evregion.c index 24848dbe23..ed32b17cd0 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evregion.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evregion.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -171,6 +171,7 @@ AcpiEvInitializeOpRegions ( /* Run the _REG methods for OpRegions in each default address space */ + AcpiGbl_RegMethodsEnabled = TRUE; for (i = 0; i < ACPI_NUM_DEFAULT_SPACES; i++) { /* @@ -181,13 +182,11 @@ AcpiEvInitializeOpRegions ( if (AcpiEvHasDefaultHandler (AcpiGbl_RootNode, AcpiGbl_DefaultAddressSpaces[i])) { - Status = AcpiEvExecuteRegMethods (AcpiGbl_RootNode, - AcpiGbl_DefaultAddressSpaces[i]); + AcpiEvExecuteRegMethods (AcpiGbl_RootNode, + AcpiGbl_DefaultAddressSpaces[i], ACPI_REG_CONNECT); } } - AcpiGbl_RegMethodsExecuted = TRUE; - (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); return_ACPI_STATUS (Status); } @@ -210,6 +209,12 @@ AcpiEvInitializeOpRegions ( * DESCRIPTION: Dispatch an address space or operation region access to * a previously installed handler. * + * NOTE: During early initialization, we always install the default region + * handlers for Memory, I/O and PCI_Config. This ensures that these operation + * region address spaces are always available as per the ACPI specification. + * This is especially needed in order to support the execution of + * module-level AML code during loading of the ACPI tables. + * ******************************************************************************/ ACPI_STATUS @@ -282,7 +287,7 @@ AcpiEvAddressSpaceDispatch ( AcpiExExitInterpreter (); Status = RegionSetup (RegionObj, ACPI_REGION_ACTIVATE, - Context, &RegionContext); + Context, &RegionContext); /* Re-enter the interpreter */ @@ -364,7 +369,7 @@ AcpiEvAddressSpaceDispatch ( AcpiUtGetRegionName (RegionObj->Region.SpaceId))); if (!(HandlerDesc->AddressSpace.HandlerFlags & - ACPI_ADDR_HANDLER_DEFAULT_INSTALLED)) + ACPI_ADDR_HANDLER_DEFAULT_INSTALLED)) { /* * For handlers other than the default (supplied) handlers, we must @@ -386,13 +391,13 @@ AcpiEvAddressSpaceDispatch ( } if (!(HandlerDesc->AddressSpace.HandlerFlags & - ACPI_ADDR_HANDLER_DEFAULT_INSTALLED)) + ACPI_ADDR_HANDLER_DEFAULT_INSTALLED)) { /* * We just returned from a non-default handler, we must re-enter the * interpreter */ - AcpiExEnterInterpreter (); + AcpiExEnterInterpreter (); } return_ACPI_STATUS (Status); @@ -414,7 +419,7 @@ AcpiEvAddressSpaceDispatch ( ******************************************************************************/ void -AcpiEvDetachRegion( +AcpiEvDetachRegion ( ACPI_OPERAND_OBJECT *RegionObj, BOOLEAN AcpiNsIsLocked) { @@ -593,6 +598,13 @@ AcpiEvAttachRegion ( ACPI_FUNCTION_TRACE (EvAttachRegion); + /* Install the region's handler */ + + if (RegionObj->Region.Handler) + { + return_ACPI_STATUS (AE_ALREADY_EXISTS); + } + ACPI_DEBUG_PRINT ((ACPI_DB_OPREGION, "Adding Region [%4.4s] %p to address handler %p [%s]\n", AcpiUtGetNodeName (RegionObj->Region.Node), @@ -603,14 +615,6 @@ AcpiEvAttachRegion ( RegionObj->Region.Next = HandlerObj->AddressSpace.RegionList; HandlerObj->AddressSpace.RegionList = RegionObj; - - /* Install the region's handler */ - - if (RegionObj->Region.Handler) - { - return_ACPI_STATUS (AE_ALREADY_EXISTS); - } - RegionObj->Region.Handler = HandlerObj; AcpiUtAddReference (HandlerObj); @@ -618,6 +622,58 @@ AcpiEvAttachRegion ( } +/******************************************************************************* + * + * FUNCTION: AcpiEvAssociateRegMethod + * + * PARAMETERS: RegionObj - Region object + * + * RETURN: Status + * + * DESCRIPTION: Find and associate _REG method to a region + * + ******************************************************************************/ + +void +AcpiEvAssociateRegMethod ( + ACPI_OPERAND_OBJECT *RegionObj) +{ + ACPI_NAME *RegNamePtr = (ACPI_NAME *) METHOD_NAME__REG; + ACPI_NAMESPACE_NODE *MethodNode; + ACPI_NAMESPACE_NODE *Node; + ACPI_OPERAND_OBJECT *RegionObj2; + ACPI_STATUS Status; + + + ACPI_FUNCTION_TRACE (EvAssociateRegMethod); + + + RegionObj2 = AcpiNsGetSecondaryObject (RegionObj); + if (!RegionObj2) + { + return_VOID; + } + + Node = RegionObj->Region.Node->Parent; + + /* Find any "_REG" method associated with this region definition */ + + Status = AcpiNsSearchOneScope ( + *RegNamePtr, Node, ACPI_TYPE_METHOD, &MethodNode); + if (ACPI_SUCCESS (Status)) + { + /* + * The _REG method is optional and there can be only one per region + * definition. This will be executed when the handler is attached + * or removed + */ + RegionObj2->Extra.Method_REG = MethodNode; + } + + return_VOID; +} + + /******************************************************************************* * * FUNCTION: AcpiEvExecuteRegMethod @@ -651,7 +707,19 @@ AcpiEvExecuteRegMethod ( return_ACPI_STATUS (AE_NOT_EXIST); } - if (RegionObj2->Extra.Method_REG == NULL) + if (RegionObj2->Extra.Method_REG == NULL || + RegionObj->Region.Handler == NULL || + !AcpiGbl_RegMethodsEnabled) + { + return_ACPI_STATUS (AE_OK); + } + + /* _REG(DISCONNECT) should be paired with _REG(CONNECT) */ + + if ((Function == ACPI_REG_CONNECT && + RegionObj->Common.Flags & AOPOBJ_REG_CONNECTED) || + (Function == ACPI_REG_DISCONNECT && + !(RegionObj->Common.Flags & AOPOBJ_REG_CONNECTED))) { return_ACPI_STATUS (AE_OK); } @@ -703,6 +771,20 @@ AcpiEvExecuteRegMethod ( Status = AcpiNsEvaluate (Info); AcpiUtRemoveReference (Args[1]); + if (ACPI_FAILURE (Status)) + { + goto Cleanup2; + } + + if (Function == ACPI_REG_CONNECT) + { + RegionObj->Common.Flags |= AOPOBJ_REG_CONNECTED; + } + else + { + RegionObj->Common.Flags &= ~AOPOBJ_REG_CONNECTED; + } + Cleanup2: AcpiUtRemoveReference (Args[0]); @@ -718,26 +800,28 @@ Cleanup1: * * PARAMETERS: Node - Namespace node for the device * SpaceId - The address space ID + * Function - Passed to _REG: On (1) or Off (0) * - * RETURN: Status + * RETURN: None * * DESCRIPTION: Run all _REG methods for the input Space ID; * Note: assumes namespace is locked, or system init time. * ******************************************************************************/ -ACPI_STATUS +void AcpiEvExecuteRegMethods ( ACPI_NAMESPACE_NODE *Node, - ACPI_ADR_SPACE_TYPE SpaceId) + ACPI_ADR_SPACE_TYPE SpaceId, + UINT32 Function) { - ACPI_STATUS Status; ACPI_REG_WALK_INFO Info; ACPI_FUNCTION_TRACE (EvExecuteRegMethods); Info.SpaceId = SpaceId; + Info.Function = Function; Info.RegRunCount = 0; ACPI_DEBUG_PRINT_RAW ((ACPI_DB_NAMES, @@ -750,7 +834,7 @@ AcpiEvExecuteRegMethods ( * regions and _REG methods. (i.e. handlers must be installed for all * regions of this Space ID before we can run any _REG methods) */ - Status = AcpiNsWalkNamespace (ACPI_TYPE_ANY, Node, ACPI_UINT32_MAX, + (void) AcpiNsWalkNamespace (ACPI_TYPE_ANY, Node, ACPI_UINT32_MAX, ACPI_NS_WALK_UNLOCK, AcpiEvRegRun, NULL, &Info, NULL); /* Special case for EC: handle "orphan" _REG methods with no region */ @@ -764,7 +848,7 @@ AcpiEvExecuteRegMethods ( " Executed %u _REG methods for SpaceId %s\n", Info.RegRunCount, AcpiUtGetRegionName (Info.SpaceId))); - return_ACPI_STATUS (Status); + return_VOID; } @@ -831,7 +915,7 @@ AcpiEvRegRun ( } Info->RegRunCount++; - Status = AcpiEvExecuteRegMethod (ObjDesc, ACPI_REG_CONNECT); + Status = AcpiEvExecuteRegMethod (ObjDesc, Info->Function); return (Status); } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evrgnini.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evrgnini.c index 405af2264e..f896c7eeed 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evrgnini.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evrgnini.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -320,9 +320,9 @@ AcpiEvPciConfigRegionSetup ( /* Install a handler for this PCI root bridge */ Status = AcpiInstallAddressSpaceHandler ( - (ACPI_HANDLE) PciRootNode, - ACPI_ADR_SPACE_PCI_CONFIG, - ACPI_DEFAULT_HANDLER, NULL, NULL); + (ACPI_HANDLE) PciRootNode, + ACPI_ADR_SPACE_PCI_CONFIG, + ACPI_DEFAULT_HANDLER, NULL, NULL); if (ACPI_FAILURE (Status)) { if (Status == AE_SAME_HANDLER) @@ -396,7 +396,7 @@ AcpiEvPciConfigRegionSetup ( * contained in the parent's scope. */ Status = AcpiUtEvaluateNumericObject (METHOD_NAME__ADR, - PciDeviceNode, &PciValue); + PciDeviceNode, &PciValue); /* * The default is zero, and since the allocation above zeroed the data, @@ -411,7 +411,7 @@ AcpiEvPciConfigRegionSetup ( /* The PCI segment number comes from the _SEG method */ Status = AcpiUtEvaluateNumericObject (METHOD_NAME__SEG, - PciRootNode, &PciValue); + PciRootNode, &PciValue); if (ACPI_SUCCESS (Status)) { PciId->Segment = ACPI_LOWORD (PciValue); @@ -420,7 +420,7 @@ AcpiEvPciConfigRegionSetup ( /* The PCI bus number comes from the _BBN method */ Status = AcpiUtEvaluateNumericObject (METHOD_NAME__BBN, - PciRootNode, &PciValue); + PciRootNode, &PciValue); if (ACPI_SUCCESS (Status)) { PciId->Bus = ACPI_LOWORD (PciValue); @@ -639,9 +639,6 @@ AcpiEvInitializeRegion ( ACPI_ADR_SPACE_TYPE SpaceId; ACPI_NAMESPACE_NODE *Node; ACPI_STATUS Status; - ACPI_NAMESPACE_NODE *MethodNode; - ACPI_NAME *RegNamePtr = (ACPI_NAME *) METHOD_NAME__REG; - ACPI_OPERAND_OBJECT *RegionObj2; ACPI_FUNCTION_TRACE_U32 (EvInitializeRegion, AcpiNsLocked); @@ -657,39 +654,15 @@ AcpiEvInitializeRegion ( return_ACPI_STATUS (AE_OK); } - RegionObj2 = AcpiNsGetSecondaryObject (RegionObj); - if (!RegionObj2) - { - return_ACPI_STATUS (AE_NOT_EXIST); - } + AcpiEvAssociateRegMethod (RegionObj); + RegionObj->Common.Flags |= AOPOBJ_OBJECT_INITIALIZED; Node = RegionObj->Region.Node->Parent; SpaceId = RegionObj->Region.SpaceId; - /* Setup defaults */ - - RegionObj->Region.Handler = NULL; - RegionObj2->Extra.Method_REG = NULL; - RegionObj->Common.Flags &= ~(AOPOBJ_SETUP_COMPLETE); - RegionObj->Common.Flags |= AOPOBJ_OBJECT_INITIALIZED; - - /* Find any "_REG" method associated with this region definition */ - - Status = AcpiNsSearchOneScope ( - *RegNamePtr, Node, ACPI_TYPE_METHOD, &MethodNode); - if (ACPI_SUCCESS (Status)) - { - /* - * The _REG method is optional and there can be only one per region - * definition. This will be executed when the handler is attached - * or removed - */ - RegionObj2->Extra.Method_REG = MethodNode; - } - /* * The following loop depends upon the root Node having no parent - * ie: AcpiGbl_RootNode->ParentEntry being set to NULL + * ie: AcpiGbl_RootNode->Parent being set to NULL */ while (Node) { @@ -704,18 +677,10 @@ AcpiEvInitializeRegion ( switch (Node->Type) { case ACPI_TYPE_DEVICE: - - HandlerObj = ObjDesc->Device.Handler; - break; - case ACPI_TYPE_PROCESSOR: - - HandlerObj = ObjDesc->Processor.Handler; - break; - case ACPI_TYPE_THERMAL: - HandlerObj = ObjDesc->ThermalZone.Handler; + HandlerObj = ObjDesc->CommonNotify.Handler; break; case ACPI_TYPE_METHOD: @@ -739,51 +704,43 @@ AcpiEvInitializeRegion ( break; } - while (HandlerObj) + HandlerObj = AcpiEvFindRegionHandler (SpaceId, HandlerObj); + if (HandlerObj) { - /* Is this handler of the correct type? */ + /* Found correct handler */ - if (HandlerObj->AddressSpace.SpaceId == SpaceId) + ACPI_DEBUG_PRINT ((ACPI_DB_OPREGION, + "Found handler %p for region %p in obj %p\n", + HandlerObj, RegionObj, ObjDesc)); + + Status = AcpiEvAttachRegion (HandlerObj, RegionObj, + AcpiNsLocked); + + /* + * Tell all users that this region is usable by + * running the _REG method + */ + if (AcpiNsLocked) { - /* Found correct handler */ - - ACPI_DEBUG_PRINT ((ACPI_DB_OPREGION, - "Found handler %p for region %p in obj %p\n", - HandlerObj, RegionObj, ObjDesc)); - - Status = AcpiEvAttachRegion (HandlerObj, RegionObj, - AcpiNsLocked); - - /* - * Tell all users that this region is usable by - * running the _REG method - */ - if (AcpiNsLocked) + Status = AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); + if (ACPI_FAILURE (Status)) { - Status = AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } + return_ACPI_STATUS (Status); } - - Status = AcpiEvExecuteRegMethod (RegionObj, ACPI_REG_CONNECT); - - if (AcpiNsLocked) - { - Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - } - - return_ACPI_STATUS (AE_OK); } - /* Try next handler in the list */ + Status = AcpiEvExecuteRegMethod (RegionObj, ACPI_REG_CONNECT); - HandlerObj = HandlerObj->AddressSpace.Next; + if (AcpiNsLocked) + { + Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } + } + + return_ACPI_STATUS (AE_OK); } } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evsci.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evsci.c index 987b03c19d..0b5284b0dc 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evsci.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evsci.c @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -291,7 +291,7 @@ AcpiEvInstallSciHandler ( Status = AcpiOsInstallInterruptHandler ((UINT32) AcpiGbl_FADT.SciInterrupt, - AcpiEvSciXruptHandler, AcpiGbl_GpeXruptListHead); + AcpiEvSciXruptHandler, AcpiGbl_GpeXruptListHead); return_ACPI_STATUS (Status); } @@ -330,7 +330,7 @@ AcpiEvRemoveAllSciHandlers ( /* Just let the OS remove the handler and disable the level */ Status = AcpiOsRemoveInterruptHandler ((UINT32) AcpiGbl_FADT.SciInterrupt, - AcpiEvSciXruptHandler); + AcpiEvSciXruptHandler); if (!AcpiGbl_SciHandlerList) { diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evxface.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evxface.c index 5e3391de8f..0339891214 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evxface.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evxface.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -1074,8 +1074,8 @@ AcpiInstallGpeHandler ( ACPI_FUNCTION_TRACE (AcpiInstallGpeHandler); - Status = AcpiEvInstallGpeHandler (GpeDevice, GpeNumber, Type, FALSE, - Address, Context); + Status = AcpiEvInstallGpeHandler (GpeDevice, GpeNumber, Type, + FALSE, Address, Context); return_ACPI_STATUS (Status); } @@ -1115,8 +1115,8 @@ AcpiInstallGpeRawHandler ( ACPI_FUNCTION_TRACE (AcpiInstallGpeRawHandler); - Status = AcpiEvInstallGpeHandler (GpeDevice, GpeNumber, Type, TRUE, - Address, Context); + Status = AcpiEvInstallGpeHandler (GpeDevice, GpeNumber, Type, + TRUE, Address, Context); return_ACPI_STATUS (Status); } @@ -1282,7 +1282,7 @@ AcpiAcquireGlobalLock ( AcpiExEnterInterpreter (); Status = AcpiExAcquireMutexObject (Timeout, - AcpiGbl_GlobalLockMutex, AcpiOsGetThreadId ()); + AcpiGbl_GlobalLockMutex, AcpiOsGetThreadId ()); if (ACPI_SUCCESS (Status)) { diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evxfevnt.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evxfevnt.c index 271aaccc88..3dc8b16a01 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evxfevnt.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evxfevnt.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -148,7 +148,7 @@ AcpiEnable ( /* ACPI tables must be present */ - if (!AcpiTbTablesLoaded ()) + if (AcpiGbl_FadtIndex == ACPI_INVALID_TABLE_INDEX) { return_ACPI_STATUS (AE_NO_ACPI_TABLES); } @@ -164,7 +164,8 @@ AcpiEnable ( if (AcpiHwGetMode() == ACPI_SYS_MODE_ACPI) { - ACPI_DEBUG_PRINT ((ACPI_DB_INIT, "System is already in ACPI mode\n")); + ACPI_DEBUG_PRINT ((ACPI_DB_INIT, + "System is already in ACPI mode\n")); } else { @@ -234,7 +235,8 @@ AcpiDisable ( return_ACPI_STATUS (Status); } - ACPI_DEBUG_PRINT ((ACPI_DB_INIT, "ACPI mode disabled\n")); + ACPI_DEBUG_PRINT ((ACPI_DB_INIT, + "ACPI mode disabled\n")); } return_ACPI_STATUS (Status); @@ -280,8 +282,8 @@ AcpiEnableEvent ( * register bit) */ Status = AcpiWriteBitRegister ( - AcpiGbl_FixedEventInfo[Event].EnableRegisterId, - ACPI_ENABLE_EVENT); + AcpiGbl_FixedEventInfo[Event].EnableRegisterId, + ACPI_ENABLE_EVENT); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -290,7 +292,7 @@ AcpiEnableEvent ( /* Make sure that the hardware responded */ Status = AcpiReadBitRegister ( - AcpiGbl_FixedEventInfo[Event].EnableRegisterId, &Value); + AcpiGbl_FixedEventInfo[Event].EnableRegisterId, &Value); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -346,15 +348,15 @@ AcpiDisableEvent ( * register bit) */ Status = AcpiWriteBitRegister ( - AcpiGbl_FixedEventInfo[Event].EnableRegisterId, - ACPI_DISABLE_EVENT); + AcpiGbl_FixedEventInfo[Event].EnableRegisterId, + ACPI_DISABLE_EVENT); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } Status = AcpiReadBitRegister ( - AcpiGbl_FixedEventInfo[Event].EnableRegisterId, &Value); + AcpiGbl_FixedEventInfo[Event].EnableRegisterId, &Value); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -407,8 +409,8 @@ AcpiClearEvent ( * register bit) */ Status = AcpiWriteBitRegister ( - AcpiGbl_FixedEventInfo[Event].StatusRegisterId, - ACPI_CLEAR_STATUS); + AcpiGbl_FixedEventInfo[Event].StatusRegisterId, + ACPI_CLEAR_STATUS); return_ACPI_STATUS (Status); } @@ -465,7 +467,7 @@ AcpiGetEventStatus ( /* Fixed event currently enabled? */ Status = AcpiReadBitRegister ( - AcpiGbl_FixedEventInfo[Event].EnableRegisterId, &InByte); + AcpiGbl_FixedEventInfo[Event].EnableRegisterId, &InByte); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -480,7 +482,7 @@ AcpiGetEventStatus ( /* Fixed event currently active? */ Status = AcpiReadBitRegister ( - AcpiGbl_FixedEventInfo[Event].StatusRegisterId, &InByte); + AcpiGbl_FixedEventInfo[Event].StatusRegisterId, &InByte); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evxfgpe.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evxfgpe.c index f4f0da1379..2d5afd6fd8 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evxfgpe.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evxfgpe.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -512,7 +512,7 @@ AcpiSetupGpeForWake ( * level-triggered (for windows compatibility). */ if (ACPI_GPE_DISPATCH_TYPE (GpeEventInfo->Flags) == - ACPI_GPE_DISPATCH_NONE) + ACPI_GPE_DISPATCH_NONE) { /* * This is the first device for implicit notify on this GPE. @@ -527,7 +527,7 @@ AcpiSetupGpeForWake ( * this device to the notify list. */ if (ACPI_GPE_DISPATCH_TYPE (GpeEventInfo->Flags) == - ACPI_GPE_DISPATCH_NOTIFY) + ACPI_GPE_DISPATCH_NOTIFY) { /* Ensure that the device is not already in the list */ @@ -992,8 +992,8 @@ AcpiInstallGpeBlock ( * is always zero */ Status = AcpiEvCreateGpeBlock (Node, GpeBlockAddress->Address, - GpeBlockAddress->SpaceId, RegisterCount, - 0, InterruptNumber, &GpeBlock); + GpeBlockAddress->SpaceId, RegisterCount, + 0, InterruptNumber, &GpeBlock); if (ACPI_FAILURE (Status)) { goto UnlockAndExit; diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evxfregn.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evxfregn.c index e220676480..8293796803 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evxfregn.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/events/evxfregn.c @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -186,48 +186,16 @@ AcpiInstallAddressSpaceHandler ( /* Install the handler for all Regions for this Space ID */ - Status = AcpiEvInstallSpaceHandler (Node, SpaceId, Handler, Setup, Context); + Status = AcpiEvInstallSpaceHandler ( + Node, SpaceId, Handler, Setup, Context); if (ACPI_FAILURE (Status)) { goto UnlockAndExit; } - /* - * For the default SpaceIDs, (the IDs for which there are default region handlers - * installed) Only execute the _REG methods if the global initialization _REG - * methods have already been run (via AcpiInitializeObjects). In other words, - * we will defer the execution of the _REG methods for these SpaceIDs until - * execution of AcpiInitializeObjects. This is done because we need the handlers - * for the default spaces (mem/io/pci/table) to be installed before we can run - * any control methods (or _REG methods). There is known BIOS code that depends - * on this. - * - * For all other SpaceIDs, we can safely execute the _REG methods immediately. - * This means that for IDs like EmbeddedController, this function should be called - * only after AcpiEnableSubsystem has been called. - */ - switch (SpaceId) - { - case ACPI_ADR_SPACE_SYSTEM_MEMORY: - case ACPI_ADR_SPACE_SYSTEM_IO: - case ACPI_ADR_SPACE_PCI_CONFIG: - case ACPI_ADR_SPACE_DATA_TABLE: - - if (!AcpiGbl_RegMethodsExecuted) - { - /* We will defer execution of the _REG methods for this space */ - goto UnlockAndExit; - } - break; - - default: - - break; - } - /* Run all _REG methods for this address space */ - Status = AcpiEvExecuteRegMethods (Node, SpaceId); + AcpiEvExecuteRegMethods (Node, SpaceId, ACPI_REG_CONNECT); UnlockAndExit: @@ -306,8 +274,8 @@ AcpiRemoveAddressSpaceHandler ( /* Find the address handler the user requested */ - HandlerObj = ObjDesc->Device.Handler; - LastObjPtr = &ObjDesc->Device.Handler; + HandlerObj = ObjDesc->CommonNotify.Handler; + LastObjPtr = &ObjDesc->CommonNotify.Handler; while (HandlerObj) { /* We have a handler, see if user requested this one */ diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exconfig.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exconfig.c index d4f70875ab..bff70d0c4e 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exconfig.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exconfig.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -254,9 +254,9 @@ AcpiExLoadTableOp ( /* Find the ACPI table in the RSDT/XSDT */ Status = AcpiTbFindTable ( - Operand[0]->String.Pointer, - Operand[1]->String.Pointer, - Operand[2]->String.Pointer, &TableIndex); + Operand[0]->String.Pointer, + Operand[1]->String.Pointer, + Operand[2]->String.Pointer, &TableIndex); if (ACPI_FAILURE (Status)) { if (Status != AE_NOT_FOUND) @@ -290,7 +290,7 @@ AcpiExLoadTableOp ( * location within the namespace where the table will be loaded. */ Status = AcpiNsGetNode (StartNode, Operand[3]->String.Pointer, - ACPI_NS_SEARCH_PARENT, &ParentNode); + ACPI_NS_SEARCH_PARENT, &ParentNode); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -314,7 +314,7 @@ AcpiExLoadTableOp ( /* Find the node referenced by the ParameterPathString */ Status = AcpiNsGetNode (StartNode, Operand[4]->String.Pointer, - ACPI_NS_SEARCH_PARENT, &ParameterNode); + ACPI_NS_SEARCH_PARENT, &ParameterNode); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -336,8 +336,7 @@ AcpiExLoadTableOp ( /* Store the parameter data into the optional parameter object */ Status = AcpiExStore (Operand[5], - ACPI_CAST_PTR (ACPI_OPERAND_OBJECT, ParameterNode), - WalkState); + ACPI_CAST_PTR (ACPI_OPERAND_OBJECT, ParameterNode), WalkState); if (ACPI_FAILURE (Status)) { (void) AcpiExUnloadTable (DdbHandle); @@ -359,7 +358,7 @@ AcpiExLoadTableOp ( if (AcpiGbl_TableHandler) { (void) AcpiGbl_TableHandler (ACPI_TABLE_EVENT_LOAD, Table, - AcpiGbl_TableHandlerContext); + AcpiGbl_TableHandlerContext); } *ReturnDesc = DdbHandle; @@ -399,7 +398,7 @@ AcpiExRegionRead ( for (i = 0; i < Length; i++) { Status = AcpiEvAddressSpaceDispatch (ObjDesc, NULL, ACPI_READ, - RegionOffset, 8, &Value); + RegionOffset, 8, &Value); if (ACPI_FAILURE (Status)) { return (Status); @@ -469,8 +468,8 @@ AcpiExLoadOp ( } /* - * If the Region Address and Length have not been previously evaluated, - * evaluate them now and save the results. + * If the Region Address and Length have not been previously + * evaluated, evaluate them now and save the results. */ if (!(ObjDesc->Common.Flags & AOPOBJ_DATA_VALID)) { @@ -490,7 +489,7 @@ AcpiExLoadOp ( } Status = AcpiExRegionRead (ObjDesc, sizeof (ACPI_TABLE_HEADER), - ACPI_CAST_PTR (UINT8, TableHeader)); + ACPI_CAST_PTR (UINT8, TableHeader)); Length = TableHeader->Length; ACPI_FREE (TableHeader); @@ -533,7 +532,7 @@ AcpiExLoadOp ( /* Read the entire table */ Status = AcpiExRegionRead (ObjDesc, Length, - ACPI_CAST_PTR (UINT8, Table)); + ACPI_CAST_PTR (UINT8, Table)); if (ACPI_FAILURE (Status)) { ACPI_FREE (Table); @@ -555,7 +554,8 @@ AcpiExLoadOp ( /* Get the actual table length from the table header */ - TableHeader = ACPI_CAST_PTR (ACPI_TABLE_HEADER, ObjDesc->Buffer.Pointer); + TableHeader = ACPI_CAST_PTR ( + ACPI_TABLE_HEADER, ObjDesc->Buffer.Pointer); Length = TableHeader->Length; /* Table cannot extend beyond the buffer */ @@ -570,8 +570,8 @@ AcpiExLoadOp ( } /* - * Copy the table from the buffer because the buffer could be modified - * or even deleted in the future + * Copy the table from the buffer because the buffer could be + * modified or even deleted in the future */ Table = ACPI_ALLOCATE (Length); if (!Table) @@ -593,8 +593,8 @@ AcpiExLoadOp ( (void) AcpiUtAcquireMutex (ACPI_MTX_TABLES); Status = AcpiTbInstallStandardTable (ACPI_PTR_TO_PHYSADDR (Table), - ACPI_TABLE_ORIGIN_INTERNAL_VIRTUAL, TRUE, TRUE, - &TableIndex); + ACPI_TABLE_ORIGIN_INTERNAL_VIRTUAL, TRUE, TRUE, + &TableIndex); (void) AcpiUtReleaseMutex (ACPI_MTX_TABLES); if (ACPI_FAILURE (Status)) @@ -609,7 +609,8 @@ AcpiExLoadOp ( * Note: Now table is "INSTALLED", it must be validated before * loading. */ - Status = AcpiTbValidateTable (&AcpiGbl_RootTableList.Tables[TableIndex]); + Status = AcpiTbValidateTable ( + &AcpiGbl_RootTableList.Tables[TableIndex]); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -652,7 +653,7 @@ AcpiExLoadOp ( if (AcpiGbl_TableHandler) { (void) AcpiGbl_TableHandler (ACPI_TABLE_EVENT_LOAD, Table, - AcpiGbl_TableHandlerContext); + AcpiGbl_TableHandlerContext); } return_ACPI_STATUS (Status); @@ -729,7 +730,7 @@ AcpiExUnloadTable ( if (ACPI_SUCCESS (Status)) { (void) AcpiGbl_TableHandler (ACPI_TABLE_EVENT_UNLOAD, Table, - AcpiGbl_TableHandlerContext); + AcpiGbl_TableHandlerContext); } } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exconvrt.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exconvrt.c index 00236682dc..8ab128ec30 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exconvrt.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exconvrt.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -323,9 +323,7 @@ AcpiExConvertToBuffer ( /* Copy the integer to the buffer, LSB first */ NewBuf = ReturnDesc->Buffer.Pointer; - memcpy (NewBuf, - &ObjDesc->Integer.Value, - AcpiGbl_IntegerByteWidth); + memcpy (NewBuf, &ObjDesc->Integer.Value, AcpiGbl_IntegerByteWidth); break; case ACPI_TYPE_STRING: @@ -338,8 +336,8 @@ AcpiExConvertToBuffer ( * ASL/AML code that depends on the null being transferred to the new * buffer. */ - ReturnDesc = AcpiUtCreateBufferObject ( - (ACPI_SIZE) ObjDesc->String.Length + 1); + ReturnDesc = AcpiUtCreateBufferObject ((ACPI_SIZE) + ObjDesc->String.Length + 1); if (!ReturnDesc) { return_ACPI_STATUS (AE_NO_MEMORY); @@ -462,7 +460,8 @@ AcpiExConvertToAscii ( { /* Get one hex digit, most significant digits first */ - String[k] = (UINT8) AcpiUtHexToAsciiChar (Integer, ACPI_MUL_4 (j)); + String[k] = (UINT8) + AcpiUtHexToAsciiChar (Integer, ACPI_MUL_4 (j)); k++; } break; @@ -563,8 +562,8 @@ AcpiExConvertToString ( /* Convert integer to string */ - StringLength = AcpiExConvertToAscii (ObjDesc->Integer.Value, Base, - NewBuf, AcpiGbl_IntegerByteWidth); + StringLength = AcpiExConvertToAscii ( + ObjDesc->Integer.Value, Base, NewBuf, AcpiGbl_IntegerByteWidth); /* Null terminate at the correct place */ @@ -653,8 +652,7 @@ AcpiExConvertToString ( for (i = 0; i < ObjDesc->Buffer.Length; i++) { NewBuf += AcpiExConvertToAscii ( - (UINT64) ObjDesc->Buffer.Pointer[i], Base, - NewBuf, 1); + (UINT64) ObjDesc->Buffer.Pointer[i], Base, NewBuf, 1); *NewBuf++ = Separator; /* each separated by a comma or space */ } @@ -745,6 +743,7 @@ AcpiExConvertToTargetType ( break; case ARGI_TARGETREF: + case ARGI_STORE_TARGET: switch (DestinationType) { @@ -756,8 +755,7 @@ AcpiExConvertToTargetType ( * These types require an Integer operand. We can convert * a Buffer or a String to an Integer if necessary. */ - Status = AcpiExConvertToInteger (SourceDesc, ResultDesc, - 16); + Status = AcpiExConvertToInteger (SourceDesc, ResultDesc, 16); break; case ACPI_TYPE_STRING: @@ -766,7 +764,7 @@ AcpiExConvertToTargetType ( * Integer or Buffer if necessary */ Status = AcpiExConvertToString (SourceDesc, ResultDesc, - ACPI_IMPLICIT_CONVERT_HEX); + ACPI_IMPLICIT_CONVERT_HEX); break; case ACPI_TYPE_BUFFER: @@ -779,7 +777,8 @@ AcpiExConvertToTargetType ( default: - ACPI_ERROR ((AE_INFO, "Bad destination type during conversion: 0x%X", + ACPI_ERROR ((AE_INFO, + "Bad destination type during conversion: 0x%X", DestinationType)); Status = AE_AML_INTERNAL; break; diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/excreate.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/excreate.c index 9c7ffc13b5..6c9e17b219 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/excreate.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/excreate.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -220,7 +220,7 @@ AcpiExCreateAlias ( * target node or the alias Node */ Status = AcpiNsAttachObject (AliasNode, - AcpiNsGetAttachedObject (TargetNode), TargetNode->Type); + AcpiNsGetAttachedObject (TargetNode), TargetNode->Type); break; } @@ -265,7 +265,7 @@ AcpiExCreateEvent ( * that the event is created in an unsignalled state */ Status = AcpiOsCreateSemaphore (ACPI_NO_UNIT_LIMIT, 0, - &ObjDesc->Event.OsSemaphore); + &ObjDesc->Event.OsSemaphore); if (ACPI_FAILURE (Status)) { goto Cleanup; @@ -273,8 +273,9 @@ AcpiExCreateEvent ( /* Attach object to the Node */ - Status = AcpiNsAttachObject ((ACPI_NAMESPACE_NODE *) WalkState->Operands[0], - ObjDesc, ACPI_TYPE_EVENT); + Status = AcpiNsAttachObject ( + (ACPI_NAMESPACE_NODE *) WalkState->Operands[0], + ObjDesc, ACPI_TYPE_EVENT); Cleanup: /* @@ -333,7 +334,8 @@ AcpiExCreateMutex ( ObjDesc->Mutex.SyncLevel = (UINT8) WalkState->Operands[1]->Integer.Value; ObjDesc->Mutex.Node = (ACPI_NAMESPACE_NODE *) WalkState->Operands[0]; - Status = AcpiNsAttachObject (ObjDesc->Mutex.Node, ObjDesc, ACPI_TYPE_MUTEX); + Status = AcpiNsAttachObject ( + ObjDesc->Mutex.Node, ObjDesc, ACPI_TYPE_MUTEX); Cleanup: @@ -401,7 +403,8 @@ AcpiExCreateRegion ( * a table load for this exception. Instead, if the region is * actually used at runtime, abort the executing method. */ - ACPI_ERROR ((AE_INFO, "Invalid/unknown Address Space ID: 0x%2.2X", SpaceId)); + ACPI_ERROR ((AE_INFO, + "Invalid/unknown Address Space ID: 0x%2.2X", SpaceId)); } ACPI_DEBUG_PRINT ((ACPI_DB_LOAD, "Region Type - %s (0x%X)\n", @@ -420,9 +423,10 @@ AcpiExCreateRegion ( * Remember location in AML stream of address & length * operands since they need to be evaluated at run time. */ - RegionObj2 = ObjDesc->Common.NextObject; + RegionObj2 = AcpiNsGetSecondaryObject (ObjDesc); RegionObj2->Extra.AmlStart = AmlStart; RegionObj2->Extra.AmlLength = AmlLength; + RegionObj2->Extra.Method_REG = NULL; if (WalkState->ScopeInfo) { RegionObj2->Extra.ScopeNode = WalkState->ScopeInfo->Scope.Node; @@ -438,6 +442,10 @@ AcpiExCreateRegion ( ObjDesc->Region.Address = 0; ObjDesc->Region.Length = 0; ObjDesc->Region.Node = Node; + ObjDesc->Region.Handler = NULL; + ObjDesc->Common.Flags &= + ~(AOPOBJ_SETUP_COMPLETE | AOPOBJ_REG_CONNECTED | + AOPOBJ_OBJECT_INITIALIZED); /* Install the new region object in the parent Node */ @@ -496,7 +504,7 @@ AcpiExCreateProcessor ( /* Install the processor object in the parent Node */ Status = AcpiNsAttachObject ((ACPI_NAMESPACE_NODE *) Operand[0], - ObjDesc, ACPI_TYPE_PROCESSOR); + ObjDesc, ACPI_TYPE_PROCESSOR); /* Remove local reference to the object */ @@ -547,7 +555,7 @@ AcpiExCreatePowerResource ( /* Install the power resource object in the parent Node */ Status = AcpiNsAttachObject ((ACPI_NAMESPACE_NODE *) Operand[0], - ObjDesc, ACPI_TYPE_POWER); + ObjDesc, ACPI_TYPE_POWER); /* Remove local reference to the object */ @@ -606,7 +614,8 @@ AcpiExCreateMethod ( * flag, and SyncLevel for efficiency. */ MethodFlags = (UINT8) Operand[1]->Integer.Value; - ObjDesc->Method.ParamCount = (UINT8) (MethodFlags & AML_METHOD_ARG_COUNT); + ObjDesc->Method.ParamCount = (UINT8) + (MethodFlags & AML_METHOD_ARG_COUNT); /* * Get the SyncLevel. If method is serialized, a mutex will be @@ -627,7 +636,7 @@ AcpiExCreateMethod ( /* Attach the new object to the method Node */ Status = AcpiNsAttachObject ((ACPI_NAMESPACE_NODE *) Operand[0], - ObjDesc, ACPI_TYPE_METHOD); + ObjDesc, ACPI_TYPE_METHOD); /* Remove local reference to the object */ diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exdebug.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exdebug.c index 00ec43f463..02c7d406b9 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exdebug.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exdebug.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -115,26 +115,13 @@ #include "acpi.h" #include "accommon.h" -#include "acnamesp.h" #include "acinterp.h" -#include "acparser.h" #define _COMPONENT ACPI_EXECUTER ACPI_MODULE_NAME ("exdebug") -static ACPI_OPERAND_OBJECT *AcpiGbl_TraceMethodObject = NULL; - -/* Local prototypes */ - -#ifdef ACPI_DEBUG_OUTPUT -static const char * -AcpiExGetTraceEventName ( - ACPI_TRACE_EVENT_TYPE Type); -#endif - - #ifndef ACPI_NO_ERROR_MESSAGES /******************************************************************************* * @@ -181,13 +168,20 @@ AcpiExDoDebugObject ( return_VOID; } - /* - * We will emit the current timer value (in microseconds) with each - * debug output. Only need the lower 26 bits. This allows for 67 - * million microseconds or 67 seconds before rollover. - */ - Timer = ((UINT32) AcpiOsGetTimer () / 10); /* (100 nanoseconds to microseconds) */ - Timer &= 0x03FFFFFF; + /* Null string or newline -- don't emit the line header */ + + if (SourceDesc && + (ACPI_GET_DESCRIPTOR_TYPE (SourceDesc) == ACPI_DESC_TYPE_OPERAND) && + (SourceDesc->Common.Type == ACPI_TYPE_STRING)) + { + if ((SourceDesc->String.Length == 0) || + ((SourceDesc->String.Length == 1) && + (*SourceDesc->String.Pointer == '\n'))) + { + AcpiOsPrintf ("\n"); + return_VOID; + } + } /* * Print line header as long as we are not in the middle of an @@ -195,14 +189,31 @@ AcpiExDoDebugObject ( */ if (!((Level > 0) && Index == 0)) { - AcpiOsPrintf ("[ACPI Debug %.8u] %*s", Timer, Level, " "); + if (AcpiGbl_DisplayDebugTimer) + { + /* + * We will emit the current timer value (in microseconds) with each + * debug output. Only need the lower 26 bits. This allows for 67 + * million microseconds or 67 seconds before rollover. + * + * Convert 100 nanosecond units to microseconds + */ + Timer = ((UINT32) AcpiOsGetTimer () / 10); + Timer &= 0x03FFFFFF; + + AcpiOsPrintf ("[ACPI Debug T=0x%8.8X] %*s", Timer, Level, " "); + } + else + { + AcpiOsPrintf ("[ACPI Debug] %*s", Level, " "); + } } /* Display the index for package output only */ if (Index > 0) { - AcpiOsPrintf ("(%.2u) ", Index-1); + AcpiOsPrintf ("(%.2u) ", Index - 1); } if (!SourceDesc) @@ -213,7 +224,13 @@ AcpiExDoDebugObject ( if (ACPI_GET_DESCRIPTOR_TYPE (SourceDesc) == ACPI_DESC_TYPE_OPERAND) { - AcpiOsPrintf ("%s ", AcpiUtGetObjectTypeName (SourceDesc)); + /* No object type prefix needed for integers and strings */ + + if ((SourceDesc->Common.Type != ACPI_TYPE_INTEGER) && + (SourceDesc->Common.Type != ACPI_TYPE_STRING)) + { + AcpiOsPrintf ("%s ", AcpiUtGetObjectTypeName (SourceDesc)); + } if (!AcpiUtValidInternalObject (SourceDesc)) { @@ -223,9 +240,9 @@ AcpiExDoDebugObject ( } else if (ACPI_GET_DESCRIPTOR_TYPE (SourceDesc) == ACPI_DESC_TYPE_NAMED) { - AcpiOsPrintf ("%s: %p\n", + AcpiOsPrintf ("%s (Node %p)\n", AcpiUtGetTypeName (((ACPI_NAMESPACE_NODE *) SourceDesc)->Type), - SourceDesc); + SourceDesc); return_VOID; } else @@ -263,13 +280,12 @@ AcpiExDoDebugObject ( case ACPI_TYPE_STRING: - AcpiOsPrintf ("[0x%.2X] \"%s\"\n", - SourceDesc->String.Length, SourceDesc->String.Pointer); + AcpiOsPrintf ("\"%s\"\n", SourceDesc->String.Pointer); break; case ACPI_TYPE_PACKAGE: - AcpiOsPrintf ("[Contains 0x%.2X Elements]\n", + AcpiOsPrintf ("(Contains 0x%.2X Elements):\n", SourceDesc->Package.Count); /* Output the entire contents of the package */ @@ -277,7 +293,7 @@ AcpiExDoDebugObject ( for (i = 0; i < SourceDesc->Package.Count; i++) { AcpiExDoDebugObject (SourceDesc->Package.Elements[i], - Level+4, i+1); + Level + 4, i + 1); } break; @@ -313,7 +329,7 @@ AcpiExDoDebugObject ( if (SourceDesc->Reference.Node) { if (ACPI_GET_DESCRIPTOR_TYPE (SourceDesc->Reference.Node) != - ACPI_DESC_TYPE_NAMED) + ACPI_DESC_TYPE_NAMED) { AcpiOsPrintf (" %p - Not a valid namespace node\n", SourceDesc->Reference.Node); @@ -338,7 +354,7 @@ AcpiExDoDebugObject ( default: AcpiExDoDebugObject ((SourceDesc->Reference.Node)->Object, - Level+4, 0); + Level + 4, 0); break; } } @@ -346,11 +362,13 @@ AcpiExDoDebugObject ( else if (SourceDesc->Reference.Object) { if (ACPI_GET_DESCRIPTOR_TYPE (SourceDesc->Reference.Object) == - ACPI_DESC_TYPE_NAMED) + ACPI_DESC_TYPE_NAMED) { - AcpiExDoDebugObject (((ACPI_NAMESPACE_NODE *) - SourceDesc->Reference.Object)->Object, - Level+4, 0); + /* Reference object is a namespace node */ + + AcpiExDoDebugObject (ACPI_CAST_PTR (ACPI_OPERAND_OBJECT, + SourceDesc->Reference.Object), + Level + 4, 0); } else { @@ -375,8 +393,15 @@ AcpiExDoDebugObject ( case ACPI_TYPE_PACKAGE: AcpiOsPrintf ("Package[%u] = ", Value); - AcpiExDoDebugObject (*SourceDesc->Reference.Where, - Level+4, 0); + if (!(*SourceDesc->Reference.Where)) + { + AcpiOsPrintf ("[Uninitialized Package Element]\n"); + } + else + { + AcpiExDoDebugObject (*SourceDesc->Reference.Where, + Level+4, 0); + } break; default: @@ -391,7 +416,7 @@ AcpiExDoDebugObject ( default: - AcpiOsPrintf ("%p\n", SourceDesc); + AcpiOsPrintf ("(Descriptor %p)\n", SourceDesc); break; } @@ -399,362 +424,3 @@ AcpiExDoDebugObject ( return_VOID; } #endif - - -/******************************************************************************* - * - * FUNCTION: AcpiExInterpreterTraceEnabled - * - * PARAMETERS: Name - Whether method name should be matched, - * this should be checked before starting - * the tracer - * - * RETURN: TRUE if interpreter trace is enabled. - * - * DESCRIPTION: Check whether interpreter trace is enabled - * - ******************************************************************************/ - -static BOOLEAN -AcpiExInterpreterTraceEnabled ( - char *Name) -{ - - /* Check if tracing is enabled */ - - if (!(AcpiGbl_TraceFlags & ACPI_TRACE_ENABLED)) - { - return (FALSE); - } - - /* - * Check if tracing is filtered: - * - * 1. If the tracer is started, AcpiGbl_TraceMethodObject should have - * been filled by the trace starter - * 2. If the tracer is not started, AcpiGbl_TraceMethodName should be - * matched if it is specified - * 3. If the tracer is oneshot style, AcpiGbl_TraceMethodName should - * not be cleared by the trace stopper during the first match - */ - if (AcpiGbl_TraceMethodObject) - { - return (TRUE); - } - if (Name && - (AcpiGbl_TraceMethodName && - strcmp (AcpiGbl_TraceMethodName, Name))) - { - return (FALSE); - } - if ((AcpiGbl_TraceFlags & ACPI_TRACE_ONESHOT) && - !AcpiGbl_TraceMethodName) - { - return (FALSE); - } - - return (TRUE); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExGetTraceEventName - * - * PARAMETERS: Type - Trace event type - * - * RETURN: Trace event name. - * - * DESCRIPTION: Used to obtain the full trace event name. - * - ******************************************************************************/ - -#ifdef ACPI_DEBUG_OUTPUT - -static const char * -AcpiExGetTraceEventName ( - ACPI_TRACE_EVENT_TYPE Type) -{ - switch (Type) - { - case ACPI_TRACE_AML_METHOD: - - return "Method"; - - case ACPI_TRACE_AML_OPCODE: - - return "Opcode"; - - case ACPI_TRACE_AML_REGION: - - return "Region"; - - default: - - return ""; - } -} - -#endif - - -/******************************************************************************* - * - * FUNCTION: AcpiExTracePoint - * - * PARAMETERS: Type - Trace event type - * Begin - TRUE if before execution - * Aml - Executed AML address - * Pathname - Object path - * - * RETURN: None - * - * DESCRIPTION: Internal interpreter execution trace. - * - ******************************************************************************/ - -void -AcpiExTracePoint ( - ACPI_TRACE_EVENT_TYPE Type, - BOOLEAN Begin, - UINT8 *Aml, - char *Pathname) -{ - - ACPI_FUNCTION_NAME (ExTracePoint); - - - if (Pathname) - { - ACPI_DEBUG_PRINT ((ACPI_DB_TRACE_POINT, - "%s %s [0x%p:%s] execution.\n", - AcpiExGetTraceEventName (Type), Begin ? "Begin" : "End", - Aml, Pathname)); - } - else - { - ACPI_DEBUG_PRINT ((ACPI_DB_TRACE_POINT, - "%s %s [0x%p] execution.\n", - AcpiExGetTraceEventName (Type), Begin ? "Begin" : "End", - Aml)); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExStartTraceMethod - * - * PARAMETERS: MethodNode - Node of the method - * ObjDesc - The method object - * WalkState - current state, NULL if not yet executing - * a method. - * - * RETURN: None - * - * DESCRIPTION: Start control method execution trace - * - ******************************************************************************/ - -void -AcpiExStartTraceMethod ( - ACPI_NAMESPACE_NODE *MethodNode, - ACPI_OPERAND_OBJECT *ObjDesc, - ACPI_WALK_STATE *WalkState) -{ - ACPI_STATUS Status; - char *Pathname = NULL; - BOOLEAN Enabled = FALSE; - - - ACPI_FUNCTION_NAME (ExStartTraceMethod); - - - if (MethodNode) - { - Pathname = AcpiNsGetNormalizedPathname (MethodNode, TRUE); - } - - Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); - if (ACPI_FAILURE (Status)) - { - goto Exit; - } - - Enabled = AcpiExInterpreterTraceEnabled (Pathname); - if (Enabled && !AcpiGbl_TraceMethodObject) - { - AcpiGbl_TraceMethodObject = ObjDesc; - AcpiGbl_OriginalDbgLevel = AcpiDbgLevel; - AcpiGbl_OriginalDbgLayer = AcpiDbgLayer; - AcpiDbgLevel = ACPI_TRACE_LEVEL_ALL; - AcpiDbgLayer = ACPI_TRACE_LAYER_ALL; - - if (AcpiGbl_TraceDbgLevel) - { - AcpiDbgLevel = AcpiGbl_TraceDbgLevel; - } - if (AcpiGbl_TraceDbgLayer) - { - AcpiDbgLayer = AcpiGbl_TraceDbgLayer; - } - } - (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); - -Exit: - if (Enabled) - { - ACPI_TRACE_POINT (ACPI_TRACE_AML_METHOD, TRUE, - ObjDesc ? ObjDesc->Method.AmlStart : NULL, Pathname); - } - if (Pathname) - { - ACPI_FREE (Pathname); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExStopTraceMethod - * - * PARAMETERS: MethodNode - Node of the method - * ObjDesc - The method object - * WalkState - current state, NULL if not yet executing - * a method. - * - * RETURN: None - * - * DESCRIPTION: Stop control method execution trace - * - ******************************************************************************/ - -void -AcpiExStopTraceMethod ( - ACPI_NAMESPACE_NODE *MethodNode, - ACPI_OPERAND_OBJECT *ObjDesc, - ACPI_WALK_STATE *WalkState) -{ - ACPI_STATUS Status; - char *Pathname = NULL; - BOOLEAN Enabled; - - - ACPI_FUNCTION_NAME (ExStopTraceMethod); - - - if (MethodNode) - { - Pathname = AcpiNsGetNormalizedPathname (MethodNode, TRUE); - } - - Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); - if (ACPI_FAILURE (Status)) - { - goto ExitPath; - } - - Enabled = AcpiExInterpreterTraceEnabled (NULL); - - (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); - - if (Enabled) - { - ACPI_TRACE_POINT (ACPI_TRACE_AML_METHOD, FALSE, - ObjDesc ? ObjDesc->Method.AmlStart : NULL, Pathname); - } - - Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); - if (ACPI_FAILURE (Status)) - { - goto ExitPath; - } - - /* Check whether the tracer should be stopped */ - - if (AcpiGbl_TraceMethodObject == ObjDesc) - { - /* Disable further tracing if type is one-shot */ - - if (AcpiGbl_TraceFlags & ACPI_TRACE_ONESHOT) - { - AcpiGbl_TraceMethodName = NULL; - } - - AcpiDbgLevel = AcpiGbl_OriginalDbgLevel; - AcpiDbgLayer = AcpiGbl_OriginalDbgLayer; - AcpiGbl_TraceMethodObject = NULL; - } - - (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); - -ExitPath: - if (Pathname) - { - ACPI_FREE (Pathname); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExStartTraceOpcode - * - * PARAMETERS: Op - The parser opcode object - * WalkState - current state, NULL if not yet executing - * a method. - * - * RETURN: None - * - * DESCRIPTION: Start opcode execution trace - * - ******************************************************************************/ - -void -AcpiExStartTraceOpcode ( - ACPI_PARSE_OBJECT *Op, - ACPI_WALK_STATE *WalkState) -{ - - ACPI_FUNCTION_NAME (ExStartTraceOpcode); - - - if (AcpiExInterpreterTraceEnabled (NULL) && - (AcpiGbl_TraceFlags & ACPI_TRACE_OPCODE)) - { - ACPI_TRACE_POINT (ACPI_TRACE_AML_OPCODE, TRUE, - Op->Common.Aml, Op->Common.AmlOpName); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiExStopTraceOpcode - * - * PARAMETERS: Op - The parser opcode object - * WalkState - current state, NULL if not yet executing - * a method. - * - * RETURN: None - * - * DESCRIPTION: Stop opcode execution trace - * - ******************************************************************************/ - -void -AcpiExStopTraceOpcode ( - ACPI_PARSE_OBJECT *Op, - ACPI_WALK_STATE *WalkState) -{ - - ACPI_FUNCTION_NAME (ExStopTraceOpcode); - - - if (AcpiExInterpreterTraceEnabled (NULL) && - (AcpiGbl_TraceFlags & ACPI_TRACE_OPCODE)) - { - ACPI_TRACE_POINT (ACPI_TRACE_AML_OPCODE, FALSE, - Op->Common.Aml, Op->Common.AmlOpName); - } -} diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exdump.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exdump.c index c682777e93..a03a4393b0 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exdump.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exdump.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -525,7 +525,8 @@ AcpiExDumpObject ( case ACPI_EXD_BUFFER: - ACPI_DUMP_BUFFER (ObjDesc->Buffer.Pointer, ObjDesc->Buffer.Length); + ACPI_DUMP_BUFFER ( + ObjDesc->Buffer.Pointer, ObjDesc->Buffer.Length); break; case ACPI_EXD_PACKAGE: @@ -544,7 +545,8 @@ AcpiExDumpObject ( case ACPI_EXD_REFERENCE: ReferenceName = AcpiUtGetReferenceName (ObjDesc); - AcpiExOutString ("Class Name", ACPI_CAST_PTR (char, ReferenceName)); + AcpiExOutString ( + "Class Name", ACPI_CAST_PTR (char, ReferenceName)); AcpiExDumpReferenceObj (ObjDesc); break; @@ -573,7 +575,8 @@ AcpiExDumpObject ( if ((Next == Start) || (Next == Data)) { - AcpiOsPrintf ("\n**** Error: Object list appears to be circular linked"); + AcpiOsPrintf ( + "\n**** Error: Object list appears to be circular linked"); break; } } @@ -591,7 +594,8 @@ AcpiExDumpObject ( if (Next) { AcpiOsPrintf ("(%s %2.2X)", - AcpiUtGetObjectTypeName (Next), Next->Common.Type); + AcpiUtGetObjectTypeName (Next), + Next->AddressSpace.SpaceId); while (Next->AddressSpace.Next) { @@ -603,11 +607,13 @@ AcpiExDumpObject ( Next = Next->AddressSpace.Next; AcpiOsPrintf ("->%p(%s %2.2X)", Next, - AcpiUtGetObjectTypeName (Next), Next->Common.Type); + AcpiUtGetObjectTypeName (Next), + Next->AddressSpace.SpaceId); if ((Next == Start) || (Next == Data)) { - AcpiOsPrintf ("\n**** Error: Handler list appears to be circular linked"); + AcpiOsPrintf ( + "\n**** Error: Handler list appears to be circular linked"); break; } } @@ -641,7 +647,8 @@ AcpiExDumpObject ( if ((Next == Start) || (Next == Data)) { - AcpiOsPrintf ("\n**** Error: Region list appears to be circular linked"); + AcpiOsPrintf ( + "\n**** Error: Region list appears to be circular linked"); break; } } @@ -749,7 +756,8 @@ AcpiExDumpOperand ( { case ACPI_TYPE_LOCAL_REFERENCE: - AcpiOsPrintf ("Reference: [%s] ", AcpiUtGetReferenceName (ObjDesc)); + AcpiOsPrintf ("Reference: [%s] ", + AcpiUtGetReferenceName (ObjDesc)); switch (ObjDesc->Reference.Class) { @@ -777,7 +785,8 @@ AcpiExDumpOperand ( case ACPI_REFCLASS_NAME: - AcpiOsPrintf ("- [%4.4s]\n", ObjDesc->Reference.Node->Name.Ascii); + AcpiOsPrintf ("- [%4.4s]\n", + ObjDesc->Reference.Node->Name.Ascii); break; case ACPI_REFCLASS_ARG: @@ -808,8 +817,8 @@ AcpiExDumpOperand ( Length = 128; } - AcpiOsPrintf ("Buffer Contents: (displaying length 0x%.2X)\n", - Length); + AcpiOsPrintf ( + "Buffer Contents: (displaying length 0x%.2X)\n", Length); ACPI_DUMP_BUFFER (ObjDesc->Buffer.Pointer, Length); } break; @@ -835,7 +844,8 @@ AcpiExDumpOperand ( { for (Index = 0; Index < ObjDesc->Package.Count; Index++) { - AcpiExDumpOperand (ObjDesc->Package.Elements[Index], Depth+1); + AcpiExDumpOperand ( + ObjDesc->Package.Elements[Index], Depth + 1); } } break; @@ -888,7 +898,7 @@ AcpiExDumpOperand ( ObjDesc->Field.BaseByteOffset, ObjDesc->Field.StartFieldBitOffset); - AcpiExDumpOperand (ObjDesc->Field.RegionObj, Depth+1); + AcpiExDumpOperand (ObjDesc->Field.RegionObj, Depth + 1); break; case ACPI_TYPE_LOCAL_INDEX_FIELD: @@ -908,13 +918,13 @@ AcpiExDumpOperand ( ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "*NULL*\n")); } else if ((ObjDesc->BufferField.BufferObj)->Common.Type != - ACPI_TYPE_BUFFER) + ACPI_TYPE_BUFFER) { AcpiOsPrintf ("*not a Buffer*\n"); } else { - AcpiExDumpOperand (ObjDesc->BufferField.BufferObj, Depth+1); + AcpiExDumpOperand (ObjDesc->BufferField.BufferObj, Depth + 1); } break; @@ -1214,7 +1224,8 @@ AcpiExDumpPackageObj ( AcpiOsPrintf ("[Buffer] Length %.2X = ", ObjDesc->Buffer.Length); if (ObjDesc->Buffer.Length) { - AcpiUtDebugDumpBuffer (ACPI_CAST_PTR (UINT8, ObjDesc->Buffer.Pointer), + AcpiUtDebugDumpBuffer ( + ACPI_CAST_PTR (UINT8, ObjDesc->Buffer.Pointer), ObjDesc->Buffer.Length, DB_DWORD_DISPLAY, _COMPONENT); } else @@ -1230,7 +1241,8 @@ AcpiExDumpPackageObj ( for (i = 0; i < ObjDesc->Package.Count; i++) { - AcpiExDumpPackageObj (ObjDesc->Package.Elements[i], Level+1, i); + AcpiExDumpPackageObj ( + ObjDesc->Package.Elements[i], Level + 1, i); } break; @@ -1328,7 +1340,8 @@ DumpObject: ObjDesc = ObjDesc->Common.NextObject; if (ObjDesc->Common.Type > ACPI_TYPE_LOCAL_MAX) { - AcpiOsPrintf ("Secondary object is not a known object type: %2.2X\n", + AcpiOsPrintf ( + "Secondary object is not a known object type: %2.2X\n", ObjDesc->Common.Type); return_VOID; diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exfield.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exfield.c index dbd294b926..d7a0f0ce65 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exfield.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exfield.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -256,28 +256,31 @@ AcpiExReadDataFromField ( ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_IPMI)) { /* - * This is an SMBus, GSBus or IPMI read. We must create a buffer to hold - * the data and then directly access the region handler. + * This is an SMBus, GSBus or IPMI read. We must create a buffer to + * hold the data and then directly access the region handler. * - * Note: SMBus and GSBus protocol value is passed in upper 16-bits of Function + * Note: SMBus and GSBus protocol value is passed in upper 16-bits + * of Function */ - if (ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_SMBUS) + if (ObjDesc->Field.RegionObj->Region.SpaceId == + ACPI_ADR_SPACE_SMBUS) { Length = ACPI_SMBUS_BUFFER_SIZE; Function = ACPI_READ | (ObjDesc->Field.Attribute << 16); } - else if (ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_GSBUS) + else if (ObjDesc->Field.RegionObj->Region.SpaceId == + ACPI_ADR_SPACE_GSBUS) { AccessorType = ObjDesc->Field.Attribute; - Length = AcpiExGetSerialAccessLength (AccessorType, - ObjDesc->Field.AccessLength); + Length = AcpiExGetSerialAccessLength ( + AccessorType, ObjDesc->Field.AccessLength); /* * Add additional 2 bytes for the GenericSerialBus data buffer: * - * Status; (Byte 0 of the data buffer) - * Length; (Byte 1 of the data buffer) - * Data[x-1]; (Bytes 2-x of the arbitrary length data buffer) + * Status; (Byte 0 of the data buffer) + * Length; (Byte 1 of the data buffer) + * Data[x-1]: (Bytes 2-x of the arbitrary length data buffer) */ Length += 2; Function = ACPI_READ | (AccessorType << 16); @@ -301,8 +304,8 @@ AcpiExReadDataFromField ( /* Call the region handler for the read */ Status = AcpiExAccessRegion (ObjDesc, 0, - ACPI_CAST_PTR (UINT64, BufferDesc->Buffer.Pointer), - Function); + ACPI_CAST_PTR (UINT64, BufferDesc->Buffer.Pointer), Function); + AcpiExReleaseGlobalLock (ObjDesc->CommonField.FieldFlags); goto Exit; } @@ -317,7 +320,9 @@ AcpiExReadDataFromField ( * * Note: Field.length is in bits. */ - Length = (ACPI_SIZE) ACPI_ROUND_BITS_UP_TO_BYTES (ObjDesc->Field.BitLength); + Length = (ACPI_SIZE) ACPI_ROUND_BITS_UP_TO_BYTES ( + ObjDesc->Field.BitLength); + if (Length > AcpiGbl_IntegerByteWidth) { /* Field is too large for an Integer, create a Buffer instead */ @@ -362,8 +367,9 @@ AcpiExReadDataFromField ( /* Perform the write */ - Status = AcpiExAccessRegion (ObjDesc, 0, - (UINT64 *) Buffer, ACPI_READ); + Status = AcpiExAccessRegion ( + ObjDesc, 0, (UINT64 *) Buffer, ACPI_READ); + AcpiExReleaseGlobalLock (ObjDesc->CommonField.FieldFlags); if (ACPI_FAILURE (Status)) { @@ -468,42 +474,47 @@ AcpiExWriteDataToField ( ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_IPMI)) { /* - * This is an SMBus, GSBus or IPMI write. We will bypass the entire field - * mechanism and handoff the buffer directly to the handler. For - * these address spaces, the buffer is bi-directional; on a write, - * return data is returned in the same buffer. + * This is an SMBus, GSBus or IPMI write. We will bypass the entire + * field mechanism and handoff the buffer directly to the handler. + * For these address spaces, the buffer is bi-directional; on a + * write, return data is returned in the same buffer. * * Source must be a buffer of sufficient size: - * ACPI_SMBUS_BUFFER_SIZE, ACPI_GSBUS_BUFFER_SIZE, or ACPI_IPMI_BUFFER_SIZE. + * ACPI_SMBUS_BUFFER_SIZE, ACPI_GSBUS_BUFFER_SIZE, or + * ACPI_IPMI_BUFFER_SIZE. * - * Note: SMBus and GSBus protocol type is passed in upper 16-bits of Function + * Note: SMBus and GSBus protocol type is passed in upper 16-bits + * of Function */ if (SourceDesc->Common.Type != ACPI_TYPE_BUFFER) { ACPI_ERROR ((AE_INFO, - "SMBus/IPMI/GenericSerialBus write requires Buffer, found type %s", + "SMBus/IPMI/GenericSerialBus write requires " + "Buffer, found type %s", AcpiUtGetObjectTypeName (SourceDesc))); return_ACPI_STATUS (AE_AML_OPERAND_TYPE); } - if (ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_SMBUS) + if (ObjDesc->Field.RegionObj->Region.SpaceId == + ACPI_ADR_SPACE_SMBUS) { Length = ACPI_SMBUS_BUFFER_SIZE; Function = ACPI_WRITE | (ObjDesc->Field.Attribute << 16); } - else if (ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_GSBUS) + else if (ObjDesc->Field.RegionObj->Region.SpaceId == + ACPI_ADR_SPACE_GSBUS) { AccessorType = ObjDesc->Field.Attribute; - Length = AcpiExGetSerialAccessLength (AccessorType, - ObjDesc->Field.AccessLength); + Length = AcpiExGetSerialAccessLength ( + AccessorType, ObjDesc->Field.AccessLength); /* * Add additional 2 bytes for the GenericSerialBus data buffer: * - * Status; (Byte 0 of the data buffer) - * Length; (Byte 1 of the data buffer) - * Data[x-1]; (Bytes 2-x of the arbitrary length data buffer) + * Status; (Byte 0 of the data buffer) + * Length; (Byte 1 of the data buffer) + * Data[x-1]: (Bytes 2-x of the arbitrary length data buffer) */ Length += 2; Function = ACPI_WRITE | (AccessorType << 16); @@ -517,7 +528,8 @@ AcpiExWriteDataToField ( if (SourceDesc->Buffer.Length < Length) { ACPI_ERROR ((AE_INFO, - "SMBus/IPMI/GenericSerialBus write requires Buffer of length %u, found length %u", + "SMBus/IPMI/GenericSerialBus write requires " + "Buffer of length %u, found length %u", Length, SourceDesc->Buffer.Length)); return_ACPI_STATUS (AE_AML_BUFFER_LIMIT); @@ -542,8 +554,8 @@ AcpiExWriteDataToField ( * Perform the write (returns status and perhaps data in the * same buffer) */ - Status = AcpiExAccessRegion (ObjDesc, 0, - (UINT64 *) Buffer, Function); + Status = AcpiExAccessRegion ( + ObjDesc, 0, (UINT64 *) Buffer, Function); AcpiExReleaseGlobalLock (ObjDesc->CommonField.FieldFlags); *ResultDesc = BufferDesc; @@ -566,7 +578,7 @@ AcpiExWriteDataToField ( } ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, - "GPIO FieldWrite [FROM]: (%s:%X), Val %.8X [TO]: Pin %u Bits %u\n", + "GPIO FieldWrite [FROM]: (%s:%X), Val %.8X [TO]: Pin %u Bits %u\n", AcpiUtGetTypeName (SourceDesc->Common.Type), SourceDesc->Common.Type, (UINT32) SourceDesc->Integer.Value, ObjDesc->Field.PinNumberIndex, ObjDesc->Field.BitLength)); @@ -579,8 +591,8 @@ AcpiExWriteDataToField ( /* Perform the write */ - Status = AcpiExAccessRegion (ObjDesc, 0, - (UINT64 *) Buffer, ACPI_WRITE); + Status = AcpiExAccessRegion ( + ObjDesc, 0, (UINT64 *) Buffer, ACPI_WRITE); AcpiExReleaseGlobalLock (ObjDesc->CommonField.FieldFlags); return_ACPI_STATUS (Status); } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exfldio.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exfldio.c index 39a0f37d55..b7e86fdb0f 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exfldio.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exfldio.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -192,7 +192,8 @@ AcpiExSetupRegion ( if (!AcpiIsValidSpaceId (SpaceId)) { - ACPI_ERROR ((AE_INFO, "Invalid/unknown Address Space ID: 0x%2.2X", SpaceId)); + ACPI_ERROR ((AE_INFO, + "Invalid/unknown Address Space ID: 0x%2.2X", SpaceId)); return_ACPI_STATUS (AE_AML_INVALID_SPACE_ID); } @@ -242,8 +243,8 @@ AcpiExSetupRegion ( * (Region length is specified in bytes) */ if (RgnDesc->Region.Length < - (ObjDesc->CommonField.BaseByteOffset + FieldDatumByteOffset + - ObjDesc->CommonField.AccessByteWidth)) + (ObjDesc->CommonField.BaseByteOffset + FieldDatumByteOffset + + ObjDesc->CommonField.AccessByteWidth)) { if (AcpiGbl_EnableInterpreterSlack) { @@ -270,7 +271,8 @@ AcpiExSetupRegion ( * byte, and a field with Dword access specified. */ ACPI_ERROR ((AE_INFO, - "Field [%4.4s] access width (%u bytes) too large for region [%4.4s] (length %u)", + "Field [%4.4s] access width (%u bytes) " + "too large for region [%4.4s] (length %u)", AcpiUtGetNodeName (ObjDesc->CommonField.Node), ObjDesc->CommonField.AccessByteWidth, AcpiUtGetNodeName (RgnDesc->Region.Node), @@ -282,7 +284,8 @@ AcpiExSetupRegion ( * exceeds region length, indicate an error */ ACPI_ERROR ((AE_INFO, - "Field [%4.4s] Base+Offset+Width %u+%u+%u is beyond end of region [%4.4s] (length %u)", + "Field [%4.4s] Base+Offset+Width %u+%u+%u " + "is beyond end of region [%4.4s] (length %u)", AcpiUtGetNodeName (ObjDesc->CommonField.Node), ObjDesc->CommonField.BaseByteOffset, FieldDatumByteOffset, ObjDesc->CommonField.AccessByteWidth, @@ -372,8 +375,8 @@ AcpiExAccessRegion ( /* Invoke the appropriate AddressSpace/OpRegion handler */ Status = AcpiEvAddressSpaceDispatch (RgnDesc, ObjDesc, - Function, RegionOffset, - ACPI_MUL_8 (ObjDesc->CommonField.AccessByteWidth), Value); + Function, RegionOffset, + ACPI_MUL_8 (ObjDesc->CommonField.AccessByteWidth), Value); if (ACPI_FAILURE (Status)) { @@ -584,8 +587,8 @@ AcpiExFieldDatumIo ( * For simple RegionFields, we just directly access the owning * Operation Region. */ - Status = AcpiExAccessRegion (ObjDesc, FieldDatumByteOffset, Value, - ReadWrite); + Status = AcpiExAccessRegion ( + ObjDesc, FieldDatumByteOffset, Value, ReadWrite); break; case ACPI_TYPE_LOCAL_INDEX_FIELD: @@ -608,8 +611,7 @@ AcpiExFieldDatumIo ( FieldDatumByteOffset)); Status = AcpiExInsertIntoField (ObjDesc->IndexField.IndexObj, - &FieldDatumByteOffset, - sizeof (FieldDatumByteOffset)); + &FieldDatumByteOffset, sizeof (FieldDatumByteOffset)); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -622,8 +624,8 @@ AcpiExFieldDatumIo ( ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, "Read from Data Register\n")); - Status = AcpiExExtractFromField (ObjDesc->IndexField.DataObj, - Value, sizeof (UINT64)); + Status = AcpiExExtractFromField ( + ObjDesc->IndexField.DataObj, Value, sizeof (UINT64)); } else { @@ -633,8 +635,8 @@ AcpiExFieldDatumIo ( "Write to Data Register: Value %8.8X%8.8X\n", ACPI_FORMAT_UINT64 (*Value))); - Status = AcpiExInsertIntoField (ObjDesc->IndexField.DataObj, - Value, sizeof (UINT64)); + Status = AcpiExInsertIntoField ( + ObjDesc->IndexField.DataObj, Value, sizeof (UINT64)); } break; @@ -716,14 +718,14 @@ AcpiExWriteWithUpdateRule ( * ones) The left shift drops the bits we want to ignore. */ if ((~Mask << (ACPI_MUL_8 (sizeof (Mask)) - - ACPI_MUL_8 (ObjDesc->CommonField.AccessByteWidth))) != 0) + ACPI_MUL_8 (ObjDesc->CommonField.AccessByteWidth))) != 0) { /* * Read the current contents of the byte/word/dword containing * the field, and merge with the new field value. */ - Status = AcpiExFieldDatumIo (ObjDesc, FieldDatumByteOffset, - &CurrentValue, ACPI_READ); + Status = AcpiExFieldDatumIo ( + ObjDesc, FieldDatumByteOffset, &CurrentValue, ACPI_READ); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -751,13 +753,15 @@ AcpiExWriteWithUpdateRule ( ACPI_ERROR ((AE_INFO, "Unknown UpdateRule value: 0x%X", - (ObjDesc->CommonField.FieldFlags & AML_FIELD_UPDATE_RULE_MASK))); + (ObjDesc->CommonField.FieldFlags & + AML_FIELD_UPDATE_RULE_MASK))); return_ACPI_STATUS (AE_AML_OPERAND_VALUE); } } ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, - "Mask %8.8X%8.8X, DatumOffset %X, Width %X, Value %8.8X%8.8X, MergedValue %8.8X%8.8X\n", + "Mask %8.8X%8.8X, DatumOffset %X, Width %X, " + "Value %8.8X%8.8X, MergedValue %8.8X%8.8X\n", ACPI_FORMAT_UINT64 (Mask), FieldDatumByteOffset, ObjDesc->CommonField.AccessByteWidth, @@ -766,8 +770,8 @@ AcpiExWriteWithUpdateRule ( /* Write the merged value */ - Status = AcpiExFieldDatumIo (ObjDesc, FieldDatumByteOffset, - &MergedValue, ACPI_WRITE); + Status = AcpiExFieldDatumIo ( + ObjDesc, FieldDatumByteOffset, &MergedValue, ACPI_WRITE); return_ACPI_STATUS (Status); } @@ -878,8 +882,8 @@ AcpiExExtractFromField ( /* Get next input datum from the field */ FieldOffset += ObjDesc->CommonField.AccessByteWidth; - Status = AcpiExFieldDatumIo (ObjDesc, FieldOffset, - &RawDatum, ACPI_READ); + Status = AcpiExFieldDatumIo ( + ObjDesc, FieldOffset, &RawDatum, ACPI_READ); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -976,7 +980,8 @@ AcpiExInsertIntoField ( NewBuffer = NULL; RequiredLength = ACPI_ROUND_BITS_UP_TO_BYTES ( - ObjDesc->CommonField.BitLength); + ObjDesc->CommonField.BitLength); + /* * We must have a buffer that is at least as long as the field * we are writing to. This is because individual fields are @@ -1054,8 +1059,8 @@ AcpiExInsertIntoField ( /* Write merged datum to the target field */ MergedDatum &= Mask; - Status = AcpiExWriteWithUpdateRule (ObjDesc, Mask, - MergedDatum, FieldOffset); + Status = AcpiExWriteWithUpdateRule ( + ObjDesc, Mask, MergedDatum, FieldOffset); if (ACPI_FAILURE (Status)) { goto Exit; @@ -1112,8 +1117,8 @@ AcpiExInsertIntoField ( /* Write the last datum to the field */ MergedDatum &= Mask; - Status = AcpiExWriteWithUpdateRule (ObjDesc, - Mask, MergedDatum, FieldOffset); + Status = AcpiExWriteWithUpdateRule ( + ObjDesc, Mask, MergedDatum, FieldOffset); Exit: /* Free temporary buffer if we used one */ diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exmisc.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exmisc.c index f678670ae4..77005d1f40 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exmisc.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exmisc.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -180,9 +180,9 @@ AcpiExGetObjectReference ( default: - ACPI_ERROR ((AE_INFO, "Unknown Reference Class 0x%2.2X", + ACPI_ERROR ((AE_INFO, "Invalid Reference Class 0x%2.2X", ObjDesc->Reference.Class)); - return_ACPI_STATUS (AE_AML_INTERNAL); + return_ACPI_STATUS (AE_AML_OPERAND_TYPE); } break; @@ -338,6 +338,7 @@ AcpiExDoConcatenate ( ACPI_OPERAND_OBJECT *LocalOperand1 = Operand1; ACPI_OPERAND_OBJECT *ReturnDesc; char *NewBuf; + const char *TypeString; ACPI_STATUS Status; @@ -359,9 +360,42 @@ AcpiExDoConcatenate ( break; case ACPI_TYPE_STRING: + /* + * Per the ACPI spec, Concatenate only supports int/str/buf. + * However, we support all objects here as an extension. + * This improves the usefulness of the Printf() macro. + * 12/2015. + */ + switch (Operand1->Common.Type) + { + case ACPI_TYPE_INTEGER: + case ACPI_TYPE_STRING: + case ACPI_TYPE_BUFFER: - Status = AcpiExConvertToString (Operand1, &LocalOperand1, - ACPI_IMPLICIT_CONVERT_HEX); + Status = AcpiExConvertToString ( + Operand1, &LocalOperand1, ACPI_IMPLICIT_CONVERT_HEX); + break; + + default: + /* + * Just emit a string containing the object type. + */ + TypeString = AcpiUtGetTypeName (Operand1->Common.Type); + + LocalOperand1 = AcpiUtCreateStringObject ( + ((ACPI_SIZE) strlen (TypeString) + 9)); /* 9 For "[Object]" */ + if (!LocalOperand1) + { + Status = AE_NO_MEMORY; + goto Cleanup; + } + + strcpy (LocalOperand1->String.Pointer, "["); + strcat (LocalOperand1->String.Pointer, TypeString); + strcat (LocalOperand1->String.Pointer, " Object]"); + Status = AE_OK; + break; + } break; case ACPI_TYPE_BUFFER: @@ -401,8 +435,8 @@ AcpiExDoConcatenate ( /* Result of two Integers is a Buffer */ /* Need enough buffer space for two integers */ - ReturnDesc = AcpiUtCreateBufferObject ((ACPI_SIZE) - ACPI_MUL_2 (AcpiGbl_IntegerByteWidth)); + ReturnDesc = AcpiUtCreateBufferObject ( + (ACPI_SIZE) ACPI_MUL_2 (AcpiGbl_IntegerByteWidth)); if (!ReturnDesc) { Status = AE_NO_MEMORY; @@ -414,13 +448,12 @@ AcpiExDoConcatenate ( /* Copy the first integer, LSB first */ memcpy (NewBuf, &Operand0->Integer.Value, - AcpiGbl_IntegerByteWidth); + AcpiGbl_IntegerByteWidth); /* Copy the second integer (LSB first) after the first */ memcpy (NewBuf + AcpiGbl_IntegerByteWidth, - &LocalOperand1->Integer.Value, - AcpiGbl_IntegerByteWidth); + &LocalOperand1->Integer.Value, AcpiGbl_IntegerByteWidth); break; case ACPI_TYPE_STRING: @@ -428,8 +461,8 @@ AcpiExDoConcatenate ( /* Result of two Strings is a String */ ReturnDesc = AcpiUtCreateStringObject ( - ((ACPI_SIZE) Operand0->String.Length + - LocalOperand1->String.Length)); + ((ACPI_SIZE) Operand0->String.Length + + LocalOperand1->String.Length)); if (!ReturnDesc) { Status = AE_NO_MEMORY; @@ -441,8 +474,7 @@ AcpiExDoConcatenate ( /* Concatenate the strings */ strcpy (NewBuf, Operand0->String.Pointer); - strcpy (NewBuf + Operand0->String.Length, - LocalOperand1->String.Pointer); + strcat (NewBuf, LocalOperand1->String.Pointer); break; case ACPI_TYPE_BUFFER: @@ -450,8 +482,8 @@ AcpiExDoConcatenate ( /* Result of two Buffers is a Buffer */ ReturnDesc = AcpiUtCreateBufferObject ( - ((ACPI_SIZE) Operand0->Buffer.Length + - LocalOperand1->Buffer.Length)); + ((ACPI_SIZE) Operand0->Buffer.Length + + LocalOperand1->Buffer.Length)); if (!ReturnDesc) { Status = AE_NO_MEMORY; @@ -463,10 +495,10 @@ AcpiExDoConcatenate ( /* Concatenate the buffers */ memcpy (NewBuf, Operand0->Buffer.Pointer, - Operand0->Buffer.Length); + Operand0->Buffer.Length); memcpy (NewBuf + Operand0->Buffer.Length, - LocalOperand1->Buffer.Pointer, - LocalOperand1->Buffer.Length); + LocalOperand1->Buffer.Pointer, + LocalOperand1->Buffer.Length); break; default: @@ -708,8 +740,8 @@ AcpiExDoLogicalOp ( case ACPI_TYPE_STRING: - Status = AcpiExConvertToString (Operand1, &LocalOperand1, - ACPI_IMPLICIT_CONVERT_HEX); + Status = AcpiExConvertToString ( + Operand1, &LocalOperand1, ACPI_IMPLICIT_CONVERT_HEX); break; case ACPI_TYPE_BUFFER: @@ -786,8 +818,8 @@ AcpiExDoLogicalOp ( /* Lexicographic compare: compare the data bytes */ Compare = memcmp (Operand0->Buffer.Pointer, - LocalOperand1->Buffer.Pointer, - (Length0 > Length1) ? Length1 : Length0); + LocalOperand1->Buffer.Pointer, + (Length0 > Length1) ? Length1 : Length0); switch (Opcode) { diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exmutex.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exmutex.c index c688a504e7..c65967ea21 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exmutex.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exmutex.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -281,8 +281,7 @@ AcpiExAcquireMutexObject ( } else { - Status = AcpiExSystemWaitMutex (ObjDesc->Mutex.OsMutex, - Timeout); + Status = AcpiExSystemWaitMutex (ObjDesc->Mutex.OsMutex, Timeout); } if (ACPI_FAILURE (Status)) @@ -345,33 +344,48 @@ AcpiExAcquireMutex ( } /* - * Current sync level must be less than or equal to the sync level of the - * mutex. This mechanism provides some deadlock prevention + * Current sync level must be less than or equal to the sync level + * of the mutex. This mechanism provides some deadlock prevention. */ if (WalkState->Thread->CurrentSyncLevel > ObjDesc->Mutex.SyncLevel) { ACPI_ERROR ((AE_INFO, - "Cannot acquire Mutex [%4.4s], current SyncLevel is too large (%u)", + "Cannot acquire Mutex [%4.4s], " + "current SyncLevel is too large (%u)", AcpiUtGetNodeName (ObjDesc->Mutex.Node), WalkState->Thread->CurrentSyncLevel)); return_ACPI_STATUS (AE_AML_MUTEX_ORDER); } + ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, + "Acquiring: Mutex SyncLevel %u, Thread SyncLevel %u, " + "Depth %u TID %p\n", + ObjDesc->Mutex.SyncLevel, WalkState->Thread->CurrentSyncLevel, + ObjDesc->Mutex.AcquisitionDepth, WalkState->Thread)); + Status = AcpiExAcquireMutexObject ((UINT16) TimeDesc->Integer.Value, - ObjDesc, WalkState->Thread->ThreadId); + ObjDesc, WalkState->Thread->ThreadId); + if (ACPI_SUCCESS (Status) && ObjDesc->Mutex.AcquisitionDepth == 1) { /* Save Thread object, original/current sync levels */ ObjDesc->Mutex.OwnerThread = WalkState->Thread; - ObjDesc->Mutex.OriginalSyncLevel = WalkState->Thread->CurrentSyncLevel; - WalkState->Thread->CurrentSyncLevel = ObjDesc->Mutex.SyncLevel; + ObjDesc->Mutex.OriginalSyncLevel = + WalkState->Thread->CurrentSyncLevel; + WalkState->Thread->CurrentSyncLevel = + ObjDesc->Mutex.SyncLevel; /* Link the mutex to the current thread for force-unlock at method exit */ AcpiExLinkMutex (ObjDesc, WalkState->Thread); } + ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, + "Acquired: Mutex SyncLevel %u, Thread SyncLevel %u, Depth %u\n", + ObjDesc->Mutex.SyncLevel, WalkState->Thread->CurrentSyncLevel, + ObjDesc->Mutex.AcquisitionDepth)); + return_ACPI_STATUS (Status); } @@ -467,9 +481,9 @@ AcpiExReleaseMutex ( ACPI_OPERAND_OBJECT *ObjDesc, ACPI_WALK_STATE *WalkState) { - ACPI_STATUS Status = AE_OK; UINT8 PreviousSyncLevel; ACPI_THREAD_STATE *OwnerThread; + ACPI_STATUS Status = AE_OK; ACPI_FUNCTION_TRACE (ExReleaseMutex); @@ -527,7 +541,8 @@ AcpiExReleaseMutex ( if (ObjDesc->Mutex.SyncLevel != OwnerThread->CurrentSyncLevel) { ACPI_ERROR ((AE_INFO, - "Cannot release Mutex [%4.4s], SyncLevel mismatch: mutex %u current %u", + "Cannot release Mutex [%4.4s], SyncLevel mismatch: " + "mutex %u current %u", AcpiUtGetNodeName (ObjDesc->Mutex.Node), ObjDesc->Mutex.SyncLevel, WalkState->Thread->CurrentSyncLevel)); return_ACPI_STATUS (AE_AML_MUTEX_ORDER); @@ -541,6 +556,13 @@ AcpiExReleaseMutex ( PreviousSyncLevel = OwnerThread->AcquiredMutexList->Mutex.OriginalSyncLevel; + ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, + "Releasing: Object SyncLevel %u, Thread SyncLevel %u, " + "Prev SyncLevel %u, Depth %u TID %p\n", + ObjDesc->Mutex.SyncLevel, WalkState->Thread->CurrentSyncLevel, + PreviousSyncLevel, ObjDesc->Mutex.AcquisitionDepth, + WalkState->Thread)); + Status = AcpiExReleaseMutexObject (ObjDesc); if (ACPI_FAILURE (Status)) { @@ -554,6 +576,12 @@ AcpiExReleaseMutex ( OwnerThread->CurrentSyncLevel = PreviousSyncLevel; } + ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, + "Released: Object SyncLevel %u, Thread SyncLevel, %u, " + "Prev SyncLevel %u, Depth %u\n", + ObjDesc->Mutex.SyncLevel, WalkState->Thread->CurrentSyncLevel, + PreviousSyncLevel, ObjDesc->Mutex.AcquisitionDepth)); + return_ACPI_STATUS (Status); } @@ -584,7 +612,7 @@ AcpiExReleaseAllMutexes ( ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_FUNCTION_NAME (ExReleaseAllMutexes); + ACPI_FUNCTION_TRACE (ExReleaseAllMutexes); /* Traverse the list of owned mutexes, releasing each one */ @@ -592,14 +620,10 @@ AcpiExReleaseAllMutexes ( while (Next) { ObjDesc = Next; - Next = ObjDesc->Mutex.Next; - - ObjDesc->Mutex.Prev = NULL; - ObjDesc->Mutex.Next = NULL; - ObjDesc->Mutex.AcquisitionDepth = 0; - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, - "Force-releasing held mutex: %p\n", ObjDesc)); + "Mutex [%4.4s] force-release, SyncLevel %u Depth %u\n", + ObjDesc->Mutex.Node->Name.Ascii, ObjDesc->Mutex.SyncLevel, + ObjDesc->Mutex.AcquisitionDepth)); /* Release the mutex, special case for Global Lock */ @@ -614,13 +638,20 @@ AcpiExReleaseAllMutexes ( AcpiOsReleaseMutex (ObjDesc->Mutex.OsMutex); } - /* Mark mutex unowned */ - - ObjDesc->Mutex.OwnerThread = NULL; - ObjDesc->Mutex.ThreadId = 0; - /* Update Thread SyncLevel (Last mutex is the important one) */ Thread->CurrentSyncLevel = ObjDesc->Mutex.OriginalSyncLevel; + + /* Mark mutex unowned */ + + Next = ObjDesc->Mutex.Next; + + ObjDesc->Mutex.Prev = NULL; + ObjDesc->Mutex.Next = NULL; + ObjDesc->Mutex.AcquisitionDepth = 0; + ObjDesc->Mutex.OwnerThread = NULL; + ObjDesc->Mutex.ThreadId = 0; } + + return_VOID; } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exnames.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exnames.c index 38ceba0a09..75b1121bc2 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exnames.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exnames.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -232,6 +232,7 @@ AcpiExAllocateNameString ( return_PTR (NameString); } + /******************************************************************************* * * FUNCTION: AcpiExNameSegment @@ -261,8 +262,8 @@ AcpiExNameSegment ( /* - * If first character is a digit, then we know that we aren't looking at a - * valid name segment + * If first character is a digit, then we know that we aren't looking + * at a valid name segment */ CharBuf[0] = *AmlAddress; @@ -466,7 +467,8 @@ AcpiExGetNameString ( AmlAddress++; NumSegments = *AmlAddress; - NameString = AcpiExAllocateNameString (PrefixCount, NumSegments); + NameString = AcpiExAllocateNameString ( + PrefixCount, NumSegments); if (!NameString) { Status = AE_NO_MEMORY; diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exoparg1.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exoparg1.c index c7addbdbe5..ad53d7e532 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exoparg1.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exoparg1.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -403,7 +403,7 @@ AcpiExOpcode_1A_1T_1R ( * endian unsigned value, so this boundary condition is valid. */ for (Temp32 = 0; ReturnDesc->Integer.Value && - Temp32 < ACPI_INTEGER_BIT_SIZE; ++Temp32) + Temp32 < ACPI_INTEGER_BIT_SIZE; ++Temp32) { ReturnDesc->Integer.Value >>= 1; } @@ -420,7 +420,7 @@ AcpiExOpcode_1A_1T_1R ( * endian unsigned value, so this boundary condition is valid. */ for (Temp32 = 0; ReturnDesc->Integer.Value && - Temp32 < ACPI_INTEGER_BIT_SIZE; ++Temp32) + Temp32 < ACPI_INTEGER_BIT_SIZE; ++Temp32) { ReturnDesc->Integer.Value <<= 1; } @@ -526,7 +526,7 @@ AcpiExOpcode_1A_1T_1R ( /* Get the object reference, store it, and remove our reference */ Status = AcpiExGetObjectReference (Operand[0], - &ReturnDesc2, WalkState); + &ReturnDesc2, WalkState); if (ACPI_FAILURE (Status)) { goto Cleanup; @@ -581,28 +581,30 @@ AcpiExOpcode_1A_1T_1R ( */ case AML_COPY_OP: /* Copy (Source, Target) */ - Status = AcpiUtCopyIobjectToIobject (Operand[0], &ReturnDesc, - WalkState); + Status = AcpiUtCopyIobjectToIobject ( + Operand[0], &ReturnDesc, WalkState); break; case AML_TO_DECSTRING_OP: /* ToDecimalString (Data, Result) */ - Status = AcpiExConvertToString (Operand[0], &ReturnDesc, - ACPI_EXPLICIT_CONVERT_DECIMAL); + Status = AcpiExConvertToString ( + Operand[0], &ReturnDesc, ACPI_EXPLICIT_CONVERT_DECIMAL); if (ReturnDesc == Operand[0]) { /* No conversion performed, add ref to handle return value */ + AcpiUtAddReference (ReturnDesc); } break; case AML_TO_HEXSTRING_OP: /* ToHexString (Data, Result) */ - Status = AcpiExConvertToString (Operand[0], &ReturnDesc, - ACPI_EXPLICIT_CONVERT_HEX); + Status = AcpiExConvertToString ( + Operand[0], &ReturnDesc, ACPI_EXPLICIT_CONVERT_HEX); if (ReturnDesc == Operand[0]) { /* No conversion performed, add ref to handle return value */ + AcpiUtAddReference (ReturnDesc); } break; @@ -613,17 +615,19 @@ AcpiExOpcode_1A_1T_1R ( if (ReturnDesc == Operand[0]) { /* No conversion performed, add ref to handle return value */ + AcpiUtAddReference (ReturnDesc); } break; case AML_TO_INTEGER_OP: /* ToInteger (Data, Result) */ - Status = AcpiExConvertToInteger (Operand[0], &ReturnDesc, - ACPI_ANY_BASE); + Status = AcpiExConvertToInteger ( + Operand[0], &ReturnDesc, ACPI_ANY_BASE); if (ReturnDesc == Operand[0]) { /* No conversion performed, add ref to handle return value */ + AcpiUtAddReference (ReturnDesc); } break; @@ -774,11 +778,11 @@ AcpiExOpcode_1A_0T_1R ( */ if (WalkState->Opcode == AML_INCREMENT_OP) { - ReturnDesc->Integer.Value = TempDesc->Integer.Value +1; + ReturnDesc->Integer.Value = TempDesc->Integer.Value + 1; } else { - ReturnDesc->Integer.Value = TempDesc->Integer.Value -1; + ReturnDesc->Integer.Value = TempDesc->Integer.Value - 1; } /* Finished with this Integer object */ @@ -792,7 +796,7 @@ AcpiExOpcode_1A_0T_1R ( Status = AcpiExStore (ReturnDesc, Operand[0], WalkState); break; - case AML_TYPE_OP: /* ObjectType (SourceObject) */ + case AML_OBJECT_TYPE_OP: /* ObjectType (SourceObject) */ /* * Note: The operand is not resolved at this point because we want to * get the associated object, not its value. For example, we don't @@ -826,8 +830,8 @@ AcpiExOpcode_1A_0T_1R ( /* Get the base object */ - Status = AcpiExResolveMultiple (WalkState, - Operand[0], &Type, &TempDesc); + Status = AcpiExResolveMultiple ( + WalkState, Operand[0], &Type, &TempDesc); if (ACPI_FAILURE (Status)) { goto Cleanup; @@ -873,8 +877,10 @@ AcpiExOpcode_1A_0T_1R ( default: ACPI_ERROR ((AE_INFO, - "Operand must be Buffer/Integer/String/Package - found type %s", + "Operand must be Buffer/Integer/String/Package" + " - found type %s", AcpiUtGetTypeName (Type))); + Status = AE_AML_OPERAND_TYPE; goto Cleanup; } @@ -899,7 +905,8 @@ AcpiExOpcode_1A_0T_1R ( case AML_REF_OF_OP: /* RefOf (SourceObject) */ - Status = AcpiExGetObjectReference (Operand[0], &ReturnDesc, WalkState); + Status = AcpiExGetObjectReference ( + Operand[0], &ReturnDesc, WalkState); if (ACPI_FAILURE (Status)) { goto Cleanup; @@ -946,9 +953,9 @@ AcpiExOpcode_1A_0T_1R ( /* Set Operand[0] to the value of the local/arg */ Status = AcpiDsMethodDataGetValue ( - Operand[0]->Reference.Class, - Operand[0]->Reference.Value, - WalkState, &TempDesc); + Operand[0]->Reference.Class, + Operand[0]->Reference.Value, + WalkState, &TempDesc); if (ACPI_FAILURE (Status)) { goto Cleanup; @@ -1002,19 +1009,19 @@ AcpiExOpcode_1A_0T_1R ( * Field, so we need to resolve the node to a value. */ Status = AcpiNsGetNode (WalkState->ScopeInfo->Scope.Node, - Operand[0]->String.Pointer, - ACPI_NS_SEARCH_PARENT, - ACPI_CAST_INDIRECT_PTR ( - ACPI_NAMESPACE_NODE, &ReturnDesc)); + Operand[0]->String.Pointer, + ACPI_NS_SEARCH_PARENT, + ACPI_CAST_INDIRECT_PTR ( + ACPI_NAMESPACE_NODE, &ReturnDesc)); if (ACPI_FAILURE (Status)) { goto Cleanup; } Status = AcpiExResolveNodeToValue ( - ACPI_CAST_INDIRECT_PTR ( - ACPI_NAMESPACE_NODE, &ReturnDesc), - WalkState); + ACPI_CAST_INDIRECT_PTR ( + ACPI_NAMESPACE_NODE, &ReturnDesc), + WalkState); goto Cleanup; } } @@ -1030,7 +1037,7 @@ AcpiExOpcode_1A_0T_1R ( * dereferenced above. */ ReturnDesc = AcpiNsGetAttachedObject ( - (ACPI_NAMESPACE_NODE *) Operand[0]); + (ACPI_NAMESPACE_NODE *) Operand[0]); AcpiUtAddReference (ReturnDesc); } else @@ -1097,6 +1104,7 @@ AcpiExOpcode_1A_0T_1R ( ACPI_ERROR ((AE_INFO, "Unknown Index TargetType 0x%X in reference object %p", Operand[0]->Reference.TargetType, Operand[0])); + Status = AE_AML_OPERAND_TYPE; goto Cleanup; } @@ -1127,8 +1135,8 @@ AcpiExOpcode_1A_0T_1R ( case ACPI_TYPE_LOCAL_BANK_FIELD: case ACPI_TYPE_LOCAL_INDEX_FIELD: - Status = AcpiExReadDataFromField (WalkState, - ReturnDesc, &TempDesc); + Status = AcpiExReadDataFromField ( + WalkState, ReturnDesc, &TempDesc); if (ACPI_FAILURE (Status)) { goto Cleanup; @@ -1163,6 +1171,7 @@ AcpiExOpcode_1A_0T_1R ( ACPI_ERROR ((AE_INFO, "Unknown AML opcode 0x%X", WalkState->Opcode)); + Status = AE_AML_BAD_OPCODE; goto Cleanup; } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exoparg2.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exoparg2.c index f1ab70620d..cbde89d84f 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exoparg2.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exoparg2.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -275,10 +275,11 @@ AcpiExOpcode_2A_2T_1R ( /* Quotient to ReturnDesc1, remainder to ReturnDesc2 */ - Status = AcpiUtDivide (Operand[0]->Integer.Value, - Operand[1]->Integer.Value, - &ReturnDesc1->Integer.Value, - &ReturnDesc2->Integer.Value); + Status = AcpiUtDivide ( + Operand[0]->Integer.Value, + Operand[1]->Integer.Value, + &ReturnDesc1->Integer.Value, + &ReturnDesc2->Integer.Value); if (ACPI_FAILURE (Status)) { goto Cleanup; @@ -289,6 +290,7 @@ AcpiExOpcode_2A_2T_1R ( ACPI_ERROR ((AE_INFO, "Unknown AML opcode 0x%X", WalkState->Opcode)); + Status = AE_AML_BAD_OPCODE; goto Cleanup; } @@ -373,9 +375,10 @@ AcpiExOpcode_2A_1T_1R ( goto Cleanup; } - ReturnDesc->Integer.Value = AcpiExDoMathOp (WalkState->Opcode, - Operand[0]->Integer.Value, - Operand[1]->Integer.Value); + ReturnDesc->Integer.Value = AcpiExDoMathOp ( + WalkState->Opcode, + Operand[0]->Integer.Value, + Operand[1]->Integer.Value); goto StoreResultToTarget; } @@ -392,16 +395,17 @@ AcpiExOpcode_2A_1T_1R ( /* ReturnDesc will contain the remainder */ - Status = AcpiUtDivide (Operand[0]->Integer.Value, - Operand[1]->Integer.Value, - NULL, - &ReturnDesc->Integer.Value); + Status = AcpiUtDivide ( + Operand[0]->Integer.Value, + Operand[1]->Integer.Value, + NULL, + &ReturnDesc->Integer.Value); break; case AML_CONCAT_OP: /* Concatenate (Data1, Data2, Result) */ - Status = AcpiExDoConcatenate (Operand[0], Operand[1], - &ReturnDesc, WalkState); + Status = AcpiExDoConcatenate ( + Operand[0], Operand[1], &ReturnDesc, WalkState); break; case AML_TO_STRING_OP: /* ToString (Buffer, Length, Result) (ACPI 2.0) */ @@ -448,8 +452,8 @@ AcpiExOpcode_2A_1T_1R ( /* ConcatenateResTemplate (Buffer, Buffer, Result) (ACPI 2.0) */ - Status = AcpiExConcatTemplate (Operand[0], Operand[1], - &ReturnDesc, WalkState); + Status = AcpiExConcatTemplate ( + Operand[0], Operand[1], &ReturnDesc, WalkState); break; case AML_INDEX_OP: /* Index (Source Index Result) */ @@ -632,8 +636,8 @@ AcpiExOpcode_2A_0T_1R ( /* LogicalOp (Operand0, Operand1) */ Status = AcpiExDoLogicalNumericOp (WalkState->Opcode, - Operand[0]->Integer.Value, Operand[1]->Integer.Value, - &LogicalResult); + Operand[0]->Integer.Value, Operand[1]->Integer.Value, + &LogicalResult); goto StoreLogicalResult; } else if (WalkState->OpInfo->Flags & AML_LOGICAL) @@ -641,7 +645,7 @@ AcpiExOpcode_2A_0T_1R ( /* LogicalOp (Operand0, Operand1) */ Status = AcpiExDoLogicalOp (WalkState->Opcode, Operand[0], - Operand[1], &LogicalResult); + Operand[1], &LogicalResult); goto StoreLogicalResult; } @@ -672,6 +676,7 @@ AcpiExOpcode_2A_0T_1R ( ACPI_ERROR ((AE_INFO, "Unknown AML opcode 0x%X", WalkState->Opcode)); + Status = AE_AML_BAD_OPCODE; goto Cleanup; } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exoparg3.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exoparg3.c index b2c49bef8d..4d979c5f1d 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exoparg3.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exoparg3.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -178,7 +178,8 @@ AcpiExOpcode_3A_0T_0R ( case AML_FATAL_OP: /* Fatal (FatalType FatalCode FatalArg) */ ACPI_DEBUG_PRINT ((ACPI_DB_INFO, - "FatalOp: Type %X Code %X Arg %X <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n", + "FatalOp: Type %X Code %X Arg %X " + "<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n", (UINT32) Operand[0]->Integer.Value, (UINT32) Operand[1]->Integer.Value, (UINT32) Operand[2]->Integer.Value)); @@ -186,8 +187,8 @@ AcpiExOpcode_3A_0T_0R ( Fatal = ACPI_ALLOCATE (sizeof (ACPI_SIGNAL_FATAL_INFO)); if (Fatal) { - Fatal->Type = (UINT32) Operand[0]->Integer.Value; - Fatal->Code = (UINT32) Operand[1]->Integer.Value; + Fatal->Type = (UINT32) Operand[0]->Integer.Value; + Fatal->Code = (UINT32) Operand[1]->Integer.Value; Fatal->Argument = (UINT32) Operand[2]->Integer.Value; } @@ -215,6 +216,7 @@ AcpiExOpcode_3A_0T_0R ( ACPI_ERROR ((AE_INFO, "Unknown AML opcode 0x%X", WalkState->Opcode)); + Status = AE_AML_BAD_OPCODE; goto Cleanup; } @@ -262,7 +264,7 @@ AcpiExOpcode_3A_1T_1R ( * either a String or a Buffer, so just use its type. */ ReturnDesc = AcpiUtCreateInternalObject ( - (Operand[0])->Common.Type); + (Operand[0])->Common.Type); if (!ReturnDesc) { Status = AE_NO_MEMORY; @@ -287,8 +289,8 @@ AcpiExOpcode_3A_1T_1R ( else if ((Index + Length) > Operand[0]->String.Length) { - Length = (ACPI_SIZE) Operand[0]->String.Length - - (ACPI_SIZE) Index; + Length = + (ACPI_SIZE) Operand[0]->String.Length - (ACPI_SIZE) Index; } /* Strings always have a sub-pointer, not so for buffers */ @@ -334,8 +336,8 @@ AcpiExOpcode_3A_1T_1R ( { /* We have a buffer, copy the portion requested */ - memcpy (Buffer, Operand[0]->String.Pointer + Index, - Length); + memcpy (Buffer, + Operand[0]->String.Pointer + Index, Length); } /* Set the length of the new String/Buffer */ @@ -352,6 +354,7 @@ AcpiExOpcode_3A_1T_1R ( ACPI_ERROR ((AE_INFO, "Unknown AML opcode 0x%X", WalkState->Opcode)); + Status = AE_AML_BAD_OPCODE; goto Cleanup; } @@ -369,12 +372,12 @@ Cleanup: AcpiUtRemoveReference (ReturnDesc); WalkState->ResultObj = NULL; } - - /* Set the return object and exit */ - else { + /* Set the return object and exit */ + WalkState->ResultObj = ReturnDesc; } + return_ACPI_STATUS (Status); } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exoparg6.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exoparg6.c index a7d76d686c..2744e1ae2f 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exoparg6.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exoparg6.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -205,8 +205,8 @@ AcpiExDoMatch ( * True if equal: (P[i] == M) * Change to: (M == P[i]) */ - Status = AcpiExDoLogicalOp (AML_LEQUAL_OP, MatchObj, PackageObj, - &LogicalResult); + Status = AcpiExDoLogicalOp ( + AML_LEQUAL_OP, MatchObj, PackageObj, &LogicalResult); if (ACPI_FAILURE (Status)) { return (FALSE); @@ -218,8 +218,8 @@ AcpiExDoMatch ( * True if less than or equal: (P[i] <= M) (P[i] NotGreater than M) * Change to: (M >= P[i]) (M NotLess than P[i]) */ - Status = AcpiExDoLogicalOp (AML_LLESS_OP, MatchObj, PackageObj, - &LogicalResult); + Status = AcpiExDoLogicalOp ( + AML_LLESS_OP, MatchObj, PackageObj, &LogicalResult); if (ACPI_FAILURE (Status)) { return (FALSE); @@ -232,8 +232,8 @@ AcpiExDoMatch ( * True if less than: (P[i] < M) * Change to: (M > P[i]) */ - Status = AcpiExDoLogicalOp (AML_LGREATER_OP, MatchObj, PackageObj, - &LogicalResult); + Status = AcpiExDoLogicalOp ( + AML_LGREATER_OP, MatchObj, PackageObj, &LogicalResult); if (ACPI_FAILURE (Status)) { return (FALSE); @@ -245,8 +245,8 @@ AcpiExDoMatch ( * True if greater than or equal: (P[i] >= M) (P[i] NotLess than M) * Change to: (M <= P[i]) (M NotGreater than P[i]) */ - Status = AcpiExDoLogicalOp (AML_LGREATER_OP, MatchObj, PackageObj, - &LogicalResult); + Status = AcpiExDoLogicalOp ( + AML_LGREATER_OP, MatchObj, PackageObj, &LogicalResult); if (ACPI_FAILURE (Status)) { return (FALSE); @@ -259,8 +259,8 @@ AcpiExDoMatch ( * True if greater than: (P[i] > M) * Change to: (M < P[i]) */ - Status = AcpiExDoLogicalOp (AML_LLESS_OP, MatchObj, PackageObj, - &LogicalResult); + Status = AcpiExDoLogicalOp ( + AML_LLESS_OP, MatchObj, PackageObj, &LogicalResult); if (ACPI_FAILURE (Status)) { return (FALSE); @@ -376,13 +376,13 @@ AcpiExOpcode_6A_0T_1R ( * non-match. */ if (!AcpiExDoMatch ((UINT32) Operand[1]->Integer.Value, - ThisElement, Operand[2])) + ThisElement, Operand[2])) { continue; } if (!AcpiExDoMatch ((UINT32) Operand[3]->Integer.Value, - ThisElement, Operand[4])) + ThisElement, Operand[4])) { continue; } @@ -403,6 +403,7 @@ AcpiExOpcode_6A_0T_1R ( ACPI_ERROR ((AE_INFO, "Unknown AML opcode 0x%X", WalkState->Opcode)); + Status = AE_AML_BAD_OPCODE; goto Cleanup; } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exprep.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exprep.c index d84ccc3efb..f8ef107ee7 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exprep.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exprep.c @@ -1,6 +1,6 @@ /****************************************************************************** * - * Module Name: exprep - ACPI AML (p-code) execution - field prep utilities + * Module Name: exprep - ACPI AML field prep utilities * *****************************************************************************/ @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -141,6 +141,7 @@ AcpiExGenerateAccess ( UINT32 FieldBitLength, UINT32 RegionLength); + /******************************************************************************* * * FUNCTION: AcpiExGenerateAccess @@ -185,10 +186,13 @@ AcpiExGenerateAccess ( /* Round Field start offset and length to "minimal" byte boundaries */ - FieldByteOffset = ACPI_DIV_8 (ACPI_ROUND_DOWN (FieldBitOffset, 8)); - FieldByteEndOffset = ACPI_DIV_8 (ACPI_ROUND_UP (FieldBitLength + - FieldBitOffset, 8)); - FieldByteLength = FieldByteEndOffset - FieldByteOffset; + FieldByteOffset = ACPI_DIV_8 ( + ACPI_ROUND_DOWN (FieldBitOffset, 8)); + + FieldByteEndOffset = ACPI_DIV_8 ( + ACPI_ROUND_UP (FieldBitLength + FieldBitOffset, 8)); + + FieldByteLength = FieldByteEndOffset - FieldByteOffset; ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, "Bit length %u, Bit offset %u\n", @@ -213,7 +217,8 @@ AcpiExGenerateAccess ( * are done. (This does not optimize for the perfectly aligned * case yet). */ - if (ACPI_ROUND_UP (FieldByteEndOffset, AccessByteWidth) <= RegionLength) + if (ACPI_ROUND_UP (FieldByteEndOffset, AccessByteWidth) <= + RegionLength) { FieldStartOffset = ACPI_ROUND_DOWN (FieldByteOffset, AccessByteWidth) / @@ -237,7 +242,8 @@ AcpiExGenerateAccess ( if (Accesses <= 1) { ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, - "Entire field can be accessed with one operation of size %u\n", + "Entire field can be accessed " + "with one operation of size %u\n", AccessByteWidth)); return_VALUE (AccessByteWidth); } @@ -248,14 +254,15 @@ AcpiExGenerateAccess ( */ if (Accesses < MinimumAccesses) { - MinimumAccesses = Accesses; + MinimumAccesses = Accesses; MinimumAccessWidth = AccessByteWidth; } } else { ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, - "AccessWidth %u end is NOT within region\n", AccessByteWidth)); + "AccessWidth %u end is NOT within region\n", + AccessByteWidth)); if (AccessByteWidth == 1) { ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, @@ -283,6 +290,7 @@ AcpiExGenerateAccess ( */ ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, "Cannot access field in one operation, using width 8\n")); + return_VALUE (8); } #endif /* ACPI_UNDER_DEVELOPMENT */ @@ -367,6 +375,7 @@ AcpiExDecodeFieldAccess ( ACPI_ERROR ((AE_INFO, "Unknown field access type 0x%X", Access)); + return_UINT32 (0); } @@ -446,8 +455,8 @@ AcpiExPrepCommonFieldObject ( * For all other access types (Byte, Word, Dword, Qword), the Bitwidth is * the same (equivalent) as the ByteAlignment. */ - AccessBitWidth = AcpiExDecodeFieldAccess (ObjDesc, FieldFlags, - &ByteAlignment); + AccessBitWidth = AcpiExDecodeFieldAccess ( + ObjDesc, FieldFlags, &ByteAlignment); if (!AccessBitWidth) { return_ACPI_STATUS (AE_AML_OPERAND_VALUE); @@ -543,8 +552,8 @@ AcpiExPrepFieldValue ( ObjDesc->CommonField.Node = Info->FieldNode; Status = AcpiExPrepCommonFieldObject (ObjDesc, - Info->FieldFlags, Info->Attribute, - Info->FieldBitPosition, Info->FieldBitLength); + Info->FieldFlags, Info->Attribute, + Info->FieldBitPosition, Info->FieldBitLength); if (ACPI_FAILURE (Status)) { AcpiUtDeleteObjectDesc (ObjDesc); @@ -576,8 +585,10 @@ AcpiExPrepFieldValue ( } } - ObjDesc->Field.ResourceBuffer = SecondDesc->Buffer.Pointer; - ObjDesc->Field.ResourceLength = (UINT16) SecondDesc->Buffer.Length; + ObjDesc->Field.ResourceBuffer = + SecondDesc->Buffer.Pointer; + ObjDesc->Field.ResourceLength = + (UINT16) SecondDesc->Buffer.Length; } else if (Info->ResourceBuffer) { @@ -599,7 +610,8 @@ AcpiExPrepFieldValue ( if (AccessByteWidth < 256) { - ObjDesc->CommonField.AccessByteWidth = (UINT8) AccessByteWidth; + ObjDesc->CommonField.AccessByteWidth = + (UINT8) AccessByteWidth; } } @@ -609,8 +621,10 @@ AcpiExPrepFieldValue ( ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, "RegionField: BitOff %X, Off %X, Gran %X, Region %p\n", - ObjDesc->Field.StartFieldBitOffset, ObjDesc->Field.BaseByteOffset, - ObjDesc->Field.AccessByteWidth, ObjDesc->Field.RegionObj)); + ObjDesc->Field.StartFieldBitOffset, + ObjDesc->Field.BaseByteOffset, + ObjDesc->Field.AccessByteWidth, + ObjDesc->Field.RegionObj)); break; case ACPI_TYPE_LOCAL_BANK_FIELD: @@ -690,7 +704,8 @@ AcpiExPrepFieldValue ( ObjDesc->IndexField.AccessByteWidth); ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, - "IndexField: BitOff %X, Off %X, Value %X, Gran %X, Index %p, Data %p\n", + "IndexField: BitOff %X, Off %X, Value %X, " + "Gran %X, Index %p, Data %p\n", ObjDesc->IndexField.StartFieldBitOffset, ObjDesc->IndexField.BaseByteOffset, ObjDesc->IndexField.Value, @@ -710,10 +725,11 @@ AcpiExPrepFieldValue ( * Store the constructed descriptor (ObjDesc) into the parent Node, * preserving the current type of that NamedObj. */ - Status = AcpiNsAttachObject (Info->FieldNode, ObjDesc, - AcpiNsGetType (Info->FieldNode)); + Status = AcpiNsAttachObject ( + Info->FieldNode, ObjDesc, AcpiNsGetType (Info->FieldNode)); - ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, "Set NamedObj %p [%4.4s], ObjDesc %p\n", + ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, + "Set NamedObj %p [%4.4s], ObjDesc %p\n", Info->FieldNode, AcpiUtGetNodeName (Info->FieldNode), ObjDesc)); /* Remove local reference to the object */ diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exregion.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exregion.c index cf60500f30..66438da261 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exregion.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exregion.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -489,7 +489,8 @@ AcpiExPciConfigSpaceHandler ( PciRegister = (UINT16) (UINT32) Address; ACPI_DEBUG_PRINT ((ACPI_DB_INFO, - "Pci-Config %u (%u) Seg(%04x) Bus(%04x) Dev(%04x) Func(%04x) Reg(%04x)\n", + "Pci-Config %u (%u) Seg(%04x) Bus(%04x) " + "Dev(%04x) Func(%04x) Reg(%04x)\n", Function, BitWidth, PciId->Segment, PciId->Bus, PciId->Device, PciId->Function, PciRegister)); @@ -498,14 +499,14 @@ AcpiExPciConfigSpaceHandler ( case ACPI_READ: *Value = 0; - Status = AcpiOsReadPciConfiguration (PciId, PciRegister, - Value, BitWidth); + Status = AcpiOsReadPciConfiguration ( + PciId, PciRegister, Value, BitWidth); break; case ACPI_WRITE: - Status = AcpiOsWritePciConfiguration (PciId, PciRegister, - *Value, BitWidth); + Status = AcpiOsWritePciConfiguration ( + PciId, PciRegister, *Value, BitWidth); break; default: diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exresnte.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exresnte.c index 6967bbb3f9..99ef10ac27 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exresnte.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exresnte.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -170,9 +170,9 @@ AcpiExResolveNodeToValue ( * The stack pointer points to a ACPI_NAMESPACE_NODE (Node). Get the * object that is attached to the Node. */ - Node = *ObjectPtr; + Node = *ObjectPtr; SourceDesc = AcpiNsGetAttachedObject (Node); - EntryType = AcpiNsGetType ((ACPI_HANDLE) Node); + EntryType = AcpiNsGetType ((ACPI_HANDLE) Node); ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Entry=%p SourceDesc=%p [%s]\n", Node, SourceDesc, AcpiUtGetTypeName (EntryType))); @@ -182,15 +182,15 @@ AcpiExResolveNodeToValue ( { /* There is always exactly one level of indirection */ - Node = ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, Node->Object); + Node = ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, Node->Object); SourceDesc = AcpiNsGetAttachedObject (Node); - EntryType = AcpiNsGetType ((ACPI_HANDLE) Node); + EntryType = AcpiNsGetType ((ACPI_HANDLE) Node); *ObjectPtr = Node; } /* * Several object types require no further processing: - * 1) Device/Thermal objects don't have a "real" subobject, return the Node + * 1) Device/Thermal objects don't have a "real" subobject, return Node * 2) Method locals and arguments have a pseudo-Node * 3) 10/2007: Added method type to assist with Package construction. */ diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exresolv.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exresolv.c index d32e8426e0..9dfdf4957c 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exresolv.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exresolv.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -191,8 +191,8 @@ AcpiExResolveToValue ( if (ACPI_GET_DESCRIPTOR_TYPE (*StackPtr) == ACPI_DESC_TYPE_NAMED) { Status = AcpiExResolveNodeToValue ( - ACPI_CAST_INDIRECT_PTR (ACPI_NAMESPACE_NODE, StackPtr), - WalkState); + ACPI_CAST_INDIRECT_PTR (ACPI_NAMESPACE_NODE, StackPtr), + WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -251,7 +251,7 @@ AcpiExResolveObjectToValue ( * Note: this increments the local's object reference count */ Status = AcpiDsMethodDataGetValue (RefType, - StackDesc->Reference.Value, WalkState, &ObjDesc); + StackDesc->Reference.Value, WalkState, &ObjDesc); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -297,7 +297,6 @@ AcpiExResolveObjectToValue ( * (i.e., dereference the package index) * Delete the ref object, increment the returned object */ - AcpiUtRemoveReference (StackDesc); AcpiUtAddReference (ObjDesc); *StackPtr = ObjDesc; } @@ -308,7 +307,8 @@ AcpiExResolveObjectToValue ( * the package, can't dereference it */ ACPI_ERROR ((AE_INFO, - "Attempt to dereference an Index to NULL package element Idx=%p", + "Attempt to dereference an Index to " + "NULL package element Idx=%p", StackDesc)); Status = AE_AML_UNINITIALIZED_ELEMENT; } @@ -359,7 +359,8 @@ AcpiExResolveObjectToValue ( default: ACPI_ERROR ((AE_INFO, - "Unknown Reference type 0x%X in %p", RefType, StackDesc)); + "Unknown Reference type 0x%X in %p", + RefType, StackDesc)); Status = AE_AML_INTERNAL; break; } @@ -380,7 +381,8 @@ AcpiExResolveObjectToValue ( case ACPI_TYPE_LOCAL_BANK_FIELD: case ACPI_TYPE_LOCAL_INDEX_FIELD: - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "FieldRead SourceDesc=%p Type=%X\n", + ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, + "FieldRead SourceDesc=%p Type=%X\n", StackDesc, StackDesc->Common.Type)); Status = AcpiExReadDataFromField (WalkState, StackDesc, &ObjDesc); @@ -451,7 +453,8 @@ AcpiExResolveMultiple ( if (Type == ACPI_TYPE_LOCAL_ALIAS) { Type = ((ACPI_NAMESPACE_NODE *) ObjDesc)->Type; - ObjDesc = AcpiNsGetAttachedObject ((ACPI_NAMESPACE_NODE *) ObjDesc); + ObjDesc = AcpiNsGetAttachedObject ( + (ACPI_NAMESPACE_NODE *) ObjDesc); } if (!ObjDesc) @@ -565,7 +568,7 @@ AcpiExResolveMultiple ( if (ReturnDesc) { Status = AcpiDsMethodDataGetValue (ObjDesc->Reference.Class, - ObjDesc->Reference.Value, WalkState, &ObjDesc); + ObjDesc->Reference.Value, WalkState, &ObjDesc); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -575,7 +578,7 @@ AcpiExResolveMultiple ( else { Status = AcpiDsMethodDataGetNode (ObjDesc->Reference.Class, - ObjDesc->Reference.Value, WalkState, &Node); + ObjDesc->Reference.Value, WalkState, &Node); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -600,7 +603,8 @@ AcpiExResolveMultiple ( default: ACPI_ERROR ((AE_INFO, - "Unknown Reference Class 0x%2.2X", ObjDesc->Reference.Class)); + "Unknown Reference Class 0x%2.2X", + ObjDesc->Reference.Class)); return_ACPI_STATUS (AE_AML_INTERNAL); } } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exresop.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exresop.c index fab4993c1d..161692075c 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exresop.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exresop.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -171,7 +171,8 @@ AcpiExCheckObjectType ( * specification, a store to a constant is a noop.) */ if ((ThisType == ACPI_TYPE_INTEGER) && - (((ACPI_OPERAND_OBJECT *) Object)->Common.Flags & AOPOBJ_AML_CONSTANT)) + (((ACPI_OPERAND_OBJECT *) Object)->Common.Flags & + AOPOBJ_AML_CONSTANT)) { return (AE_OK); } @@ -288,7 +289,8 @@ AcpiExResolveOperands ( */ if (ObjectType == ACPI_TYPE_LOCAL_ALIAS) { - ObjDesc = AcpiNsGetAttachedObject ((ACPI_NAMESPACE_NODE *) ObjDesc); + ObjDesc = AcpiNsGetAttachedObject ( + (ACPI_NAMESPACE_NODE *) ObjDesc); *StackPtr = ObjDesc; ObjectType = ((ACPI_NAMESPACE_NODE *) ObjDesc)->Type; } @@ -369,7 +371,8 @@ AcpiExResolveOperands ( { case ARGI_REF_OR_STRING: /* Can be a String or Reference */ - if ((ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) == ACPI_DESC_TYPE_OPERAND) && + if ((ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) == + ACPI_DESC_TYPE_OPERAND) && (ObjDesc->Common.Type == ACPI_TYPE_STRING)) { /* @@ -392,6 +395,8 @@ AcpiExResolveOperands ( case ARGI_TARGETREF: /* Allows implicit conversion rules before store */ case ARGI_FIXED_TARGET: /* No implicit conversion before store to target */ case ARGI_SIMPLE_TARGET: /* Name, Local, or Arg - no implicit conversion */ + case ARGI_STORE_TARGET: + /* * Need an operand of type ACPI_TYPE_LOCAL_REFERENCE * A Namespace Node is OK as-is @@ -401,8 +406,8 @@ AcpiExResolveOperands ( goto NextOperand; } - Status = AcpiExCheckObjectType (ACPI_TYPE_LOCAL_REFERENCE, - ObjectType, ObjDesc); + Status = AcpiExCheckObjectType ( + ACPI_TYPE_LOCAL_REFERENCE, ObjectType, ObjDesc); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -553,8 +558,8 @@ AcpiExResolveOperands ( * But we can implicitly convert from a BUFFER or INTEGER * Aka - "Implicit Source Operand Conversion" */ - Status = AcpiExConvertToString (ObjDesc, StackPtr, - ACPI_IMPLICIT_CONVERT_HEX); + Status = AcpiExConvertToString ( + ObjDesc, StackPtr, ACPI_IMPLICIT_CONVERT_HEX); if (ACPI_FAILURE (Status)) { if (Status == AE_TYPE) @@ -687,8 +692,10 @@ AcpiExResolveOperands ( case ARGI_REGION_OR_BUFFER: /* Used by Load() only */ - /* Need an operand of type REGION or a BUFFER (which could be a resolved region field) */ - + /* + * Need an operand of type REGION or a BUFFER + * (which could be a resolved region field) + */ switch (ObjDesc->Common.Type) { case ACPI_TYPE_BUFFER: @@ -732,9 +739,9 @@ AcpiExResolveOperands ( if (AcpiGbl_EnableInterpreterSlack) { /* - * Enable original behavior of Store(), allowing any and all - * objects as the source operand. The ACPI spec does not - * allow this, however. + * Enable original behavior of Store(), allowing any + * and all objects as the source operand. The ACPI + * spec does not allow this, however. */ break; } @@ -747,7 +754,8 @@ AcpiExResolveOperands ( } ACPI_ERROR ((AE_INFO, - "Needed Integer/Buffer/String/Package/Ref/Ddb], found [%s] %p", + "Needed Integer/Buffer/String/Package/Ref/Ddb]" + ", found [%s] %p", AcpiUtGetObjectTypeName (ObjDesc), ObjDesc)); return_ACPI_STATUS (AE_AML_OPERAND_TYPE); @@ -769,8 +777,8 @@ AcpiExResolveOperands ( * Make sure that the original object was resolved to the * required object type (Simple cases only). */ - Status = AcpiExCheckObjectType (TypeNeeded, - (*StackPtr)->Common.Type, *StackPtr); + Status = AcpiExCheckObjectType ( + TypeNeeded, (*StackPtr)->Common.Type, *StackPtr); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exstore.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exstore.c index 47c212ddec..3a12cd7a9b 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exstore.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exstore.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -189,8 +189,8 @@ AcpiExStore ( * Storing an object into a Named node. */ Status = AcpiExStoreObjectToNode (SourceDesc, - (ACPI_NAMESPACE_NODE *) DestDesc, WalkState, - ACPI_IMPLICIT_CONVERSION); + (ACPI_NAMESPACE_NODE *) DestDesc, WalkState, + ACPI_IMPLICIT_CONVERSION); return_ACPI_STATUS (Status); } @@ -219,7 +219,7 @@ AcpiExStore ( /* Destination is not a Reference object */ ACPI_ERROR ((AE_INFO, - "Target is not a Reference or Constant object - %s [%p]", + "Target is not a Reference or Constant object - [%s] %p", AcpiUtGetObjectTypeName (DestDesc), DestDesc)); return_ACPI_STATUS (AE_AML_OPERAND_TYPE); @@ -240,8 +240,8 @@ AcpiExStore ( /* Storing an object into a Name "container" */ Status = AcpiExStoreObjectToNode (SourceDesc, - RefDesc->Reference.Object, - WalkState, ACPI_IMPLICIT_CONVERSION); + RefDesc->Reference.Object, + WalkState, ACPI_IMPLICIT_CONVERSION); break; case ACPI_REFCLASS_INDEX: @@ -257,7 +257,7 @@ AcpiExStore ( /* Store to a method local/arg */ Status = AcpiDsStoreObjectToLocal (RefDesc->Reference.Class, - RefDesc->Reference.Value, SourceDesc, WalkState); + RefDesc->Reference.Value, SourceDesc, WalkState); break; case ACPI_REFCLASS_DEBUG: @@ -266,7 +266,7 @@ AcpiExStore ( * displayed and otherwise has no effect -- see ACPI Specification */ ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, - "**** Write to Debug Object: Object %p %s ****:\n\n", + "**** Write to Debug Object: Object %p [%s] ****:\n\n", SourceDesc, AcpiUtGetObjectTypeName (SourceDesc))); ACPI_DEBUG_OBJECT (SourceDesc, 0, 0); @@ -346,7 +346,8 @@ AcpiExStoreObjectToIndex ( { /* Normal object, copy it */ - Status = AcpiUtCopyIobjectToIobject (SourceDesc, &NewDesc, WalkState); + Status = AcpiUtCopyIobjectToIobject ( + SourceDesc, &NewDesc, WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -428,7 +429,7 @@ AcpiExStoreObjectToIndex ( /* All other types are invalid */ ACPI_ERROR ((AE_INFO, - "Source must be Integer/Buffer/String type, not %s", + "Source must be type [Integer/Buffer/String], found [%s]", AcpiUtGetObjectTypeName (SourceDesc))); return_ACPI_STATUS (AE_AML_OPERAND_TYPE); } @@ -440,8 +441,8 @@ AcpiExStoreObjectToIndex ( default: ACPI_ERROR ((AE_INFO, - "Target is not a Package or BufferField")); - Status = AE_AML_OPERAND_TYPE; + "Target is not of type [Package/BufferField]")); + Status = AE_AML_TARGET_TYPE; break; } @@ -462,20 +463,20 @@ AcpiExStoreObjectToIndex ( * * DESCRIPTION: Store the object to the named object. * - * The Assignment of an object to a named object is handled here - * The value passed in will replace the current value (if any) - * with the input value. + * The assignment of an object to a named object is handled here. + * The value passed in will replace the current value (if any) + * with the input value. * - * When storing into an object the data is converted to the - * target object type then stored in the object. This means - * that the target object type (for an initialized target) will - * not be changed by a store operation. A CopyObject can change - * the target type, however. + * When storing into an object the data is converted to the + * target object type then stored in the object. This means + * that the target object type (for an initialized target) will + * not be changed by a store operation. A CopyObject can change + * the target type, however. * - * The ImplicitConversion flag is set to NO/FALSE only when - * storing to an ArgX -- as per the rules of the ACPI spec. + * The ImplicitConversion flag is set to NO/FALSE only when + * storing to an ArgX -- as per the rules of the ACPI spec. * - * Assumes parameters are already validated. + * Assumes parameters are already validated. * ******************************************************************************/ @@ -500,9 +501,75 @@ AcpiExStoreObjectToNode ( TargetType = AcpiNsGetType (Node); TargetDesc = AcpiNsGetAttachedObject (Node); - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Storing %p (%s) to node %p (%s)\n", + ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Storing %p [%s] to node %p [%s]\n", SourceDesc, AcpiUtGetObjectTypeName (SourceDesc), - Node, AcpiUtGetTypeName (TargetType))); + Node, AcpiUtGetTypeName (TargetType))); + + /* Only limited target types possible for everything except CopyObject */ + + if (WalkState->Opcode != AML_COPY_OP) + { + /* + * Only CopyObject allows all object types to be overwritten. For + * TargetRef(s), there are restrictions on the object types that + * are allowed. + * + * Allowable operations/typing for Store: + * + * 1) Simple Store + * Integer --> Integer (Named/Local/Arg) + * String --> String (Named/Local/Arg) + * Buffer --> Buffer (Named/Local/Arg) + * Package --> Package (Named/Local/Arg) + * + * 2) Store with implicit conversion + * Integer --> String or Buffer (Named) + * String --> Integer or Buffer (Named) + * Buffer --> Integer or String (Named) + */ + switch (TargetType) + { + case ACPI_TYPE_PACKAGE: + /* + * Here, can only store a package to an existing package. + * Storing a package to a Local/Arg is OK, and handled + * elsewhere. + */ + if (WalkState->Opcode == AML_STORE_OP) + { + if (SourceDesc->Common.Type != ACPI_TYPE_PACKAGE) + { + ACPI_ERROR ((AE_INFO, + "Cannot assign type [%s] to [Package] " + "(source must be type Pkg)", + AcpiUtGetObjectTypeName (SourceDesc))); + + return_ACPI_STATUS (AE_AML_TARGET_TYPE); + } + break; + } + + /* Fallthrough */ + + case ACPI_TYPE_DEVICE: + case ACPI_TYPE_EVENT: + case ACPI_TYPE_MUTEX: + case ACPI_TYPE_REGION: + case ACPI_TYPE_POWER: + case ACPI_TYPE_PROCESSOR: + case ACPI_TYPE_THERMAL: + + ACPI_ERROR ((AE_INFO, + "Target must be [Buffer/Integer/String/Reference]" + ", found [%s] (%4.4s)", + AcpiUtGetTypeName (Node->Type), Node->Name.Ascii)); + + return_ACPI_STATUS (AE_AML_TARGET_TYPE); + + default: + break; + } + } /* * Resolve the source object to an actual value @@ -518,13 +585,13 @@ AcpiExStoreObjectToNode ( switch (TargetType) { - case ACPI_TYPE_INTEGER: - case ACPI_TYPE_STRING: - case ACPI_TYPE_BUFFER: /* * The simple data types all support implicit source operand * conversion before the store. */ + case ACPI_TYPE_INTEGER: + case ACPI_TYPE_STRING: + case ACPI_TYPE_BUFFER: if ((WalkState->Opcode == AML_COPY_OP) || !ImplicitConversion) @@ -534,8 +601,7 @@ AcpiExStoreObjectToNode ( * an implicit conversion, as per the ACPI specification. * A direct store is performed instead. */ - Status = AcpiExStoreDirectToNode (SourceDesc, Node, - WalkState); + Status = AcpiExStoreDirectToNode (SourceDesc, Node, WalkState); break; } @@ -559,11 +625,11 @@ AcpiExStoreObjectToNode ( * store has been performed such that the node/object type * has been changed. */ - Status = AcpiNsAttachObject (Node, NewDesc, - NewDesc->Common.Type); + Status = AcpiNsAttachObject ( + Node, NewDesc, NewDesc->Common.Type); ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, - "Store %s into %s via Convert/Attach\n", + "Store type [%s] into [%s] via Convert/Attach\n", AcpiUtGetObjectTypeName (SourceDesc), AcpiUtGetObjectTypeName (NewDesc))); } @@ -585,18 +651,14 @@ AcpiExStoreObjectToNode ( default: /* - * No conversions for all other types. Directly store a copy of - * the source object. This is the ACPI spec-defined behavior for - * the CopyObject operator. + * CopyObject operator: No conversions for all other types. + * Instead, directly store a copy of the source object. * - * NOTE: For the Store operator, this is a departure from the - * ACPI spec, which states "If conversion is impossible, abort - * the running control method". Instead, this code implements - * "If conversion is impossible, treat the Store operation as - * a CopyObject". + * This is the ACPI spec-defined behavior for the CopyObject + * operator. (Note, for this default case, all normal + * Store/Target operations exited above with an error). */ - Status = AcpiExStoreDirectToNode (SourceDesc, Node, - WalkState); + Status = AcpiExStoreDirectToNode (SourceDesc, Node, WalkState); break; } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exstoren.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exstoren.c index c1879b43d8..55f14cf036 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exstoren.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exstoren.c @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -196,14 +196,15 @@ AcpiExResolveObject ( (SourceDesc->Common.Type != ACPI_TYPE_BUFFER) && (SourceDesc->Common.Type != ACPI_TYPE_STRING) && !((SourceDesc->Common.Type == ACPI_TYPE_LOCAL_REFERENCE) && - (SourceDesc->Reference.Class== ACPI_REFCLASS_TABLE))) + (SourceDesc->Reference.Class== ACPI_REFCLASS_TABLE))) { /* Conversion successful but still not a valid type */ ACPI_ERROR ((AE_INFO, - "Cannot assign type %s to %s (must be type Int/Str/Buf)", + "Cannot assign type [%s] to [%s] (must be type Int/Str/Buf)", AcpiUtGetObjectTypeName (SourceDesc), AcpiUtGetTypeName (TargetType))); + Status = AE_AML_OPERAND_TYPE; } break; @@ -304,7 +305,7 @@ AcpiExStoreObjectToObject ( * converted object. */ Status = AcpiExConvertToTargetType (DestDesc->Common.Type, - SourceDesc, &ActualSrcDesc, WalkState); + SourceDesc, &ActualSrcDesc, WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -356,7 +357,7 @@ AcpiExStoreObjectToObject ( /* * All other types come here. */ - ACPI_WARNING ((AE_INFO, "Store into type %s not implemented", + ACPI_WARNING ((AE_INFO, "Store into type [%s] not implemented", AcpiUtGetObjectTypeName (DestDesc))); Status = AE_NOT_IMPLEMENTED; diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exstorob.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exstorob.c index 8c23aeead9..0901d64ba1 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exstorob.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exstorob.c @@ -1,6 +1,6 @@ /****************************************************************************** * - * Module Name: exstorob - AML Interpreter object store support, store to object + * Module Name: exstorob - AML object store support, store to object * *****************************************************************************/ @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -293,8 +293,9 @@ AcpiExStoreStringToString ( ACPI_FREE (TargetDesc->String.Pointer); } - TargetDesc->String.Pointer = ACPI_ALLOCATE_ZEROED ( - (ACPI_SIZE) Length + 1); + TargetDesc->String.Pointer = + ACPI_ALLOCATE_ZEROED ((ACPI_SIZE) Length + 1); + if (!TargetDesc->String.Pointer) { return_ACPI_STATUS (AE_NO_MEMORY); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exsystem.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exsystem.c index 49ec2e987b..b8fbdd7556 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exsystem.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exsystem.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -158,7 +158,6 @@ AcpiExSystemWaitSemaphore ( /* We must wait, so unlock the interpreter */ AcpiExExitInterpreter (); - Status = AcpiOsWaitSemaphore (Semaphore, 1, Timeout); ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, @@ -211,7 +210,6 @@ AcpiExSystemWaitMutex ( /* We must wait, so unlock the interpreter */ AcpiExExitInterpreter (); - Status = AcpiOsAcquireMutex (Mutex, Timeout); ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, @@ -262,8 +260,8 @@ AcpiExSystemDoStall ( * (ACPI specifies 100 usec as max, but this gives some slack in * order to support existing BIOSs) */ - ACPI_ERROR ((AE_INFO, "Time parameter is too large (%u)", - HowLong)); + ACPI_ERROR ((AE_INFO, + "Time parameter is too large (%u)", HowLong)); Status = AE_AML_OPERAND_VALUE; } else @@ -378,7 +376,7 @@ AcpiExSystemWaitEvent ( if (ObjDesc) { Status = AcpiExSystemWaitSemaphore (ObjDesc->Event.OsSemaphore, - (UINT16) TimeDesc->Integer.Value); + (UINT16) TimeDesc->Integer.Value); } return_ACPI_STATUS (Status); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/extrace.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/extrace.c index 60d020e128..ca9653ccbf 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/extrace.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/extrace.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exutils.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exutils.c index 90a791d122..b8398a535a 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exutils.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/executer/exutils.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -259,8 +259,8 @@ AcpiExTruncateFor32bitTable ( (ObjDesc->Integer.Value > (UINT64) ACPI_UINT32_MAX)) { /* - * We are executing in a 32-bit ACPI table. - * Truncate the value to 32 bits by zeroing out the upper 32-bit field + * We are executing in a 32-bit ACPI table. Truncate + * the value to 32 bits by zeroing out the upper 32-bit field */ ObjDesc->Integer.Value &= (UINT64) ACPI_UINT32_MAX; return (TRUE); @@ -304,7 +304,7 @@ AcpiExAcquireGlobalLock ( /* Attempt to get the global lock, wait forever */ Status = AcpiExAcquireMutexObject (ACPI_WAIT_FOREVER, - AcpiGbl_GlobalLockMutex, AcpiOsGetThreadId ()); + AcpiGbl_GlobalLockMutex, AcpiOsGetThreadId ()); if (ACPI_FAILURE (Status)) { @@ -441,7 +441,8 @@ AcpiExEisaIdToString ( if (CompressedId > ACPI_UINT32_MAX) { ACPI_WARNING ((AE_INFO, - "Expected EISAID is larger than 32 bits: 0x%8.8X%8.8X, truncating", + "Expected EISAID is larger than 32 bits: " + "0x%8.8X%8.8X, truncating", ACPI_FORMAT_UINT64 (CompressedId))); } @@ -568,5 +569,4 @@ AcpiIsValidSpaceId ( return (TRUE); } - #endif diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwacpi.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwacpi.c index 0530383533..9d2fc16284 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwacpi.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwacpi.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -185,7 +185,7 @@ AcpiHwSetMode ( /* BIOS should have disabled ALL fixed and GP events */ Status = AcpiHwWritePort (AcpiGbl_FADT.SmiCommand, - (UINT32) AcpiGbl_FADT.AcpiEnable, 8); + (UINT32) AcpiGbl_FADT.AcpiEnable, 8); ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Attempting to enable ACPI mode\n")); break; @@ -195,9 +195,9 @@ AcpiHwSetMode ( * enable bits to default */ Status = AcpiHwWritePort (AcpiGbl_FADT.SmiCommand, - (UINT32) AcpiGbl_FADT.AcpiDisable, 8); + (UINT32) AcpiGbl_FADT.AcpiDisable, 8); ACPI_DEBUG_PRINT ((ACPI_DB_INFO, - "Attempting to enable Legacy (non-ACPI) mode\n")); + "Attempting to enable Legacy (non-ACPI) mode\n")); break; default: @@ -221,8 +221,8 @@ AcpiHwSetMode ( { if (AcpiHwGetMode () == Mode) { - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Mode %X successfully enabled\n", - Mode)); + ACPI_DEBUG_PRINT ((ACPI_DB_INFO, + "Mode %X successfully enabled\n", Mode)); return_ACPI_STATUS (AE_OK); } AcpiOsStall (ACPI_USEC_PER_MSEC); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwesleep.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwesleep.c index ba8acdcecc..51f006b20b 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwesleep.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwesleep.c @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -202,7 +202,8 @@ AcpiHwExtendedSleep ( /* Clear wake status (WAK_STS) */ - Status = AcpiWrite ((UINT64) ACPI_X_WAKE_STATUS, &AcpiGbl_FADT.SleepStatus); + Status = AcpiWrite ((UINT64) ACPI_X_WAKE_STATUS, + &AcpiGbl_FADT.SleepStatus); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -274,7 +275,7 @@ AcpiHwExtendedWakePrep ( Status = AcpiGetSleepTypeData (ACPI_STATE_S0, - &AcpiGbl_SleepTypeA, &AcpiGbl_SleepTypeB); + &AcpiGbl_SleepTypeA, &AcpiGbl_SleepTypeB); if (ACPI_SUCCESS (Status)) { SleepTypeValue = ((AcpiGbl_SleepTypeA << ACPI_X_SLEEP_TYPE_POSITION) & diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwgpe.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwgpe.c index 1ab6965447..db250b9296 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwgpe.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwgpe.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -280,9 +280,7 @@ AcpiHwClearGpe ( */ RegisterBit = AcpiHwGetGpeRegisterBit (GpeEventInfo); - Status = AcpiHwWrite (RegisterBit, - &GpeRegisterInfo->StatusAddress); - + Status = AcpiHwWrite (RegisterBit, &GpeRegisterInfo->StatusAddress); return (Status); } @@ -323,7 +321,7 @@ AcpiHwGetGpeStatus ( /* GPE currently handled? */ if (ACPI_GPE_DISPATCH_TYPE (GpeEventInfo->Flags) != - ACPI_GPE_DISPATCH_NONE) + ACPI_GPE_DISPATCH_NONE) { LocalEventStatus |= ACPI_EVENT_FLAG_HAS_HANDLER; } @@ -405,8 +403,8 @@ AcpiHwGpeEnableWrite ( GpeRegisterInfo->EnableMask = EnableMask; - Status = AcpiHwWrite (EnableMask, &GpeRegisterInfo->EnableAddress); + Status = AcpiHwWrite (EnableMask, &GpeRegisterInfo->EnableAddress); return (Status); } @@ -531,7 +529,7 @@ AcpiHwEnableRuntimeGpeBlock ( /* Enable all "runtime" GPEs in this register */ Status = AcpiHwGpeEnableWrite (GpeRegisterInfo->EnableForRun, - GpeRegisterInfo); + GpeRegisterInfo); if (ACPI_FAILURE (Status)) { return (Status); @@ -578,7 +576,7 @@ AcpiHwEnableWakeupGpeBlock ( * remaining ones. */ Status = AcpiHwGpeEnableWrite (GpeRegisterInfo->EnableForWake, - GpeRegisterInfo); + GpeRegisterInfo); if (ACPI_FAILURE (Status)) { return (Status); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwpci.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwpci.c index 0d07fe1f71..779695bf8c 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwpci.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwpci.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwregs.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwregs.c index 492833e01d..ffad33fcf9 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwregs.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwregs.c @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -140,6 +140,7 @@ AcpiHwWriteMultiple ( #endif /* !ACPI_REDUCED_HARDWARE */ + /****************************************************************************** * * FUNCTION: AcpiHwValidateRegister @@ -268,14 +269,14 @@ AcpiHwRead ( if (Reg->SpaceId == ACPI_ADR_SPACE_SYSTEM_MEMORY) { Status = AcpiOsReadMemory ((ACPI_PHYSICAL_ADDRESS) - Address, &Value64, Reg->BitWidth); + Address, &Value64, Reg->BitWidth); *Value = (UINT32) Value64; } else /* ACPI_ADR_SPACE_SYSTEM_IO, validated earlier */ { Status = AcpiHwReadPort ((ACPI_IO_ADDRESS) - Address, Value, Reg->BitWidth); + Address, Value, Reg->BitWidth); } ACPI_DEBUG_PRINT ((ACPI_DB_IO, @@ -329,12 +330,12 @@ AcpiHwWrite ( if (Reg->SpaceId == ACPI_ADR_SPACE_SYSTEM_MEMORY) { Status = AcpiOsWriteMemory ((ACPI_PHYSICAL_ADDRESS) - Address, (UINT64) Value, Reg->BitWidth); + Address, (UINT64) Value, Reg->BitWidth); } else /* ACPI_ADR_SPACE_SYSTEM_IO, validated earlier */ { Status = AcpiHwWritePort ((ACPI_IO_ADDRESS) - Address, Value, Reg->BitWidth); + Address, Value, Reg->BitWidth); } ACPI_DEBUG_PRINT ((ACPI_DB_IO, @@ -379,7 +380,7 @@ AcpiHwClearAcpiStatus ( /* Clear the fixed events in PM1 A/B */ Status = AcpiHwRegisterWrite (ACPI_REGISTER_PM1_STATUS, - ACPI_BITMASK_ALL_FIXED_STATUS); + ACPI_BITMASK_ALL_FIXED_STATUS); AcpiOsReleaseLock (AcpiGbl_HardwareLock, LockFlags); @@ -498,22 +499,22 @@ AcpiHwRegisterRead ( case ACPI_REGISTER_PM1_STATUS: /* PM1 A/B: 16-bit access each */ Status = AcpiHwReadMultiple (&Value, - &AcpiGbl_XPm1aStatus, - &AcpiGbl_XPm1bStatus); + &AcpiGbl_XPm1aStatus, + &AcpiGbl_XPm1bStatus); break; case ACPI_REGISTER_PM1_ENABLE: /* PM1 A/B: 16-bit access each */ Status = AcpiHwReadMultiple (&Value, - &AcpiGbl_XPm1aEnable, - &AcpiGbl_XPm1bEnable); + &AcpiGbl_XPm1aEnable, + &AcpiGbl_XPm1bEnable); break; case ACPI_REGISTER_PM1_CONTROL: /* PM1 A/B: 16-bit access each */ Status = AcpiHwReadMultiple (&Value, - &AcpiGbl_FADT.XPm1aControlBlock, - &AcpiGbl_FADT.XPm1bControlBlock); + &AcpiGbl_FADT.XPm1aControlBlock, + &AcpiGbl_FADT.XPm1bControlBlock); /* * Zero the write-only bits. From the ACPI specification, "Hardware @@ -609,15 +610,15 @@ AcpiHwRegisterWrite ( Value &= ~ACPI_PM1_STATUS_PRESERVED_BITS; Status = AcpiHwWriteMultiple (Value, - &AcpiGbl_XPm1aStatus, - &AcpiGbl_XPm1bStatus); + &AcpiGbl_XPm1aStatus, + &AcpiGbl_XPm1bStatus); break; case ACPI_REGISTER_PM1_ENABLE: /* PM1 A/B: 16-bit access each */ Status = AcpiHwWriteMultiple (Value, - &AcpiGbl_XPm1aEnable, - &AcpiGbl_XPm1bEnable); + &AcpiGbl_XPm1aEnable, + &AcpiGbl_XPm1bEnable); break; case ACPI_REGISTER_PM1_CONTROL: /* PM1 A/B: 16-bit access each */ @@ -626,8 +627,8 @@ AcpiHwRegisterWrite ( * Note: This includes SCI_EN, we never want to change this bit */ Status = AcpiHwReadMultiple (&ReadValue, - &AcpiGbl_FADT.XPm1aControlBlock, - &AcpiGbl_FADT.XPm1bControlBlock); + &AcpiGbl_FADT.XPm1aControlBlock, + &AcpiGbl_FADT.XPm1bControlBlock); if (ACPI_FAILURE (Status)) { goto Exit; @@ -640,8 +641,8 @@ AcpiHwRegisterWrite ( /* Now we can write the data */ Status = AcpiHwWriteMultiple (Value, - &AcpiGbl_FADT.XPm1aControlBlock, - &AcpiGbl_FADT.XPm1bControlBlock); + &AcpiGbl_FADT.XPm1aControlBlock, + &AcpiGbl_FADT.XPm1bControlBlock); break; case ACPI_REGISTER_PM2_CONTROL: /* 8-bit access */ diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwsleep.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwsleep.c index 6438ea7aba..c2a2a7f0a7 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwsleep.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwsleep.c @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -155,7 +155,8 @@ AcpiHwLegacySleep ( /* Clear wake status */ - Status = AcpiWriteBitRegister (ACPI_BITREG_WAKE_STATUS, ACPI_CLEAR_STATUS); + Status = AcpiWriteBitRegister (ACPI_BITREG_WAKE_STATUS, + ACPI_CLEAR_STATUS); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -189,7 +190,7 @@ AcpiHwLegacySleep ( /* Get current value of PM1A control */ Status = AcpiHwRegisterRead (ACPI_REGISTER_PM1_CONTROL, - &Pm1aControl); + &Pm1aControl); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -200,7 +201,7 @@ AcpiHwLegacySleep ( /* Clear the SLP_EN and SLP_TYP fields */ Pm1aControl &= ~(SleepTypeRegInfo->AccessBitMask | - SleepEnableRegInfo->AccessBitMask); + SleepEnableRegInfo->AccessBitMask); Pm1bControl = Pm1aControl; /* Insert the SLP_TYP bits */ @@ -254,7 +255,7 @@ AcpiHwLegacySleep ( AcpiOsStall (10 * ACPI_USEC_PER_SEC); Status = AcpiHwRegisterWrite (ACPI_REGISTER_PM1_CONTROL, - SleepEnableRegInfo->AccessBitMask); + SleepEnableRegInfo->AccessBitMask); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -310,7 +311,7 @@ AcpiHwLegacyWakePrep ( * by some machines. */ Status = AcpiGetSleepTypeData (ACPI_STATE_S0, - &AcpiGbl_SleepTypeA, &AcpiGbl_SleepTypeB); + &AcpiGbl_SleepTypeA, &AcpiGbl_SleepTypeB); if (ACPI_SUCCESS (Status)) { SleepTypeRegInfo = @@ -321,7 +322,7 @@ AcpiHwLegacyWakePrep ( /* Get current value of PM1A control */ Status = AcpiHwRegisterRead (ACPI_REGISTER_PM1_CONTROL, - &Pm1aControl); + &Pm1aControl); if (ACPI_SUCCESS (Status)) { /* Clear the SLP_EN and SLP_TYP fields */ @@ -406,7 +407,8 @@ AcpiHwLegacyWake ( * and use it to determine whether the system is rebooting or * resuming. Clear WAK_STS for compatibility. */ - (void) AcpiWriteBitRegister (ACPI_BITREG_WAKE_STATUS, ACPI_CLEAR_STATUS); + (void) AcpiWriteBitRegister (ACPI_BITREG_WAKE_STATUS, + ACPI_CLEAR_STATUS); AcpiGbl_SystemAwakeAndRunning = TRUE; /* Enable power button */ diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwtimer.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwtimer.c index ef9e591b05..9b74a248d4 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwtimer.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwtimer.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwvalid.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwvalid.c index 47dd722cdc..d2cd41f14a 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwvalid.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwvalid.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwxface.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwxface.c index 12c4ffbfae..2fbc366dd4 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwxface.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwxface.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -241,7 +241,7 @@ AcpiRead ( if (Reg->SpaceId == ACPI_ADR_SPACE_SYSTEM_MEMORY) { Status = AcpiOsReadMemory ((ACPI_PHYSICAL_ADDRESS) - Address, ReturnValue, Reg->BitWidth); + Address, ReturnValue, Reg->BitWidth); if (ACPI_FAILURE (Status)) { return (Status); @@ -259,7 +259,7 @@ AcpiRead ( } Status = AcpiHwReadPort ((ACPI_IO_ADDRESS) - Address, &ValueLo, Width); + Address, &ValueLo, Width); if (ACPI_FAILURE (Status)) { return (Status); @@ -270,7 +270,7 @@ AcpiRead ( /* Read the top 32 bits */ Status = AcpiHwReadPort ((ACPI_IO_ADDRESS) - (Address + 4), &ValueHi, 32); + (Address + 4), &ValueHi, 32); if (ACPI_FAILURE (Status)) { return (Status); @@ -335,7 +335,7 @@ AcpiWrite ( if (Reg->SpaceId == ACPI_ADR_SPACE_SYSTEM_MEMORY) { Status = AcpiOsWriteMemory ((ACPI_PHYSICAL_ADDRESS) - Address, Value, Reg->BitWidth); + Address, Value, Reg->BitWidth); if (ACPI_FAILURE (Status)) { return (Status); @@ -350,7 +350,7 @@ AcpiWrite ( } Status = AcpiHwWritePort ((ACPI_IO_ADDRESS) - Address, ACPI_LODWORD (Value), Width); + Address, ACPI_LODWORD (Value), Width); if (ACPI_FAILURE (Status)) { return (Status); @@ -359,7 +359,7 @@ AcpiWrite ( if (Reg->BitWidth == 64) { Status = AcpiHwWritePort ((ACPI_IO_ADDRESS) - (Address + 4), ACPI_HIDWORD (Value), 32); + (Address + 4), ACPI_HIDWORD (Value), 32); if (ACPI_FAILURE (Status)) { return (Status); @@ -430,7 +430,7 @@ AcpiReadBitRegister ( /* Read the entire parent register */ Status = AcpiHwRegisterRead (BitRegInfo->ParentRegister, - &RegisterValue); + &RegisterValue); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -439,7 +439,7 @@ AcpiReadBitRegister ( /* Normalize the value that was read, mask off other bits */ Value = ((RegisterValue & BitRegInfo->AccessBitMask) - >> BitRegInfo->BitPosition); + >> BitRegInfo->BitPosition); ACPI_DEBUG_PRINT ((ACPI_DB_IO, "BitReg %X, ParentReg %X, Actual %8.8X, ReturnValue %8.8X\n", @@ -511,7 +511,7 @@ AcpiWriteBitRegister ( * interested in */ Status = AcpiHwRegisterRead (BitRegInfo->ParentRegister, - &RegisterValue); + &RegisterValue); if (ACPI_FAILURE (Status)) { goto UnlockAndExit; @@ -525,7 +525,7 @@ AcpiWriteBitRegister ( BitRegInfo->AccessBitMask, Value); Status = AcpiHwRegisterWrite (BitRegInfo->ParentRegister, - RegisterValue); + RegisterValue); } else { @@ -545,7 +545,7 @@ AcpiWriteBitRegister ( if (RegisterValue) { Status = AcpiHwRegisterWrite (ACPI_REGISTER_PM1_STATUS, - RegisterValue); + RegisterValue); } } @@ -637,12 +637,20 @@ AcpiGetSleepTypeData ( * Evaluate the \_Sx namespace object containing the register values * for this state */ - Info->RelativePathname = ACPI_CAST_PTR ( - char, AcpiGbl_SleepStateNames[SleepState]); + Info->RelativePathname = ACPI_CAST_PTR (char, + AcpiGbl_SleepStateNames[SleepState]); + Status = AcpiNsEvaluate (Info); if (ACPI_FAILURE (Status)) { - goto Cleanup; + if (Status == AE_NOT_FOUND) + { + /* The _Sx states are optional, ignore NOT_FOUND */ + + goto FinalCleanup; + } + + goto WarningCleanup; } /* Must have a return object */ @@ -652,7 +660,7 @@ AcpiGetSleepTypeData ( ACPI_ERROR ((AE_INFO, "No Sleep State object returned from [%s]", Info->RelativePathname)); Status = AE_AML_NO_RETURN_VALUE; - goto Cleanup; + goto WarningCleanup; } /* Return object must be of type Package */ @@ -661,7 +669,7 @@ AcpiGetSleepTypeData ( { ACPI_ERROR ((AE_INFO, "Sleep State return object is not a Package")); Status = AE_AML_OPERAND_TYPE; - goto Cleanup1; + goto ReturnValueCleanup; } /* @@ -708,16 +716,18 @@ AcpiGetSleepTypeData ( break; } -Cleanup1: +ReturnValueCleanup: AcpiUtRemoveReference (Info->ReturnObject); -Cleanup: +WarningCleanup: if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, - "While evaluating Sleep State [%s]", Info->RelativePathname)); + "While evaluating Sleep State [%s]", + Info->RelativePathname)); } +FinalCleanup: ACPI_FREE (Info); return_ACPI_STATUS (Status); } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwxfsleep.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwxfsleep.c index ce6e8eeb6a..47ffeae38f 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwxfsleep.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/hardware/hwxfsleep.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -244,7 +244,7 @@ AcpiSetFirmwareWakingVector ( if (AcpiGbl_FACS) { (void) AcpiHwSetFirmwareWakingVector (AcpiGbl_FACS, - PhysicalAddress, PhysicalAddress64); + PhysicalAddress, PhysicalAddress64); } return_ACPI_STATUS (AE_OK); @@ -311,7 +311,7 @@ AcpiEnterSleepStateS4bios ( ACPI_FLUSH_CPU_CACHE (); Status = AcpiHwWritePort (AcpiGbl_FADT.SmiCommand, - (UINT32) AcpiGbl_FADT.S4BiosRequest, 8); + (UINT32) AcpiGbl_FADT.S4BiosRequest, 8); do { AcpiOsStall (ACPI_USEC_PER_MSEC); @@ -320,6 +320,7 @@ AcpiEnterSleepStateS4bios ( { return_ACPI_STATUS (Status); } + } while (!InValue); return_ACPI_STATUS (AE_OK); @@ -415,7 +416,7 @@ AcpiEnterSleepStatePrep ( Status = AcpiGetSleepTypeData (SleepState, - &AcpiGbl_SleepTypeA, &AcpiGbl_SleepTypeB); + &AcpiGbl_SleepTypeA, &AcpiGbl_SleepTypeB); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsaccess.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsaccess.c index 666730849e..175a92c58b 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsaccess.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsaccess.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -189,8 +189,8 @@ AcpiNsRootInitialize ( } Status = AcpiNsLookup (NULL, InitVal->Name, InitVal->Type, - ACPI_IMODE_LOAD_PASS2, ACPI_NS_NO_UPSEARCH, - NULL, &NewNode); + ACPI_IMODE_LOAD_PASS2, ACPI_NS_NO_UPSEARCH, + NULL, &NewNode); if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, @@ -291,7 +291,7 @@ AcpiNsRootInitialize ( /* Create additional counting semaphore for global lock */ Status = AcpiOsCreateSemaphore ( - 1, 0, &AcpiGbl_GlobalLockSemaphore); + 1, 0, &AcpiGbl_GlobalLockSemaphore); if (ACPI_FAILURE (Status)) { AcpiUtRemoveReference (ObjDesc); @@ -312,7 +312,7 @@ AcpiNsRootInitialize ( /* Store pointer to value descriptor in the Node */ Status = AcpiNsAttachObject (NewNode, ObjDesc, - ObjDesc->Common.Type); + ObjDesc->Common.Type); /* Remove local reference to the object */ @@ -329,7 +329,7 @@ UnlockAndExit: if (ACPI_SUCCESS (Status)) { Status = AcpiNsGetNode (NULL, "\\_GPE", ACPI_NS_NO_UPSEARCH, - &AcpiGbl_FadtGpeDevice); + &AcpiGbl_FadtGpeDevice); } return_ACPI_STATUS (Status); @@ -661,7 +661,7 @@ AcpiNsLookup ( /* Try to find the single (4 character) ACPI name */ Status = AcpiNsSearchAndEnter (SimpleName, WalkState, CurrentNode, - InterpreterMode, ThisSearchType, LocalFlags, &ThisNode); + InterpreterMode, ThisSearchType, LocalFlags, &ThisNode); if (ACPI_FAILURE (Status)) { if (Status == AE_NOT_FOUND) diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsalloc.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsalloc.c index 293bf26697..ce328ea129 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsalloc.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsalloc.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -157,7 +157,7 @@ AcpiNsCreateNode ( #ifdef ACPI_DBG_TRACK_ALLOCATIONS Temp = AcpiGbl_NsNodeList->TotalAllocated - - AcpiGbl_NsNodeList->TotalFreed; + AcpiGbl_NsNodeList->TotalFreed; if (Temp > AcpiGbl_NsNodeList->MaxOccupied) { AcpiGbl_NsNodeList->MaxOccupied = Temp; @@ -349,7 +349,8 @@ AcpiNsInstallNode ( * modified the namespace. This is used for cleanup when the * method exits. */ - WalkState->MethodDesc->Method.InfoFlags |= ACPI_METHOD_MODIFIED_NAMESPACE; + WalkState->MethodDesc->Method.InfoFlags |= + ACPI_METHOD_MODIFIED_NAMESPACE; } } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsarguments.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsarguments.c index 08e0716fa1..908b4d6778 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsarguments.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsarguments.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -209,7 +209,8 @@ AcpiNsCheckAcpiCompliance ( /* Get the ACPI-required arg count from the predefined info table */ - RequiredParamCount = METHOD_GET_ARG_COUNT (Predefined->Info.ArgumentList); + RequiredParamCount = + METHOD_GET_ARG_COUNT (Predefined->Info.ArgumentList); /* * If this object is not a control method, we can check if the ACPI @@ -355,7 +356,8 @@ AcpiNsCheckArgumentCount ( * Some methods are allowed to have a "minimum" number of args (_SCP) * because their definition in ACPI has changed over time. */ - RequiredParamCount = METHOD_GET_ARG_COUNT (Predefined->Info.ArgumentList); + RequiredParamCount = + METHOD_GET_ARG_COUNT (Predefined->Info.ArgumentList); if (UserParamCount < RequiredParamCount) { diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsconvert.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsconvert.c index b79458e244..f17298949e 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsconvert.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsconvert.c @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -156,7 +156,7 @@ AcpiNsConvertToInteger ( /* String-to-Integer conversion */ Status = AcpiUtStrtoul64 (OriginalObject->String.Pointer, - ACPI_ANY_BASE, &Value); + ACPI_ANY_BASE, &Value); if (ACPI_FAILURE (Status)) { return (Status); @@ -176,7 +176,8 @@ AcpiNsConvertToInteger ( for (i = 0; i < OriginalObject->Buffer.Length; i++) { - Value |= ((UINT64) OriginalObject->Buffer.Pointer[i] << (i * 8)); + Value |= ((UINT64) + OriginalObject->Buffer.Pointer[i] << (i * 8)); } break; @@ -239,8 +240,8 @@ AcpiNsConvertToString ( } else { - Status = AcpiExConvertToString (OriginalObject, &NewObject, - ACPI_IMPLICIT_CONVERT_HEX); + Status = AcpiExConvertToString (OriginalObject, + &NewObject, ACPI_IMPLICIT_CONVERT_HEX); if (ACPI_FAILURE (Status)) { return (Status); @@ -335,7 +336,8 @@ AcpiNsConvertToBuffer ( /* String-to-Buffer conversion. Simple data copy */ - NewObject = AcpiUtCreateBufferObject (OriginalObject->String.Length); + NewObject = AcpiUtCreateBufferObject + (OriginalObject->String.Length); if (!NewObject) { return (AE_NO_MEMORY); @@ -402,7 +404,8 @@ AcpiNsConvertToBuffer ( * * FUNCTION: AcpiNsConvertToUnicode * - * PARAMETERS: OriginalObject - ASCII String Object to be converted + * PARAMETERS: Scope - Namespace node for the method/object + * OriginalObject - ASCII String Object to be converted * ReturnObject - Where the new converted object is returned * * RETURN: Status. AE_OK if conversion was successful. @@ -413,6 +416,7 @@ AcpiNsConvertToBuffer ( ACPI_STATUS AcpiNsConvertToUnicode ( + ACPI_NAMESPACE_NODE *Scope, ACPI_OPERAND_OBJECT *OriginalObject, ACPI_OPERAND_OBJECT **ReturnObject) { @@ -474,7 +478,8 @@ AcpiNsConvertToUnicode ( * * FUNCTION: AcpiNsConvertToResource * - * PARAMETERS: OriginalObject - Object to be converted + * PARAMETERS: Scope - Namespace node for the method/object + * OriginalObject - Object to be converted * ReturnObject - Where the new converted object is returned * * RETURN: Status. AE_OK if conversion was successful @@ -486,6 +491,7 @@ AcpiNsConvertToUnicode ( ACPI_STATUS AcpiNsConvertToResource ( + ACPI_NAMESPACE_NODE *Scope, ACPI_OPERAND_OBJECT *OriginalObject, ACPI_OPERAND_OBJECT **ReturnObject) { @@ -552,3 +558,81 @@ AcpiNsConvertToResource ( *ReturnObject = NewObject; return (AE_OK); } + + +/******************************************************************************* + * + * FUNCTION: AcpiNsConvertToReference + * + * PARAMETERS: Scope - Namespace node for the method/object + * OriginalObject - Object to be converted + * ReturnObject - Where the new converted object is returned + * + * RETURN: Status. AE_OK if conversion was successful + * + * DESCRIPTION: Attempt to convert a Integer object to a ObjectReference. + * Buffer. + * + ******************************************************************************/ + +ACPI_STATUS +AcpiNsConvertToReference ( + ACPI_NAMESPACE_NODE *Scope, + ACPI_OPERAND_OBJECT *OriginalObject, + ACPI_OPERAND_OBJECT **ReturnObject) +{ + ACPI_OPERAND_OBJECT *NewObject = NULL; + ACPI_STATUS Status; + ACPI_NAMESPACE_NODE *Node; + ACPI_GENERIC_STATE ScopeInfo; + char *Name; + + + ACPI_FUNCTION_NAME (NsConvertToReference); + + + /* Convert path into internal presentation */ + + Status = AcpiNsInternalizeName (OriginalObject->String.Pointer, &Name); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } + + /* Find the namespace node */ + + ScopeInfo.Scope.Node = ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, Scope); + Status = AcpiNsLookup (&ScopeInfo, Name, + ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE, + ACPI_NS_SEARCH_PARENT | ACPI_NS_DONT_OPEN_SCOPE, NULL, &Node); + if (ACPI_FAILURE (Status)) + { + /* Check if we are resolving a named reference within a package */ + + ACPI_ERROR_NAMESPACE (OriginalObject->String.Pointer, Status); + goto ErrorExit; + } + + /* Create and init a new internal ACPI object */ + + NewObject = AcpiUtCreateInternalObject (ACPI_TYPE_LOCAL_REFERENCE); + if (!NewObject) + { + Status = AE_NO_MEMORY; + goto ErrorExit; + } + NewObject->Reference.Node = Node; + NewObject->Reference.Object = Node->Object; + NewObject->Reference.Class = ACPI_REFCLASS_NAME; + + /* + * Increase reference of the object if needed (the object is likely a + * null for device nodes). + */ + AcpiUtAddReference (Node->Object); + +ErrorExit: + ACPI_FREE (Name); + *ReturnObject = NewObject; + return (AE_OK); +} diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsdump.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsdump.c index 0d3b57eecf..bce5880f97 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsdump.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsdump.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -331,7 +331,8 @@ AcpiNsDumpOneObject ( if (Type > ACPI_TYPE_LOCAL_MAX) { - ACPI_WARNING ((AE_INFO, "Invalid ACPI Object Type 0x%08X", Type)); + ACPI_WARNING ((AE_INFO, + "Invalid ACPI Object Type 0x%08X", Type)); } AcpiOsPrintf ("%4.4s", AcpiUtGetNodeName (ThisNode)); @@ -340,7 +341,7 @@ AcpiNsDumpOneObject ( /* Now we can print out the pertinent information */ AcpiOsPrintf (" %-12s %p %2.2X ", - AcpiUtGetTypeName (Type), ThisNode, ThisNode->OwnerId); + AcpiUtGetTypeName (Type), ThisNode, ThisNode->OwnerId); DbgLevel = AcpiDbgLevel; AcpiDbgLevel = 0; @@ -427,7 +428,7 @@ AcpiNsDumpOneObject ( if (ObjDesc->Common.Flags & AOPOBJ_DATA_VALID) { AcpiOsPrintf ("Len %.2X", - ObjDesc->Buffer.Length); + ObjDesc->Buffer.Length); /* Dump some of the buffer */ @@ -608,9 +609,9 @@ AcpiNsDumpOneObject ( /* If there is an attached object, display it */ - DbgLevel = AcpiDbgLevel; + DbgLevel = AcpiDbgLevel; AcpiDbgLevel = 0; - ObjDesc = AcpiNsGetAttachedObject (ThisNode); + ObjDesc = AcpiNsGetAttachedObject (ThisNode); AcpiDbgLevel = DbgLevel; /* Dump attached objects */ @@ -637,14 +638,18 @@ AcpiNsDumpOneObject ( if (ObjType > ACPI_TYPE_LOCAL_MAX) { - AcpiOsPrintf ("(Pointer to ACPI Object type %.2X [UNKNOWN])\n", + AcpiOsPrintf ( + "(Pointer to ACPI Object type %.2X [UNKNOWN])\n", ObjType); + BytesToDump = 32; } else { - AcpiOsPrintf ("(Pointer to ACPI Object type %.2X [%s])\n", + AcpiOsPrintf ( + "(Pointer to ACPI Object type %.2X [%s])\n", ObjType, AcpiUtGetTypeName (ObjType)); + BytesToDump = sizeof (ACPI_OPERAND_OBJECT); } @@ -674,7 +679,8 @@ AcpiNsDumpOneObject ( */ BytesToDump = ObjDesc->String.Length; ObjDesc = (void *) ObjDesc->String.Pointer; - AcpiOsPrintf ( "(Buffer/String pointer %p length %X)\n", + + AcpiOsPrintf ("(Buffer/String pointer %p length %X)\n", ObjDesc, BytesToDump); ACPI_DUMP_BUFFER (ObjDesc, BytesToDump); goto Cleanup; @@ -775,8 +781,8 @@ AcpiNsDumpObjects ( Info.DisplayType = DisplayType; (void) AcpiNsWalkNamespace (Type, StartHandle, MaxDepth, - ACPI_NS_WALK_NO_UNLOCK | ACPI_NS_WALK_TEMP_NODES, - AcpiNsDumpOneObject, NULL, (void *) &Info, NULL); + ACPI_NS_WALK_NO_UNLOCK | ACPI_NS_WALK_TEMP_NODES, + AcpiNsDumpOneObject, NULL, (void *) &Info, NULL); (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); } @@ -826,7 +832,7 @@ AcpiNsDumpOneObjectPath ( return (AE_OK); } - Pathname = AcpiNsGetExternalPathname (Node); + Pathname = AcpiNsGetNormalizedPathname (Node, TRUE); PathIndent = 1; if (Level <= MaxLevel) @@ -912,14 +918,14 @@ AcpiNsDumpObjectPaths ( /* Get the max depth of the namespace tree, for formatting later */ (void) AcpiNsWalkNamespace (Type, StartHandle, MaxDepth, - ACPI_NS_WALK_NO_UNLOCK | ACPI_NS_WALK_TEMP_NODES, - AcpiNsGetMaxDepth, NULL, (void *) &MaxLevel, NULL); + ACPI_NS_WALK_NO_UNLOCK | ACPI_NS_WALK_TEMP_NODES, + AcpiNsGetMaxDepth, NULL, (void *) &MaxLevel, NULL); /* Now dump the entire namespace */ (void) AcpiNsWalkNamespace (Type, StartHandle, MaxDepth, - ACPI_NS_WALK_NO_UNLOCK | ACPI_NS_WALK_TEMP_NODES, - AcpiNsDumpOneObjectPath, NULL, (void *) &MaxLevel, NULL); + ACPI_NS_WALK_NO_UNLOCK | ACPI_NS_WALK_TEMP_NODES, + AcpiNsDumpOneObjectPath, NULL, (void *) &MaxLevel, NULL); (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); } @@ -990,7 +996,8 @@ AcpiNsDumpTables ( * If the name space has not been initialized, * there is nothing to dump. */ - ACPI_DEBUG_PRINT ((ACPI_DB_TABLES, "namespace not initialized!\n")); + ACPI_DEBUG_PRINT ((ACPI_DB_TABLES, + "namespace not initialized!\n")); return_VOID; } @@ -1003,7 +1010,7 @@ AcpiNsDumpTables ( } AcpiNsDumpObjects (ACPI_TYPE_ANY, ACPI_DISPLAY_OBJECTS, MaxDepth, - ACPI_OWNER_ID_MAX, SearchHandle); + ACPI_OWNER_ID_MAX, SearchHandle); return_VOID; } #endif diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsdumpdv.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsdumpdv.c index 8e570d1f73..7fe889b3d1 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsdumpdv.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsdumpdv.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -222,8 +222,8 @@ AcpiNsDumpRootDevices ( "Display of all devices in the namespace:\n")); Status = AcpiNsWalkNamespace (ACPI_TYPE_DEVICE, SysBusHandle, - ACPI_UINT32_MAX, ACPI_NS_WALK_NO_UNLOCK, - AcpiNsDumpOneDevice, NULL, NULL, NULL); + ACPI_UINT32_MAX, ACPI_NS_WALK_NO_UNLOCK, + AcpiNsDumpOneDevice, NULL, NULL, NULL); } #endif diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nseval.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nseval.c index 7c8d6fd186..a5cc2f6d23 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nseval.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nseval.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -217,7 +217,7 @@ AcpiNsEvaluate ( /* Get the full pathname to the object, for use in warning messages */ - Info->FullPathname = AcpiNsGetExternalPathname (Info->Node); + Info->FullPathname = AcpiNsGetNormalizedPathname (Info->Node, TRUE); if (!Info->FullPathname) { return_ACPI_STATUS (AE_NO_MEMORY); @@ -513,8 +513,8 @@ AcpiNsExecModuleCode ( * Get the parent node. We cheat by using the NextObject field * of the method object descriptor. */ - ParentNode = ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, - MethodObj->Method.NextObject); + ParentNode = ACPI_CAST_PTR ( + ACPI_NAMESPACE_NODE, MethodObj->Method.NextObject); Type = AcpiNsGetType (ParentNode); /* @@ -540,9 +540,9 @@ AcpiNsExecModuleCode ( Info->PrefixNode = ParentNode; /* - * Get the currently attached parent object. Add a reference, because the - * ref count will be decreased when the method object is installed to - * the parent node. + * Get the currently attached parent object. Add a reference, + * because the ref count will be decreased when the method object + * is installed to the parent node. */ ParentObj = AcpiNsGetAttachedObject (ParentNode); if (ParentObj) @@ -552,8 +552,7 @@ AcpiNsExecModuleCode ( /* Install the method (module-level code) in the parent node */ - Status = AcpiNsAttachObject (ParentNode, MethodObj, - ACPI_TYPE_METHOD); + Status = AcpiNsAttachObject (ParentNode, MethodObj, ACPI_TYPE_METHOD); if (ACPI_FAILURE (Status)) { goto Exit; diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsinit.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsinit.c index 6bedef95af..838f02a40b 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsinit.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsinit.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -182,8 +182,8 @@ AcpiNsInitializeObjects ( /* Walk entire namespace from the supplied root */ Status = AcpiWalkNamespace (ACPI_TYPE_ANY, ACPI_ROOT_OBJECT, - ACPI_UINT32_MAX, AcpiNsInitOneObject, NULL, - &Info, NULL); + ACPI_UINT32_MAX, AcpiNsInitOneObject, NULL, + &Info, NULL); if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, "During WalkNamespace")); @@ -245,7 +245,7 @@ AcpiNsInitializeDevices ( /* Tree analysis: find all subtrees that contain _INI methods */ Status = AcpiNsWalkNamespace (ACPI_TYPE_ANY, ACPI_ROOT_OBJECT, - ACPI_UINT32_MAX, FALSE, AcpiNsFindIniMethods, NULL, &Info, NULL); + ACPI_UINT32_MAX, FALSE, AcpiNsFindIniMethods, NULL, &Info, NULL); if (ACPI_FAILURE (Status)) { goto ErrorExit; @@ -279,7 +279,7 @@ AcpiNsInitializeDevices ( /* Walk namespace to execute all _INIs on present devices */ Status = AcpiNsWalkNamespace (ACPI_TYPE_ANY, ACPI_ROOT_OBJECT, - ACPI_UINT32_MAX, FALSE, AcpiNsInitOneDevice, NULL, &Info, NULL); + ACPI_UINT32_MAX, FALSE, AcpiNsInitOneDevice, NULL, &Info, NULL); /* * Any _OSI requests should be completed by now. If the BIOS has @@ -703,7 +703,7 @@ AcpiNsInitOneDevice ( { /* Ignore error and move on to next device */ - char *ScopeName = AcpiNsGetExternalPathname (Info->Node); + char *ScopeName = AcpiNsGetNormalizedPathname (DeviceNode, TRUE); ACPI_EXCEPTION ((AE_INFO, Status, "during %s._INI execution", ScopeName)); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsload.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsload.c index 8e1a0c25ca..d33719fdbf 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsload.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsload.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -239,6 +239,24 @@ Unlock: ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "**** Completed Table Object Initialization\n")); + /* + * Execute any module-level code that was detected during the table load + * phase. Although illegal since ACPI 2.0, there are many machines that + * contain this type of code. Each block of detected executable AML code + * outside of any control method is wrapped with a temporary control + * method object and placed on a global list. The methods on this list + * are executed below. + * + * This case executes the module-level code for each table immediately + * after the table has been loaded. This provides compatibility with + * other ACPI implementations. Optionally, the execution can be deferred + * until later, see AcpiInitializeObjects. + */ + if (!AcpiGbl_GroupModuleLevelCode) + { + AcpiNsExecModuleCodeList (); + } + return_ACPI_STATUS (Status); } @@ -331,8 +349,8 @@ AcpiNsDeleteSubtree ( ParentHandle = StartHandle; - ChildHandle = NULL; - Level = 1; + ChildHandle = NULL; + Level = 1; /* * Traverse the tree of objects until we bubble back up @@ -343,7 +361,7 @@ AcpiNsDeleteSubtree ( /* Attempt to get the next object in this scope */ Status = AcpiGetNextObject (ACPI_TYPE_ANY, ParentHandle, - ChildHandle, &NextChildHandle); + ChildHandle, &NextChildHandle); ChildHandle = NextChildHandle; @@ -354,7 +372,7 @@ AcpiNsDeleteSubtree ( /* Check if this object has any children */ if (ACPI_SUCCESS (AcpiGetNextObject (ACPI_TYPE_ANY, ChildHandle, - NULL, &Dummy))) + NULL, &Dummy))) { /* * There is at least one child of this object, @@ -432,7 +450,6 @@ AcpiNsUnloadNamespace ( /* This function does the real work */ Status = AcpiNsDeleteSubtree (Handle); - return_ACPI_STATUS (Status); } #endif diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsnames.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsnames.c index 3ca04f011e..8e8fea7a08 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsnames.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsnames.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -149,7 +149,6 @@ AcpiNsGetExternalPathname ( NameBuffer = AcpiNsGetNormalizedPathname (Node, FALSE); - return_PTR (NameBuffer); } @@ -177,7 +176,6 @@ AcpiNsGetPathnameLength ( Size = AcpiNsBuildNormalizedPath (Node, NULL, 0, FALSE); - return (Size); } @@ -237,7 +235,7 @@ AcpiNsHandleToPathname ( /* Build the path in the caller buffer */ (void) AcpiNsBuildNormalizedPath (Node, Buffer->Pointer, - RequiredSize, NoTrailing); + RequiredSize, NoTrailing); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -318,6 +316,7 @@ AcpiNsBuildNormalizedPath ( { ACPI_PATH_PUT8(FullPath, PathSize, AML_DUAL_NAME_PREFIX, Length); } + ACPI_MOVE_32_TO_32 (Name, &NextNode->Name); DoNoTrailing = NoTrailing; for (i = 0; i < 4; i++) @@ -332,8 +331,10 @@ AcpiNsBuildNormalizedPath ( ACPI_PATH_PUT8(FullPath, PathSize, c, Length); } } + NextNode = NextNode->Parent; } + ACPI_PATH_PUT8(FullPath, PathSize, AML_ROOT_PREFIX, Length); /* Reverse the path string */ @@ -341,7 +342,8 @@ AcpiNsBuildNormalizedPath ( if (Length <= PathSize) { Left = FullPath; - Right = FullPath+Length-1; + Right = FullPath+Length - 1; + while (Left < Right) { c = *Left; @@ -353,7 +355,7 @@ AcpiNsBuildNormalizedPath ( /* Append the trailing null */ BuildTrailingNull: - ACPI_PATH_PUT8(FullPath, PathSize, '\0', Length); + ACPI_PATH_PUT8 (FullPath, PathSize, '\0', Length); #undef ACPI_PATH_PUT8 @@ -403,7 +405,8 @@ AcpiNsGetNormalizedPathname ( NameBuffer = ACPI_ALLOCATE_ZEROED (Size); if (!NameBuffer) { - ACPI_ERROR ((AE_INFO, "Could not allocate %u bytes", (UINT32) Size)); + ACPI_ERROR ((AE_INFO, + "Could not allocate %u bytes", (UINT32) Size)); return_PTR (NULL); } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsobject.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsobject.c index 50b1d65379..114c3b0644 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsobject.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsobject.c @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -217,7 +217,7 @@ AcpiNsAttachObject ( * Value passed is a name handle and that name has a * non-null value. Use that name's value and type. */ - ObjDesc = ((ACPI_NAMESPACE_NODE *) Object)->Object; + ObjDesc = ((ACPI_NAMESPACE_NODE *) Object)->Object; ObjectType = ((ACPI_NAMESPACE_NODE *) Object)->Type; } @@ -267,8 +267,8 @@ AcpiNsAttachObject ( LastObjDesc->Common.NextObject = Node->Object; } - Node->Type = (UINT8) ObjectType; - Node->Object = ObjDesc; + Node->Type = (UINT8) ObjectType; + Node->Object = ObjDesc; return_ACPI_STATUS (AE_OK); } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsparse.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsparse.c index 26dd9f3467..6cfdd06fab 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsparse.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsparse.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -196,7 +196,7 @@ AcpiNsOneCompleteParse ( } Status = AcpiDsInitAmlWalk (WalkState, ParseRoot, NULL, - AmlStart, AmlLength, NULL, (UINT8) PassNumber); + AmlStart, AmlLength, NULL, (UINT8) PassNumber); if (ACPI_FAILURE (Status)) { AcpiDsDeleteWalkState (WalkState); @@ -215,7 +215,8 @@ AcpiNsOneCompleteParse ( if (StartNode && StartNode != AcpiGbl_RootNode) { - Status = AcpiDsScopeStackPush (StartNode, ACPI_TYPE_METHOD, WalkState); + Status = AcpiDsScopeStackPush ( + StartNode, ACPI_TYPE_METHOD, WalkState); if (ACPI_FAILURE (Status)) { AcpiDsDeleteWalkState (WalkState); @@ -225,7 +226,8 @@ AcpiNsOneCompleteParse ( /* Parse the AML */ - ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "*PARSE* pass %u parse\n", PassNumber)); + ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, + "*PARSE* pass %u parse\n", PassNumber)); Status = AcpiPsParseAml (WalkState); Cleanup: @@ -269,8 +271,9 @@ AcpiNsParseTable ( * performs another complete parse of the AML. */ ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "**** Start pass 1\n")); + Status = AcpiNsOneCompleteParse (ACPI_IMODE_LOAD_PASS1, - TableIndex, StartNode); + TableIndex, StartNode); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -287,7 +290,7 @@ AcpiNsParseTable ( */ ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "**** Start pass 2\n")); Status = AcpiNsOneCompleteParse (ACPI_IMODE_LOAD_PASS2, - TableIndex, StartNode); + TableIndex, StartNode); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nspredef.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nspredef.c index 8a522d2d2e..6ebebd287a 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nspredef.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nspredef.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -321,7 +321,7 @@ AcpiNsCheckObjectType ( { ACPI_OPERAND_OBJECT *ReturnObject = *ReturnObjectPtr; ACPI_STATUS Status = AE_OK; - char TypeBuffer[48]; /* Room for 5 types */ + char TypeBuffer[96]; /* Room for 10 types */ /* A Namespace node should not get here, but make sure */ diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsprepkg.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsprepkg.c index 627ee3ecd8..aad9de006c 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsprepkg.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsprepkg.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -243,8 +243,8 @@ AcpiNsCheckPackage ( /* Validate all elements of the returned package */ Status = AcpiNsCheckPackageElements (Info, Elements, - Package->RetInfo.ObjectType1, Package->RetInfo.Count1, - Package->RetInfo.ObjectType2, Package->RetInfo.Count2, 0); + Package->RetInfo.ObjectType1, Package->RetInfo.Count1, + Package->RetInfo.ObjectType2, Package->RetInfo.Count2, 0); break; case ACPI_PTYPE1_VAR: @@ -255,7 +255,7 @@ AcpiNsCheckPackage ( for (i = 0; i < Count; i++) { Status = AcpiNsCheckObjectType (Info, Elements, - Package->RetInfo.ObjectType1, i); + Package->RetInfo.ObjectType1, i); if (ACPI_FAILURE (Status)) { return (Status); @@ -287,7 +287,7 @@ AcpiNsCheckPackage ( /* These are the required package elements (0, 1, or 2) */ Status = AcpiNsCheckObjectType (Info, Elements, - Package->RetInfo3.ObjectType[i], i); + Package->RetInfo3.ObjectType[i], i); if (ACPI_FAILURE (Status)) { return (Status); @@ -298,7 +298,7 @@ AcpiNsCheckPackage ( /* These are the optional package elements */ Status = AcpiNsCheckObjectType (Info, Elements, - Package->RetInfo3.TailObjectType, i); + Package->RetInfo3.TailObjectType, i); if (ACPI_FAILURE (Status)) { return (Status); @@ -312,8 +312,8 @@ AcpiNsCheckPackage ( /* First element is the (Integer) revision */ - Status = AcpiNsCheckObjectType (Info, Elements, - ACPI_RTYPE_INTEGER, 0); + Status = AcpiNsCheckObjectType ( + Info, Elements, ACPI_RTYPE_INTEGER, 0); if (ACPI_FAILURE (Status)) { return (Status); @@ -331,8 +331,8 @@ AcpiNsCheckPackage ( /* First element is the (Integer) count of subpackages to follow */ - Status = AcpiNsCheckObjectType (Info, Elements, - ACPI_RTYPE_INTEGER, 0); + Status = AcpiNsCheckObjectType ( + Info, Elements, ACPI_RTYPE_INTEGER, 0); if (ACPI_FAILURE (Status)) { return (Status); @@ -375,7 +375,8 @@ AcpiNsCheckPackage ( { /* Create the new outer package and populate it */ - Status = AcpiNsWrapWithPackage (Info, ReturnObject, ReturnObjectPtr); + Status = AcpiNsWrapWithPackage ( + Info, ReturnObject, ReturnObjectPtr); if (ACPI_FAILURE (Status)) { return (Status); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsrepair.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsrepair.c index fbb9c7efdb..867b4b4155 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsrepair.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsrepair.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -186,6 +186,11 @@ static const ACPI_SIMPLE_REPAIR_INFO AcpiObjectRepairInfo[] = ACPI_NOT_PACKAGE_ELEMENT, AcpiNsConvertToResource }, + /* Object reference conversions */ + + { "_DEP", ACPI_RTYPE_STRING, ACPI_ALL_PACKAGE_ELEMENTS, + AcpiNsConvertToReference }, + /* Unicode conversions */ { "_MLS", ACPI_RTYPE_STRING, 1, @@ -246,7 +251,8 @@ AcpiNsSimpleRepair ( ACPI_WARN_ALWAYS, "Missing expected return value")); } - Status = Predefined->ObjectConverter (ReturnObject, &NewObject); + Status = Predefined->ObjectConverter (Info->Node, ReturnObject, + &NewObject); if (ACPI_FAILURE (Status)) { /* A fatal error occurred during a conversion */ @@ -294,7 +300,7 @@ AcpiNsSimpleRepair ( ACPI_WARN_ALWAYS, "Found unexpected NULL package element")); Status = AcpiNsRepairNullElement (Info, ExpectedBtypes, - PackageIndex, ReturnObjectPtr); + PackageIndex, ReturnObjectPtr); if (ACPI_SUCCESS (Status)) { return (AE_OK); /* Repair was successful */ @@ -445,13 +451,15 @@ AcpiNsMatchSimpleRepair ( /* Check if we can actually repair this name/type combination */ if ((ReturnBtype & ThisName->UnexpectedBtypes) && - (PackageIndex == ThisName->PackageIndex)) + (ThisName->PackageIndex == ACPI_ALL_PACKAGE_ELEMENTS || + PackageIndex == ThisName->PackageIndex)) { return (ThisName); } return (NULL); } + ThisName++; } @@ -536,11 +544,13 @@ AcpiNsRepairNullElement ( /* Set the reference count according to the parent Package object */ - NewObject->Common.ReferenceCount = Info->ParentPackage->Common.ReferenceCount; + NewObject->Common.ReferenceCount = + Info->ParentPackage->Common.ReferenceCount; ACPI_DEBUG_PRINT ((ACPI_DB_REPAIR, "%s: Converted NULL package element to expected %s at index %u\n", - Info->FullPathname, AcpiUtGetObjectTypeName (NewObject), PackageIndex)); + Info->FullPathname, AcpiUtGetObjectTypeName (NewObject), + PackageIndex)); *ReturnObjectPtr = NewObject; Info->ReturnFlags |= ACPI_OBJECT_REPAIRED; @@ -623,6 +633,7 @@ AcpiNsRemoveNullElements ( *Dest = *Source; Dest++; } + Source++; } @@ -679,8 +690,8 @@ AcpiNsWrapWithPackage ( /* - * Create the new outer package and populate it. The new package will - * have a single element, the lone sub-object. + * Create the new outer package and populate it. The new + * package will have a single element, the lone sub-object. */ PkgObjDesc = AcpiUtCreatePackageObject (1); if (!PkgObjDesc) diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsrepair2.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsrepair2.c index a252d41f38..d5bb43904e 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsrepair2.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsrepair2.c @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -326,6 +326,7 @@ AcpiNsMatchComplexRepair ( { return (ThisName); } + ThisName++; } @@ -358,7 +359,7 @@ AcpiNsRepair_ALR ( Status = AcpiNsCheckSortedList (Info, ReturnObject, 0, 2, 1, - ACPI_SORT_ASCENDING, "AmbientIlluminance"); + ACPI_SORT_ASCENDING, "AmbientIlluminance"); return (Status); } @@ -411,7 +412,8 @@ AcpiNsRepair_FDE ( if (ReturnObject->Buffer.Length != ACPI_FDE_BYTE_BUFFER_SIZE) { - ACPI_WARN_PREDEFINED ((AE_INFO, Info->FullPathname, Info->NodeFlags, + ACPI_WARN_PREDEFINED ((AE_INFO, + Info->FullPathname, Info->NodeFlags, "Incorrect return buffer length %u, expected %u", ReturnObject->Buffer.Length, ACPI_FDE_DWORD_BUFFER_SIZE)); @@ -420,7 +422,8 @@ AcpiNsRepair_FDE ( /* Create the new (larger) buffer object */ - BufferObject = AcpiUtCreateBufferObject (ACPI_FDE_DWORD_BUFFER_SIZE); + BufferObject = AcpiUtCreateBufferObject ( + ACPI_FDE_DWORD_BUFFER_SIZE); if (!BufferObject) { return (AE_NO_MEMORY); @@ -429,7 +432,8 @@ AcpiNsRepair_FDE ( /* Expand each byte to a DWORD */ ByteBuffer = ReturnObject->Buffer.Pointer; - DwordBuffer = ACPI_CAST_PTR (UINT32, BufferObject->Buffer.Pointer); + DwordBuffer = ACPI_CAST_PTR (UINT32, + BufferObject->Buffer.Pointer); for (i = 0; i < ACPI_FDE_FIELD_COUNT; i++) { @@ -582,7 +586,8 @@ AcpiNsRepair_CST ( if ((*OuterElements)->Package.Count == 0) { - ACPI_WARN_PREDEFINED ((AE_INFO, Info->FullPathname, Info->NodeFlags, + ACPI_WARN_PREDEFINED ((AE_INFO, + Info->FullPathname, Info->NodeFlags, "SubPackage[%u] - removing entry due to zero count", i)); Removing = TRUE; goto RemoveElement; @@ -591,7 +596,8 @@ AcpiNsRepair_CST ( ObjDesc = (*OuterElements)->Package.Elements[1]; /* Index1 = Type */ if ((UINT32) ObjDesc->Integer.Value == 0) { - ACPI_WARN_PREDEFINED ((AE_INFO, Info->FullPathname, Info->NodeFlags, + ACPI_WARN_PREDEFINED ((AE_INFO, + Info->FullPathname, Info->NodeFlags, "SubPackage[%u] - removing entry due to invalid Type(0)", i)); Removing = TRUE; } @@ -618,7 +624,7 @@ RemoveElement: * C-state type, in ascending order. */ Status = AcpiNsCheckSortedList (Info, ReturnObject, 1, 4, 1, - ACPI_SORT_ASCENDING, "C-State Type"); + ACPI_SORT_ASCENDING, "C-State Type"); if (ACPI_FAILURE (Status)) { return (Status); @@ -666,7 +672,8 @@ AcpiNsRepair_HID ( if (ReturnObject->String.Length == 0) { - ACPI_WARN_PREDEFINED ((AE_INFO, Info->FullPathname, Info->NodeFlags, + ACPI_WARN_PREDEFINED ((AE_INFO, + Info->FullPathname, Info->NodeFlags, "Invalid zero-length _HID or _CID string")); /* Return AE_OK anyway, let driver handle it */ @@ -828,8 +835,8 @@ AcpiNsRepair_PSS ( * incorrectly sorted, sort it. We sort by CpuFrequency, since this * should be proportional to the power. */ - Status =AcpiNsCheckSortedList (Info, ReturnObject, 0, 6, 0, - ACPI_SORT_DESCENDING, "CpuFrequency"); + Status = AcpiNsCheckSortedList (Info, ReturnObject, 0, 6, 0, + ACPI_SORT_DESCENDING, "CpuFrequency"); if (ACPI_FAILURE (Status)) { return (Status); @@ -850,7 +857,8 @@ AcpiNsRepair_PSS ( if ((UINT32) ObjDesc->Integer.Value > PreviousValue) { - ACPI_WARN_PREDEFINED ((AE_INFO, Info->FullPathname, Info->NodeFlags, + ACPI_WARN_PREDEFINED ((AE_INFO, + Info->FullPathname, Info->NodeFlags, "SubPackage[%u,%u] - suspicious power dissipation values", i-1, i)); } @@ -904,7 +912,7 @@ AcpiNsRepair_TSS ( } Status = AcpiNsCheckSortedList (Info, ReturnObject, 0, 5, 1, - ACPI_SORT_DESCENDING, "PowerDissipation"); + ACPI_SORT_DESCENDING, "PowerDissipation"); return (Status); } @@ -1136,6 +1144,7 @@ AcpiNsRemoveElement ( *Dest = *Source; Dest++; } + Source++; } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nssearch.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nssearch.c index 060b10cc81..92948f4efe 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nssearch.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nssearch.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -184,7 +184,7 @@ AcpiNsSearchOneScope ( { char *ScopeName; - ScopeName = AcpiNsGetExternalPathname (ParentNode); + ScopeName = AcpiNsGetNormalizedPathname (ParentNode, TRUE); if (ScopeName) { ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, @@ -320,7 +320,7 @@ AcpiNsSearchParentTree ( * the actual name we are searching for. Typechecking comes later. */ Status = AcpiNsSearchOneScope ( - TargetName, ParentNode, ACPI_TYPE_ANY, ReturnNode); + TargetName, ParentNode, ACPI_TYPE_ANY, ReturnNode); if (ACPI_SUCCESS (Status)) { return_ACPI_STATUS (Status); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsutils.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsutils.c index acee74970b..478449789f 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsutils.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsutils.c @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -268,9 +268,10 @@ AcpiNsGetInternalNameLength ( Info->FullyQualified = FALSE; /* - * For the internal name, the required length is 4 bytes per segment, plus - * 1 each for RootPrefix, MultiNamePrefixOp, segment count, trailing null - * (which is not really needed, but no there's harm in putting it there) + * For the internal name, the required length is 4 bytes per segment, + * plus 1 each for RootPrefix, MultiNamePrefixOp, segment count, + * trailing null (which is not really needed, but no there's harm in + * putting it there) * * strlen() + 1 covers the first NameSeg, which has no path separator */ @@ -315,7 +316,7 @@ AcpiNsGetInternalNameLength ( } Info->Length = (ACPI_NAME_SIZE * Info->NumSegments) + - 4 + Info->NumCarats; + 4 + Info->NumCarats; Info->NextExternalChar = NextExternalChar; } @@ -646,7 +647,7 @@ AcpiNsExternalizeName ( * punctuation ('.') between object names, plus the NULL terminator. */ RequiredLength = PrefixLength + (4 * NumSegments) + - ((NumSegments > 0) ? (NumSegments - 1) : 0) + 1; + ((NumSegments > 0) ? (NumSegments - 1) : 0) + 1; /* * Check to see if we're still in bounds. If not, there's a problem @@ -684,7 +685,8 @@ AcpiNsExternalizeName ( /* Copy and validate the 4-char name segment */ - ACPI_MOVE_NAME (&(*ConvertedName)[j], &InternalName[NamesIndex]); + ACPI_MOVE_NAME (&(*ConvertedName)[j], + &InternalName[NamesIndex]); AcpiUtRepairName (&(*ConvertedName)[j]); j += ACPI_NAME_SIZE; @@ -885,6 +887,7 @@ AcpiNsGetNode ( { *ReturnNode = AcpiGbl_RootNode; } + return_ACPI_STATUS (AE_OK); } @@ -919,12 +922,12 @@ AcpiNsGetNode ( /* Lookup the name in the namespace */ Status = AcpiNsLookup (&ScopeInfo, InternalPath, ACPI_TYPE_ANY, - ACPI_IMODE_EXECUTE, (Flags | ACPI_NS_DONT_OPEN_SCOPE), - NULL, ReturnNode); + ACPI_IMODE_EXECUTE, (Flags | ACPI_NS_DONT_OPEN_SCOPE), + NULL, ReturnNode); if (ACPI_FAILURE (Status)) { ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "%s, %s\n", - Pathname, AcpiFormatException (Status))); + Pathname, AcpiFormatException (Status))); } (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nswalk.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nswalk.c index aa23760ff1..6781b76f08 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nswalk.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nswalk.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -290,10 +290,10 @@ AcpiNsWalkNamespace ( /* Null child means "get first node" */ - ParentNode = StartNode; - ChildNode = AcpiNsGetNextNode (ParentNode, NULL); - ChildType = ACPI_TYPE_ANY; - Level = 1; + ParentNode = StartNode; + ChildNode = AcpiNsGetNextNode (ParentNode, NULL); + ChildType = ACPI_TYPE_ANY; + Level = 1; /* * Traverse the tree of nodes until we bubble back up to where we @@ -351,7 +351,7 @@ AcpiNsWalkNamespace ( if (DescendingCallback) { Status = DescendingCallback (ChildNode, Level, - Context, ReturnValue); + Context, ReturnValue); } } else @@ -359,7 +359,7 @@ AcpiNsWalkNamespace ( if (AscendingCallback) { Status = AscendingCallback (ChildNode, Level, - Context, ReturnValue); + Context, ReturnValue); } } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsxfeval.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsxfeval.c index 06328a6123..23c4374144 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsxfeval.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsxfeval.c @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -504,13 +504,13 @@ AcpiEvaluateObject ( /* Get the size of the returned object */ Status = AcpiUtGetObjectSize (Info->ReturnObject, - &BufferSpaceNeeded); + &BufferSpaceNeeded); if (ACPI_SUCCESS (Status)) { /* Validate/Allocate/Clear caller buffer */ Status = AcpiUtInitializeBuffer (ReturnBuffer, - BufferSpaceNeeded); + BufferSpaceNeeded); if (ACPI_FAILURE (Status)) { /* @@ -526,8 +526,8 @@ AcpiEvaluateObject ( { /* We have enough space for the object, build it */ - Status = AcpiUtCopyIobjectToEobject (Info->ReturnObject, - ReturnBuffer); + Status = AcpiUtCopyIobjectToEobject ( + Info->ReturnObject, ReturnBuffer); } } } @@ -740,8 +740,8 @@ AcpiWalkNamespace ( } Status = AcpiNsWalkNamespace (Type, StartObject, MaxDepth, - ACPI_NS_WALK_UNLOCK, DescendingCallback, - AscendingCallback, Context, ReturnValue); + ACPI_NS_WALK_UNLOCK, DescendingCallback, + AscendingCallback, Context, ReturnValue); UnlockAndExit2: (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); @@ -892,8 +892,8 @@ AcpiNsGetDeviceCallback ( /* We have a valid device, invoke the user function */ - Status = Info->UserFunction (ObjHandle, NestingLevel, Info->Context, - ReturnValue); + Status = Info->UserFunction (ObjHandle, NestingLevel, + Info->Context, ReturnValue); return (Status); } @@ -948,8 +948,8 @@ AcpiGetDevices ( * We're going to call their callback from OUR callback, so we need * to know what it is, and their context parameter. */ - Info.Hid = HID; - Info.Context = Context; + Info.Hid = HID; + Info.Context = Context; Info.UserFunction = UserFunction; /* @@ -965,8 +965,8 @@ AcpiGetDevices ( } Status = AcpiNsWalkNamespace (ACPI_TYPE_DEVICE, ACPI_ROOT_OBJECT, - ACPI_UINT32_MAX, ACPI_NS_WALK_UNLOCK, - AcpiNsGetDeviceCallback, NULL, &Info, ReturnValue); + ACPI_UINT32_MAX, ACPI_NS_WALK_UNLOCK, + AcpiNsGetDeviceCallback, NULL, &Info, ReturnValue); (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); return_ACPI_STATUS (Status); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsxfname.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsxfname.c index 51cc4f4802..9ccdc64138 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsxfname.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsxfname.c @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -249,7 +249,7 @@ AcpiGetName ( { ACPI_STATUS Status; ACPI_NAMESPACE_NODE *Node; - char *NodeName; + const char *NodeName; /* Parameter validation */ @@ -271,7 +271,7 @@ AcpiGetName ( /* Get the full pathname (From the namespace root) */ Status = AcpiNsHandleToPathname (Handle, Buffer, - NameType == ACPI_FULL_PATHNAME ? FALSE : TRUE); + NameType == ACPI_FULL_PATHNAME ? FALSE : TRUE); return (Status); } @@ -337,7 +337,6 @@ AcpiNsCopyDeviceId ( ACPI_PNP_DEVICE_ID *Source, char *StringArea) { - /* Create the destination PNP_DEVICE_ID */ Dest->String = StringArea; @@ -363,11 +362,18 @@ AcpiNsCopyDeviceId ( * namespace node and possibly by running several standard * control methods (Such as in the case of a device.) * - * For Device and Processor objects, run the Device _HID, _UID, _CID, _SUB, - * _CLS, _STA, _ADR, _SxW, and _SxD methods. + * For Device and Processor objects, run the Device _HID, _UID, _CID, _STA, + * _CLS, _ADR, _SxW, and _SxD methods. * * Note: Allocates the return buffer, must be freed by the caller. * + * Note: This interface is intended to be used during the initial device + * discovery namespace traversal. Therefore, no complex methods can be + * executed, especially those that access operation regions. Therefore, do + * not add any additional methods that could cause problems in this area. + * this was the fate of the _SUB method which was found to cause such + * problems and was removed (11/2015). + * ******************************************************************************/ ACPI_STATUS @@ -380,7 +386,6 @@ AcpiGetObjectInfo ( ACPI_PNP_DEVICE_ID_LIST *CidList = NULL; ACPI_PNP_DEVICE_ID *Hid = NULL; ACPI_PNP_DEVICE_ID *Uid = NULL; - ACPI_PNP_DEVICE_ID *Sub = NULL; ACPI_PNP_DEVICE_ID *Cls = NULL; char *NextIdString; ACPI_OBJECT_TYPE Type; @@ -434,7 +439,7 @@ AcpiGetObjectInfo ( { /* * Get extra info for ACPI Device/Processor objects only: - * Run the Device _HID, _UID, _SUB, _CID, and _CLS methods. + * Run the Device _HID, _UID, _CLS, and _CID methods. * * Note: none of these methods are required, so they may or may * not be present for this device. The Info->Valid bitfield is used @@ -459,15 +464,6 @@ AcpiGetObjectInfo ( Valid |= ACPI_VALID_UID; } - /* Execute the Device._SUB method */ - - Status = AcpiUtExecute_SUB (Node, &Sub); - if (ACPI_SUCCESS (Status)) - { - InfoSize += Sub->Length; - Valid |= ACPI_VALID_SUB; - } - /* Execute the Device._CID method */ Status = AcpiUtExecute_CID (Node, &CidList); @@ -530,7 +526,7 @@ AcpiGetObjectInfo ( /* Execute the Device._ADR method */ Status = AcpiUtEvaluateNumericObject (METHOD_NAME__ADR, Node, - &Info->Address); + &Info->Address); if (ACPI_SUCCESS (Status)) { Valid |= ACPI_VALID_ADR; @@ -539,8 +535,8 @@ AcpiGetObjectInfo ( /* Execute the Device._SxW methods */ Status = AcpiUtExecutePowerMethods (Node, - AcpiGbl_LowestDstateNames, ACPI_NUM_SxW_METHODS, - Info->LowestDstates); + AcpiGbl_LowestDstateNames, ACPI_NUM_SxW_METHODS, + Info->LowestDstates); if (ACPI_SUCCESS (Status)) { Valid |= ACPI_VALID_SXWS; @@ -549,8 +545,8 @@ AcpiGetObjectInfo ( /* Execute the Device._SxD methods */ Status = AcpiUtExecutePowerMethods (Node, - AcpiGbl_HighestDstateNames, ACPI_NUM_SxD_METHODS, - Info->HighestDstates); + AcpiGbl_HighestDstateNames, ACPI_NUM_SxD_METHODS, + Info->HighestDstates); if (ACPI_SUCCESS (Status)) { Valid |= ACPI_VALID_SXDS; @@ -570,9 +566,8 @@ AcpiGetObjectInfo ( } /* - * Copy the HID, UID, SUB, and CIDs to the return buffer. - * The variable-length strings are copied to the reserved area - * at the end of the buffer. + * Copy the HID, UID, and CIDs to the return buffer. The variable-length + * strings are copied to the reserved area at the end of the buffer. * * For HID and CID, check if the ID is a PCI Root Bridge. */ @@ -593,12 +588,6 @@ AcpiGetObjectInfo ( Uid, NextIdString); } - if (Sub) - { - NextIdString = AcpiNsCopyDeviceId (&Info->SubsystemId, - Sub, NextIdString); - } - if (CidList) { Info->CompatibleIdList.Count = CidList->Count; @@ -645,10 +634,6 @@ Cleanup: { ACPI_FREE (Uid); } - if (Sub) - { - ACPI_FREE (Sub); - } if (CidList) { ACPI_FREE (CidList); @@ -724,6 +709,7 @@ AcpiInstallMethod ( ParserState.Aml += AcpiPsGetOpcodeSize (Opcode); ParserState.PkgEnd = AcpiPsGetNextPackageEnd (&ParserState); Path = AcpiPsGetNextNamestring (&ParserState); + MethodFlags = *ParserState.Aml++; AmlStart = ParserState.Aml; AmlLength = ACPI_PTR_DIFF (ParserState.PkgEnd, AmlStart); @@ -756,7 +742,7 @@ AcpiInstallMethod ( /* The lookup either returns an existing node or creates a new one */ Status = AcpiNsLookup (NULL, Path, ACPI_TYPE_METHOD, ACPI_IMODE_LOAD_PASS1, - ACPI_NS_DONT_OPEN_SCOPE | ACPI_NS_ERROR_IF_FOUND, NULL, &Node); + ACPI_NS_DONT_OPEN_SCOPE | ACPI_NS_ERROR_IF_FOUND, NULL, &Node); (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsxfobj.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsxfobj.c index 2ca409fcad..ca34fa9b9d 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsxfobj.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsxfobj.c @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -153,10 +153,8 @@ AcpiGetType ( return (AE_BAD_PARAMETER); } - /* - * Special case for the predefined Root Node - * (return type ANY) - */ + /* Special case for the predefined Root Node (return type ANY) */ + if (Handle == ACPI_ROOT_OBJECT) { *RetType = ACPI_TYPE_ANY; @@ -180,7 +178,6 @@ AcpiGetType ( *RetType = Node->Type; - Status = AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); return (Status); } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psargs.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psargs.c index cbb24a9f89..c5a8b099fd 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psargs.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psargs.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -359,8 +359,8 @@ AcpiPsGetNextNamepath ( * the upsearch) */ Status = AcpiNsLookup (WalkState->ScopeInfo, Path, - ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE, - ACPI_NS_SEARCH_PARENT | ACPI_NS_DONT_OPEN_SCOPE, NULL, &Node); + ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE, + ACPI_NS_SEARCH_PARENT | ACPI_NS_DONT_OPEN_SCOPE, NULL, &Node); /* * If this name is a control method invocation, we must @@ -370,7 +370,7 @@ AcpiPsGetNextNamepath ( PossibleMethodCall && (Node->Type == ACPI_TYPE_METHOD)) { - if (WalkState->Opcode == AML_UNLOAD_OP) + if (GET_CURRENT_ARG_TYPE (WalkState->ArgTypes) == ARGP_SUPERNAME) { /* * AcpiPsGetNextNamestring has increased the AML pointer, @@ -431,7 +431,7 @@ AcpiPsGetNextNamepath ( /* 1) NotFound is ok during load pass 1/2 (allow forward references) */ if ((WalkState->ParseFlags & ACPI_PARSE_MODE_MASK) != - ACPI_PARSE_EXECUTE) + ACPI_PARSE_EXECUTE) { Status = AE_OK; } @@ -463,7 +463,7 @@ AcpiPsGetNextNamepath ( ACPI_ERROR_NAMESPACE (Path, Status); if ((WalkState->ParseFlags & ACPI_PARSE_MODE_MASK) == - ACPI_PARSE_EXECUTE) + ACPI_PARSE_EXECUTE) { /* Report a control method execution error */ @@ -816,7 +816,7 @@ AcpiPsGetNextField ( * * PARAMETERS: WalkState - Current state * ParserState - Current parser state object - * ArgType - The argument type (AML_*_ARG) + * ArgType - The parser argument type (ARGP_*) * ReturnArg - Where the next arg is returned * * RETURN: Status, and an op object containing the next argument. @@ -859,6 +859,7 @@ AcpiPsGetNextArg ( { return_ACPI_STATUS (AE_NO_MEMORY); } + AcpiPsGetNextSimpleArg (ParserState, ArgType, Arg); break; @@ -907,7 +908,7 @@ AcpiPsGetNextArg ( /* Non-empty list */ Arg = AcpiPsAllocOp (AML_INT_BYTELIST_OP, - ParserState->Aml); + ParserState->Aml); if (!Arg) { return_ACPI_STATUS (AE_NO_MEMORY); @@ -928,6 +929,7 @@ AcpiPsGetNextArg ( case ARGP_TARGET: case ARGP_SUPERNAME: case ARGP_SIMPLENAME: + case ARGP_NAME_OR_REF: Subop = AcpiPsPeekOpcode (ParserState); if (Subop == 0 || @@ -943,15 +945,16 @@ AcpiPsGetNextArg ( return_ACPI_STATUS (AE_NO_MEMORY); } - /* To support SuperName arg of Unload */ + /* SuperName allows argument to be a method call */ - if (WalkState->Opcode == AML_UNLOAD_OP) + if (ArgType == ARGP_SUPERNAME) { - Status = AcpiPsGetNextNamepath (WalkState, ParserState, Arg, 1); + Status = AcpiPsGetNextNamepath (WalkState, ParserState, + Arg, ACPI_POSSIBLE_METHOD_CALL); /* - * If the SuperName arg of Unload is a method call, - * we have restored the AML pointer, just free this Arg + * If the SuperName argument is a method call, we have + * already restored the AML pointer, just free this Arg */ if (Arg->Common.AmlOpcode == AML_INT_METHODCALL_OP) { @@ -961,7 +964,8 @@ AcpiPsGetNextArg ( } else { - Status = AcpiPsGetNextNamepath (WalkState, ParserState, Arg, 0); + Status = AcpiPsGetNextNamepath (WalkState, ParserState, + Arg, ACPI_NOT_METHOD_CALL); } } else diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psloop.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psloop.c index bd7166fa56..393becf489 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psloop.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psloop.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -192,7 +192,8 @@ AcpiPsGetArguments ( case AML_INT_NAMEPATH_OP: /* AML_NAMESTRING_ARG */ - Status = AcpiPsGetNextNamepath (WalkState, &(WalkState->ParserState), Op, 1); + Status = AcpiPsGetNextNamepath (WalkState, + &(WalkState->ParserState), Op, ACPI_POSSIBLE_METHOD_CALL); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -205,12 +206,13 @@ AcpiPsGetArguments ( /* * Op is not a constant or string, append each argument to the Op */ - while (GET_CURRENT_ARG_TYPE (WalkState->ArgTypes) && !WalkState->ArgCount) + while (GET_CURRENT_ARG_TYPE (WalkState->ArgTypes) && + !WalkState->ArgCount) { WalkState->Aml = WalkState->ParserState.Aml; Status = AcpiPsGetNextArg (WalkState, &(WalkState->ParserState), - GET_CURRENT_ARG_TYPE (WalkState->ArgTypes), &Arg); + GET_CURRENT_ARG_TYPE (WalkState->ArgTypes), &Arg); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -622,7 +624,7 @@ AcpiPsParseLoop ( * prepare for argument */ Status = AcpiPsPushScope (ParserState, Op, - WalkState->ArgTypes, WalkState->ArgCount); + WalkState->ArgTypes, WalkState->ArgCount); if (ACPI_FAILURE (Status)) { Status = AcpiPsCompleteOp (WalkState, &Op, Status); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psobject.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psobject.c index 77e94345a8..adce94cf79 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psobject.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psobject.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -181,7 +181,7 @@ AcpiPsGetAmlOpcode ( if (WalkState->PassNumber == 2) { AmlOffset = (UINT32) ACPI_PTR_DIFF (WalkState->Aml, - WalkState->ParserState.AmlStart); + WalkState->ParserState.AmlStart); ACPI_ERROR ((AE_INFO, "Unknown opcode 0x%.2X at table offset 0x%.4X, ignoring", @@ -223,7 +223,8 @@ AcpiPsGetAmlOpcode ( /* Found opcode info, this is a normal opcode */ - WalkState->ParserState.Aml += AcpiPsGetOpcodeSize (WalkState->Opcode); + WalkState->ParserState.Aml += + AcpiPsGetOpcodeSize (WalkState->Opcode); WalkState->ArgTypes = WalkState->OpInfo->ParseArgs; break; } @@ -273,7 +274,7 @@ AcpiPsBuildNamedOp ( (GET_CURRENT_ARG_TYPE (WalkState->ArgTypes) != ARGP_NAME)) { Status = AcpiPsGetNextArg (WalkState, &(WalkState->ParserState), - GET_CURRENT_ARG_TYPE (WalkState->ArgTypes), &Arg); + GET_CURRENT_ARG_TYPE (WalkState->ArgTypes), &Arg); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psopcode.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psopcode.c index 41181c61b0..88e68d12cc 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psopcode.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psopcode.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -317,7 +317,7 @@ const ACPI_OPCODE_INFO AcpiGbl_AmlOpInfo[AML_NUM_OPCODES] = /* 34 */ ACPI_OP ("CreateWordField", ARGP_CREATE_WORD_FIELD_OP, ARGI_CREATE_WORD_FIELD_OP, ACPI_TYPE_BUFFER_FIELD, AML_CLASS_CREATE, AML_TYPE_CREATE_FIELD, AML_HAS_ARGS | AML_NSOBJECT | AML_NSNODE | AML_DEFER | AML_CREATE), /* 35 */ ACPI_OP ("CreateByteField", ARGP_CREATE_BYTE_FIELD_OP, ARGI_CREATE_BYTE_FIELD_OP, ACPI_TYPE_BUFFER_FIELD, AML_CLASS_CREATE, AML_TYPE_CREATE_FIELD, AML_HAS_ARGS | AML_NSOBJECT | AML_NSNODE | AML_DEFER | AML_CREATE), /* 36 */ ACPI_OP ("CreateBitField", ARGP_CREATE_BIT_FIELD_OP, ARGI_CREATE_BIT_FIELD_OP, ACPI_TYPE_BUFFER_FIELD, AML_CLASS_CREATE, AML_TYPE_CREATE_FIELD, AML_HAS_ARGS | AML_NSOBJECT | AML_NSNODE | AML_DEFER | AML_CREATE), -/* 37 */ ACPI_OP ("ObjectType", ARGP_TYPE_OP, ARGI_TYPE_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_1R, AML_FLAGS_EXEC_1A_0T_1R | AML_NO_OPERAND_RESOLVE), +/* 37 */ ACPI_OP ("ObjectType", ARGP_OBJECT_TYPE_OP, ARGI_OBJECT_TYPE_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_1R, AML_FLAGS_EXEC_1A_0T_1R | AML_NO_OPERAND_RESOLVE), /* 38 */ ACPI_OP ("LAnd", ARGP_LAND_OP, ARGI_LAND_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_0T_1R, AML_FLAGS_EXEC_2A_0T_1R | AML_LOGICAL_NUMERIC | AML_CONSTANT), /* 39 */ ACPI_OP ("LOr", ARGP_LOR_OP, ARGI_LOR_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_0T_1R, AML_FLAGS_EXEC_2A_0T_1R | AML_LOGICAL_NUMERIC | AML_CONSTANT), /* 3A */ ACPI_OP ("LNot", ARGP_LNOT_OP, ARGI_LNOT_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_1R, AML_FLAGS_EXEC_1A_0T_1R | AML_CONSTANT), diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psopinfo.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psopinfo.c index 4a26ae7bcb..6556d05f60 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psopinfo.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psopinfo.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psparse.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psparse.c index 599a766e56..68281bd5ab 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psparse.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psparse.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -272,8 +272,8 @@ AcpiPsCompleteThisOp ( * These opcodes contain TermArg operands. The current * op must be replaced by a placeholder return op */ - ReplacementOp = AcpiPsAllocOp (AML_INT_RETURN_VALUE_OP, - Op->Common.Aml); + ReplacementOp = AcpiPsAllocOp ( + AML_INT_RETURN_VALUE_OP, Op->Common.Aml); if (!ReplacementOp) { Status = AE_NO_MEMORY; @@ -292,8 +292,8 @@ AcpiPsCompleteThisOp ( (Op->Common.Parent->Common.AmlOpcode == AML_BANK_FIELD_OP) || (Op->Common.Parent->Common.AmlOpcode == AML_VAR_PACKAGE_OP)) { - ReplacementOp = AcpiPsAllocOp (AML_INT_RETURN_VALUE_OP, - Op->Common.Aml); + ReplacementOp = AcpiPsAllocOp ( + AML_INT_RETURN_VALUE_OP, Op->Common.Aml); if (!ReplacementOp) { Status = AE_NO_MEMORY; @@ -307,7 +307,7 @@ AcpiPsCompleteThisOp ( (Op->Common.AmlOpcode == AML_VAR_PACKAGE_OP)) { ReplacementOp = AcpiPsAllocOp (Op->Common.AmlOpcode, - Op->Common.Aml); + Op->Common.Aml); if (!ReplacementOp) { Status = AE_NO_MEMORY; @@ -323,8 +323,8 @@ AcpiPsCompleteThisOp ( default: - ReplacementOp = AcpiPsAllocOp (AML_INT_RETURN_VALUE_OP, - Op->Common.Aml); + ReplacementOp = AcpiPsAllocOp ( + AML_INT_RETURN_VALUE_OP, Op->Common.Aml); if (!ReplacementOp) { Status = AE_NO_MEMORY; @@ -339,11 +339,11 @@ AcpiPsCompleteThisOp ( if (ReplacementOp) { - ReplacementOp->Common.Parent = Op->Common.Parent; - ReplacementOp->Common.Value.Arg = NULL; - ReplacementOp->Common.Node = Op->Common.Node; + ReplacementOp->Common.Parent = Op->Common.Parent; + ReplacementOp->Common.Value.Arg = NULL; + ReplacementOp->Common.Node = Op->Common.Node; Op->Common.Parent->Common.Value.Arg = ReplacementOp; - ReplacementOp->Common.Next = Op->Common.Next; + ReplacementOp->Common.Next = Op->Common.Next; } else { @@ -362,11 +362,11 @@ AcpiPsCompleteThisOp ( { if (ReplacementOp) { - ReplacementOp->Common.Parent = Op->Common.Parent; + ReplacementOp->Common.Parent = Op->Common.Parent; ReplacementOp->Common.Value.Arg = NULL; - ReplacementOp->Common.Node = Op->Common.Node; - Prev->Common.Next = ReplacementOp; - ReplacementOp->Common.Next = Op->Common.Next; + ReplacementOp->Common.Node = Op->Common.Node; + Prev->Common.Next = ReplacementOp; + ReplacementOp->Common.Next = Op->Common.Next; Next = NULL; } else @@ -566,7 +566,8 @@ AcpiPsParseAml ( */ if (WalkState->MethodDesc) { - WalkState->Thread->CurrentSyncLevel = WalkState->MethodDesc->Method.SyncLevel; + WalkState->Thread->CurrentSyncLevel = + WalkState->MethodDesc->Method.SyncLevel; } AcpiDsPushWalkState (WalkState, Thread); @@ -612,8 +613,8 @@ AcpiPsParseAml ( } /* - * If the transfer to the new method method call worked, a new walk - * state was created -- get it + * If the transfer to the new method method call worked + *, a new walk state was created -- get it */ WalkState = AcpiDsGetCurrentWalkState (Thread); continue; @@ -632,7 +633,8 @@ AcpiPsParseAml ( /* Check for possible multi-thread reentrancy problem */ if ((Status == AE_ALREADY_EXISTS) && - (!(WalkState->MethodDesc->Method.InfoFlags & ACPI_METHOD_SERIALIZED))) + (!(WalkState->MethodDesc->Method.InfoFlags & + ACPI_METHOD_SERIALIZED))) { /* * Method is not serialized and tried to create an object @@ -658,7 +660,8 @@ AcpiPsParseAml ( * encountered an error during the method parse phase, there's lots of * cleanup to do */ - if (((WalkState->ParseFlags & ACPI_PARSE_MODE_MASK) == ACPI_PARSE_EXECUTE) || + if (((WalkState->ParseFlags & ACPI_PARSE_MODE_MASK) == + ACPI_PARSE_EXECUTE) || (ACPI_FAILURE (Status))) { AcpiDsTerminateControlMethod (WalkState->MethodDesc, WalkState); @@ -705,7 +708,7 @@ AcpiPsParseAml ( /* Restart the calling control method */ Status = AcpiDsRestartControlMethod (WalkState, - PreviousWalkState->ImplicitReturnObj); + PreviousWalkState->ImplicitReturnObj); } else { @@ -716,7 +719,7 @@ AcpiPsParseAml ( AcpiDsClearImplicitReturn (PreviousWalkState); Status = AcpiDsRestartControlMethod (WalkState, - PreviousWalkState->ReturnDesc); + PreviousWalkState->ReturnDesc); } if (ACPI_SUCCESS (Status)) { diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psscope.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psscope.c index f44ea48897..3536ed6e43 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psscope.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psscope.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -308,9 +308,9 @@ AcpiPsPopScope ( /* Return to parsing previous op */ - *Op = Scope->ParseScope.Op; - *ArgList = Scope->ParseScope.ArgList; - *ArgCount = Scope->ParseScope.ArgCount; + *Op = Scope->ParseScope.Op; + *ArgList = Scope->ParseScope.ArgList; + *ArgCount = Scope->ParseScope.ArgCount; ParserState->PkgEnd = Scope->ParseScope.PkgEnd; /* All done with this scope state structure */ @@ -321,8 +321,8 @@ AcpiPsPopScope ( { /* Empty parse stack, prepare to fetch next opcode */ - *Op = NULL; - *ArgList = 0; + *Op = NULL; + *ArgList = 0; *ArgCount = 0; } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/pstree.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/pstree.c index 392204e1de..c9737f2bde 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/pstree.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/pstree.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psutils.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psutils.c index 3aa4954ae1..f60e60cea5 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psutils.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psutils.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -177,8 +177,8 @@ AcpiPsInitOp ( Op->Common.AmlOpcode = Opcode; ACPI_DISASM_ONLY_MEMBERS (strncpy (Op->Common.AmlOpName, - (AcpiPsGetOpcodeInfo (Opcode))->Name, - sizeof (Op->Common.AmlOpName))); + (AcpiPsGetOpcodeInfo (Opcode))->Name, + sizeof (Op->Common.AmlOpName))); } @@ -277,7 +277,8 @@ AcpiPsFreeOp ( if (Op->Common.AmlOpcode == AML_INT_RETURN_VALUE_OP) { - ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, "Free retval op: %p\n", Op)); + ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, + "Free retval op: %p\n", Op)); } if (Op->Common.Flags & ACPI_PARSEOP_GENERIC) diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/pswalk.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/pswalk.c index a447970c4b..78d825aeb0 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/pswalk.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/pswalk.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -178,6 +178,7 @@ AcpiPsDeleteParseTree ( { return_VOID; } + if (Next) { Op = Next; diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psxface.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psxface.c index eb5c0182b6..5c690a42ab 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psxface.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/parser/psxface.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -255,7 +255,7 @@ AcpiPsExecuteMethod ( Info->PassNumber = ACPI_IMODE_EXECUTE; WalkState = AcpiDsCreateWalkState ( - Info->ObjDesc->Method.OwnerId, NULL, NULL, NULL); + Info->ObjDesc->Method.OwnerId, NULL, NULL, NULL); if (!WalkState) { Status = AE_NO_MEMORY; @@ -263,8 +263,8 @@ AcpiPsExecuteMethod ( } Status = AcpiDsInitAmlWalk (WalkState, Op, Info->Node, - Info->ObjDesc->Method.AmlStart, - Info->ObjDesc->Method.AmlLength, Info, Info->PassNumber); + Info->ObjDesc->Method.AmlStart, + Info->ObjDesc->Method.AmlLength, Info, Info->PassNumber); if (ACPI_FAILURE (Status)) { AcpiDsDeleteWalkState (WalkState); @@ -375,7 +375,8 @@ AcpiPsUpdateParameterList ( { /* Ignore errors, just do them all */ - (void) AcpiUtUpdateObjectReference (Info->Parameters[i], Action); + (void) AcpiUtUpdateObjectReference ( + Info->Parameters[i], Action); } } } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rsaddr.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rsaddr.c index 9d1d4d7390..9142fd2de3 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rsaddr.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rsaddr.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -400,30 +400,35 @@ AcpiRsGetAddressCommon ( /* Validate the Resource Type */ - if ((Aml->Address.ResourceType > 2) && (Aml->Address.ResourceType < 0xC0)) + if ((Aml->Address.ResourceType > 2) && + (Aml->Address.ResourceType < 0xC0)) { return (FALSE); } /* Get the Resource Type and General Flags */ - (void) AcpiRsConvertAmlToResource (Resource, Aml, AcpiRsConvertGeneralFlags); + (void) AcpiRsConvertAmlToResource ( + Resource, Aml, AcpiRsConvertGeneralFlags); /* Get the Type-Specific Flags (Memory and I/O descriptors only) */ if (Resource->Data.Address.ResourceType == ACPI_MEMORY_RANGE) { - (void) AcpiRsConvertAmlToResource (Resource, Aml, AcpiRsConvertMemFlags); + (void) AcpiRsConvertAmlToResource ( + Resource, Aml, AcpiRsConvertMemFlags); } else if (Resource->Data.Address.ResourceType == ACPI_IO_RANGE) { - (void) AcpiRsConvertAmlToResource (Resource, Aml, AcpiRsConvertIoFlags); + (void) AcpiRsConvertAmlToResource ( + Resource, Aml, AcpiRsConvertIoFlags); } else { /* Generic resource type, just grab the TypeSpecific byte */ - Resource->Data.Address.Info.TypeSpecific = Aml->Address.SpecificFlags; + Resource->Data.Address.Info.TypeSpecific = + Aml->Address.SpecificFlags; } return (TRUE); @@ -454,22 +459,26 @@ AcpiRsSetAddressCommon ( /* Set the Resource Type and General Flags */ - (void) AcpiRsConvertResourceToAml (Resource, Aml, AcpiRsConvertGeneralFlags); + (void) AcpiRsConvertResourceToAml ( + Resource, Aml, AcpiRsConvertGeneralFlags); /* Set the Type-Specific Flags (Memory and I/O descriptors only) */ if (Resource->Data.Address.ResourceType == ACPI_MEMORY_RANGE) { - (void) AcpiRsConvertResourceToAml (Resource, Aml, AcpiRsConvertMemFlags); + (void) AcpiRsConvertResourceToAml ( + Resource, Aml, AcpiRsConvertMemFlags); } else if (Resource->Data.Address.ResourceType == ACPI_IO_RANGE) { - (void) AcpiRsConvertResourceToAml (Resource, Aml, AcpiRsConvertIoFlags); + (void) AcpiRsConvertResourceToAml ( + Resource, Aml, AcpiRsConvertIoFlags); } else { /* Generic resource type, just copy the TypeSpecific byte */ - Aml->Address.SpecificFlags = Resource->Data.Address.Info.TypeSpecific; + Aml->Address.SpecificFlags = + Resource->Data.Address.Info.TypeSpecific; } } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rscalc.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rscalc.c index 33a438ea6f..f1dc49b155 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rscalc.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rscalc.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -236,16 +236,17 @@ AcpiRsStreamOptionLength ( /* - * The ResourceSourceIndex and ResourceSource are optional elements of some - * Large-type resource descriptors. + * The ResourceSourceIndex and ResourceSource are optional elements of + * some Large-type resource descriptors. */ /* - * If the length of the actual resource descriptor is greater than the ACPI - * spec-defined minimum length, it means that a ResourceSourceIndex exists - * and is followed by a (required) null terminated string. The string length - * (including the null terminator) is the resource length minus the minimum - * length, minus one byte for the ResourceSourceIndex itself. + * If the length of the actual resource descriptor is greater than the + * ACPI spec-defined minimum length, it means that a ResourceSourceIndex + * exists and is followed by a (required) null terminated string. The + * string length (including the null terminator) is the resource length + * minus the minimum length, minus one byte for the ResourceSourceIndex + * itself. */ if (ResourceLength > MinimumAmlResourceLength) { @@ -381,9 +382,9 @@ AcpiRsGetAmlLength ( * 16-Bit Address Resource: * Add the size of the optional ResourceSource info */ - TotalSize = (ACPI_RS_LENGTH) - (TotalSize + AcpiRsStructOptionLength ( - &Resource->Data.Address16.ResourceSource)); + TotalSize = (ACPI_RS_LENGTH) (TotalSize + + AcpiRsStructOptionLength ( + &Resource->Data.Address16.ResourceSource)); break; @@ -392,9 +393,9 @@ AcpiRsGetAmlLength ( * 32-Bit Address Resource: * Add the size of the optional ResourceSource info */ - TotalSize = (ACPI_RS_LENGTH) - (TotalSize + AcpiRsStructOptionLength ( - &Resource->Data.Address32.ResourceSource)); + TotalSize = (ACPI_RS_LENGTH) (TotalSize + + AcpiRsStructOptionLength ( + &Resource->Data.Address32.ResourceSource)); break; @@ -403,9 +404,9 @@ AcpiRsGetAmlLength ( * 64-Bit Address Resource: * Add the size of the optional ResourceSource info */ - TotalSize = (ACPI_RS_LENGTH) - (TotalSize + AcpiRsStructOptionLength ( - &Resource->Data.Address64.ResourceSource)); + TotalSize = (ACPI_RS_LENGTH) (TotalSize + + AcpiRsStructOptionLength ( + &Resource->Data.Address64.ResourceSource)); break; @@ -415,8 +416,7 @@ AcpiRsGetAmlLength ( * Add the size of each additional optional interrupt beyond the * required 1 (4 bytes for each UINT32 interrupt number) */ - TotalSize = (ACPI_RS_LENGTH) - (TotalSize + + TotalSize = (ACPI_RS_LENGTH) (TotalSize + ((Resource->Data.ExtendedIrq.InterruptCount - 1) * 4) + /* Add the size of the optional ResourceSource info */ @@ -428,7 +428,8 @@ AcpiRsGetAmlLength ( case ACPI_RESOURCE_TYPE_GPIO: - TotalSize = (ACPI_RS_LENGTH) (TotalSize + (Resource->Data.Gpio.PinTableLength * 2) + + TotalSize = (ACPI_RS_LENGTH) (TotalSize + + (Resource->Data.Gpio.PinTableLength * 2) + Resource->Data.Gpio.ResourceSource.StringLength + Resource->Data.Gpio.VendorLength); @@ -437,7 +438,8 @@ AcpiRsGetAmlLength ( case ACPI_RESOURCE_TYPE_SERIAL_BUS: - TotalSize = AcpiGbl_AmlResourceSerialBusSizes [Resource->Data.CommonSerialBus.Type]; + TotalSize = AcpiGbl_AmlResourceSerialBusSizes [ + Resource->Data.CommonSerialBus.Type]; TotalSize = (ACPI_RS_LENGTH) (TotalSize + Resource->Data.I2cSerialBus.ResourceSource.StringLength + @@ -616,12 +618,15 @@ AcpiRsGetListLength ( if (AmlResource->Gpio.VendorLength) { - ExtraStructBytes += AmlResource->Gpio.VendorOffset - - AmlResource->Gpio.PinTableOffset + AmlResource->Gpio.VendorLength; + ExtraStructBytes += + AmlResource->Gpio.VendorOffset - + AmlResource->Gpio.PinTableOffset + + AmlResource->Gpio.VendorLength; } else { - ExtraStructBytes += AmlResource->LargeHeader.ResourceLength + + ExtraStructBytes += + AmlResource->LargeHeader.ResourceLength + sizeof (AML_RESOURCE_LARGE_HEADER) - AmlResource->Gpio.PinTableOffset; } @@ -631,7 +636,8 @@ AcpiRsGetListLength ( MinimumAmlResourceLength = AcpiGbl_ResourceAmlSerialBusSizes[ AmlResource->CommonSerialBus.Type]; - ExtraStructBytes += AmlResource->CommonSerialBus.ResourceLength - + ExtraStructBytes += + AmlResource->CommonSerialBus.ResourceLength - MinimumAmlResourceLength; break; @@ -646,7 +652,8 @@ AcpiRsGetListLength ( * Important: Round the size up for the appropriate alignment. This * is a requirement on IA64. */ - if (AcpiUtGetResourceType (AmlBuffer) == ACPI_RESOURCE_NAME_SERIAL_BUS) + if (AcpiUtGetResourceType (AmlBuffer) == + ACPI_RESOURCE_NAME_SERIAL_BUS) { BufferSize = AcpiGbl_ResourceStructSerialBusSizes[ AmlResource->CommonSerialBus.Type] + ExtraStructBytes; @@ -654,10 +661,10 @@ AcpiRsGetListLength ( else { BufferSize = AcpiGbl_ResourceStructSizes[ResourceIndex] + - ExtraStructBytes; + ExtraStructBytes; } - BufferSize = (UINT32) ACPI_ROUND_UP_TO_NATIVE_WORD (BufferSize); + BufferSize = (UINT32) ACPI_ROUND_UP_TO_NATIVE_WORD (BufferSize); *SizeNeeded += BufferSize; ACPI_DEBUG_PRINT ((ACPI_DB_RESOURCES, @@ -794,7 +801,7 @@ AcpiRsGetPciRoutingTableLength ( else { TempSizeNeeded += AcpiNsGetPathnameLength ( - (*SubObjectList)->Reference.Node); + (*SubObjectList)->Reference.Node); } } else diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rscreate.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rscreate.c index 8cf00d3c50..9a74befbf6 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rscreate.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rscreate.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -158,8 +158,8 @@ AcpiBufferToResource ( /* Get the required length for the converted resource */ - Status = AcpiRsGetListLength (AmlBuffer, AmlBufferLength, - &ListSizeNeeded); + Status = AcpiRsGetListLength ( + AmlBuffer, AmlBufferLength, &ListSizeNeeded); if (Status == AE_AML_NO_RESOURCE_END_TAG) { Status = AE_OK; @@ -181,7 +181,7 @@ AcpiBufferToResource ( /* Perform the AML-to-Resource conversion */ Status = AcpiUtWalkAmlResources (NULL, AmlBuffer, AmlBufferLength, - AcpiRsConvertAmlToResources, &CurrentResourcePtr); + AcpiRsConvertAmlToResources, &CurrentResourcePtr); if (Status == AE_AML_NO_RESOURCE_END_TAG) { Status = AE_OK; @@ -269,14 +269,14 @@ AcpiRsCreateResourceList ( Resource = OutputBuffer->Pointer; Status = AcpiUtWalkAmlResources (NULL, AmlStart, AmlBufferLength, - AcpiRsConvertAmlToResources, &Resource); + AcpiRsConvertAmlToResources, &Resource); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "OutputBuffer %p Length %X\n", - OutputBuffer->Pointer, (UINT32) OutputBuffer->Length)); + OutputBuffer->Pointer, (UINT32) OutputBuffer->Length)); return_ACPI_STATUS (AE_OK); } @@ -327,8 +327,8 @@ AcpiRsCreatePciRoutingTable ( /* Get the required buffer length */ - Status = AcpiRsGetPciRoutingTableLength (PackageObject, - &BufferSizeNeeded); + Status = AcpiRsGetPciRoutingTableLength ( + PackageObject,&BufferSizeNeeded); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -350,10 +350,10 @@ AcpiRsCreatePciRoutingTable ( * package that in turn contains an UINT64 Address, a UINT8 Pin, * a Name, and a UINT8 SourceIndex. */ - TopObjectList = PackageObject->Package.Elements; + TopObjectList = PackageObject->Package.Elements; NumberOfElements = PackageObject->Package.Count; - Buffer = OutputBuffer->Pointer; - UserPrt = ACPI_CAST_PTR (ACPI_PCI_ROUTING_TABLE, Buffer); + Buffer = OutputBuffer->Pointer; + UserPrt = ACPI_CAST_PTR (ACPI_PCI_ROUTING_TABLE, Buffer); for (Index = 0; Index < NumberOfElements; Index++) { @@ -367,9 +367,9 @@ AcpiRsCreatePciRoutingTable ( UserPrt = ACPI_CAST_PTR (ACPI_PCI_ROUTING_TABLE, Buffer); /* - * Fill in the Length field with the information we have at this point. - * The minus four is to subtract the size of the UINT8 Source[4] member - * because it is added below. + * Fill in the Length field with the information we have at this + * point. The minus four is to subtract the size of the UINT8 + * Source[4] member because it is added below. */ UserPrt->Length = (sizeof (ACPI_PCI_ROUTING_TABLE) - 4); @@ -395,7 +395,8 @@ AcpiRsCreatePciRoutingTable ( ObjDesc = SubObjectList[0]; if (!ObjDesc || ObjDesc->Common.Type != ACPI_TYPE_INTEGER) { - ACPI_ERROR ((AE_INFO, "(PRT[%u].Address) Need Integer, found %s", + ACPI_ERROR ((AE_INFO, + "(PRT[%u].Address) Need Integer, found %s", Index, AcpiUtGetObjectTypeName (ObjDesc))); return_ACPI_STATUS (AE_BAD_DATA); } @@ -438,12 +439,12 @@ AcpiRsCreatePciRoutingTable ( /* Use *remaining* length of the buffer as max for pathname */ PathBuffer.Length = OutputBuffer->Length - - (UINT32) ((UINT8 *) UserPrt->Source - - (UINT8 *) OutputBuffer->Pointer); + (UINT32) ((UINT8 *) UserPrt->Source - + (UINT8 *) OutputBuffer->Pointer); PathBuffer.Pointer = UserPrt->Source; - Status = AcpiNsHandleToPathname ((ACPI_HANDLE) Node, - &PathBuffer, FALSE); + Status = AcpiNsHandleToPathname ( + (ACPI_HANDLE) Node, &PathBuffer, FALSE); /* +1 to include null terminator */ @@ -463,8 +464,8 @@ AcpiRsCreatePciRoutingTable ( case ACPI_TYPE_INTEGER: /* - * If this is a number, then the Source Name is NULL, since the - * entire buffer was zeroed out, we can leave this alone. + * If this is a number, then the Source Name is NULL, since + * the entire buffer was zeroed out, we can leave this alone. * * Add to the Length field the length of the UINT32 NULL */ @@ -503,7 +504,7 @@ AcpiRsCreatePciRoutingTable ( } ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "OutputBuffer %p Length %X\n", - OutputBuffer->Pointer, (UINT32) OutputBuffer->Length)); + OutputBuffer->Pointer, (UINT32) OutputBuffer->Length)); return_ACPI_STATUS (AE_OK); } @@ -544,8 +545,8 @@ AcpiRsCreateAmlResources ( /* Get the buffer size needed for the AML byte stream */ - Status = AcpiRsGetAmlLength (ResourceList->Pointer, - ResourceList->Length, &AmlSizeNeeded); + Status = AcpiRsGetAmlLength ( + ResourceList->Pointer, ResourceList->Length, &AmlSizeNeeded); ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "AmlSizeNeeded=%X, %s\n", (UINT32) AmlSizeNeeded, AcpiFormatException (Status))); @@ -565,7 +566,7 @@ AcpiRsCreateAmlResources ( /* Do the conversion */ Status = AcpiRsConvertResourcesToAml (ResourceList->Pointer, - AmlSizeNeeded, OutputBuffer->Pointer); + AmlSizeNeeded, OutputBuffer->Pointer); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rsinfo.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rsinfo.c index bf19c390df..7933d7670c 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rsinfo.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rsinfo.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rsio.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rsio.c index 8f39d14530..0455a02b1d 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rsio.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rsio.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rsirq.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rsirq.c index 0ce5dfd749..baa03776dd 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rsirq.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rsirq.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rslist.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rslist.c index 4fda294ce5..f08dc38a4a 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rslist.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rslist.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -169,9 +169,12 @@ AcpiRsConvertAmlToResources ( /* Get the appropriate conversion info table */ AmlResource = ACPI_CAST_PTR (AML_RESOURCE, Aml); - if (AcpiUtGetResourceType (Aml) == ACPI_RESOURCE_NAME_SERIAL_BUS) + + if (AcpiUtGetResourceType (Aml) == + ACPI_RESOURCE_NAME_SERIAL_BUS) { - if (AmlResource->CommonSerialBus.Type > AML_RESOURCE_MAX_SERIALBUSTYPE) + if (AmlResource->CommonSerialBus.Type > + AML_RESOURCE_MAX_SERIALBUSTYPE) { ConversionTable = NULL; } @@ -179,15 +182,13 @@ AcpiRsConvertAmlToResources ( { /* This is an I2C, SPI, or UART SerialBus descriptor */ - ConversionTable = - AcpiGbl_ConvertResourceSerialBusDispatch[ - AmlResource->CommonSerialBus.Type]; + ConversionTable = AcpiGbl_ConvertResourceSerialBusDispatch [ + AmlResource->CommonSerialBus.Type]; } } else { - ConversionTable = - AcpiGbl_GetResourceDispatch[ResourceIndex]; + ConversionTable = AcpiGbl_GetResourceDispatch[ResourceIndex]; } if (!ConversionTable) @@ -282,7 +283,8 @@ AcpiRsConvertResourcesToAml ( if (Resource->Type == ACPI_RESOURCE_TYPE_SERIAL_BUS) { - if (Resource->Data.CommonSerialBus.Type > AML_RESOURCE_MAX_SERIALBUSTYPE) + if (Resource->Data.CommonSerialBus.Type > + AML_RESOURCE_MAX_SERIALBUSTYPE) { ConversionTable = NULL; } @@ -308,8 +310,7 @@ AcpiRsConvertResourcesToAml ( } Status = AcpiRsConvertResourceToAml (Resource, - ACPI_CAST_PTR (AML_RESOURCE, Aml), - ConversionTable); + ACPI_CAST_PTR (AML_RESOURCE, Aml), ConversionTable); if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, @@ -320,8 +321,8 @@ AcpiRsConvertResourcesToAml ( /* Perform final sanity check on the new AML resource descriptor */ - Status = AcpiUtValidateResource (NULL, - ACPI_CAST_PTR (AML_RESOURCE, Aml), NULL); + Status = AcpiUtValidateResource ( + NULL, ACPI_CAST_PTR (AML_RESOURCE, Aml), NULL); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rsmemory.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rsmemory.c index 07d7225e5e..7fb378c223 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rsmemory.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rsmemory.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rsmisc.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rsmisc.c index 1a5512e175..e822d7e718 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rsmisc.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rsmisc.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -193,7 +193,7 @@ AcpiRsConvertAmlToResource ( * Source is the external AML byte stream buffer, * destination is the internal resource descriptor */ - Source = ACPI_ADD_PTR (void, Aml, Info->AmlOffset); + Source = ACPI_ADD_PTR (void, Aml, Info->AmlOffset); Destination = ACPI_ADD_PTR (void, Resource, Info->ResourceOffset); switch (Info->Opcode) @@ -272,8 +272,7 @@ AcpiRsConvertAmlToResource ( ItemCount = ACPI_GET8 (Source); ACPI_SET8 (Destination, ItemCount); - Resource->Length = Resource->Length + - (Info->Value * ItemCount); + Resource->Length = Resource->Length + (Info->Value * ItemCount); break; case ACPI_RSC_COUNT_GPIO_RES: @@ -345,7 +344,7 @@ AcpiRsConvertAmlToResource ( /* Generate and set the PIN data pointer */ Target = (char *) ACPI_ADD_PTR (void, Resource, - (Resource->Length - ItemCount * 2)); + (Resource->Length - ItemCount * 2)); *(UINT16 **) Destination = ACPI_CAST_PTR (UINT16, Target); /* Copy the PIN data */ @@ -359,7 +358,7 @@ AcpiRsConvertAmlToResource ( /* Generate and set the ResourceSource string pointer */ Target = (char *) ACPI_ADD_PTR (void, Resource, - (Resource->Length - ItemCount)); + (Resource->Length - ItemCount)); *(UINT8 **) Destination = ACPI_CAST_PTR (UINT8, Target); /* Copy the ResourceSource string */ @@ -373,7 +372,7 @@ AcpiRsConvertAmlToResource ( /* Generate and set the Vendor Data pointer */ Target = (char *) ACPI_ADD_PTR (void, Resource, - (Resource->Length - ItemCount)); + (Resource->Length - ItemCount)); *(UINT8 **) Destination = ACPI_CAST_PTR (UINT8, Target); /* Copy the Vendor Data */ @@ -387,12 +386,13 @@ AcpiRsConvertAmlToResource ( /* Generate and set the ResourceSource string pointer */ Target = (char *) ACPI_ADD_PTR (void, Resource, - (Resource->Length - ItemCount)); + (Resource->Length - ItemCount)); *(UINT8 **) Destination = ACPI_CAST_PTR (UINT8, Target); /* Copy the ResourceSource string */ - Source = ACPI_ADD_PTR (void, Aml, (ACPI_GET16 (Source) + Info->Value)); + Source = ACPI_ADD_PTR ( + void, Aml, (ACPI_GET16 (Source) + Info->Value)); AcpiRsMoveData (Target, Source, ItemCount, Info->Opcode); break; @@ -514,7 +514,8 @@ Exit: { /* Round the resource struct length up to the next boundary (32 or 64) */ - Resource->Length = (UINT32) ACPI_ROUND_UP_TO_NATIVE_WORD (Resource->Length); + Resource->Length = (UINT32) + ACPI_ROUND_UP_TO_NATIVE_WORD (Resource->Length); } return_ACPI_STATUS (AE_OK); } @@ -570,7 +571,7 @@ AcpiRsConvertResourceToAml ( * Source is the internal resource descriptor, * destination is the external AML byte stream buffer */ - Source = ACPI_ADD_PTR (void, Resource, Info->ResourceOffset); + Source = ACPI_ADD_PTR (void, Resource, Info->ResourceOffset); Destination = ACPI_ADD_PTR (void, Aml, Info->AmlOffset); switch (Info->Opcode) @@ -579,7 +580,8 @@ AcpiRsConvertResourceToAml ( memset (Aml, 0, INIT_RESOURCE_LENGTH (Info)); AmlLength = INIT_RESOURCE_LENGTH (Info); - AcpiRsSetResourceHeader (INIT_RESOURCE_TYPE (Info), AmlLength, Aml); + AcpiRsSetResourceHeader ( + INIT_RESOURCE_TYPE (Info), AmlLength, Aml); break; case ACPI_RSC_INITGET: @@ -621,7 +623,8 @@ AcpiRsConvertResourceToAml ( ItemCount = ACPI_GET8 (Source); ACPI_SET8 (Destination, ItemCount); - AmlLength = (UINT16) (AmlLength + (Info->Value * (ItemCount - 1))); + AmlLength = (UINT16) + (AmlLength + (Info->Value * (ItemCount - 1))); break; case ACPI_RSC_COUNT16: @@ -647,7 +650,8 @@ AcpiRsConvertResourceToAml ( ItemCount = ACPI_GET16 (Source); ACPI_SET16 (Destination, ItemCount); - AmlLength = (UINT16) (AmlLength + (Info->Value * ItemCount)); + AmlLength = (UINT16) ( + AmlLength + (Info->Value * ItemCount)); AcpiRsSetResourceLength (AmlLength, Aml); break; @@ -708,7 +712,7 @@ AcpiRsConvertResourceToAml ( case ACPI_RSC_MOVE_GPIO_PIN: Destination = (char *) ACPI_ADD_PTR (void, Aml, - ACPI_GET16 (Destination)); + ACPI_GET16 (Destination)); Source = * (UINT16 **) Source; AcpiRsMoveData (Destination, Source, ItemCount, Info->Opcode); break; @@ -718,7 +722,7 @@ AcpiRsConvertResourceToAml ( /* Used for both ResourceSource string and VendorData */ Destination = (char *) ACPI_ADD_PTR (void, Aml, - ACPI_GET16 (Destination)); + ACPI_GET16 (Destination)); Source = * (UINT8 **) Source; AcpiRsMoveData (Destination, Source, ItemCount, Info->Opcode); break; @@ -726,7 +730,7 @@ AcpiRsConvertResourceToAml ( case ACPI_RSC_MOVE_SERIAL_VEN: Destination = (char *) ACPI_ADD_PTR (void, Aml, - (AmlLength - ItemCount)); + (AmlLength - ItemCount)); Source = * (UINT8 **) Source; AcpiRsMoveData (Destination, Source, ItemCount, Info->Opcode); break; @@ -734,7 +738,7 @@ AcpiRsConvertResourceToAml ( case ACPI_RSC_MOVE_SERIAL_RES: Destination = (char *) ACPI_ADD_PTR (void, Aml, - (AmlLength - ItemCount)); + (AmlLength - ItemCount)); Source = * (UINT8 **) Source; AcpiRsMoveData (Destination, Source, ItemCount, Info->Opcode); break; @@ -751,7 +755,7 @@ AcpiRsConvertResourceToAml ( * Optional ResourceSource (Index and String) */ AmlLength = AcpiRsSetResourceSource ( - Aml, (ACPI_RS_LENGTH) AmlLength, Source); + Aml, (ACPI_RS_LENGTH) AmlLength, Source); AcpiRsSetResourceLength (AmlLength, Aml); break; @@ -777,8 +781,8 @@ AcpiRsConvertResourceToAml ( /* * 16-bit encoded bitmask (IRQ macro) */ - Temp16 = AcpiRsEncodeBitmask (Source, - *ACPI_ADD_PTR (UINT8, Resource, Info->Value)); + Temp16 = AcpiRsEncodeBitmask ( + Source, *ACPI_ADD_PTR (UINT8, Resource, Info->Value)); ACPI_MOVE_16_TO_16 (Destination, &Temp16); break; @@ -801,7 +805,7 @@ AcpiRsConvertResourceToAml ( case ACPI_RSC_COMPARE_VALUE: if (*ACPI_ADD_PTR (UINT8, Resource, - COMPARE_TARGET (Info)) != COMPARE_VALUE (Info)) + COMPARE_TARGET (Info)) != COMPARE_VALUE (Info)) { goto Exit; } @@ -819,7 +823,7 @@ AcpiRsConvertResourceToAml ( * Control - Exit conversion if equal */ if (*ACPI_ADD_PTR (UINT8, Resource, - COMPARE_TARGET (Info)) == COMPARE_VALUE (Info)) + COMPARE_TARGET (Info)) == COMPARE_VALUE (Info)) { goto Exit; } @@ -843,7 +847,8 @@ Exit: #if 0 /* Previous resource validations */ - if (Aml->ExtAddress64.RevisionID != AML_RESOURCE_EXTENDED_ADDRESS_REVISION) + if (Aml->ExtAddress64.RevisionID != + AML_RESOURCE_EXTENDED_ADDRESS_REVISION) { return_ACPI_STATUS (AE_SUPPORT); } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rsserial.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rsserial.c index acec6fbbc5..6ac7a50056 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rsserial.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rsserial.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rsutils.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rsutils.c index a7dc2150b1..fdb08b50f4 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rsutils.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rsutils.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -257,20 +257,23 @@ AcpiRsMoveData ( case ACPI_RSC_MOVE16: case ACPI_RSC_MOVE_GPIO_PIN: - ACPI_MOVE_16_TO_16 (&ACPI_CAST_PTR (UINT16, Destination)[i], - &ACPI_CAST_PTR (UINT16, Source)[i]); + ACPI_MOVE_16_TO_16 ( + &ACPI_CAST_PTR (UINT16, Destination)[i], + &ACPI_CAST_PTR (UINT16, Source)[i]); break; case ACPI_RSC_MOVE32: - ACPI_MOVE_32_TO_32 (&ACPI_CAST_PTR (UINT32, Destination)[i], - &ACPI_CAST_PTR (UINT32, Source)[i]); + ACPI_MOVE_32_TO_32 ( + &ACPI_CAST_PTR (UINT32, Destination)[i], + &ACPI_CAST_PTR (UINT32, Source)[i]); break; case ACPI_RSC_MOVE64: - ACPI_MOVE_64_TO_64 (&ACPI_CAST_PTR (UINT64, Destination)[i], - &ACPI_CAST_PTR (UINT64, Source)[i]); + ACPI_MOVE_64_TO_64 ( + &ACPI_CAST_PTR (UINT64, Destination)[i], + &ACPI_CAST_PTR (UINT64, Source)[i]); break; default: @@ -320,18 +323,18 @@ AcpiRsSetResourceLength ( { /* Large descriptor -- bytes 1-2 contain the 16-bit length */ - ACPI_MOVE_16_TO_16 (&Aml->LargeHeader.ResourceLength, &ResourceLength); + ACPI_MOVE_16_TO_16 ( + &Aml->LargeHeader.ResourceLength, &ResourceLength); } else { - /* Small descriptor -- bits 2:0 of byte 0 contain the length */ - + /* + * Small descriptor -- bits 2:0 of byte 0 contain the length + * Clear any existing length, preserving descriptor type bits + */ Aml->SmallHeader.DescriptorType = (UINT8) - - /* Clear any existing length, preserving descriptor type bits */ - - ((Aml->SmallHeader.DescriptorType & ~ACPI_RESOURCE_NAME_SMALL_LENGTH_MASK) - + ((Aml->SmallHeader.DescriptorType & + ~ACPI_RESOURCE_NAME_SMALL_LENGTH_MASK) | ResourceLength); } } @@ -450,8 +453,8 @@ AcpiRsGetResourceSource ( AmlResourceSource = ACPI_ADD_PTR (UINT8, Aml, MinimumLength); /* - * ResourceSource is present if the length of the descriptor is longer than - * the minimum length. + * ResourceSource is present if the length of the descriptor is longer + * than the minimum length. * * Note: Some resource descriptors will have an additional null, so * we add 1 to the minimum length. @@ -469,8 +472,8 @@ AcpiRsGetResourceSource ( * String destination pointer is not specified; Set the String * pointer to the end of the current ResourceSource structure. */ - ResourceSource->StringPtr = ACPI_ADD_PTR (char, ResourceSource, - sizeof (ACPI_RESOURCE_SOURCE)); + ResourceSource->StringPtr = ACPI_ADD_PTR ( + char, ResourceSource, sizeof (ACPI_RESOURCE_SOURCE)); } /* @@ -482,13 +485,15 @@ AcpiRsGetResourceSource ( */ TotalLength = (UINT32) strlen ( ACPI_CAST_PTR (char, &AmlResourceSource[1])) + 1; + TotalLength = (UINT32) ACPI_ROUND_UP_TO_NATIVE_WORD (TotalLength); memset (ResourceSource->StringPtr, 0, TotalLength); /* Copy the ResourceSource string to the destination */ - ResourceSource->StringLength = AcpiRsStrcpy (ResourceSource->StringPtr, + ResourceSource->StringLength = AcpiRsStrcpy ( + ResourceSource->StringPtr, ACPI_CAST_PTR (char, &AmlResourceSource[1])); return ((ACPI_RS_LENGTH) TotalLength); @@ -556,7 +561,8 @@ AcpiRsSetResourceSource ( * Add the length of the string (+ 1 for null terminator) to the * final descriptor length */ - DescriptorLength += ((ACPI_RSDESC_SIZE) ResourceSource->StringLength + 1); + DescriptorLength += ((ACPI_RSDESC_SIZE) + ResourceSource->StringLength + 1); } /* Return the new total length of the AML descriptor */ @@ -599,8 +605,8 @@ AcpiRsGetPrtMethodData ( /* Execute the method, no parameters */ - Status = AcpiUtEvaluateObject (Node, METHOD_NAME__PRT, - ACPI_BTYPE_PACKAGE, &ObjDesc); + Status = AcpiUtEvaluateObject ( + Node, METHOD_NAME__PRT, ACPI_BTYPE_PACKAGE, &ObjDesc); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -653,8 +659,8 @@ AcpiRsGetCrsMethodData ( /* Execute the method, no parameters */ - Status = AcpiUtEvaluateObject (Node, METHOD_NAME__CRS, - ACPI_BTYPE_BUFFER, &ObjDesc); + Status = AcpiUtEvaluateObject ( + Node, METHOD_NAME__CRS, ACPI_BTYPE_BUFFER, &ObjDesc); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -708,8 +714,8 @@ AcpiRsGetPrsMethodData ( /* Execute the method, no parameters */ - Status = AcpiUtEvaluateObject (Node, METHOD_NAME__PRS, - ACPI_BTYPE_BUFFER, &ObjDesc); + Status = AcpiUtEvaluateObject ( + Node, METHOD_NAME__PRS, ACPI_BTYPE_BUFFER, &ObjDesc); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -763,8 +769,8 @@ AcpiRsGetAeiMethodData ( /* Execute the method, no parameters */ - Status = AcpiUtEvaluateObject (Node, METHOD_NAME__AEI, - ACPI_BTYPE_BUFFER, &ObjDesc); + Status = AcpiUtEvaluateObject ( + Node, METHOD_NAME__AEI, ACPI_BTYPE_BUFFER, &ObjDesc); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -820,7 +826,8 @@ AcpiRsGetMethodData ( /* Execute the method, no parameters */ - Status = AcpiUtEvaluateObject (ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, Handle), + Status = AcpiUtEvaluateObject ( + ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, Handle), Path, ACPI_BTYPE_BUFFER, &ObjDesc); if (ACPI_FAILURE (Status)) { diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rsxface.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rsxface.c index 9aea3dcb2d..64fb12a432 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rsxface.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/resources/rsxface.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -126,7 +126,7 @@ /* Local macros for 16,32-bit to 64-bit conversion */ #define ACPI_COPY_FIELD(Out, In, Field) ((Out)->Field = (In)->Field) -#define ACPI_COPY_ADDRESS(Out, In) \ +#define ACPI_COPY_ADDRESS(Out, In) \ ACPI_COPY_FIELD(Out, In, ResourceType); \ ACPI_COPY_FIELD(Out, In, ProducerConsumer); \ ACPI_COPY_FIELD(Out, In, Decode); \ @@ -505,13 +505,15 @@ AcpiResourceToAddress64 ( { case ACPI_RESOURCE_TYPE_ADDRESS16: - Address16 = ACPI_CAST_PTR (ACPI_RESOURCE_ADDRESS16, &Resource->Data); + Address16 = ACPI_CAST_PTR ( + ACPI_RESOURCE_ADDRESS16, &Resource->Data); ACPI_COPY_ADDRESS (Out, Address16); break; case ACPI_RESOURCE_TYPE_ADDRESS32: - Address32 = ACPI_CAST_PTR (ACPI_RESOURCE_ADDRESS32, &Resource->Data); + Address32 = ACPI_CAST_PTR ( + ACPI_RESOURCE_ADDRESS32, &Resource->Data); ACPI_COPY_ADDRESS (Out, Address32); break; @@ -576,8 +578,8 @@ AcpiGetVendorResource ( /* Walk the _CRS or _PRS resource list for this device */ - Status = AcpiWalkResources (DeviceHandle, Name, AcpiRsMatchVendorResource, - &Info); + Status = AcpiWalkResources ( + DeviceHandle, Name, AcpiRsMatchVendorResource, &Info); if (ACPI_FAILURE (Status)) { return (Status); @@ -696,7 +698,8 @@ AcpiWalkResourceBuffer ( /* Buffer contains the resource list and length */ Resource = ACPI_CAST_PTR (ACPI_RESOURCE, Buffer->Pointer); - ResourceEnd = ACPI_ADD_PTR (ACPI_RESOURCE, Buffer->Pointer, Buffer->Length); + ResourceEnd = ACPI_ADD_PTR ( + ACPI_RESOURCE, Buffer->Pointer, Buffer->Length); /* Walk the resource list until the EndTag is found (or buffer end) */ diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbdata.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbdata.c index daacf41e28..9c7dcfda19 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbdata.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbdata.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -194,7 +194,7 @@ AcpiTbAcquireTable ( case ACPI_TABLE_ORIGIN_EXTERNAL_VIRTUAL: Table = ACPI_CAST_PTR (ACPI_TABLE_HEADER, - ACPI_PHYSADDR_TO_PTR (TableDesc->Address)); + ACPI_PHYSADDR_TO_PTR (TableDesc->Address)); break; default: @@ -301,7 +301,7 @@ AcpiTbAcquireTempTable ( case ACPI_TABLE_ORIGIN_EXTERNAL_VIRTUAL: TableHeader = ACPI_CAST_PTR (ACPI_TABLE_HEADER, - ACPI_PHYSADDR_TO_PTR (Address)); + ACPI_PHYSADDR_TO_PTR (Address)); if (!TableHeader) { return (AE_NO_MEMORY); @@ -375,7 +375,7 @@ AcpiTbValidateTable ( if (!TableDesc->Pointer) { Status = AcpiTbAcquireTable (TableDesc, &TableDesc->Pointer, - &TableDesc->Length, &TableDesc->Flags); + &TableDesc->Length, &TableDesc->Flags); if (!TableDesc->Pointer) { Status = AE_NO_MEMORY; @@ -516,6 +516,7 @@ AcpiTbVerifyTempTable ( AcpiUtValidAcpiName (TableDesc->Signature.Ascii) ? TableDesc->Signature.Ascii : "????", ACPI_FORMAT_UINT64 (TableDesc->Address))); + goto InvalidateAndExit; } } @@ -793,7 +794,7 @@ AcpiTbAllocateOwnerId ( if (TableIndex < AcpiGbl_RootTableList.CurrentTableCount) { Status = AcpiUtAllocateOwnerId ( - &(AcpiGbl_RootTableList.Tables[TableIndex].OwnerId)); + &(AcpiGbl_RootTableList.Tables[TableIndex].OwnerId)); } (void) AcpiUtReleaseMutex (ACPI_MTX_TABLES); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbfadt.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbfadt.c index 4f82733974..7e9ddbae1b 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbfadt.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbfadt.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -398,7 +398,7 @@ AcpiTbSelectAddress ( * * FUNCTION: AcpiTbParseFadt * - * PARAMETERS: TableIndex - Index for the FADT + * PARAMETERS: None * * RETURN: None * @@ -409,7 +409,7 @@ AcpiTbSelectAddress ( void AcpiTbParseFadt ( - UINT32 TableIndex) + void) { UINT32 Length; ACPI_TABLE_HEADER *Table; @@ -422,10 +422,10 @@ AcpiTbParseFadt ( * Get a local copy of the FADT and convert it to a common format * Map entire FADT, assumed to be smaller than one page. */ - Length = AcpiGbl_RootTableList.Tables[TableIndex].Length; + Length = AcpiGbl_RootTableList.Tables[AcpiGbl_FadtIndex].Length; Table = AcpiOsMapMemory ( - AcpiGbl_RootTableList.Tables[TableIndex].Address, Length); + AcpiGbl_RootTableList.Tables[AcpiGbl_FadtIndex].Address, Length); if (!Table) { return; diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbfind.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbfind.c index bf692b8a88..dd83bd77e2 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbfind.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbfind.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -180,7 +180,7 @@ AcpiTbFindTable ( for (i = 0; i < AcpiGbl_RootTableList.CurrentTableCount; ++i) { if (memcmp (&(AcpiGbl_RootTableList.Tables[i].Signature), - Header.Signature, ACPI_NAME_SIZE)) + Header.Signature, ACPI_NAME_SIZE)) { /* Not the requested table */ @@ -208,13 +208,13 @@ AcpiTbFindTable ( /* Check for table match on all IDs */ if (!memcmp (AcpiGbl_RootTableList.Tables[i].Pointer->Signature, - Header.Signature, ACPI_NAME_SIZE) && + Header.Signature, ACPI_NAME_SIZE) && (!OemId[0] || !memcmp (AcpiGbl_RootTableList.Tables[i].Pointer->OemId, - Header.OemId, ACPI_OEM_ID_SIZE)) && + Header.OemId, ACPI_OEM_ID_SIZE)) && (!OemTableId[0] || !memcmp (AcpiGbl_RootTableList.Tables[i].Pointer->OemTableId, - Header.OemTableId, ACPI_OEM_TABLE_ID_SIZE))) + Header.OemTableId, ACPI_OEM_TABLE_ID_SIZE))) { *TableIndex = i; diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbinstal.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbinstal.c index 2d7bb9456f..a0d834d8ee 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbinstal.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbinstal.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -155,7 +155,7 @@ AcpiTbCompareTables ( Status = AcpiTbAcquireTable (&AcpiGbl_RootTableList.Tables[TableIndex], - &Table, &TableLength, &TableFlags); + &Table, &TableLength, &TableFlags); if (ACPI_FAILURE (Status)) { return (FALSE); @@ -278,7 +278,7 @@ AcpiTbInstallFixedTable ( /* Fill a table descriptor for validation */ Status = AcpiTbAcquireTempTable (&NewTableDesc, Address, - ACPI_TABLE_ORIGIN_INTERNAL_PHYSICAL); + ACPI_TABLE_ORIGIN_INTERNAL_PHYSICAL); if (ACPI_FAILURE (Status)) { ACPI_ERROR ((AE_INFO, "Could not acquire table length at %8.8X%8.8X", @@ -350,7 +350,8 @@ AcpiTbInstallStandardTable ( Status = AcpiTbAcquireTempTable (&NewTableDesc, Address, Flags); if (ACPI_FAILURE (Status)) { - ACPI_ERROR ((AE_INFO, "Could not acquire table length at %8.8X%8.8X", + ACPI_ERROR ((AE_INFO, + "Could not acquire table length at %8.8X%8.8X", ACPI_FORMAT_UINT64 (Address))); return_ACPI_STATUS (Status); } @@ -363,7 +364,8 @@ AcpiTbInstallStandardTable ( AcpiGbl_DisableSsdtTableInstall && ACPI_COMPARE_NAME (&NewTableDesc.Signature, ACPI_SIG_SSDT)) { - ACPI_INFO ((AE_INFO, "Ignoring installation of %4.4s at %8.8X%8.8X", + ACPI_INFO ((AE_INFO, + "Ignoring installation of %4.4s at %8.8X%8.8X", NewTableDesc.Signature.Ascii, ACPI_FORMAT_UINT64 (Address))); goto ReleaseAndExit; } @@ -431,7 +433,8 @@ AcpiTbInstallStandardTable ( * need to be unregistered when they are unloaded, and slots in the * root table list should be reused when empty. */ - if (AcpiGbl_RootTableList.Tables[i].Flags & ACPI_TABLE_IS_LOADED) + if (AcpiGbl_RootTableList.Tables[i].Flags & + ACPI_TABLE_IS_LOADED) { /* Table is still loaded, this is an error */ diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbprint.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbprint.c index e958041672..0bb0df019b 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbprint.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbprint.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -160,6 +160,7 @@ AcpiTbFixString ( { *String = '?'; } + String++; Length--; } @@ -228,8 +229,8 @@ AcpiTbPrintTableHeader ( { /* RSDP has no common fields */ - memcpy (LocalHeader.OemId, - ACPI_CAST_PTR (ACPI_TABLE_RSDP, Header)->OemId, ACPI_OEM_ID_SIZE); + memcpy (LocalHeader.OemId, ACPI_CAST_PTR (ACPI_TABLE_RSDP, + Header)->OemId, ACPI_OEM_ID_SIZE); AcpiTbFixString (LocalHeader.OemId, ACPI_OEM_ID_SIZE); ACPI_INFO ((AE_INFO, "RSDP 0x%8.8X%8.8X %06X (v%.2d %-6.6s)", diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbutils.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbutils.c index 05704258c1..13f020d7bd 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbutils.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbutils.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -158,16 +158,16 @@ AcpiTbInitializeFacs ( return (AE_OK); } else if (AcpiGbl_FADT.XFacs && - (!AcpiGbl_FADT.Facs || !AcpiGbl_Use32BitFacsAddresses)) + (!AcpiGbl_FADT.Facs || !AcpiGbl_Use32BitFacsAddresses)) { (void) AcpiGetTableByIndex (AcpiGbl_XFacsIndex, - ACPI_CAST_INDIRECT_PTR (ACPI_TABLE_HEADER, &Facs)); + ACPI_CAST_INDIRECT_PTR (ACPI_TABLE_HEADER, &Facs)); AcpiGbl_FACS = Facs; } else if (AcpiGbl_FADT.Facs) { (void) AcpiGetTableByIndex (AcpiGbl_FacsIndex, - ACPI_CAST_INDIRECT_PTR (ACPI_TABLE_HEADER, &Facs)); + ACPI_CAST_INDIRECT_PTR (ACPI_TABLE_HEADER, &Facs)); AcpiGbl_FACS = Facs; } @@ -178,33 +178,6 @@ AcpiTbInitializeFacs ( #endif /* !ACPI_REDUCED_HARDWARE */ -/******************************************************************************* - * - * FUNCTION: AcpiTbTablesLoaded - * - * PARAMETERS: None - * - * RETURN: TRUE if required ACPI tables are loaded - * - * DESCRIPTION: Determine if the minimum required ACPI tables are present - * (FADT, FACS, DSDT) - * - ******************************************************************************/ - -BOOLEAN -AcpiTbTablesLoaded ( - void) -{ - - if (AcpiGbl_RootTableList.CurrentTableCount >= 4) - { - return (TRUE); - } - - return (FALSE); -} - - /******************************************************************************* * * FUNCTION: AcpiTbCheckDsdtHeader @@ -232,6 +205,7 @@ AcpiTbCheckDsdtHeader ( ACPI_BIOS_ERROR ((AE_INFO, "The DSDT has been corrupted or replaced - " "old, new headers below")); + AcpiTbPrintTableHeader (0, &AcpiGbl_OriginalDsdtHeader); AcpiTbPrintTableHeader (0, AcpiGbl_DSDT); @@ -280,8 +254,8 @@ AcpiTbCopyDsdt ( AcpiTbInitTableDescriptor ( &AcpiGbl_RootTableList.Tables[AcpiGbl_DsdtIndex], - ACPI_PTR_TO_PHYSADDR (NewTable), ACPI_TABLE_ORIGIN_INTERNAL_VIRTUAL, - NewTable); + ACPI_PTR_TO_PHYSADDR (NewTable), + ACPI_TABLE_ORIGIN_INTERNAL_VIRTUAL, NewTable); ACPI_INFO ((AE_INFO, "Forced DSDT copy: length 0x%05X copied locally, original unmapped", @@ -326,7 +300,8 @@ AcpiTbGetRootTableEntry ( * 32-bit platform, RSDT: Return 32-bit table entry * 64-bit platform, RSDT: Expand 32-bit to 64-bit and return */ - return ((ACPI_PHYSICAL_ADDRESS) (*ACPI_CAST_PTR (UINT32, TableEntry))); + return ((ACPI_PHYSICAL_ADDRESS) (*ACPI_CAST_PTR ( + UINT32, TableEntry))); } else { @@ -492,10 +467,12 @@ AcpiTbParseRootTable ( ACPI_TABLE_ORIGIN_INTERNAL_PHYSICAL, FALSE, TRUE, &TableIndex); if (ACPI_SUCCESS (Status) && - ACPI_COMPARE_NAME (&AcpiGbl_RootTableList.Tables[TableIndex].Signature, + ACPI_COMPARE_NAME ( + &AcpiGbl_RootTableList.Tables[TableIndex].Signature, ACPI_SIG_FADT)) { - AcpiTbParseFadt (TableIndex); + AcpiGbl_FadtIndex = TableIndex; + AcpiTbParseFadt (); } NextTable: @@ -504,7 +481,6 @@ NextTable: } AcpiOsUnmapMemory (Table, Length); - return_ACPI_STATUS (AE_OK); } @@ -515,7 +491,7 @@ NextTable: * * PARAMETERS: Signature - Sig string to be validated * - * RETURN: TRUE if signature is correct length and has valid characters + * RETURN: TRUE if signature is has 4 valid ACPI characters * * DESCRIPTION: Validate an ACPI table signature. * @@ -528,13 +504,6 @@ AcpiIsValidSignature ( UINT32 i; - /* Validate the signature length */ - - if (strlen (Signature) != ACPI_NAME_SIZE) - { - return (FALSE); - } - /* Validate each character in the signature */ for (i = 0; i < ACPI_NAME_SIZE; i++) diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbxface.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbxface.c index 25e140553d..09753bf343 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbxface.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbxface.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -318,8 +318,8 @@ AcpiGetTableHeader ( for (i = 0, j = 0; i < AcpiGbl_RootTableList.CurrentTableCount; i++) { - if (!ACPI_COMPARE_NAME (&(AcpiGbl_RootTableList.Tables[i].Signature), - Signature)) + if (!ACPI_COMPARE_NAME ( + &(AcpiGbl_RootTableList.Tables[i].Signature), Signature)) { continue; } @@ -336,15 +336,14 @@ AcpiGetTableHeader ( ACPI_TABLE_ORIGIN_INTERNAL_PHYSICAL) { Header = AcpiOsMapMemory ( - AcpiGbl_RootTableList.Tables[i].Address, - sizeof (ACPI_TABLE_HEADER)); + AcpiGbl_RootTableList.Tables[i].Address, + sizeof (ACPI_TABLE_HEADER)); if (!Header) { return (AE_NO_MEMORY); } - memcpy (OutTableHeader, Header, - sizeof (ACPI_TABLE_HEADER)); + memcpy (OutTableHeader, Header, sizeof (ACPI_TABLE_HEADER)); AcpiOsUnmapMemory (Header, sizeof (ACPI_TABLE_HEADER)); } else @@ -405,8 +404,8 @@ AcpiGetTable ( for (i = 0, j = 0; i < AcpiGbl_RootTableList.CurrentTableCount; i++) { - if (!ACPI_COMPARE_NAME (&(AcpiGbl_RootTableList.Tables[i].Signature), - Signature)) + if (!ACPI_COMPARE_NAME ( + &(AcpiGbl_RootTableList.Tables[i].Signature), Signature)) { continue; } @@ -477,7 +476,8 @@ AcpiGetTableByIndex ( { /* Table is not mapped, map it */ - Status = AcpiTbValidateTable (&AcpiGbl_RootTableList.Tables[TableIndex]); + Status = AcpiTbValidateTable ( + &AcpiGbl_RootTableList.Tables[TableIndex]); if (ACPI_FAILURE (Status)) { (void) AcpiUtReleaseMutex (ACPI_MTX_TABLES); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbxfload.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbxfload.c index 1d51c913f5..bce2db580a 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbxfload.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbxfload.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -282,6 +282,7 @@ AcpiTbLoadNamespace ( { ACPI_EXCEPTION ((AE_INFO, Status, "(%4.4s:%8.8s) while loading table", Table->Signature.Ascii, Table->Pointer->OemTableId)); + TablesFailed++; ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INIT, @@ -299,7 +300,7 @@ AcpiTbLoadNamespace ( if (!TablesFailed) { ACPI_INFO ((AE_INFO, - "%u ACPI AML tables successfully acquired and loaded", + "%u ACPI AML tables successfully acquired and loaded\n", TablesLoaded)); } else @@ -415,8 +416,8 @@ AcpiLoadTable ( (void) AcpiUtAcquireMutex (ACPI_MTX_TABLES); Status = AcpiTbInstallStandardTable (ACPI_PTR_TO_PHYSADDR (Table), - ACPI_TABLE_ORIGIN_EXTERNAL_VIRTUAL, TRUE, FALSE, - &TableIndex); + ACPI_TABLE_ORIGIN_EXTERNAL_VIRTUAL, TRUE, FALSE, + &TableIndex); (void) AcpiUtReleaseMutex (ACPI_MTX_TABLES); if (ACPI_FAILURE (Status)) @@ -428,7 +429,8 @@ AcpiLoadTable ( * Note: Now table is "INSTALLED", it must be validated before * using. */ - Status = AcpiTbValidateTable (&AcpiGbl_RootTableList.Tables[TableIndex]); + Status = AcpiTbValidateTable ( + &AcpiGbl_RootTableList.Tables[TableIndex]); if (ACPI_FAILURE (Status)) { goto UnlockAndExit; @@ -441,7 +443,7 @@ AcpiLoadTable ( if (AcpiGbl_TableHandler) { (void) AcpiGbl_TableHandler (ACPI_TABLE_EVENT_LOAD, Table, - AcpiGbl_TableHandlerContext); + AcpiGbl_TableHandlerContext); } UnlockAndExit: @@ -524,8 +526,8 @@ AcpiUnloadParentTable ( * that can create namespace objects. */ if (ACPI_COMPARE_NAME ( - AcpiGbl_RootTableList.Tables[i].Signature.Ascii, - ACPI_SIG_DSDT)) + AcpiGbl_RootTableList.Tables[i].Signature.Ascii, + ACPI_SIG_DSDT)) { Status = AE_TYPE; break; @@ -544,8 +546,8 @@ AcpiUnloadParentTable ( if (AcpiGbl_TableHandler) { (void) AcpiGbl_TableHandler (ACPI_TABLE_EVENT_UNLOAD, - AcpiGbl_RootTableList.Tables[i].Pointer, - AcpiGbl_TableHandlerContext); + AcpiGbl_RootTableList.Tables[i].Pointer, + AcpiGbl_TableHandlerContext); } /* diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbxfroot.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbxfroot.c index 45d7d54675..c5275c8b82 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbxfroot.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/tables/tbxfroot.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -243,8 +243,8 @@ AcpiFindRootPointer ( /* 1a) Get the location of the Extended BIOS Data Area (EBDA) */ TablePtr = AcpiOsMapMemory ( - (ACPI_PHYSICAL_ADDRESS) ACPI_EBDA_PTR_LOCATION, - ACPI_EBDA_PTR_LENGTH); + (ACPI_PHYSICAL_ADDRESS) ACPI_EBDA_PTR_LOCATION, + ACPI_EBDA_PTR_LENGTH); if (!TablePtr) { ACPI_ERROR ((AE_INFO, @@ -270,8 +270,8 @@ AcpiFindRootPointer ( * minimum of 1K length) */ TablePtr = AcpiOsMapMemory ( - (ACPI_PHYSICAL_ADDRESS) PhysicalAddress, - ACPI_EBDA_WINDOW_SIZE); + (ACPI_PHYSICAL_ADDRESS) PhysicalAddress, + ACPI_EBDA_WINDOW_SIZE); if (!TablePtr) { ACPI_ERROR ((AE_INFO, @@ -281,14 +281,16 @@ AcpiFindRootPointer ( return_ACPI_STATUS (AE_NO_MEMORY); } - MemRover = AcpiTbScanMemoryForRsdp (TablePtr, ACPI_EBDA_WINDOW_SIZE); + MemRover = AcpiTbScanMemoryForRsdp ( + TablePtr, ACPI_EBDA_WINDOW_SIZE); AcpiOsUnmapMemory (TablePtr, ACPI_EBDA_WINDOW_SIZE); if (MemRover) { /* Return the physical address */ - PhysicalAddress += (UINT32) ACPI_PTR_DIFF (MemRover, TablePtr); + PhysicalAddress += + (UINT32) ACPI_PTR_DIFF (MemRover, TablePtr); *TableAddress = (ACPI_PHYSICAL_ADDRESS) PhysicalAddress; return_ACPI_STATUS (AE_OK); @@ -299,8 +301,8 @@ AcpiFindRootPointer ( * 2) Search upper memory: 16-byte boundaries in E0000h-FFFFFh */ TablePtr = AcpiOsMapMemory ( - (ACPI_PHYSICAL_ADDRESS) ACPI_HI_RSDP_WINDOW_BASE, - ACPI_HI_RSDP_WINDOW_SIZE); + (ACPI_PHYSICAL_ADDRESS) ACPI_HI_RSDP_WINDOW_BASE, + ACPI_HI_RSDP_WINDOW_SIZE); if (!TablePtr) { @@ -311,7 +313,8 @@ AcpiFindRootPointer ( return_ACPI_STATUS (AE_NO_MEMORY); } - MemRover = AcpiTbScanMemoryForRsdp (TablePtr, ACPI_HI_RSDP_WINDOW_SIZE); + MemRover = AcpiTbScanMemoryForRsdp ( + TablePtr, ACPI_HI_RSDP_WINDOW_SIZE); AcpiOsUnmapMemory (TablePtr, ACPI_HI_RSDP_WINDOW_SIZE); if (MemRover) @@ -369,7 +372,8 @@ AcpiTbScanMemoryForRsdp ( { /* The RSDP signature and checksum must both be correct */ - Status = AcpiTbValidateRsdp (ACPI_CAST_PTR (ACPI_TABLE_RSDP, MemRover)); + Status = AcpiTbValidateRsdp ( + ACPI_CAST_PTR (ACPI_TABLE_RSDP, MemRover)); if (ACPI_SUCCESS (Status)) { /* Sig and checksum valid, we have found a real RSDP */ diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utaddress.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utaddress.c index 9d65019b42..3fc1b63e49 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utaddress.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utaddress.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -335,7 +335,7 @@ AcpiUtCheckAddressRange ( OverlapCount++; if (Warn) /* Optional warning message */ { - Pathname = AcpiNsGetExternalPathname (RangeInfo->RegionNode); + Pathname = AcpiNsGetNormalizedPathname (RangeInfo->RegionNode, TRUE); ACPI_WARNING ((AE_INFO, "%s range 0x%8.8X%8.8X-0x%8.8X%8.8X conflicts with OpRegion 0x%8.8X%8.8X-0x%8.8X%8.8X (%s)", diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utalloc.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utalloc.c index 62c3e28f31..62e2306f9d 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utalloc.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utalloc.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -182,35 +182,35 @@ AcpiUtCreateCaches ( /* Object Caches, for frequently used objects */ Status = AcpiOsCreateCache ("Acpi-Namespace", sizeof (ACPI_NAMESPACE_NODE), - ACPI_MAX_NAMESPACE_CACHE_DEPTH, &AcpiGbl_NamespaceCache); + ACPI_MAX_NAMESPACE_CACHE_DEPTH, &AcpiGbl_NamespaceCache); if (ACPI_FAILURE (Status)) { return (Status); } Status = AcpiOsCreateCache ("Acpi-State", sizeof (ACPI_GENERIC_STATE), - ACPI_MAX_STATE_CACHE_DEPTH, &AcpiGbl_StateCache); + ACPI_MAX_STATE_CACHE_DEPTH, &AcpiGbl_StateCache); if (ACPI_FAILURE (Status)) { return (Status); } Status = AcpiOsCreateCache ("Acpi-Parse", sizeof (ACPI_PARSE_OBJ_COMMON), - ACPI_MAX_PARSE_CACHE_DEPTH, &AcpiGbl_PsNodeCache); + ACPI_MAX_PARSE_CACHE_DEPTH, &AcpiGbl_PsNodeCache); if (ACPI_FAILURE (Status)) { return (Status); } Status = AcpiOsCreateCache ("Acpi-ParseExt", sizeof (ACPI_PARSE_OBJ_NAMED), - ACPI_MAX_EXTPARSE_CACHE_DEPTH, &AcpiGbl_PsNodeExtCache); + ACPI_MAX_EXTPARSE_CACHE_DEPTH, &AcpiGbl_PsNodeExtCache); if (ACPI_FAILURE (Status)) { return (Status); } Status = AcpiOsCreateCache ("Acpi-Operand", sizeof (ACPI_OPERAND_OBJECT), - ACPI_MAX_OBJECT_CACHE_DEPTH, &AcpiGbl_OperandCache); + ACPI_MAX_OBJECT_CACHE_DEPTH, &AcpiGbl_OperandCache); if (ACPI_FAILURE (Status)) { return (Status); @@ -222,14 +222,14 @@ AcpiUtCreateCaches ( /* Memory allocation lists */ Status = AcpiUtCreateList ("Acpi-Global", 0, - &AcpiGbl_GlobalList); + &AcpiGbl_GlobalList); if (ACPI_FAILURE (Status)) { return (Status); } Status = AcpiUtCreateList ("Acpi-Namespace", sizeof (ACPI_NAMESPACE_NODE), - &AcpiGbl_NsNodeList); + &AcpiGbl_NsNodeList); if (ACPI_FAILURE (Status)) { return (Status); @@ -259,6 +259,7 @@ AcpiUtDeleteCaches ( #ifdef ACPI_DBG_TRACK_ALLOCATIONS char Buffer[7]; + if (AcpiGbl_DisplayFinalMemStats) { strcpy (Buffer, "MEMORY"); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utbuffer.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utbuffer.c index 79aff33729..4a50e9e062 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utbuffer.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utbuffer.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utcache.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utcache.c index 5cf52502eb..5c5a76a108 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utcache.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utcache.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -165,9 +165,9 @@ AcpiOsCreateCache ( /* Populate the cache object and return it */ memset (Cache, 0, sizeof (ACPI_MEMORY_LIST)); - Cache->ListName = CacheName; + Cache->ListName = CacheName; Cache->ObjectSize = ObjectSize; - Cache->MaxDepth = MaxDepth; + Cache->MaxDepth = MaxDepth; *ReturnCache = Cache; return (AE_OK); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utclib.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utclib.c index 5c62672e50..26fbaf958d 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utclib.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utclib.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utcopy.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utcopy.c index bc777876e3..3269a4528e 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utcopy.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utcopy.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -235,7 +235,7 @@ AcpiUtCopyIsimpleToEsimple ( ExternalObject->String.Pointer = (char *) DataSpace; ExternalObject->String.Length = InternalObject->String.Length; *BufferSpaceUsed = ACPI_ROUND_UP_TO_NATIVE_WORD ( - (ACPI_SIZE) InternalObject->String.Length + 1); + (ACPI_SIZE) InternalObject->String.Length + 1); memcpy ((void *) DataSpace, (void *) InternalObject->String.Pointer, @@ -247,7 +247,7 @@ AcpiUtCopyIsimpleToEsimple ( ExternalObject->Buffer.Pointer = DataSpace; ExternalObject->Buffer.Length = InternalObject->Buffer.Length; *BufferSpaceUsed = ACPI_ROUND_UP_TO_NATIVE_WORD ( - InternalObject->String.Length); + InternalObject->String.Length); memcpy ((void *) DataSpace, (void *) InternalObject->Buffer.Pointer, @@ -347,9 +347,9 @@ AcpiUtCopyIelementToEelement ( ACPI_FUNCTION_ENTRY (); - ThisIndex = State->Pkg.Index; - TargetObject = (ACPI_OBJECT *) - &((ACPI_OBJECT *)(State->Pkg.DestObject))->Package.Elements[ThisIndex]; + ThisIndex = State->Pkg.Index; + TargetObject = (ACPI_OBJECT *) &((ACPI_OBJECT *) + (State->Pkg.DestObject))->Package.Elements[ThisIndex]; switch (ObjectType) { @@ -358,7 +358,7 @@ AcpiUtCopyIelementToEelement ( * This is a simple or null object */ Status = AcpiUtCopyIsimpleToEsimple (SourceObject, - TargetObject, Info->FreeSpace, &ObjectSpace); + TargetObject, Info->FreeSpace, &ObjectSpace); if (ACPI_FAILURE (Status)) { return (Status); @@ -369,9 +369,9 @@ AcpiUtCopyIelementToEelement ( /* * Build the package object */ - TargetObject->Type = ACPI_TYPE_PACKAGE; - TargetObject->Package.Count = SourceObject->Package.Count; - TargetObject->Package.Elements = + TargetObject->Type = ACPI_TYPE_PACKAGE; + TargetObject->Package.Count = SourceObject->Package.Count; + TargetObject->Package.Elements = ACPI_CAST_PTR (ACPI_OBJECT, Info->FreeSpace); /* @@ -384,8 +384,8 @@ AcpiUtCopyIelementToEelement ( * update the buffer length counter */ ObjectSpace = ACPI_ROUND_UP_TO_NATIVE_WORD ( - (ACPI_SIZE) TargetObject->Package.Count * - sizeof (ACPI_OBJECT)); + (ACPI_SIZE) TargetObject->Package.Count * + sizeof (ACPI_OBJECT)); break; default: @@ -393,8 +393,8 @@ AcpiUtCopyIelementToEelement ( return (AE_BAD_PARAMETER); } - Info->FreeSpace += ObjectSpace; - Info->Length += ObjectSpace; + Info->FreeSpace += ObjectSpace; + Info->Length += ObjectSpace; return (Status); } @@ -440,28 +440,28 @@ AcpiUtCopyIpackageToEpackage ( /* * Free space begins right after the first package */ - Info.Length = ACPI_ROUND_UP_TO_NATIVE_WORD (sizeof (ACPI_OBJECT)); - Info.FreeSpace = Buffer + ACPI_ROUND_UP_TO_NATIVE_WORD ( - sizeof (ACPI_OBJECT)); + Info.Length = ACPI_ROUND_UP_TO_NATIVE_WORD (sizeof (ACPI_OBJECT)); + Info.FreeSpace = Buffer + + ACPI_ROUND_UP_TO_NATIVE_WORD (sizeof (ACPI_OBJECT)); Info.ObjectSpace = 0; Info.NumPackages = 1; - ExternalObject->Type = InternalObject->Common.Type; - ExternalObject->Package.Count = InternalObject->Package.Count; - ExternalObject->Package.Elements = ACPI_CAST_PTR (ACPI_OBJECT, - Info.FreeSpace); + ExternalObject->Type = InternalObject->Common.Type; + ExternalObject->Package.Count = InternalObject->Package.Count; + ExternalObject->Package.Elements = + ACPI_CAST_PTR (ACPI_OBJECT, Info.FreeSpace); /* * Leave room for an array of ACPI_OBJECTS in the buffer * and move the free space past it */ - Info.Length += (ACPI_SIZE) ExternalObject->Package.Count * - ACPI_ROUND_UP_TO_NATIVE_WORD (sizeof (ACPI_OBJECT)); + Info.Length += (ACPI_SIZE) ExternalObject->Package.Count * + ACPI_ROUND_UP_TO_NATIVE_WORD (sizeof (ACPI_OBJECT)); Info.FreeSpace += ExternalObject->Package.Count * - ACPI_ROUND_UP_TO_NATIVE_WORD (sizeof (ACPI_OBJECT)); + ACPI_ROUND_UP_TO_NATIVE_WORD (sizeof (ACPI_OBJECT)); Status = AcpiUtWalkPackageTree (InternalObject, ExternalObject, - AcpiUtCopyIelementToEelement, &Info); + AcpiUtCopyIelementToEelement, &Info); *SpaceUsed = Info.Length; return_ACPI_STATUS (Status); @@ -500,7 +500,7 @@ AcpiUtCopyIobjectToEobject ( * nested packages) */ Status = AcpiUtCopyIpackageToEpackage (InternalObject, - RetBuffer->Pointer, &RetBuffer->Length); + RetBuffer->Pointer, &RetBuffer->Length); } else { @@ -508,10 +508,10 @@ AcpiUtCopyIobjectToEobject ( * Build a simple object (no nested objects) */ Status = AcpiUtCopyIsimpleToEsimple (InternalObject, - ACPI_CAST_PTR (ACPI_OBJECT, RetBuffer->Pointer), - ACPI_ADD_PTR (UINT8, RetBuffer->Pointer, - ACPI_ROUND_UP_TO_NATIVE_WORD (sizeof (ACPI_OBJECT))), - &RetBuffer->Length); + ACPI_CAST_PTR (ACPI_OBJECT, RetBuffer->Pointer), + ACPI_ADD_PTR (UINT8, RetBuffer->Pointer, + ACPI_ROUND_UP_TO_NATIVE_WORD (sizeof (ACPI_OBJECT))), + &RetBuffer->Length); /* * build simple does not include the object size in the length * so we add it in here @@ -561,7 +561,7 @@ AcpiUtCopyEsimpleToIsimple ( case ACPI_TYPE_LOCAL_REFERENCE: InternalObject = AcpiUtCreateInternalObject ( - (UINT8) ExternalObject->Type); + (UINT8) ExternalObject->Type); if (!InternalObject) { return_ACPI_STATUS (AE_NO_MEMORY); @@ -601,10 +601,10 @@ AcpiUtCopyEsimpleToIsimple ( } memcpy (InternalObject->String.Pointer, - ExternalObject->String.Pointer, - ExternalObject->String.Length); + ExternalObject->String.Pointer, + ExternalObject->String.Length); - InternalObject->String.Length = ExternalObject->String.Length; + InternalObject->String.Length = ExternalObject->String.Length; break; case ACPI_TYPE_BUFFER: @@ -617,10 +617,10 @@ AcpiUtCopyEsimpleToIsimple ( } memcpy (InternalObject->Buffer.Pointer, - ExternalObject->Buffer.Pointer, - ExternalObject->Buffer.Length); + ExternalObject->Buffer.Pointer, + ExternalObject->Buffer.Length); - InternalObject->Buffer.Length = ExternalObject->Buffer.Length; + InternalObject->Buffer.Length = ExternalObject->Buffer.Length; /* Mark buffer data valid */ @@ -629,7 +629,7 @@ AcpiUtCopyEsimpleToIsimple ( case ACPI_TYPE_INTEGER: - InternalObject->Integer.Value = ExternalObject->Integer.Value; + InternalObject->Integer.Value = ExternalObject->Integer.Value; break; case ACPI_TYPE_LOCAL_REFERENCE: @@ -687,7 +687,8 @@ AcpiUtCopyEpackageToIpackage ( /* Create the package object */ - PackageObject = AcpiUtCreatePackageObject (ExternalObject->Package.Count); + PackageObject = AcpiUtCreatePackageObject ( + ExternalObject->Package.Count); if (!PackageObject) { return_ACPI_STATUS (AE_NO_MEMORY); @@ -696,14 +697,14 @@ AcpiUtCopyEpackageToIpackage ( PackageElements = PackageObject->Package.Elements; /* - * Recursive implementation. Probably ok, since nested external packages - * as parameters should be very rare. + * Recursive implementation. Probably ok, since nested external + * packages as parameters should be very rare. */ for (i = 0; i < ExternalObject->Package.Count; i++) { Status = AcpiUtCopyEobjectToIobject ( - &ExternalObject->Package.Elements[i], - &PackageElements[i]); + &ExternalObject->Package.Elements[i], + &PackageElements[i]); if (ACPI_FAILURE (Status)) { /* Truncate package and delete it */ @@ -750,14 +751,16 @@ AcpiUtCopyEobjectToIobject ( if (ExternalObject->Type == ACPI_TYPE_PACKAGE) { - Status = AcpiUtCopyEpackageToIpackage (ExternalObject, InternalObject); + Status = AcpiUtCopyEpackageToIpackage ( + ExternalObject, InternalObject); } else { /* * Build a simple object (no nested objects) */ - Status = AcpiUtCopyEsimpleToIsimple (ExternalObject, InternalObject); + Status = AcpiUtCopyEsimpleToIsimple (ExternalObject, + InternalObject); } return_ACPI_STATUS (Status); @@ -908,7 +911,7 @@ AcpiUtCopySimpleObject ( case ACPI_TYPE_EVENT: Status = AcpiOsCreateSemaphore (ACPI_NO_UNIT_LIMIT, 0, - &DestDesc->Event.OsSemaphore); + &DestDesc->Event.OsSemaphore); if (ACPI_FAILURE (Status)) { return (Status); @@ -954,9 +957,9 @@ AcpiUtCopyIelementToIelement ( ACPI_FUNCTION_ENTRY (); - ThisIndex = State->Pkg.Index; + ThisIndex = State->Pkg.Index; ThisTargetPtr = (ACPI_OPERAND_OBJECT **) - &State->Pkg.DestObject->Package.Elements[ThisIndex]; + &State->Pkg.DestObject->Package.Elements[ThisIndex]; switch (ObjectType) { @@ -970,7 +973,7 @@ AcpiUtCopyIelementToIelement ( * This is a simple object, just copy it */ TargetObject = AcpiUtCreateInternalObject ( - SourceObject->Common.Type); + SourceObject->Common.Type); if (!TargetObject) { return (AE_NO_MEMORY); @@ -997,7 +1000,8 @@ AcpiUtCopyIelementToIelement ( * This object is a package - go down another nesting level * Create and build the package object */ - TargetObject = AcpiUtCreatePackageObject (SourceObject->Package.Count); + TargetObject = AcpiUtCreatePackageObject ( + SourceObject->Package.Count); if (!TargetObject) { return (AE_NO_MEMORY); @@ -1054,16 +1058,16 @@ AcpiUtCopyIpackageToIpackage ( ACPI_FUNCTION_TRACE (UtCopyIpackageToIpackage); - DestObj->Common.Type = SourceObj->Common.Type; - DestObj->Common.Flags = SourceObj->Common.Flags; - DestObj->Package.Count = SourceObj->Package.Count; + DestObj->Common.Type = SourceObj->Common.Type; + DestObj->Common.Flags = SourceObj->Common.Flags; + DestObj->Package.Count = SourceObj->Package.Count; /* * Create the object array and walk the source package tree */ DestObj->Package.Elements = ACPI_ALLOCATE_ZEROED ( - ((ACPI_SIZE) SourceObj->Package.Count + 1) * - sizeof (void *)); + ((ACPI_SIZE) SourceObj->Package.Count + 1) * + sizeof (void *)); if (!DestObj->Package.Elements) { ACPI_ERROR ((AE_INFO, "Package allocation failure")); @@ -1075,7 +1079,7 @@ AcpiUtCopyIpackageToIpackage ( * This handles nested packages of arbitrary depth. */ Status = AcpiUtWalkPackageTree (SourceObj, DestObj, - AcpiUtCopyIelementToIelement, WalkState); + AcpiUtCopyIelementToIelement, WalkState); if (ACPI_FAILURE (Status)) { /* On failure, delete the destination package object */ @@ -1125,8 +1129,8 @@ AcpiUtCopyIobjectToIobject ( if (SourceDesc->Common.Type == ACPI_TYPE_PACKAGE) { - Status = AcpiUtCopyIpackageToIpackage (SourceDesc, *DestDesc, - WalkState); + Status = AcpiUtCopyIpackageToIpackage ( + SourceDesc, *DestDesc, WalkState); } else { @@ -1137,7 +1141,7 @@ AcpiUtCopyIobjectToIobject ( if (ACPI_FAILURE (Status)) { - AcpiUtRemoveReference(*DestDesc); + AcpiUtRemoveReference (*DestDesc); } return_ACPI_STATUS (Status); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utdebug.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utdebug.c index df52d1741e..e50f838b20 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utdebug.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utdebug.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utdecode.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utdecode.c index eb0dc9f27d..15ab30548a 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utdecode.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utdecode.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -191,7 +191,7 @@ const char *AcpiGbl_RegionTypes[ACPI_NUM_PREDEFINED_REGIONS] = }; -char * +const char * AcpiUtGetRegionName ( UINT8 SpaceId) { @@ -213,7 +213,7 @@ AcpiUtGetRegionName ( return ("InvalidSpaceId"); } - return (ACPI_CAST_PTR (char, AcpiGbl_RegionTypes[SpaceId])); + return (AcpiGbl_RegionTypes[SpaceId]); } @@ -241,7 +241,7 @@ static const char *AcpiGbl_EventTypes[ACPI_NUM_FIXED_EVENTS] = }; -char * +const char * AcpiUtGetEventName ( UINT32 EventId) { @@ -251,7 +251,7 @@ AcpiUtGetEventName ( return ("InvalidEventID"); } - return (ACPI_CAST_PTR (char, AcpiGbl_EventTypes[EventId])); + return (AcpiGbl_EventTypes[EventId]); } @@ -273,7 +273,8 @@ AcpiUtGetEventName ( * * The type ACPI_TYPE_ANY (Untyped) is used as a "don't care" when searching; * when stored in a table it really means that we have thus far seen no - * evidence to indicate what type is actually going to be stored for this entry. + * evidence to indicate what type is actually going to be stored for this + & entry. */ static const char AcpiGbl_BadType[] = "UNDEFINED"; @@ -315,31 +316,47 @@ static const char *AcpiGbl_NsTypeNames[] = }; -char * +const char * AcpiUtGetTypeName ( ACPI_OBJECT_TYPE Type) { if (Type > ACPI_TYPE_INVALID) { - return (ACPI_CAST_PTR (char, AcpiGbl_BadType)); + return (AcpiGbl_BadType); } - return (ACPI_CAST_PTR (char, AcpiGbl_NsTypeNames[Type])); + return (AcpiGbl_NsTypeNames[Type]); } -char * +const char * AcpiUtGetObjectTypeName ( ACPI_OPERAND_OBJECT *ObjDesc) { + ACPI_FUNCTION_TRACE (UtGetObjectTypeName); + if (!ObjDesc) { - return ("[NULL Object Descriptor]"); + ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Null Object Descriptor\n")); + return_PTR ("[NULL Object Descriptor]"); } - return (AcpiUtGetTypeName (ObjDesc->Common.Type)); + /* These descriptor types share a common area */ + + if ((ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) != ACPI_DESC_TYPE_OPERAND) && + (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) != ACPI_DESC_TYPE_NAMED)) + { + ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, + "Invalid object descriptor type: 0x%2.2X [%s] (%p)\n", + ACPI_GET_DESCRIPTOR_TYPE (ObjDesc), + AcpiUtGetDescriptorName (ObjDesc), ObjDesc)); + + return_PTR ("Invalid object"); + } + + return_PTR (AcpiUtGetTypeName (ObjDesc->Common.Type)); } @@ -355,7 +372,7 @@ AcpiUtGetObjectTypeName ( * ******************************************************************************/ -char * +const char * AcpiUtGetNodeName ( void *Object) { @@ -431,7 +448,7 @@ static const char *AcpiGbl_DescTypeNames[] = }; -char * +const char * AcpiUtGetDescriptorName ( void *Object) { @@ -446,9 +463,7 @@ AcpiUtGetDescriptorName ( return ("Not a Descriptor"); } - return (ACPI_CAST_PTR (char, - AcpiGbl_DescTypeNames[ACPI_GET_DESCRIPTOR_TYPE (Object)])); - + return (AcpiGbl_DescTypeNames[ACPI_GET_DESCRIPTOR_TYPE (Object)]); } @@ -525,7 +540,7 @@ AcpiUtGetReferenceName ( /* Names for internal mutex objects, used for debug output */ -static char *AcpiGbl_MutexNames[ACPI_NUM_MUTEX] = +static const char *AcpiGbl_MutexNames[ACPI_NUM_MUTEX] = { "ACPI_MTX_Interpreter", "ACPI_MTX_Namespace", @@ -533,11 +548,9 @@ static char *AcpiGbl_MutexNames[ACPI_NUM_MUTEX] = "ACPI_MTX_Events", "ACPI_MTX_Caches", "ACPI_MTX_Memory", - "ACPI_MTX_CommandComplete", - "ACPI_MTX_CommandReady" }; -char * +const char * AcpiUtGetMutexName ( UINT32 MutexId) { diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utdelete.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utdelete.c index 8a55c8edea..0921b38092 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utdelete.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utdelete.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -292,6 +292,7 @@ AcpiUtDeleteInternalObj ( AcpiUtDeleteObjectDesc (Object->Method.Mutex); Object->Method.Mutex = NULL; } + if (Object->Method.Node) { Object->Method.Node = NULL; @@ -625,8 +626,8 @@ AcpiUtUpdateObjectReference ( } /* - * All sub-objects must have their reference count incremented also. - * Different object types have different subobjects. + * All sub-objects must have their reference count incremented + * also. Different object types have different subobjects. */ switch (Object->Common.Type) { @@ -686,7 +687,7 @@ AcpiUtUpdateObjectReference ( * for later processing (this eliminates recursion.) */ Status = AcpiUtCreateUpdateStateAndPush ( - NextObject, Action, &StateList); + NextObject, Action, &StateList); if (ACPI_FAILURE (Status)) { goto ErrorExit; @@ -711,7 +712,7 @@ AcpiUtUpdateObjectReference ( NextObject = Object->BankField.BankObj; Status = AcpiUtCreateUpdateStateAndPush ( - Object->BankField.RegionObj, Action, &StateList); + Object->BankField.RegionObj, Action, &StateList); if (ACPI_FAILURE (Status)) { goto ErrorExit; @@ -722,7 +723,7 @@ AcpiUtUpdateObjectReference ( NextObject = Object->IndexField.IndexObj; Status = AcpiUtCreateUpdateStateAndPush ( - Object->IndexField.DataObj, Action, &StateList); + Object->IndexField.DataObj, Action, &StateList); if (ACPI_FAILURE (Status)) { goto ErrorExit; diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/uterror.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/uterror.c index 52b9ae064f..5246c9345e 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/uterror.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/uterror.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -316,8 +316,8 @@ AcpiUtNamespaceError ( { /* Convert path to external format */ - Status = AcpiNsExternalizeName (ACPI_UINT32_MAX, - InternalName, NULL, &Name); + Status = AcpiNsExternalizeName ( + ACPI_UINT32_MAX, InternalName, NULL, &Name); /* Print target name */ @@ -379,8 +379,8 @@ AcpiUtMethodError ( if (Path) { - Status = AcpiNsGetNode (PrefixNode, Path, ACPI_NS_NO_UPSEARCH, - &Node); + Status = AcpiNsGetNode (PrefixNode, Path, + ACPI_NS_NO_UPSEARCH, &Node); if (ACPI_FAILURE (Status)) { AcpiOsPrintf ("[Could not get node by pathname]"); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/uteval.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/uteval.c index dd754c0974..2028d83f9f 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/uteval.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/uteval.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -303,7 +303,7 @@ AcpiUtEvaluateNumericObject ( Status = AcpiUtEvaluateObject (DeviceNode, ObjectName, - ACPI_BTYPE_INTEGER, &ObjDesc); + ACPI_BTYPE_INTEGER, &ObjDesc); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -350,7 +350,7 @@ AcpiUtExecute_STA ( Status = AcpiUtEvaluateObject (DeviceNode, METHOD_NAME__STA, - ACPI_BTYPE_INTEGER, &ObjDesc); + ACPI_BTYPE_INTEGER, &ObjDesc); if (ACPI_FAILURE (Status)) { if (AE_NOT_FOUND == Status) @@ -423,8 +423,8 @@ AcpiUtExecutePowerMethods ( * return type is an Integer. */ Status = AcpiUtEvaluateObject (DeviceNode, - ACPI_CAST_PTR (char, MethodNames[i]), - ACPI_BTYPE_INTEGER, &ObjDesc); + ACPI_CAST_PTR (char, MethodNames[i]), + ACPI_BTYPE_INTEGER, &ObjDesc); if (ACPI_SUCCESS (Status)) { OutValues[i] = (UINT8) ObjDesc->Integer.Value; diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utexcep.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utexcep.c index dd63a12afb..f48bcc0026 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utexcep.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utexcep.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utfileio.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utfileio.c deleted file mode 100644 index 7d6c225f6c..0000000000 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utfileio.c +++ /dev/null @@ -1,431 +0,0 @@ -/******************************************************************************* - * - * Module Name: utfileio - simple file I/O routines - * - ******************************************************************************/ - -/****************************************************************************** - * - * 1. Copyright Notice - * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. - * All rights reserved. - * - * 2. License - * - * 2.1. This is your license from Intel Corp. under its intellectual property - * rights. You may have additional license terms from the party that provided - * you this software, covering your right to use that party's intellectual - * property rights. - * - * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a - * copy of the source code appearing in this file ("Covered Code") an - * irrevocable, perpetual, worldwide license under Intel's copyrights in the - * base code distributed originally by Intel ("Original Intel Code") to copy, - * make derivatives, distribute, use and display any portion of the Covered - * Code in any form, with the right to sublicense such rights; and - * - * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent - * license (with the right to sublicense), under only those claims of Intel - * patents that are infringed by the Original Intel Code, to make, use, sell, - * offer to sell, and import the Covered Code and derivative works thereof - * solely to the minimum extent necessary to exercise the above copyright - * license, and in no event shall the patent license extend to any additions - * to or modifications of the Original Intel Code. No other license or right - * is granted directly or by implication, estoppel or otherwise; - * - * The above copyright and patent license is granted only if the following - * conditions are met: - * - * 3. Conditions - * - * 3.1. Redistribution of Source with Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification with rights to further distribute source must include - * the above Copyright Notice, the above License, this list of Conditions, - * and the following Disclaimer and Export Compliance provision. In addition, - * Licensee must cause all Covered Code to which Licensee contributes to - * contain a file documenting the changes Licensee made to create that Covered - * Code and the date of any change. Licensee must include in that file the - * documentation of any changes made by any predecessor Licensee. Licensee - * must include a prominent statement that the modification is derived, - * directly or indirectly, from Original Intel Code. - * - * 3.2. Redistribution of Source with no Rights to Further Distribute Source. - * Redistribution of source code of any substantial portion of the Covered - * Code or modification without rights to further distribute source must - * include the following Disclaimer and Export Compliance provision in the - * documentation and/or other materials provided with distribution. In - * addition, Licensee may not authorize further sublicense of source of any - * portion of the Covered Code, and must include terms to the effect that the - * license from Licensee to its licensee is limited to the intellectual - * property embodied in the software Licensee provides to its licensee, and - * not to intellectual property embodied in modifications its licensee may - * make. - * - * 3.3. Redistribution of Executable. Redistribution in executable form of any - * substantial portion of the Covered Code or modification must reproduce the - * above Copyright Notice, and the following Disclaimer and Export Compliance - * provision in the documentation and/or other materials provided with the - * distribution. - * - * 3.4. Intel retains all right, title, and interest in and to the Original - * Intel Code. - * - * 3.5. Neither the name Intel nor any other trademark owned or controlled by - * Intel shall be used in advertising or otherwise to promote the sale, use or - * other dealings in products derived from or relating to the Covered Code - * without prior written authorization from Intel. - * - * 4. Disclaimer and Export Compliance - * - * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED - * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE - * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, - * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY - * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A - * PARTICULAR PURPOSE. - * - * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES - * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR - * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, - * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY - * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL - * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS - * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY - * LIMITED REMEDY. - * - * 4.3. Licensee shall not export, either directly or indirectly, any of this - * software or system incorporating such software without first obtaining any - * required license or other approval from the U. S. Department of Commerce or - * any other agency or department of the United States Government. In the - * event Licensee exports any such software from the United States or - * re-exports any such software from a foreign destination, Licensee shall - * ensure that the distribution and export/re-export of the software is in - * compliance with all laws, regulations, orders, or other restrictions of the - * U.S. Export Administration Regulations. Licensee agrees that neither it nor - * any of its subsidiaries will export/re-export any technical data, process, - * software, or service, directly or indirectly, to any country for which the - * United States government or any agency thereof requires an export license, - * other governmental approval, or letter of assurance, without first obtaining - * such license, approval or letter. - * - *****************************************************************************/ - -#include "acpi.h" -#include "accommon.h" -#include "actables.h" -#include "acapps.h" - -#ifdef ACPI_ASL_COMPILER -#include "aslcompiler.h" -#endif - - -#define _COMPONENT ACPI_CA_DEBUGGER - ACPI_MODULE_NAME ("utfileio") - - -#ifdef ACPI_APPLICATION - -/* Local prototypes */ - -static ACPI_STATUS -AcpiUtCheckTextModeCorruption ( - UINT8 *Table, - UINT32 TableLength, - UINT32 FileLength); - -static ACPI_STATUS -AcpiUtReadTable ( - FILE *fp, - ACPI_TABLE_HEADER **Table, - UINT32 *TableLength); - - -/******************************************************************************* - * - * FUNCTION: AcpiUtCheckTextModeCorruption - * - * PARAMETERS: Table - Table buffer - * TableLength - Length of table from the table header - * FileLength - Length of the file that contains the table - * - * RETURN: Status - * - * DESCRIPTION: Check table for text mode file corruption where all linefeed - * characters (LF) have been replaced by carriage return linefeed - * pairs (CR/LF). - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiUtCheckTextModeCorruption ( - UINT8 *Table, - UINT32 TableLength, - UINT32 FileLength) -{ - UINT32 i; - UINT32 Pairs = 0; - - - if (TableLength != FileLength) - { - ACPI_WARNING ((AE_INFO, - "File length (0x%X) is not the same as the table length (0x%X)", - FileLength, TableLength)); - } - - /* Scan entire table to determine if each LF has been prefixed with a CR */ - - for (i = 1; i < FileLength; i++) - { - if (Table[i] == 0x0A) - { - if (Table[i - 1] != 0x0D) - { - /* The LF does not have a preceding CR, table not corrupted */ - - return (AE_OK); - } - else - { - /* Found a CR/LF pair */ - - Pairs++; - } - i++; - } - } - - if (!Pairs) - { - return (AE_OK); - } - - /* - * Entire table scanned, each CR is part of a CR/LF pair -- - * meaning that the table was treated as a text file somewhere. - * - * NOTE: We can't "fix" the table, because any existing CR/LF pairs in the - * original table are left untouched by the text conversion process -- - * meaning that we cannot simply replace CR/LF pairs with LFs. - */ - AcpiOsPrintf ("Table has been corrupted by text mode conversion\n"); - AcpiOsPrintf ("All LFs (%u) were changed to CR/LF pairs\n", Pairs); - AcpiOsPrintf ("Table cannot be repaired!\n"); - return (AE_BAD_VALUE); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtReadTable - * - * PARAMETERS: fp - File that contains table - * Table - Return value, buffer with table - * TableLength - Return value, length of table - * - * RETURN: Status - * - * DESCRIPTION: Load the DSDT from the file pointer - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiUtReadTable ( - FILE *fp, - ACPI_TABLE_HEADER **Table, - UINT32 *TableLength) -{ - ACPI_TABLE_HEADER TableHeader; - UINT32 Actual; - ACPI_STATUS Status; - UINT32 FileSize; - BOOLEAN StandardHeader = TRUE; - INT32 Count; - - /* Get the file size */ - - FileSize = CmGetFileSize (fp); - if (FileSize == ACPI_UINT32_MAX) - { - return (AE_ERROR); - } - - if (FileSize < 4) - { - return (AE_BAD_HEADER); - } - - /* Read the signature */ - - fseek (fp, 0, SEEK_SET); - - Count = fread (&TableHeader, 1, sizeof (ACPI_TABLE_HEADER), fp); - if (Count != sizeof (ACPI_TABLE_HEADER)) - { - AcpiOsPrintf ("Could not read the table header\n"); - return (AE_BAD_HEADER); - } - - /* The RSDP table does not have standard ACPI header */ - - if (ACPI_VALIDATE_RSDP_SIG (TableHeader.Signature)) - { - *TableLength = FileSize; - StandardHeader = FALSE; - } - else - { - -#if 0 - /* Validate the table header/length */ - - Status = AcpiTbValidateTableHeader (&TableHeader); - if (ACPI_FAILURE (Status)) - { - AcpiOsPrintf ("Table header is invalid!\n"); - return (Status); - } -#endif - - /* File size must be at least as long as the Header-specified length */ - - if (TableHeader.Length > FileSize) - { - AcpiOsPrintf ( - "TableHeader length [0x%X] greater than the input file size [0x%X]\n", - TableHeader.Length, FileSize); - -#ifdef ACPI_ASL_COMPILER - AcpiOsPrintf ("File is corrupt or is ASCII text -- " - "it must be a binary file\n"); -#endif - return (AE_BAD_HEADER); - } - -#ifdef ACPI_OBSOLETE_CODE - /* We only support a limited number of table types */ - - if (!ACPI_COMPARE_NAME ((char *) TableHeader.Signature, ACPI_SIG_DSDT) && - !ACPI_COMPARE_NAME ((char *) TableHeader.Signature, ACPI_SIG_PSDT) && - !ACPI_COMPARE_NAME ((char *) TableHeader.Signature, ACPI_SIG_SSDT)) - { - AcpiOsPrintf ("Table signature [%4.4s] is invalid or not supported\n", - (char *) TableHeader.Signature); - ACPI_DUMP_BUFFER (&TableHeader, sizeof (ACPI_TABLE_HEADER)); - return (AE_ERROR); - } -#endif - - *TableLength = TableHeader.Length; - } - - /* Allocate a buffer for the table */ - - *Table = AcpiOsAllocate ((size_t) FileSize); - if (!*Table) - { - AcpiOsPrintf ( - "Could not allocate memory for ACPI table %4.4s (size=0x%X)\n", - TableHeader.Signature, *TableLength); - return (AE_NO_MEMORY); - } - - /* Get the rest of the table */ - - fseek (fp, 0, SEEK_SET); - Actual = fread (*Table, 1, (size_t) FileSize, fp); - if (Actual == FileSize) - { - if (StandardHeader) - { - /* Now validate the checksum */ - - Status = AcpiTbVerifyChecksum ((void *) *Table, - ACPI_CAST_PTR (ACPI_TABLE_HEADER, *Table)->Length); - - if (Status == AE_BAD_CHECKSUM) - { - Status = AcpiUtCheckTextModeCorruption ((UINT8 *) *Table, - FileSize, (*Table)->Length); - return (Status); - } - } - return (AE_OK); - } - - if (Actual > 0) - { - AcpiOsPrintf ("Warning - reading table, asked for %X got %X\n", - FileSize, Actual); - return (AE_OK); - } - - AcpiOsPrintf ("Error - could not read the table file\n"); - AcpiOsFree (*Table); - *Table = NULL; - *TableLength = 0; - return (AE_ERROR); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtReadTableFromFile - * - * PARAMETERS: Filename - File where table is located - * Table - Where a pointer to the table is returned - * - * RETURN: Status - * - * DESCRIPTION: Get an ACPI table from a file - * - ******************************************************************************/ - -ACPI_STATUS -AcpiUtReadTableFromFile ( - char *Filename, - ACPI_TABLE_HEADER **Table) -{ - FILE *File; - UINT32 FileSize; - UINT32 TableLength; - ACPI_STATUS Status = AE_ERROR; - - - /* Open the file, get current size */ - - File = fopen (Filename, "rb"); - if (!File) - { - perror ("Could not open input file"); - return (Status); - } - - FileSize = CmGetFileSize (File); - if (FileSize == ACPI_UINT32_MAX) - { - goto Exit; - } - - /* Get the entire file */ - - fprintf (stderr, - "Reading ACPI table from file %12s - Length %.8u (0x%06X)\n", - Filename, FileSize, FileSize); - - Status = AcpiUtReadTable (File, Table, &TableLength); - if (ACPI_FAILURE (Status)) - { - AcpiOsPrintf ("Could not get table from the file\n"); - } - -Exit: - fclose(File); - return (Status); -} - -#endif diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utglobal.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utglobal.c index b4b48ba1c8..f36a48b611 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utglobal.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utglobal.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/uthex.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/uthex.c index c652f6a0fa..2bbdc01271 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/uthex.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/uthex.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -122,7 +122,7 @@ /* Hex to ASCII conversion table */ -static char AcpiGbl_HexToAscii[] = +static const char AcpiGbl_HexToAscii[] = { '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F' }; diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utids.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utids.c index 3bb12f0053..00293f2fe4 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utids.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utids.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -155,7 +155,7 @@ AcpiUtExecute_HID ( Status = AcpiUtEvaluateObject (DeviceNode, METHOD_NAME__HID, - ACPI_BTYPE_INTEGER | ACPI_BTYPE_STRING, &ObjDesc); + ACPI_BTYPE_INTEGER | ACPI_BTYPE_STRING, &ObjDesc); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -174,7 +174,8 @@ AcpiUtExecute_HID ( /* Allocate a buffer for the HID */ - Hid = ACPI_ALLOCATE_ZEROED (sizeof (ACPI_PNP_DEVICE_ID) + (ACPI_SIZE) Length); + Hid = ACPI_ALLOCATE_ZEROED ( + sizeof (ACPI_PNP_DEVICE_ID) + (ACPI_SIZE) Length); if (!Hid) { Status = AE_NO_MEMORY; @@ -209,77 +210,6 @@ Cleanup: } -/******************************************************************************* - * - * FUNCTION: AcpiUtExecute_SUB - * - * PARAMETERS: DeviceNode - Node for the device - * ReturnId - Where the _SUB is returned - * - * RETURN: Status - * - * DESCRIPTION: Executes the _SUB control method that returns the subsystem - * ID of the device. The _SUB value is always a string containing - * either a valid PNP or ACPI ID. - * - * NOTE: Internal function, no parameter validation - * - ******************************************************************************/ - -ACPI_STATUS -AcpiUtExecute_SUB ( - ACPI_NAMESPACE_NODE *DeviceNode, - ACPI_PNP_DEVICE_ID **ReturnId) -{ - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_PNP_DEVICE_ID *Sub; - UINT32 Length; - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (UtExecute_SUB); - - - Status = AcpiUtEvaluateObject (DeviceNode, METHOD_NAME__SUB, - ACPI_BTYPE_STRING, &ObjDesc); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Get the size of the String to be returned, includes null terminator */ - - Length = ObjDesc->String.Length + 1; - - /* Allocate a buffer for the SUB */ - - Sub = ACPI_ALLOCATE_ZEROED (sizeof (ACPI_PNP_DEVICE_ID) + (ACPI_SIZE) Length); - if (!Sub) - { - Status = AE_NO_MEMORY; - goto Cleanup; - } - - /* Area for the string starts after PNP_DEVICE_ID struct */ - - Sub->String = ACPI_ADD_PTR (char, Sub, sizeof (ACPI_PNP_DEVICE_ID)); - - /* Simply copy existing string */ - - strcpy (Sub->String, ObjDesc->String.Pointer); - Sub->Length = Length; - *ReturnId = Sub; - - -Cleanup: - - /* On exit, we must delete the return object */ - - AcpiUtRemoveReference (ObjDesc); - return_ACPI_STATUS (Status); -} - - /******************************************************************************* * * FUNCTION: AcpiUtExecute_UID @@ -313,7 +243,7 @@ AcpiUtExecute_UID ( Status = AcpiUtEvaluateObject (DeviceNode, METHOD_NAME__UID, - ACPI_BTYPE_INTEGER | ACPI_BTYPE_STRING, &ObjDesc); + ACPI_BTYPE_INTEGER | ACPI_BTYPE_STRING, &ObjDesc); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -332,7 +262,8 @@ AcpiUtExecute_UID ( /* Allocate a buffer for the UID */ - Uid = ACPI_ALLOCATE_ZEROED (sizeof (ACPI_PNP_DEVICE_ID) + (ACPI_SIZE) Length); + Uid = ACPI_ALLOCATE_ZEROED ( + sizeof (ACPI_PNP_DEVICE_ID) + (ACPI_SIZE) Length); if (!Uid) { Status = AE_NO_MEMORY; @@ -413,8 +344,8 @@ AcpiUtExecute_CID ( /* Evaluate the _CID method for this device */ Status = AcpiUtEvaluateObject (DeviceNode, METHOD_NAME__CID, - ACPI_BTYPE_INTEGER | ACPI_BTYPE_STRING | ACPI_BTYPE_PACKAGE, - &ObjDesc); + ACPI_BTYPE_INTEGER | ACPI_BTYPE_STRING | ACPI_BTYPE_PACKAGE, + &ObjDesc); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -491,7 +422,8 @@ AcpiUtExecute_CID ( { /* Convert the Integer (EISAID) CID to a string */ - AcpiExEisaIdToString (NextIdString, CidObjects[i]->Integer.Value); + AcpiExEisaIdToString ( + NextIdString, CidObjects[i]->Integer.Value); Length = ACPI_EISAID_STRING_SIZE; } else /* ACPI_TYPE_STRING */ @@ -560,7 +492,7 @@ AcpiUtExecute_CLS ( Status = AcpiUtEvaluateObject (DeviceNode, METHOD_NAME__CLS, - ACPI_BTYPE_PACKAGE, &ObjDesc); + ACPI_BTYPE_PACKAGE, &ObjDesc); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -590,7 +522,8 @@ AcpiUtExecute_CLS ( /* Allocate a buffer for the CLS */ - Cls = ACPI_ALLOCATE_ZEROED (sizeof (ACPI_PNP_DEVICE_ID) + (ACPI_SIZE) Length); + Cls = ACPI_ALLOCATE_ZEROED ( + sizeof (ACPI_PNP_DEVICE_ID) + (ACPI_SIZE) Length); if (!Cls) { Status = AE_NO_MEMORY; diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utinit.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utinit.c index ed090f1314..7a80f43a59 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utinit.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utinit.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -298,7 +298,6 @@ AcpiUtInitGlobals ( AcpiGbl_NextOwnerIdOffset = 0; AcpiGbl_DebuggerConfiguration = DEBUGGER_THREADING; AcpiGbl_OsiMutex = NULL; - AcpiGbl_RegMethodsExecuted = FALSE; AcpiGbl_MaxLoopIterations = 0xFFFF; /* Hardware oriented */ @@ -334,8 +333,6 @@ AcpiUtInitGlobals ( AcpiGbl_DisableMemTracking = FALSE; #endif - ACPI_DEBUGGER_EXEC (AcpiGbl_DbTerminateThreads = FALSE); - return_ACPI_STATUS (AE_OK); } @@ -384,6 +381,20 @@ AcpiUtSubsystemShutdown ( ACPI_FUNCTION_TRACE (UtSubsystemShutdown); + /* Just exit if subsystem is already shutdown */ + + if (AcpiGbl_Shutdown) + { + ACPI_ERROR ((AE_INFO, "ACPI Subsystem is already terminated")); + return_VOID; + } + + /* Subsystem appears active, go ahead and shut it down */ + + AcpiGbl_Shutdown = TRUE; + AcpiGbl_StartupFlags = 0; + ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Shutting down ACPI Subsystem\n")); + #ifndef ACPI_ASL_COMPILER /* Close the AcpiEvent Handling */ diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utlock.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utlock.c index 7ce13ef369..e34a4ec86f 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utlock.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utlock.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utmath.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utmath.c index dafba6d8e3..d5e15e41b8 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utmath.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utmath.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -194,9 +194,10 @@ AcpiUtShortDivide ( * and is generated by the second divide. */ ACPI_DIV_64_BY_32 (0, DividendOvl.Part.Hi, Divisor, - Quotient.Part.Hi, Remainder32); + Quotient.Part.Hi, Remainder32); + ACPI_DIV_64_BY_32 (Remainder32, DividendOvl.Part.Lo, Divisor, - Quotient.Part.Lo, Remainder32); + Quotient.Part.Lo, Remainder32); /* Return only what was requested */ @@ -272,9 +273,10 @@ AcpiUtDivide ( * and is generated by the second divide. */ ACPI_DIV_64_BY_32 (0, Dividend.Part.Hi, Divisor.Part.Lo, - Quotient.Part.Hi, Partial1); + Quotient.Part.Hi, Partial1); + ACPI_DIV_64_BY_32 (Partial1, Dividend.Part.Lo, Divisor.Part.Lo, - Quotient.Part.Lo, Remainder.Part.Lo); + Quotient.Part.Lo, Remainder.Part.Lo); } else @@ -291,25 +293,24 @@ AcpiUtDivide ( do { - ACPI_SHIFT_RIGHT_64 (NormalizedDivisor.Part.Hi, - NormalizedDivisor.Part.Lo); - ACPI_SHIFT_RIGHT_64 (NormalizedDividend.Part.Hi, - NormalizedDividend.Part.Lo); + ACPI_SHIFT_RIGHT_64 ( + NormalizedDivisor.Part.Hi, NormalizedDivisor.Part.Lo); + ACPI_SHIFT_RIGHT_64 ( + NormalizedDividend.Part.Hi, NormalizedDividend.Part.Lo); } while (NormalizedDivisor.Part.Hi != 0); /* Partial divide */ - ACPI_DIV_64_BY_32 (NormalizedDividend.Part.Hi, - NormalizedDividend.Part.Lo, - NormalizedDivisor.Part.Lo, - Quotient.Part.Lo, Partial1); + ACPI_DIV_64_BY_32 ( + NormalizedDividend.Part.Hi, NormalizedDividend.Part.Lo, + NormalizedDivisor.Part.Lo, Quotient.Part.Lo, Partial1); /* - * The quotient is always 32 bits, and simply requires adjustment. - * The 64-bit remainder must be generated. + * The quotient is always 32 bits, and simply requires + * adjustment. The 64-bit remainder must be generated. */ - Partial1 = Quotient.Part.Lo * Divisor.Part.Hi; + Partial1 = Quotient.Part.Lo * Divisor.Part.Hi; Partial2.Full = (UINT64) Quotient.Part.Lo * Divisor.Part.Lo; Partial3.Full = (UINT64) Partial2.Part.Hi + Partial1; @@ -335,7 +336,7 @@ AcpiUtDivide ( } } - Remainder.Full = Remainder.Full - Dividend.Full; + Remainder.Full = Remainder.Full - Dividend.Full; Remainder.Part.Hi = (UINT32) -((INT32) Remainder.Part.Hi); Remainder.Part.Lo = (UINT32) -((INT32) Remainder.Part.Lo); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utmisc.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utmisc.c index ecf22db7ce..fb1d08c004 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utmisc.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utmisc.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -144,10 +144,10 @@ AcpiUtIsPciRootBridge ( * ACPI 3.0+: check for a PCI Express root also. */ if (!(strcmp (Id, - PCI_ROOT_HID_STRING)) || + PCI_ROOT_HID_STRING)) || !(strcmp (Id, - PCI_EXPRESS_ROOT_HID_STRING))) + PCI_EXPRESS_ROOT_HID_STRING))) { return (TRUE); } @@ -257,17 +257,17 @@ AcpiUtSetIntegerWidth ( { /* 32-bit case */ - AcpiGbl_IntegerBitWidth = 32; + AcpiGbl_IntegerBitWidth = 32; AcpiGbl_IntegerNybbleWidth = 8; - AcpiGbl_IntegerByteWidth = 4; + AcpiGbl_IntegerByteWidth = 4; } else { /* 64-bit case (ACPI 2.0+) */ - AcpiGbl_IntegerBitWidth = 64; + AcpiGbl_IntegerBitWidth = 64; AcpiGbl_IntegerNybbleWidth = 16; - AcpiGbl_IntegerByteWidth = 8; + AcpiGbl_IntegerByteWidth = 8; } } @@ -358,9 +358,9 @@ AcpiUtWalkPackageTree ( { /* Get one element of the package */ - ThisIndex = State->Pkg.Index; + ThisIndex = State->Pkg.Index; ThisSourceObj = (ACPI_OPERAND_OBJECT *) - State->Pkg.SourceObject->Package.Elements[ThisIndex]; + State->Pkg.SourceObject->Package.Elements[ThisIndex]; /* * Check for: @@ -371,7 +371,8 @@ AcpiUtWalkPackageTree ( * case below. */ if ((!ThisSourceObj) || - (ACPI_GET_DESCRIPTOR_TYPE (ThisSourceObj) != ACPI_DESC_TYPE_OPERAND) || + (ACPI_GET_DESCRIPTOR_TYPE (ThisSourceObj) != + ACPI_DESC_TYPE_OPERAND) || (ThisSourceObj->Common.Type != ACPI_TYPE_PACKAGE)) { Status = WalkCallback (ACPI_COPY_TYPE_SIMPLE, ThisSourceObj, @@ -382,7 +383,8 @@ AcpiUtWalkPackageTree ( } State->Pkg.Index++; - while (State->Pkg.Index >= State->Pkg.SourceObject->Package.Count) + while (State->Pkg.Index >= + State->Pkg.SourceObject->Package.Count) { /* * We've handled all of the objects at this level, This means @@ -417,8 +419,8 @@ AcpiUtWalkPackageTree ( { /* This is a subobject of type package */ - Status = WalkCallback (ACPI_COPY_TYPE_PACKAGE, ThisSourceObj, - State, Context); + Status = WalkCallback ( + ACPI_COPY_TYPE_PACKAGE, ThisSourceObj, State, Context); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -429,8 +431,8 @@ AcpiUtWalkPackageTree ( * The callback above returned a new target package object. */ AcpiUtPushGenericState (&StateList, State); - State = AcpiUtCreatePkgState (ThisSourceObj, - State->Pkg.ThisTargetObj, 0); + State = AcpiUtCreatePkgState ( + ThisSourceObj, State->Pkg.ThisTargetObj, 0); if (!State) { /* Free any stacked Update State objects */ diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utmutex.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utmutex.c index f5b864f707..d80a57c8d4 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utmutex.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utmutex.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -196,6 +196,24 @@ AcpiUtMutexInitialize ( /* Create the reader/writer lock for namespace access */ Status = AcpiUtCreateRwLock (&AcpiGbl_NamespaceRwLock); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } + +#ifdef ACPI_DEBUGGER + + /* Debugger Support */ + + Status = AcpiOsCreateMutex (&AcpiGbl_DbCommandReady); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } + + Status = AcpiOsCreateMutex (&AcpiGbl_DbCommandComplete); +#endif + return_ACPI_STATUS (Status); } @@ -241,6 +259,12 @@ AcpiUtMutexTerminate ( /* Delete the reader/writer lock */ AcpiUtDeleteRwLock (&AcpiGbl_NamespaceRwLock); + +#ifdef ACPI_DEBUGGER + AcpiOsDeleteMutex (AcpiGbl_DbCommandReady); + AcpiOsDeleteMutex (AcpiGbl_DbCommandComplete); +#endif + return_VOID; } @@ -377,11 +401,12 @@ AcpiUtAcquireMutex ( "Thread %u attempting to acquire Mutex [%s]\n", (UINT32) ThisThreadId, AcpiUtGetMutexName (MutexId))); - Status = AcpiOsAcquireMutex (AcpiGbl_MutexInfo[MutexId].Mutex, - ACPI_WAIT_FOREVER); + Status = AcpiOsAcquireMutex ( + AcpiGbl_MutexInfo[MutexId].Mutex, ACPI_WAIT_FOREVER); if (ACPI_SUCCESS (Status)) { - ACPI_DEBUG_PRINT ((ACPI_DB_MUTEX, "Thread %u acquired Mutex [%s]\n", + ACPI_DEBUG_PRINT ((ACPI_DB_MUTEX, + "Thread %u acquired Mutex [%s]\n", (UINT32) ThisThreadId, AcpiUtGetMutexName (MutexId))); AcpiGbl_MutexInfo[MutexId].UseCount++; diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utnonansi.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utnonansi.c index 01a4361af2..ad848bea78 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utnonansi.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utnonansi.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -404,8 +404,8 @@ AcpiUtStrtoul64 ( /* Divide the digit into the correct position */ - (void) AcpiUtShortDivide ((Dividend - (UINT64) ThisDigit), - Base, &Quotient, NULL); + (void) AcpiUtShortDivide ( + (Dividend - (UINT64) ThisDigit), Base, &Quotient, NULL); if (ReturnValue > Quotient) { diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utobject.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utobject.c index fb4efaf360..1d30d2ce7e 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utobject.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utobject.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -179,7 +179,8 @@ AcpiUtCreateInternalObjectDbg ( /* Allocate the raw object descriptor */ - Object = AcpiUtAllocateObjectDescDbg (ModuleName, LineNumber, ComponentId); + Object = AcpiUtAllocateObjectDescDbg ( + ModuleName, LineNumber, ComponentId); if (!Object) { return_PTR (NULL); @@ -193,8 +194,8 @@ AcpiUtCreateInternalObjectDbg ( /* These types require a secondary object */ - SecondObject = AcpiUtAllocateObjectDescDbg (ModuleName, - LineNumber, ComponentId); + SecondObject = AcpiUtAllocateObjectDescDbg ( + ModuleName, LineNumber, ComponentId); if (!SecondObject) { AcpiUtDeleteObjectDesc (Object); @@ -265,7 +266,7 @@ AcpiUtCreatePackageObject ( * terminated. */ PackageElements = ACPI_ALLOCATE_ZEROED ( - ((ACPI_SIZE) Count + 1) * sizeof (void *)); + ((ACPI_SIZE) Count + 1) * sizeof (void *)); if (!PackageElements) { ACPI_FREE (PackageDesc); @@ -355,6 +356,7 @@ AcpiUtCreateBufferObject ( { ACPI_ERROR ((AE_INFO, "Could not allocate size %u", (UINT32) BufferSize)); + AcpiUtRemoveReference (BufferDesc); return_PTR (NULL); } @@ -414,6 +416,7 @@ AcpiUtCreateStringObject ( { ACPI_ERROR ((AE_INFO, "Could not allocate size %u", (UINT32) StringSize)); + AcpiUtRemoveReference (StringDesc); return_PTR (NULL); } @@ -470,8 +473,8 @@ AcpiUtValidInternalObject ( default: ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, - "%p is not an ACPI operand obj [%s]\n", - Object, AcpiUtGetDescriptorName (Object))); + "%p is not an ACPI operand obj [%s]\n", + Object, AcpiUtGetDescriptorName (Object))); break; } @@ -520,7 +523,7 @@ AcpiUtAllocateObjectDescDbg ( ACPI_SET_DESCRIPTOR_TYPE (Object, ACPI_DESC_TYPE_OPERAND); ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, "%p Size %X\n", - Object, (UINT32) sizeof (ACPI_OPERAND_OBJECT))); + Object, (UINT32) sizeof (ACPI_OPERAND_OBJECT))); return_PTR (Object); } @@ -783,12 +786,12 @@ AcpiUtGetPackageObjectSize ( ACPI_FUNCTION_TRACE_PTR (UtGetPackageObjectSize, InternalObject); - Info.Length = 0; + Info.Length = 0; Info.ObjectSpace = 0; Info.NumPackages = 1; - Status = AcpiUtWalkPackageTree (InternalObject, NULL, - AcpiUtGetElementLength, &Info); + Status = AcpiUtWalkPackageTree ( + InternalObject, NULL, AcpiUtGetElementLength, &Info); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -799,8 +802,8 @@ AcpiUtGetPackageObjectSize ( * just add the length of the package objects themselves. * Round up to the next machine word. */ - Info.Length += ACPI_ROUND_UP_TO_NATIVE_WORD (sizeof (ACPI_OBJECT)) * - (ACPI_SIZE) Info.NumPackages; + Info.Length += ACPI_ROUND_UP_TO_NATIVE_WORD ( + sizeof (ACPI_OBJECT)) * (ACPI_SIZE) Info.NumPackages; /* Return the total package length */ @@ -834,7 +837,8 @@ AcpiUtGetObjectSize ( ACPI_FUNCTION_ENTRY (); - if ((ACPI_GET_DESCRIPTOR_TYPE (InternalObject) == ACPI_DESC_TYPE_OPERAND) && + if ((ACPI_GET_DESCRIPTOR_TYPE (InternalObject) == + ACPI_DESC_TYPE_OPERAND) && (InternalObject->Common.Type == ACPI_TYPE_PACKAGE)) { Status = AcpiUtGetPackageObjectSize (InternalObject, ObjLength); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utosi.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utosi.c index b4d8a71524..bf645da71c 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utosi.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utosi.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -228,7 +228,9 @@ AcpiUtInitializeInterfaces ( /* Link the static list of supported interfaces */ - for (i = 0; i < (ACPI_ARRAY_LENGTH (AcpiDefaultSupportedInterfaces) - 1); i++) + for (i = 0; + i < (ACPI_ARRAY_LENGTH (AcpiDefaultSupportedInterfaces) - 1); + i++) { AcpiDefaultSupportedInterfaces[i].Next = &AcpiDefaultSupportedInterfaces[(ACPI_SIZE) i + 1]; @@ -372,8 +374,10 @@ AcpiUtRemoveInterface ( { if (!strcmp (InterfaceName, NextInterface->Name)) { - /* Found: name is in either the static list or was added at runtime */ - + /* + * Found: name is in either the static list + * or was added at runtime + */ if (NextInterface->Flags & ACPI_OSI_DYNAMIC) { /* Interface was added dynamically, remove and free it */ @@ -393,8 +397,8 @@ AcpiUtRemoveInterface ( else { /* - * Interface is in static list. If marked invalid, then it - * does not actually exist. Else, mark it invalid. + * Interface is in static list. If marked invalid, then + * it does not actually exist. Else, mark it invalid. */ if (NextInterface->Flags & ACPI_OSI_INVALID) { diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utownerid.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utownerid.c index bf391e11f1..5f21a3b939 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utownerid.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utownerid.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -153,7 +153,8 @@ AcpiUtAllocateOwnerId ( if (*OwnerId) { - ACPI_ERROR ((AE_INFO, "Owner ID [0x%2.2X] already exists", *OwnerId)); + ACPI_ERROR ((AE_INFO, + "Owner ID [0x%2.2X] already exists", *OwnerId)); return_ACPI_STATUS (AE_ALREADY_EXISTS); } @@ -167,8 +168,8 @@ AcpiUtAllocateOwnerId ( /* * Find a free owner ID, cycle through all possible IDs on repeated - * allocations. (ACPI_NUM_OWNERID_MASKS + 1) because first index may have - * to be scanned twice. + * allocations. (ACPI_NUM_OWNERID_MASKS + 1) because first index + * may have to be scanned twice. */ for (i = 0, j = AcpiGbl_LastOwnerIdIndex; i < (ACPI_NUM_OWNERID_MASKS + 1); @@ -224,8 +225,8 @@ AcpiUtAllocateOwnerId ( * they are released when a table is unloaded or a method completes * execution. * - * If this error happens, there may be very deep nesting of invoked control - * methods, or there may be a bug where the IDs are not released. + * If this error happens, there may be very deep nesting of invoked + * control methods, or there may be a bug where the IDs are not released. */ Status = AE_OWNER_ID_LIMIT; ACPI_ERROR ((AE_INFO, diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utpredef.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utpredef.c index 11471c7738..01196bb03f 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utpredef.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utpredef.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -326,8 +326,10 @@ AcpiUtMatchResourceName ( const ACPI_PREDEFINED_INFO *ThisName; - /* Quick check for a predefined name, first character must be underscore */ - + /* + * Quick check for a predefined name, first character must + * be underscore + */ if (Name[0] != '_') { return (NULL); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utprint.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utprint.c index b3e8fd24a4..848a46dd9d 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utprint.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utprint.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -462,8 +462,8 @@ AcpiUtFormatNumber ( String = AcpiUtBoundStringOutput (String, End, '0'); if (Base == 16) { - String = AcpiUtBoundStringOutput (String, End, - Upper ? 'X' : 'x'); + String = AcpiUtBoundStringOutput ( + String, End, Upper ? 'X' : 'x'); } } if (!(Type & ACPI_FORMAT_LEFT)) @@ -572,6 +572,7 @@ AcpiUtVsnprintf ( { break; } + } while (1); /* Process width */ @@ -609,6 +610,7 @@ AcpiUtVsnprintf ( ++Format; Precision = va_arg (Args, int); } + if (Precision < 0) { Precision = 0; @@ -671,11 +673,13 @@ AcpiUtVsnprintf ( Pos = AcpiUtBoundStringOutput (Pos, End, ' '); } } + for (i = 0; i < Length; ++i) { Pos = AcpiUtBoundStringOutput (Pos, End, *s); ++s; } + while (Length < Width--) { Pos = AcpiUtBoundStringOutput (Pos, End, ' '); @@ -714,8 +718,8 @@ AcpiUtVsnprintf ( } p = va_arg (Args, void *); - Pos = AcpiUtFormatNumber (Pos, End, - ACPI_TO_INTEGER (p), 16, Width, Precision, Type); + Pos = AcpiUtFormatNumber ( + Pos, End, ACPI_TO_INTEGER (p), 16, Width, Precision, Type); continue; default: @@ -766,7 +770,7 @@ AcpiUtVsnprintf ( } Pos = AcpiUtFormatNumber (Pos, End, Number, Base, - Width, Precision, Type); + Width, Precision, Type); } if (Size > 0) @@ -845,7 +849,7 @@ AcpiUtFileVprintf ( Flags = AcpiOsAcquireLock (AcpiGbl_PrintLock); Length = AcpiUtVsnprintf (AcpiGbl_PrintBuffer, - sizeof (AcpiGbl_PrintBuffer), Format, Args); + sizeof (AcpiGbl_PrintBuffer), Format, Args); (void) AcpiOsWriteFile (File, AcpiGbl_PrintBuffer, Length, 1); AcpiOsReleaseLock (AcpiGbl_PrintLock, Flags); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utresrc.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utresrc.c index 44a4c66338..de0ca6e0ed 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utresrc.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utresrc.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -561,8 +561,8 @@ AcpiUtWalkAmlResources ( if (ACPI_FAILURE (Status)) { /* - * Exit on failure. Cannot continue because the descriptor length - * may be bogus also. + * Exit on failure. Cannot continue because the descriptor + * length may be bogus also. */ return_ACPI_STATUS (Status); } @@ -575,7 +575,8 @@ AcpiUtWalkAmlResources ( if (UserFunction) { - Status = UserFunction (Aml, Length, Offset, ResourceIndex, Context); + Status = UserFunction ( + Aml, Length, Offset, ResourceIndex, Context); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -697,8 +698,8 @@ AcpiUtValidateResource ( } /* - * Check validity of the resource type, via AcpiGbl_ResourceTypes. Zero - * indicates an invalid resource. + * Check validity of the resource type, via AcpiGbl_ResourceTypes. + * Zero indicates an invalid resource. */ if (!AcpiGbl_ResourceTypes[ResourceIndex]) { @@ -885,7 +886,7 @@ AcpiUtGetResourceLength ( /* Small Resource type -- bits 2:0 of byte 0 contain the length */ ResourceLength = (UINT16) (ACPI_GET8 (Aml) & - ACPI_RESOURCE_NAME_SMALL_LENGTH_MASK); + ACPI_RESOURCE_NAME_SMALL_LENGTH_MASK); } return (ResourceLength); @@ -950,7 +951,7 @@ AcpiUtGetDescriptorLength ( * the header length (depends on if this is a small or large resource) */ return (AcpiUtGetResourceLength (Aml) + - AcpiUtGetResourceHeaderLength (Aml)); + AcpiUtGetResourceHeaderLength (Aml)); } @@ -990,7 +991,7 @@ AcpiUtGetResourceEndTag ( /* Validate the template and get a pointer to the EndTag */ Status = AcpiUtWalkAmlResources (NULL, ObjDesc->Buffer.Pointer, - ObjDesc->Buffer.Length, NULL, (void **) EndTag); + ObjDesc->Buffer.Length, NULL, (void **) EndTag); return_ACPI_STATUS (Status); } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utstate.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utstate.c index 1e6418662d..6a264d6c17 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utstate.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utstate.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -350,6 +350,7 @@ AcpiUtCreatePkgState ( State->Pkg.DestObject = ExternalObject; State->Pkg.Index= Index; State->Pkg.NumPackages = 1; + return (State); } @@ -389,6 +390,7 @@ AcpiUtCreateControlState ( State->Common.DescriptorType = ACPI_DESC_TYPE_STATE_CONTROL; State->Common.State = ACPI_CONTROL_CONDITIONAL_EXECUTING; + return (State); } @@ -419,5 +421,6 @@ AcpiUtDeleteGenericState ( { (void) AcpiOsReleaseObject (AcpiGbl_StateCache, State); } + return; } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utstring.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utstring.c index 3660cbb215..2dfb10263f 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utstring.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utstring.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -219,6 +219,7 @@ AcpiUtPrintString ( break; } } + AcpiOsPrintf ("\""); if (i == MaxLength && String[i]) @@ -342,6 +343,15 @@ AcpiUtRepairName ( ACPI_FUNCTION_NAME (UtRepairName); + /* + * Special case for the root node. This can happen if we get an + * error during the execution of module-level code. + */ + if (ACPI_COMPARE_NAME (Name, "\\___")) + { + return; + } + ACPI_MOVE_NAME (&OriginalName, Name); /* Check each character in the name */ diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/uttrack.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/uttrack.c index f7f0bce901..52883943cd 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/uttrack.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/uttrack.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -187,7 +187,7 @@ AcpiUtCreateList ( memset (Cache, 0, sizeof (ACPI_MEMORY_LIST)); - Cache->ListName = ListName; + Cache->ListName = ListName; Cache->ObjectSize = ObjectSize; *ReturnCache = Cache; @@ -241,8 +241,8 @@ AcpiUtAllocateAndTrack ( return (NULL); } - Status = AcpiUtTrackAllocation (Allocation, Size, - ACPI_MEM_MALLOC, Component, Module, Line); + Status = AcpiUtTrackAllocation ( + Allocation, Size, ACPI_MEM_MALLOC, Component, Module, Line); if (ACPI_FAILURE (Status)) { AcpiOsFree (Allocation); @@ -252,9 +252,12 @@ AcpiUtAllocateAndTrack ( AcpiGbl_GlobalList->TotalAllocated++; AcpiGbl_GlobalList->TotalSize += (UINT32) Size; AcpiGbl_GlobalList->CurrentTotalSize += (UINT32) Size; - if (AcpiGbl_GlobalList->CurrentTotalSize > AcpiGbl_GlobalList->MaxOccupied) + + if (AcpiGbl_GlobalList->CurrentTotalSize > + AcpiGbl_GlobalList->MaxOccupied) { - AcpiGbl_GlobalList->MaxOccupied = AcpiGbl_GlobalList->CurrentTotalSize; + AcpiGbl_GlobalList->MaxOccupied = + AcpiGbl_GlobalList->CurrentTotalSize; } return ((void *) &Allocation->UserSpace); @@ -296,7 +299,8 @@ AcpiUtAllocateZeroedAndTrack ( Size = 1; } - Allocation = AcpiOsAllocateZeroed (Size + sizeof (ACPI_DEBUG_MEM_HEADER)); + Allocation = AcpiOsAllocateZeroed ( + Size + sizeof (ACPI_DEBUG_MEM_HEADER)); if (!Allocation) { /* Report allocation error */ @@ -307,7 +311,7 @@ AcpiUtAllocateZeroedAndTrack ( } Status = AcpiUtTrackAllocation (Allocation, Size, - ACPI_MEM_CALLOC, Component, Module, Line); + ACPI_MEM_CALLOC, Component, Module, Line); if (ACPI_FAILURE (Status)) { AcpiOsFree (Allocation); @@ -317,9 +321,12 @@ AcpiUtAllocateZeroedAndTrack ( AcpiGbl_GlobalList->TotalAllocated++; AcpiGbl_GlobalList->TotalSize += (UINT32) Size; AcpiGbl_GlobalList->CurrentTotalSize += (UINT32) Size; - if (AcpiGbl_GlobalList->CurrentTotalSize > AcpiGbl_GlobalList->MaxOccupied) + + if (AcpiGbl_GlobalList->CurrentTotalSize > + AcpiGbl_GlobalList->MaxOccupied) { - AcpiGbl_GlobalList->MaxOccupied = AcpiGbl_GlobalList->CurrentTotalSize; + AcpiGbl_GlobalList->MaxOccupied = + AcpiGbl_GlobalList->CurrentTotalSize; } return ((void *) &Allocation->UserSpace); @@ -364,13 +371,12 @@ AcpiUtFreeAndTrack ( } DebugBlock = ACPI_CAST_PTR (ACPI_DEBUG_MEM_BLOCK, - (((char *) Allocation) - sizeof (ACPI_DEBUG_MEM_HEADER))); + (((char *) Allocation) - sizeof (ACPI_DEBUG_MEM_HEADER))); AcpiGbl_GlobalList->TotalFreed++; AcpiGbl_GlobalList->CurrentTotalSize -= DebugBlock->Size; - Status = AcpiUtRemoveAllocation (DebugBlock, - Component, Module, Line); + Status = AcpiUtRemoveAllocation (DebugBlock, Component, Module, Line); if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, "Could not free memory")); @@ -512,10 +518,10 @@ AcpiUtTrackAllocation ( /* Fill in the instance data */ - Allocation->Size = (UINT32) Size; + Allocation->Size = (UINT32) Size; Allocation->AllocType = AllocType; Allocation->Component = Component; - Allocation->Line = Line; + Allocation->Line = Line; strncpy (Allocation->Module, Module, ACPI_MAX_MODULE_NAME); Allocation->Module[ACPI_MAX_MODULE_NAME-1] = 0; @@ -526,7 +532,8 @@ AcpiUtTrackAllocation ( if (MemList->ListHead) { - ((ACPI_DEBUG_MEM_BLOCK *)(MemList->ListHead))->Previous = Allocation; + ((ACPI_DEBUG_MEM_BLOCK *)(MemList->ListHead))->Previous = + Allocation; } Allocation->Next = MemList->ListHead; @@ -659,37 +666,37 @@ AcpiUtDumpAllocationInfo ( /* ACPI_DEBUG_PRINT (TRACE_ALLOCATIONS | TRACE_TABLES, - ("%30s: %4d (%3d Kb)\n", "Current allocations", - MemList->CurrentCount, - ROUND_UP_TO_1K (MemList->CurrentSize))); + ("%30s: %4d (%3d Kb)\n", "Current allocations", + MemList->CurrentCount, + ROUND_UP_TO_1K (MemList->CurrentSize))); ACPI_DEBUG_PRINT (TRACE_ALLOCATIONS | TRACE_TABLES, - ("%30s: %4d (%3d Kb)\n", "Max concurrent allocations", - MemList->MaxConcurrentCount, - ROUND_UP_TO_1K (MemList->MaxConcurrentSize))); + ("%30s: %4d (%3d Kb)\n", "Max concurrent allocations", + MemList->MaxConcurrentCount, + ROUND_UP_TO_1K (MemList->MaxConcurrentSize))); ACPI_DEBUG_PRINT (TRACE_ALLOCATIONS | TRACE_TABLES, - ("%30s: %4d (%3d Kb)\n", "Total (all) internal objects", - RunningObjectCount, - ROUND_UP_TO_1K (RunningObjectSize))); + ("%30s: %4d (%3d Kb)\n", "Total (all) internal objects", + RunningObjectCount, + ROUND_UP_TO_1K (RunningObjectSize))); ACPI_DEBUG_PRINT (TRACE_ALLOCATIONS | TRACE_TABLES, - ("%30s: %4d (%3d Kb)\n", "Total (all) allocations", - RunningAllocCount, - ROUND_UP_TO_1K (RunningAllocSize))); + ("%30s: %4d (%3d Kb)\n", "Total (all) allocations", + RunningAllocCount, + ROUND_UP_TO_1K (RunningAllocSize))); ACPI_DEBUG_PRINT (TRACE_ALLOCATIONS | TRACE_TABLES, - ("%30s: %4d (%3d Kb)\n", "Current Nodes", - AcpiGbl_CurrentNodeCount, - ROUND_UP_TO_1K (AcpiGbl_CurrentNodeSize))); + ("%30s: %4d (%3d Kb)\n", "Current Nodes", + AcpiGbl_CurrentNodeCount, + ROUND_UP_TO_1K (AcpiGbl_CurrentNodeSize))); ACPI_DEBUG_PRINT (TRACE_ALLOCATIONS | TRACE_TABLES, - ("%30s: %4d (%3d Kb)\n", "Max Nodes", - AcpiGbl_MaxConcurrentNodeCount, - ROUND_UP_TO_1K ((AcpiGbl_MaxConcurrentNodeCount * - sizeof (ACPI_NAMESPACE_NODE))))); + ("%30s: %4d (%3d Kb)\n", "Max Nodes", + AcpiGbl_MaxConcurrentNodeCount, + ROUND_UP_TO_1K ((AcpiGbl_MaxConcurrentNodeCount * + sizeof (ACPI_NAMESPACE_NODE))))); */ return_VOID; } @@ -741,7 +748,8 @@ AcpiUtDumpAllocations ( if ((Element->Component & Component) && ((Module == NULL) || (0 == strcmp (Module, Element->Module)))) { - Descriptor = ACPI_CAST_PTR (ACPI_DESCRIPTOR, &Element->UserSpace); + Descriptor = ACPI_CAST_PTR ( + ACPI_DESCRIPTOR, &Element->UserSpace); if (Element->Size < sizeof (ACPI_COMMON_DESCRIPTOR)) { @@ -754,7 +762,8 @@ AcpiUtDumpAllocations ( { /* Ignore allocated objects that are in a cache */ - if (ACPI_GET_DESCRIPTOR_TYPE (Descriptor) != ACPI_DESC_TYPE_CACHED) + if (ACPI_GET_DESCRIPTOR_TYPE (Descriptor) != + ACPI_DESC_TYPE_CACHED) { AcpiOsPrintf ("%p Length 0x%04X %9.9s-%u [%s] ", Descriptor, Element->Size, Element->Module, diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utuuid.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utuuid.c index 71fa0bc874..619154a2ed 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utuuid.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utuuid.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -165,11 +165,11 @@ AcpiUtConvertStringToUuid ( for (i = 0; i < UUID_BUFFER_LENGTH; i++) { - UuidBuffer[i] = - (AcpiUtAsciiCharToHex (InString[AcpiGbl_MapToUuidOffset[i]]) << 4); + UuidBuffer[i] = (AcpiUtAsciiCharToHex ( + InString[AcpiGbl_MapToUuidOffset[i]]) << 4); - UuidBuffer[i] |= - AcpiUtAsciiCharToHex (InString[AcpiGbl_MapToUuidOffset[i] + 1]); + UuidBuffer[i] |= AcpiUtAsciiCharToHex ( + InString[AcpiGbl_MapToUuidOffset[i] + 1]); } } #endif diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utxface.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utxface.c index a34970e9b6..b616ed9052 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utxface.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utxface.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -145,24 +145,6 @@ AcpiTerminate ( ACPI_FUNCTION_TRACE (AcpiTerminate); - /* Just exit if subsystem is already shutdown */ - - if (AcpiGbl_Shutdown) - { - ACPI_ERROR ((AE_INFO, "ACPI Subsystem is already terminated")); - return_ACPI_STATUS (AE_OK); - } - - /* Subsystem appears active, go ahead and shut it down */ - - AcpiGbl_Shutdown = TRUE; - AcpiGbl_StartupFlags = 0; - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Shutting down ACPI Subsystem\n")); - - /* Terminate the AML Debugger if present */ - - ACPI_DEBUGGER_EXEC (AcpiGbl_DbTerminateThreads = TRUE); - /* Shutdown and free all resources */ AcpiUtSubsystemShutdown (); @@ -262,7 +244,6 @@ AcpiGetSystemInfo ( * Populate the return buffer */ InfoPtr = (ACPI_SYSTEM_INFO *) OutBuffer->Pointer; - InfoPtr->AcpiCaVersion = ACPI_CA_VERSION; /* System flags (ACPI capabilities) */ @@ -330,11 +311,9 @@ AcpiGetStatistics ( memcpy (Stats->FixedEventCount, AcpiFixedEventCount, sizeof (AcpiFixedEventCount)); - /* Other counters */ Stats->MethodCount = AcpiMethodCount; - return_ACPI_STATUS (AE_OK); } diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utxferror.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utxferror.c index b62e5df77f..9010ff9842 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utxferror.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utxferror.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -205,8 +205,10 @@ AcpiException ( } else { - AcpiOsPrintf (ACPI_MSG_EXCEPTION "%s, ", AcpiFormatException (Status)); + AcpiOsPrintf (ACPI_MSG_EXCEPTION "%s, ", + AcpiFormatException (Status)); } + va_start (ArgList, Format); AcpiOsVprintf (Format, ArgList); ACPI_MSG_SUFFIX; diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utxfinit.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utxfinit.c index 4703dc18ce..16be627fef 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utxfinit.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utxfinit.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -204,6 +204,25 @@ AcpiInitializeSubsystem ( return_ACPI_STATUS (Status); } + if (!AcpiGbl_OverrideDefaultRegionHandlers) + { + /* + * Install the default operation region handlers. These are the + * handlers that are defined by the ACPI specification to be + * "always accessible" -- namely, SystemMemory, SystemIO, and + * PCI_Config. This also means that no _REG methods need to be + * run for these address spaces. We need to have these handlers + * installed before any AML code can be executed, especially any + * module-level code (11/2015). + */ + Status = AcpiEvInstallRegionHandlers (); + if (ACPI_FAILURE (Status)) + { + ACPI_EXCEPTION ((AE_INFO, Status, "During Region initialization")); + return_ACPI_STATUS (Status); + } + } + return_ACPI_STATUS (AE_OK); } @@ -233,6 +252,33 @@ AcpiEnableSubsystem ( ACPI_FUNCTION_TRACE (AcpiEnableSubsystem); + /* + * The early initialization phase is complete. The namespace is loaded, + * and we can now support address spaces other than Memory, I/O, and + * PCI_Config. + */ + AcpiGbl_EarlyInitialization = FALSE; + + if (AcpiGbl_OverrideDefaultRegionHandlers) + { + /* + * Install the default operation region handlers. These are the + * handlers that are defined by the ACPI specification to be + * "always accessible" -- namely, SystemMemory, SystemIO, and + * PCI_Config. This also means that no _REG methods need to be + * run for these address spaces. We need to have these handlers + * installed before any AML code can be executed, especially any + * module-level code (11/2015). + */ + Status = AcpiEvInstallRegionHandlers (); + if (ACPI_FAILURE (Status)) + { + ACPI_EXCEPTION ((AE_INFO, Status, "During Region initialization")); + return_ACPI_STATUS (Status); + } + } + + #if (!ACPI_REDUCED_HARDWARE) /* Enable ACPI mode */ @@ -265,26 +311,6 @@ AcpiEnableSubsystem ( } } -#endif /* !ACPI_REDUCED_HARDWARE */ - - /* - * Install the default OpRegion handlers. These are installed unless - * other handlers have already been installed via the - * InstallAddressSpaceHandler interface. - */ - if (!(Flags & ACPI_NO_ADDRESS_SPACE_INIT)) - { - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, - "[Init] Installing default address space handlers\n")); - - Status = AcpiEvInstallRegionHandlers (); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - } - -#if (!ACPI_REDUCED_HARDWARE) /* * Initialize ACPI Event handling (Fixed and General Purpose) * @@ -392,8 +418,15 @@ AcpiInitializeObjects ( * outside of any control method is wrapped with a temporary control * method object and placed on a global list. The methods on this list * are executed below. + * + * This case executes the module-level code for all tables only after + * all of the tables have been loaded. It is a legacy option and is + * not compatible with other ACPI implementations. See AcpiNsLoadTable. */ - AcpiNsExecModuleCodeList (); + if (AcpiGbl_GroupModuleLevelCode) + { + AcpiNsExecModuleCodeList (); + } /* * Initialize the objects that remain uninitialized. This runs the diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utxfmutex.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utxfmutex.c index 2b6342d5fb..06d6fb1378 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utxfmutex.c +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/utilities/utxfmutex.c @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -170,8 +170,8 @@ AcpiUtGetMutexObject ( MutexNode = Handle; if (Pathname != NULL) { - Status = AcpiGetHandle (Handle, Pathname, - ACPI_CAST_PTR (ACPI_HANDLE, &MutexNode)); + Status = AcpiGetHandle ( + Handle, Pathname, ACPI_CAST_PTR (ACPI_HANDLE, &MutexNode)); if (ACPI_FAILURE (Status)) { return (Status); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acapps.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acapps.h index 11536425dd..b8ab5a3c68 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acapps.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acapps.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -116,6 +116,7 @@ #ifndef _ACAPPS #define _ACAPPS +#include #ifdef _MSC_VER /* disable some level-4 warnings */ #pragma warning(disable:4100) /* warning C4100: unreferenced formal parameter */ @@ -124,7 +125,7 @@ /* Common info for tool signons */ #define ACPICA_NAME "Intel ACPI Component Architecture" -#define ACPICA_COPYRIGHT "Copyright (c) 2000 - 2015 Intel Corporation" +#define ACPICA_COPYRIGHT "Copyright (c) 2000 - 2016 Intel Corporation" #if ACPI_MACHINE_WIDTH == 64 #define ACPI_WIDTH "-64" @@ -162,11 +163,49 @@ AcpiOsPrintf (Description); #define ACPI_OPTION(Name, Description) \ - AcpiOsPrintf (" %-18s%s\n", Name, Description); + AcpiOsPrintf (" %-20s%s\n", Name, Description); +/* Check for unexpected exceptions */ + +#define ACPI_CHECK_STATUS(Name, Status, Expected) \ + if (Status != Expected) \ + { \ + AcpiOsPrintf ("Unexpected %s from %s (%s-%d)\n", \ + AcpiFormatException (Status), #Name, _AcpiModuleName, __LINE__); \ + } + +/* Check for unexpected non-AE_OK errors */ + + +#define ACPI_CHECK_OK(Name, Status) ACPI_CHECK_STATUS (Name, Status, AE_OK); + #define FILE_SUFFIX_DISASSEMBLY "dsl" -#define ACPI_TABLE_FILE_SUFFIX ".dat" +#define FILE_SUFFIX_BINARY_TABLE ".dat" /* Needs the dot */ + + +/* acfileio */ + +ACPI_STATUS +AcGetAllTablesFromFile ( + char *Filename, + UINT8 GetOnlyAmlTables, + ACPI_NEW_TABLE_DESC **ReturnListHead); + +BOOLEAN +AcIsFileBinary ( + FILE *File); + +ACPI_STATUS +AcValidateTableHeader ( + FILE *File, + long TableOffset); + + +/* Values for GetOnlyAmlTables */ + +#define ACPI_GET_ONLY_AML_TABLES TRUE +#define ACPI_GET_ALL_TABLES FALSE /* @@ -197,51 +236,6 @@ CmGetFileSize ( ACPI_FILE File); -#ifndef ACPI_DUMP_APP -/* - * adisasm - */ -ACPI_STATUS -AdAmlDisassemble ( - BOOLEAN OutToFile, - char *Filename, - char *Prefix, - char **OutFilename); - -void -AdPrintStatistics ( - void); - -ACPI_STATUS -AdFindDsdt( - UINT8 **DsdtPtr, - UINT32 *DsdtLength); - -void -AdDumpTables ( - void); - -ACPI_STATUS -AdGetLocalTables ( - void); - -ACPI_STATUS -AdParseTable ( - ACPI_TABLE_HEADER *Table, - ACPI_OWNER_ID *OwnerId, - BOOLEAN LoadTable, - BOOLEAN External); - -ACPI_STATUS -AdDisplayTables ( - char *Filename, - ACPI_TABLE_HEADER *Table); - -ACPI_STATUS -AdDisplayStatistics ( - void); - - /* * adwalk */ @@ -300,6 +294,5 @@ AdWriteTable ( UINT32 Length, char *TableName, char *OemTableId); -#endif #endif /* _ACAPPS */ diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acbuffer.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acbuffer.h index 881b0f9d18..896b5cb813 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acbuffer.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acbuffer.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/accommon.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/accommon.h index 333fa8c2d7..76f76d62f4 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/accommon.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/accommon.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acconfig.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acconfig.h index e49862c3ab..96da50c140 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acconfig.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acconfig.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acdebug.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acdebug.h index 3b245b0764..b2083f0984 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acdebug.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acdebug.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -163,11 +163,17 @@ typedef struct acpi_db_execute_walk /* * dbxface - external debugger interfaces */ +ACPI_DBR_DEPENDENT_RETURN_OK ( ACPI_STATUS AcpiDbSingleStep ( ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT *Op, - UINT32 OpType); + UINT32 OpType)) + +ACPI_DBR_DEPENDENT_RETURN_VOID ( +void +AcpiDbSignalBreakPoint ( + ACPI_WALK_STATE *WalkState)) /* @@ -362,10 +368,11 @@ AcpiDbDecodeAndDisplayObject ( char *Target, char *OutputType); +ACPI_DBR_DEPENDENT_RETURN_VOID ( void AcpiDbDisplayResultObject ( ACPI_OPERAND_OBJECT *ObjDesc, - ACPI_WALK_STATE *WalkState); + ACPI_WALK_STATE *WalkState)) ACPI_STATUS AcpiDbDisplayAllMethods ( @@ -391,10 +398,11 @@ void AcpiDbDisplayObjectType ( char *ObjectArg); +ACPI_DBR_DEPENDENT_RETURN_VOID ( void AcpiDbDisplayArgumentObject ( ACPI_OPERAND_OBJECT *ObjDesc, - ACPI_WALK_STATE *WalkState); + ACPI_WALK_STATE *WalkState)) /* @@ -446,10 +454,8 @@ AcpiDbLoadAcpiTable ( char *Filename); ACPI_STATUS -AcpiDbGetTableFromFile ( - char *Filename, - ACPI_TABLE_HEADER **Table, - BOOLEAN MustBeAmlTable); +AcpiDbLoadTables ( + ACPI_NEW_TABLE_DESC *ListHead); /* diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acdisasm.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acdisasm.h index d448b9f7da..732d8d3f35 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acdisasm.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acdisasm.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -1119,7 +1119,7 @@ AcpiDmCloseOperator ( /* - * acdisasm + * dmtables */ void AdDisassemblerHeader ( @@ -1129,4 +1129,35 @@ AdDisassemblerHeader ( #define ACPI_IS_AML_TABLE 0 #define ACPI_IS_DATA_TABLE 1 + +/* + * adisasm + */ +ACPI_STATUS +AdAmlDisassemble ( + BOOLEAN OutToFile, + char *Filename, + char *Prefix, + char **OutFilename); + +ACPI_STATUS +AdGetLocalTables ( + void); + +ACPI_STATUS +AdParseTable ( + ACPI_TABLE_HEADER *Table, + ACPI_OWNER_ID *OwnerId, + BOOLEAN LoadTable, + BOOLEAN External); + +ACPI_STATUS +AdDisplayTables ( + char *Filename, + ACPI_TABLE_HEADER *Table); + +ACPI_STATUS +AdDisplayStatistics ( + void); + #endif /* __ACDISASM_H__ */ diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acdispat.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acdispat.h index 2fac6ee179..ebd79a70b2 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acdispat.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acdispat.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acevents.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acevents.h index 467e14f997..d88f8b82f3 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acevents.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acevents.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -294,6 +294,11 @@ AcpiEvDeleteGpeHandlers ( /* * evhandler - Address space handling */ +ACPI_OPERAND_OBJECT * +AcpiEvFindRegionHandler ( + ACPI_ADR_SPACE_TYPE SpaceId, + ACPI_OPERAND_OBJECT *HandlerObj); + BOOLEAN AcpiEvHasDefaultHandler ( ACPI_NAMESPACE_NODE *Node, @@ -336,17 +341,22 @@ AcpiEvAttachRegion ( void AcpiEvDetachRegion ( - ACPI_OPERAND_OBJECT *RegionObj, + ACPI_OPERAND_OBJECT *RegionObj, BOOLEAN AcpiNsIsLocked); -ACPI_STATUS +void +AcpiEvAssociateRegMethod ( + ACPI_OPERAND_OBJECT *RegionObj); + +void AcpiEvExecuteRegMethods ( ACPI_NAMESPACE_NODE *Node, - ACPI_ADR_SPACE_TYPE SpaceId); + ACPI_ADR_SPACE_TYPE SpaceId, + UINT32 Function); ACPI_STATUS AcpiEvExecuteRegMethod ( - ACPI_OPERAND_OBJECT *RegionObj, + ACPI_OPERAND_OBJECT *RegionObj, UINT32 Function); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acexcep.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acexcep.h index cf89df2a82..c5217295d6 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acexcep.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acexcep.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -200,8 +200,9 @@ typedef struct acpi_exception_info #define AE_OWNER_ID_LIMIT EXCEP_ENV (0x001B) #define AE_NOT_CONFIGURED EXCEP_ENV (0x001C) #define AE_ACCESS EXCEP_ENV (0x001D) +#define AE_IO_ERROR EXCEP_ENV (0x001E) -#define AE_CODE_ENV_MAX 0x001D +#define AE_CODE_ENV_MAX 0x001E /* @@ -270,8 +271,9 @@ typedef struct acpi_exception_info #define AE_AML_ILLEGAL_ADDRESS EXCEP_AML (0x0020) #define AE_AML_INFINITE_LOOP EXCEP_AML (0x0021) #define AE_AML_UNINITIALIZED_NODE EXCEP_AML (0x0022) +#define AE_AML_TARGET_TYPE EXCEP_AML (0x0023) -#define AE_CODE_AML_MAX 0x0022 +#define AE_CODE_AML_MAX 0x0023 /* @@ -333,7 +335,8 @@ static const ACPI_EXCEPTION_INFO AcpiGbl_ExceptionNames_Env[] = EXCEP_TXT ("AE_NO_HANDLER", "A handler for the operation is not installed"), EXCEP_TXT ("AE_OWNER_ID_LIMIT", "There are no more Owner IDs available for ACPI tables or control methods"), EXCEP_TXT ("AE_NOT_CONFIGURED", "The interface is not part of the current subsystem configuration"), - EXCEP_TXT ("AE_ACCESS", "Permission denied for the requested operation") + EXCEP_TXT ("AE_ACCESS", "Permission denied for the requested operation"), + EXCEP_TXT ("AE_IO_ERROR", "An I/O error occurred") }; static const ACPI_EXCEPTION_INFO AcpiGbl_ExceptionNames_Pgm[] = @@ -396,7 +399,8 @@ static const ACPI_EXCEPTION_INFO AcpiGbl_ExceptionNames_Aml[] = EXCEP_TXT ("AE_AML_BAD_RESOURCE_LENGTH", "The length of a Resource Descriptor in the AML is incorrect"), EXCEP_TXT ("AE_AML_ILLEGAL_ADDRESS", "A memory, I/O, or PCI configuration address is invalid"), EXCEP_TXT ("AE_AML_INFINITE_LOOP", "An apparent infinite AML While loop, method was aborted"), - EXCEP_TXT ("AE_AML_UNINITIALIZED_NODE", "A namespace node is uninitialized or unresolved") + EXCEP_TXT ("AE_AML_UNINITIALIZED_NODE", "A namespace node is uninitialized or unresolved"), + EXCEP_TXT ("AE_AML_TARGET_TYPE", "A target operand of an incorrect type was encountered") }; static const ACPI_EXCEPTION_INFO AcpiGbl_ExceptionNames_Ctrl[] = diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acglobal.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acglobal.h index 2d8bd88cbe..3215d338b9 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acglobal.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acglobal.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -134,6 +134,7 @@ ACPI_GLOBAL (ACPI_TABLE_HEADER, AcpiGbl_OriginalDsdtHeader); ACPI_INIT_GLOBAL (UINT32, AcpiGbl_DsdtIndex, ACPI_INVALID_TABLE_INDEX); ACPI_INIT_GLOBAL (UINT32, AcpiGbl_FacsIndex, ACPI_INVALID_TABLE_INDEX); ACPI_INIT_GLOBAL (UINT32, AcpiGbl_XFacsIndex, ACPI_INVALID_TABLE_INDEX); +ACPI_INIT_GLOBAL (UINT32, AcpiGbl_FadtIndex, ACPI_INVALID_TABLE_INDEX); #if (!ACPI_REDUCED_HARDWARE) ACPI_GLOBAL (ACPI_TABLE_FACS *, AcpiGbl_FACS); @@ -157,6 +158,8 @@ ACPI_GLOBAL (UINT8, AcpiGbl_IntegerBitWidth); ACPI_GLOBAL (UINT8, AcpiGbl_IntegerByteWidth); ACPI_GLOBAL (UINT8, AcpiGbl_IntegerNybbleWidth); +ACPI_INIT_GLOBAL (UINT8, AcpiGbl_GroupModuleLevelCode, FALSE); + /***************************************************************************** * @@ -219,6 +222,7 @@ ACPI_GLOBAL (ACPI_CACHE_T *, AcpiGbl_OperandCache); ACPI_INIT_GLOBAL (UINT32, AcpiGbl_StartupFlags, 0); ACPI_INIT_GLOBAL (BOOLEAN, AcpiGbl_Shutdown, TRUE); +ACPI_INIT_GLOBAL (BOOLEAN, AcpiGbl_EarlyInitialization, TRUE); /* Global handlers */ @@ -238,7 +242,7 @@ ACPI_GLOBAL (UINT8, AcpiGbl_NextOwnerIdOffset); /* Initialization sequencing */ -ACPI_GLOBAL (BOOLEAN, AcpiGbl_RegMethodsExecuted); +ACPI_INIT_GLOBAL (BOOLEAN, AcpiGbl_RegMethodsEnabled, FALSE); /* Misc */ @@ -400,9 +404,9 @@ ACPI_GLOBAL (ACPI_EXTERNAL_FILE *, AcpiGbl_ExternalFileList); #ifdef ACPI_DEBUGGER -ACPI_INIT_GLOBAL (BOOLEAN, AcpiGbl_DbTerminateThreads, FALSE); ACPI_INIT_GLOBAL (BOOLEAN, AcpiGbl_AbortMethod, FALSE); ACPI_INIT_GLOBAL (BOOLEAN, AcpiGbl_MethodExecuting, FALSE); +ACPI_INIT_GLOBAL (ACPI_THREAD_ID, AcpiGbl_DbThreadId, ACPI_INVALID_THREAD_ID); ACPI_GLOBAL (BOOLEAN, AcpiGbl_DbOpt_NoIniMethods); ACPI_GLOBAL (BOOLEAN, AcpiGbl_DbOpt_NoRegionSupport); @@ -412,6 +416,8 @@ ACPI_GLOBAL (char *, AcpiGbl_DbFilename); ACPI_GLOBAL (UINT32, AcpiGbl_DbDebugLevel); ACPI_GLOBAL (UINT32, AcpiGbl_DbConsoleDebugLevel); ACPI_GLOBAL (ACPI_NAMESPACE_NODE *, AcpiGbl_DbScopeNode); +ACPI_GLOBAL (BOOLEAN, AcpiGbl_DbTerminateLoop); +ACPI_GLOBAL (BOOLEAN, AcpiGbl_DbThreadsTerminated); ACPI_GLOBAL (char *, AcpiGbl_DbArgs[ACPI_DEBUGGER_MAX_ARGS]); ACPI_GLOBAL (ACPI_OBJECT_TYPE, AcpiGbl_DbArgTypes[ACPI_DEBUGGER_MAX_ARGS]); @@ -433,6 +439,9 @@ ACPI_GLOBAL (UINT16, AcpiGbl_NodeTypeCountMisc); ACPI_GLOBAL (UINT32, AcpiGbl_NumNodes); ACPI_GLOBAL (UINT32, AcpiGbl_NumObjects); +ACPI_GLOBAL (ACPI_MUTEX, AcpiGbl_DbCommandReady); +ACPI_GLOBAL (ACPI_MUTEX, AcpiGbl_DbCommandComplete); + #endif /* ACPI_DEBUGGER */ diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/achware.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/achware.h index 6134bdac21..d9b256131e 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/achware.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/achware.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acinterp.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acinterp.h index 77d6953a13..4029b14856 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acinterp.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acinterp.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/aclocal.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/aclocal.h index 58f232063a..5cadb26ae1 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/aclocal.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/aclocal.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -159,10 +159,8 @@ union acpi_parse_object; #define ACPI_MTX_EVENTS 3 /* Data for ACPI events */ #define ACPI_MTX_CACHES 4 /* Internal caches, general purposes */ #define ACPI_MTX_MEMORY 5 /* Debug memory tracking lists */ -#define ACPI_MTX_DEBUG_CMD_COMPLETE 6 /* AML debugger */ -#define ACPI_MTX_DEBUG_CMD_READY 7 /* AML debugger */ -#define ACPI_MAX_MUTEX 7 +#define ACPI_MAX_MUTEX 5 #define ACPI_NUM_MUTEX ACPI_MAX_MUTEX+1 @@ -192,6 +190,14 @@ typedef struct acpi_rw_lock #define ACPI_MUTEX_NOT_ACQUIRED (ACPI_THREAD_ID) -1 +/* This Thread ID means an invalid thread ID */ + +#ifdef ACPI_OS_INVALID_THREAD_ID +#define ACPI_INVALID_THREAD_ID ACPI_OS_INVALID_THREAD_ID +#else +#define ACPI_INVALID_THREAD_ID ((ACPI_THREAD_ID) 0xFFFFFFFF) +#endif + /* Table for the global mutexes */ typedef struct acpi_mutex_info @@ -310,6 +316,16 @@ typedef struct acpi_table_list #define ACPI_ROOT_ALLOW_RESIZE (2) +/* List to manage incoming ACPI tables */ + +typedef struct acpi_new_table_desc +{ + ACPI_TABLE_HEADER *Table; + struct acpi_new_table_desc *Next; + +} ACPI_NEW_TABLE_DESC; + + /* Predefined table indexes */ #define ACPI_INVALID_TABLE_INDEX (0xFFFFFFFF) @@ -400,13 +416,17 @@ ACPI_STATUS (*ACPI_INTERNAL_METHOD) ( #define ACPI_BTYPE_BUFFER_FIELD 0x00002000 #define ACPI_BTYPE_DDB_HANDLE 0x00004000 #define ACPI_BTYPE_DEBUG_OBJECT 0x00008000 -#define ACPI_BTYPE_REFERENCE 0x00010000 +#define ACPI_BTYPE_REFERENCE_OBJECT 0x00010000 /* From Index(), RefOf(), etc (Type6Opcodes) */ #define ACPI_BTYPE_RESOURCE 0x00020000 +#define ACPI_BTYPE_NAMED_REFERENCE 0x00040000 /* Generic unresolved Name or Namepath */ #define ACPI_BTYPE_COMPUTE_DATA (ACPI_BTYPE_INTEGER | ACPI_BTYPE_STRING | ACPI_BTYPE_BUFFER) #define ACPI_BTYPE_DATA (ACPI_BTYPE_COMPUTE_DATA | ACPI_BTYPE_PACKAGE) -#define ACPI_BTYPE_DATA_REFERENCE (ACPI_BTYPE_DATA | ACPI_BTYPE_REFERENCE | ACPI_BTYPE_DDB_HANDLE) + + /* Used by Copy, DeRefOf, Store, Printf, Fprintf */ + +#define ACPI_BTYPE_DATA_REFERENCE (ACPI_BTYPE_DATA | ACPI_BTYPE_REFERENCE_OBJECT | ACPI_BTYPE_DDB_HANDLE) #define ACPI_BTYPE_DEVICE_OBJECTS (ACPI_BTYPE_DEVICE | ACPI_BTYPE_THERMAL | ACPI_BTYPE_PROCESSOR) #define ACPI_BTYPE_OBJECTS_AND_REFS 0x0001FFFF /* ARG or LOCAL */ #define ACPI_BTYPE_ALL_OBJECTS 0x0000FFFF @@ -505,6 +525,7 @@ typedef union acpi_predefined_info /* Return object auto-repair info */ typedef ACPI_STATUS (*ACPI_OBJECT_CONVERTER) ( + struct acpi_namespace_node *Scope, union acpi_operand_object *OriginalObject, union acpi_operand_object **ConvertedObject); @@ -540,6 +561,7 @@ typedef struct acpi_simple_repair_info typedef struct acpi_reg_walk_info { ACPI_ADR_SPACE_TYPE SpaceId; + UINT32 Function; UINT32 RegRunCount; } ACPI_REG_WALK_INFO; @@ -1089,9 +1111,10 @@ typedef struct acpi_parse_state #define ACPI_PARSEOP_PARAMLIST 0x02 #define ACPI_PARSEOP_EMPTY_TERMLIST 0x04 #define ACPI_PARSEOP_PREDEF_CHECKED 0x08 -#define ACPI_PARSEOP_SPECIAL 0x10 +#define ACPI_PARSEOP_CLOSING_PAREN 0x10 #define ACPI_PARSEOP_COMPOUND 0x20 #define ACPI_PARSEOP_ASSIGNMENT 0x40 +#define ACPI_PARSEOP_ELSEIF 0x80 /***************************************************************************** diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acmacros.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acmacros.h index f8dfffb34c..65d56c226c 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acmacros.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acmacros.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -477,18 +477,6 @@ #endif -/* - * Some code only gets executed when the debugger is built in. - * Note that this is entirely independent of whether the - * DEBUG_PRINT stuff (set by ACPI_DEBUG_OUTPUT) is on, or not. - */ -#ifdef ACPI_DEBUGGER -#define ACPI_DEBUGGER_EXEC(a) a -#else -#define ACPI_DEBUGGER_EXEC(a) -#endif - - /* * Macros used for ACPICA utilities only */ diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acnames.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acnames.h index 7c5ef647d1..59b3c25876 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acnames.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acnames.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acnamesp.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acnamesp.h index db7f1148be..ad0e27b09e 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acnamesp.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acnamesp.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -150,6 +150,7 @@ /* Object is not a package element */ #define ACPI_NOT_PACKAGE_ELEMENT ACPI_UINT32_MAX +#define ACPI_ALL_PACKAGE_ELEMENTS (ACPI_UINT32_MAX-1) /* Always emit warning message, not dependent on node flags */ @@ -296,11 +297,19 @@ AcpiNsConvertToBuffer ( ACPI_STATUS AcpiNsConvertToUnicode ( + ACPI_NAMESPACE_NODE *Scope, ACPI_OPERAND_OBJECT *OriginalObject, ACPI_OPERAND_OBJECT **ReturnObject); ACPI_STATUS AcpiNsConvertToResource ( + ACPI_NAMESPACE_NODE *Scope, + ACPI_OPERAND_OBJECT *OriginalObject, + ACPI_OPERAND_OBJECT **ReturnObject); + +ACPI_STATUS +AcpiNsConvertToReference ( + ACPI_NAMESPACE_NODE *Scope, ACPI_OPERAND_OBJECT *OriginalObject, ACPI_OPERAND_OBJECT **ReturnObject); diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acobject.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acobject.h index feaa9d16bf..c107329afd 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acobject.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acobject.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -166,9 +166,10 @@ #define AOPOBJ_AML_CONSTANT 0x01 /* Integer is an AML constant */ #define AOPOBJ_STATIC_POINTER 0x02 /* Data is part of an ACPI table, don't delete */ #define AOPOBJ_DATA_VALID 0x04 /* Object is initialized and data is valid */ -#define AOPOBJ_OBJECT_INITIALIZED 0x08 /* Region is initialized, _REG was run */ -#define AOPOBJ_SETUP_COMPLETE 0x10 /* Region setup is complete */ -#define AOPOBJ_INVALID 0x20 /* Host OS won't allow a Region address */ +#define AOPOBJ_OBJECT_INITIALIZED 0x08 /* Region is initialized */ +#define AOPOBJ_REG_CONNECTED 0x10 /* _REG was run */ +#define AOPOBJ_SETUP_COMPLETE 0x20 /* Region setup is complete */ +#define AOPOBJ_INVALID 0x40 /* Host OS won't allow a Region address */ /****************************************************************************** diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acopcode.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acopcode.h index 133e1347d0..296b789e42 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acopcode.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acopcode.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -165,7 +165,7 @@ #define ARGP_BYTELIST_OP ARGP_LIST1 (ARGP_NAMESTRING) #define ARGP_CONCAT_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET) #define ARGP_CONCAT_RES_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET) -#define ARGP_COND_REF_OF_OP ARGP_LIST2 (ARGP_SUPERNAME, ARGP_SUPERNAME) +#define ARGP_COND_REF_OF_OP ARGP_LIST2 (ARGP_NAME_OR_REF,ARGP_TARGET) #define ARGP_CONNECTFIELD_OP ARGP_LIST1 (ARGP_NAMESTRING) #define ARGP_CONTINUE_OP ARG_NONE #define ARGP_COPY_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_SIMPLENAME) @@ -225,13 +225,14 @@ #define ARGP_NAMEPATH_OP ARGP_LIST1 (ARGP_NAMESTRING) #define ARGP_NOOP_OP ARG_NONE #define ARGP_NOTIFY_OP ARGP_LIST2 (ARGP_SUPERNAME, ARGP_TERMARG) +#define ARGP_OBJECT_TYPE_OP ARGP_LIST1 (ARGP_NAME_OR_REF) #define ARGP_ONE_OP ARG_NONE #define ARGP_ONES_OP ARG_NONE #define ARGP_PACKAGE_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_BYTEDATA, ARGP_DATAOBJLIST) #define ARGP_POWER_RES_OP ARGP_LIST5 (ARGP_PKGLENGTH, ARGP_NAME, ARGP_BYTEDATA, ARGP_WORDDATA, ARGP_OBJLIST) #define ARGP_PROCESSOR_OP ARGP_LIST6 (ARGP_PKGLENGTH, ARGP_NAME, ARGP_BYTEDATA, ARGP_DWORDDATA, ARGP_BYTEDATA, ARGP_OBJLIST) #define ARGP_QWORD_OP ARGP_LIST1 (ARGP_QWORDDATA) -#define ARGP_REF_OF_OP ARGP_LIST1 (ARGP_SUPERNAME) +#define ARGP_REF_OF_OP ARGP_LIST1 (ARGP_NAME_OR_REF) #define ARGP_REGION_OP ARGP_LIST4 (ARGP_NAME, ARGP_BYTEDATA, ARGP_TERMARG, ARGP_TERMARG) #define ARGP_RELEASE_OP ARGP_LIST1 (ARGP_SUPERNAME) #define ARGP_RESERVEDFIELD_OP ARGP_LIST1 (ARGP_NAMESTRING) @@ -258,7 +259,6 @@ #define ARGP_TO_HEX_STR_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TARGET) #define ARGP_TO_INTEGER_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TARGET) #define ARGP_TO_STRING_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET) -#define ARGP_TYPE_OP ARGP_LIST1 (ARGP_SUPERNAME) #define ARGP_UNLOAD_OP ARGP_LIST1 (ARGP_SUPERNAME) #define ARGP_VAR_PACKAGE_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_TERMARG, ARGP_DATAOBJLIST) #define ARGP_WAIT_OP ARGP_LIST2 (ARGP_SUPERNAME, ARGP_TERMARG) @@ -285,7 +285,7 @@ #define ARGI_ARG4 ARG_NONE #define ARGI_ARG5 ARG_NONE #define ARGI_ARG6 ARG_NONE -#define ARGI_BANK_FIELD_OP ARGI_INVALID_OPCODE +#define ARGI_BANK_FIELD_OP ARGI_LIST1 (ARGI_INTEGER) #define ARGI_BIT_AND_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF) #define ARGI_BIT_NAND_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF) #define ARGI_BIT_NOR_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF) @@ -297,7 +297,7 @@ #define ARGI_BUFFER_OP ARGI_LIST1 (ARGI_INTEGER) #define ARGI_BYTE_OP ARGI_INVALID_OPCODE #define ARGI_BYTELIST_OP ARGI_INVALID_OPCODE -#define ARGI_CONCAT_OP ARGI_LIST3 (ARGI_COMPUTEDATA,ARGI_COMPUTEDATA, ARGI_TARGETREF) +#define ARGI_CONCAT_OP ARGI_LIST3 (ARGI_ANYTYPE, ARGI_ANYTYPE, ARGI_TARGETREF) #define ARGI_CONCAT_RES_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_BUFFER, ARGI_TARGETREF) #define ARGI_COND_REF_OF_OP ARGI_LIST2 (ARGI_OBJECT_REF, ARGI_TARGETREF) #define ARGI_CONNECTFIELD_OP ARGI_INVALID_OPCODE @@ -359,6 +359,7 @@ #define ARGI_NAMEPATH_OP ARGI_INVALID_OPCODE #define ARGI_NOOP_OP ARG_NONE #define ARGI_NOTIFY_OP ARGI_LIST2 (ARGI_DEVICE_REF, ARGI_INTEGER) +#define ARGI_OBJECT_TYPE_OP ARGI_LIST1 (ARGI_ANYTYPE) #define ARGI_ONE_OP ARG_NONE #define ARGI_ONES_OP ARG_NONE #define ARGI_PACKAGE_OP ARGI_LIST1 (ARGI_INTEGER) @@ -381,7 +382,7 @@ #define ARGI_SLEEP_OP ARGI_LIST1 (ARGI_INTEGER) #define ARGI_STALL_OP ARGI_LIST1 (ARGI_INTEGER) #define ARGI_STATICSTRING_OP ARGI_INVALID_OPCODE -#define ARGI_STORE_OP ARGI_LIST2 (ARGI_DATAREFOBJ, ARGI_TARGETREF) +#define ARGI_STORE_OP ARGI_LIST2 (ARGI_DATAREFOBJ, ARGI_STORE_TARGET) #define ARGI_STRING_OP ARGI_INVALID_OPCODE #define ARGI_SUBTRACT_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF) #define ARGI_THERMAL_ZONE_OP ARGI_INVALID_OPCODE @@ -392,7 +393,6 @@ #define ARGI_TO_HEX_STR_OP ARGI_LIST2 (ARGI_COMPUTEDATA,ARGI_FIXED_TARGET) #define ARGI_TO_INTEGER_OP ARGI_LIST2 (ARGI_COMPUTEDATA,ARGI_FIXED_TARGET) #define ARGI_TO_STRING_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_INTEGER, ARGI_FIXED_TARGET) -#define ARGI_TYPE_OP ARGI_LIST1 (ARGI_ANYTYPE) #define ARGI_UNLOAD_OP ARGI_LIST1 (ARGI_DDBHANDLE) #define ARGI_VAR_PACKAGE_OP ARGI_LIST1 (ARGI_INTEGER) #define ARGI_WAIT_OP ARGI_LIST2 (ARGI_EVENT, ARGI_INTEGER) diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acoutput.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acoutput.h index a9c73b94e5..22c0106d55 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acoutput.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acoutput.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acparser.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acparser.h index c525dd33cf..09b6bfda6d 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acparser.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acparser.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -178,7 +178,12 @@ AcpiPsGetNextNamepath ( ACPI_WALK_STATE *WalkState, ACPI_PARSE_STATE *ParserState, ACPI_PARSE_OBJECT *Arg, - BOOLEAN MethodCall); + BOOLEAN PossibleMethodCall); + +/* Values for BOOLEAN above */ + +#define ACPI_NOT_METHOD_CALL FALSE +#define ACPI_POSSIBLE_METHOD_CALL TRUE ACPI_STATUS AcpiPsGetNextArg ( diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acpi.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acpi.h index 1d694a5061..23cd69f23e 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acpi.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acpi.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acpiosxf.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acpiosxf.h index 45cec744af..550e264bd2 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acpiosxf.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acpiosxf.h @@ -10,7 +10,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -129,7 +129,8 @@ typedef enum OSL_GLOBAL_LOCK_HANDLER, OSL_NOTIFY_HANDLER, OSL_GPE_HANDLER, - OSL_DEBUGGER_THREAD, + OSL_DEBUGGER_MAIN_THREAD, + OSL_DEBUGGER_EXEC_THREAD, OSL_EC_POLL_HANDLER, OSL_EC_BURST_HANDLER diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acpixf.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acpixf.h index e0cd0d0929..5f0d627907 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acpixf.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acpixf.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -118,7 +118,7 @@ /* Current ACPICA subsystem version in YYYYMMDD format */ -#define ACPI_CA_VERSION 0x20150818 +#define ACPI_CA_VERSION 0x20160108 #include "acconfig.h" #include "actypes.h" @@ -263,6 +263,11 @@ ACPI_INIT_GLOBAL (UINT8, AcpiGbl_CopyDsdtLocally, FALSE); */ ACPI_INIT_GLOBAL (UINT8, AcpiGbl_DoNotUseXsdt, FALSE); +/* + * Optionally allow default region handlers to be overridden. + */ +ACPI_INIT_GLOBAL (UINT8, AcpiGbl_OverrideDefaultRegionHandlers, FALSE); + /* * Optionally use 32-bit FADT addresses if and when there is a conflict * (address mismatch) between the 32-bit and 64-bit versions of the @@ -341,6 +346,10 @@ ACPI_INIT_GLOBAL (UINT32, AcpiDbgLevel, ACPI_NORMAL_DEFAULT); #endif ACPI_INIT_GLOBAL (UINT32, AcpiDbgLayer, ACPI_COMPONENT_DEFAULT); +/* Optionally enable timer output with Debug Object output */ + +ACPI_INIT_GLOBAL (UINT8, AcpiGbl_DisplayDebugTimer, FALSE); + /* * Other miscellaneous globals */ @@ -449,6 +458,30 @@ ACPI_GLOBAL (BOOLEAN, AcpiGbl_SystemAwakeAndRunning); #endif /* ACPI_APPLICATION */ +/* + * Debugger prototypes + * + * All interfaces used by debugger will be configured + * out of the ACPICA build unless the ACPI_DEBUGGER + * flag is defined. + */ +#ifdef ACPI_DEBUGGER +#define ACPI_DBR_DEPENDENT_RETURN_OK(Prototype) \ + ACPI_EXTERNAL_RETURN_OK(Prototype) + +#define ACPI_DBR_DEPENDENT_RETURN_VOID(Prototype) \ + ACPI_EXTERNAL_RETURN_VOID(Prototype) + +#else +#define ACPI_DBR_DEPENDENT_RETURN_OK(Prototype) \ + static ACPI_INLINE Prototype {return(AE_OK);} + +#define ACPI_DBR_DEPENDENT_RETURN_VOID(Prototype) \ + static ACPI_INLINE Prototype {return;} + +#endif /* ACPI_DEBUGGER */ + + /***************************************************************************** * * ACPICA public interface prototypes @@ -1288,4 +1321,8 @@ void AcpiTerminateDebugger ( void); +void +AcpiSetDebuggerThreadId ( + ACPI_THREAD_ID ThreadId); + #endif /* __ACXFACE_H__ */ diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acpredef.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acpredef.h index 37f0244b7e..413fa2a168 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acpredef.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acpredef.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acresrc.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acresrc.h index b2596185fb..7110cb963b 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acresrc.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acresrc.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acrestyp.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acrestyp.h index f81b5cde56..9abde22290 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acrestyp.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acrestyp.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acstruct.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acstruct.h index f8443d688e..a9624d9119 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acstruct.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acstruct.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/actables.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/actables.h index 10fb56da1b..acdf082bce 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/actables.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/actables.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -187,7 +187,7 @@ AcpiTbSetTableLoadedFlag ( */ void AcpiTbParseFadt ( - UINT32 TableIndex); + void); void AcpiTbCreateLocalFadt ( @@ -279,10 +279,6 @@ ACPI_STATUS AcpiTbInitializeFacs ( void); -BOOLEAN -AcpiTbTablesLoaded ( - void); - void AcpiTbPrintTableHeader( ACPI_PHYSICAL_ADDRESS Address, diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/actbl.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/actbl.h index 7ec5f62f2b..2e00273a7c 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/actbl.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/actbl.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/actbl1.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/actbl1.h index f7eaa4c603..68ec9829ab 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/actbl1.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/actbl1.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -1256,7 +1256,7 @@ typedef struct acpi_nfit_memory_map #define ACPI_NFIT_MEM_SAVE_FAILED (1) /* 00: Last SAVE to Memory Device failed */ #define ACPI_NFIT_MEM_RESTORE_FAILED (1<<1) /* 01: Last RESTORE from Memory Device failed */ #define ACPI_NFIT_MEM_FLUSH_FAILED (1<<2) /* 02: Platform flush failed */ -#define ACPI_NFIT_MEM_ARMED (1<<3) /* 03: Memory Device observed to be not armed */ +#define ACPI_NFIT_MEM_NOT_ARMED (1<<3) /* 03: Memory Device is not armed */ #define ACPI_NFIT_MEM_HEALTH_OBSERVED (1<<4) /* 04: Memory Device observed SMART/health events */ #define ACPI_NFIT_MEM_HEALTH_ENABLED (1<<5) /* 05: SMART/health events enabled */ diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/actbl2.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/actbl2.h index ab925894e9..d3e9055044 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/actbl2.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/actbl2.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/actbl3.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/actbl3.h index bfc18d7a17..14b0a8a3ed 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/actbl3.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/actbl3.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/actypes.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/actypes.h index e9e765d642..02ef5cec5e 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/actypes.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/actypes.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -1304,7 +1304,7 @@ UINT32 (*ACPI_INTERFACE_HANDLER) ( #define ACPI_PCICLS_STRING_SIZE 7 /* Includes null terminator */ -/* Structures used for device/processor HID, UID, CID, and SUB */ +/* Structures used for device/processor HID, UID, CID */ typedef struct acpi_pnp_device_id { @@ -1339,7 +1339,6 @@ typedef struct acpi_device_info UINT64 Address; /* _ADR value */ ACPI_PNP_DEVICE_ID HardwareId; /* _HID value */ ACPI_PNP_DEVICE_ID UniqueId; /* _UID value */ - ACPI_PNP_DEVICE_ID SubsystemId; /* _SUB value */ ACPI_PNP_DEVICE_ID ClassCode; /* _CLS value */ ACPI_PNP_DEVICE_ID_LIST CompatibleIdList; /* _CID list */ @@ -1355,13 +1354,12 @@ typedef struct acpi_device_info #define ACPI_VALID_ADR 0x0002 #define ACPI_VALID_HID 0x0004 #define ACPI_VALID_UID 0x0008 -#define ACPI_VALID_SUB 0x0010 #define ACPI_VALID_CID 0x0020 #define ACPI_VALID_CLS 0x0040 #define ACPI_VALID_SXDS 0x0100 #define ACPI_VALID_SXWS 0x0200 -/* Flags for _STA return value (CurrentStatus above) */ +/* Flags for _STA method */ #define ACPI_STA_DEVICE_PRESENT 0x01 #define ACPI_STA_DEVICE_ENABLED 0x02 diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acutils.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acutils.h index 4fc44ff3f0..08dc928d6e 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acutils.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acutils.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -278,7 +278,7 @@ AcpiUtInitGlobals ( #if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER) -char * +const char * AcpiUtGetMutexName ( UINT32 MutexId); @@ -288,15 +288,15 @@ AcpiUtGetNotifyName ( ACPI_OBJECT_TYPE Type); #endif -char * +const char * AcpiUtGetTypeName ( ACPI_OBJECT_TYPE Type); -char * +const char * AcpiUtGetNodeName ( void *Object); -char * +const char * AcpiUtGetDescriptorName ( void *Object); @@ -304,15 +304,15 @@ const char * AcpiUtGetReferenceName ( ACPI_OPERAND_OBJECT *Object); -char * +const char * AcpiUtGetObjectTypeName ( ACPI_OPERAND_OBJECT *ObjDesc); -char * +const char * AcpiUtGetRegionName ( UINT8 SpaceId); -char * +const char * AcpiUtGetEventName ( UINT32 EventId); @@ -555,17 +555,6 @@ AcpiUtExecutePowerMethods ( UINT8 *OutValues); -/* - * utfileio - file operations - */ -#ifdef ACPI_APPLICATION -ACPI_STATUS -AcpiUtReadTableFromFile ( - char *Filename, - ACPI_TABLE_HEADER **Table); -#endif - - /* * utids - device ID support */ @@ -579,11 +568,6 @@ AcpiUtExecute_UID ( ACPI_NAMESPACE_NODE *DeviceNode, ACPI_PNP_DEVICE_ID **ReturnId); -ACPI_STATUS -AcpiUtExecute_SUB ( - ACPI_NAMESPACE_NODE *DeviceNode, - ACPI_PNP_DEVICE_ID **ReturnId); - ACPI_STATUS AcpiUtExecute_CID ( ACPI_NAMESPACE_NODE *DeviceNode, diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acuuid.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acuuid.h index f43ec22e4a..5bafabceec 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/acuuid.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/acuuid.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/amlcode.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/amlcode.h index 34ac987629..289d3ecfd5 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/amlcode.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/amlcode.h @@ -10,7 +10,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -192,7 +192,7 @@ #define AML_CREATE_WORD_FIELD_OP (UINT16) 0x8b #define AML_CREATE_BYTE_FIELD_OP (UINT16) 0x8c #define AML_CREATE_BIT_FIELD_OP (UINT16) 0x8d -#define AML_TYPE_OP (UINT16) 0x8e +#define AML_OBJECT_TYPE_OP (UINT16) 0x8e #define AML_CREATE_QWORD_FIELD_OP (UINT16) 0x8f /* ACPI 2.0 */ #define AML_LAND_OP (UINT16) 0x90 #define AML_LOR_OP (UINT16) 0x91 @@ -313,7 +313,8 @@ #define ARGP_TERMLIST 0x0F #define ARGP_WORDDATA 0x10 #define ARGP_QWORDDATA 0x11 -#define ARGP_SIMPLENAME 0x12 +#define ARGP_SIMPLENAME 0x12 /* NameString | LocalTerm | ArgTerm */ +#define ARGP_NAME_OR_REF 0x13 /* For ObjectType only */ /* * Resolved argument types for the AML Interpreter @@ -352,14 +353,15 @@ #define ARGI_TARGETREF 0x0F /* Target, subject to implicit conversion */ #define ARGI_FIXED_TARGET 0x10 /* Target, no implicit conversion */ #define ARGI_SIMPLE_TARGET 0x11 /* Name, Local, Arg -- no implicit conversion */ +#define ARGI_STORE_TARGET 0x12 /* Target for store is TARGETREF + package objects */ /* Multiple/complex types */ -#define ARGI_DATAOBJECT 0x12 /* Buffer, String, package or reference to a Node - Used only by SizeOf operator*/ -#define ARGI_COMPLEXOBJ 0x13 /* Buffer, String, or package (Used by INDEX op only) */ -#define ARGI_REF_OR_STRING 0x14 /* Reference or String (Used by DEREFOF op only) */ -#define ARGI_REGION_OR_BUFFER 0x15 /* Used by LOAD op only */ -#define ARGI_DATAREFOBJ 0x16 +#define ARGI_DATAOBJECT 0x13 /* Buffer, String, package or reference to a Node - Used only by SizeOf operator*/ +#define ARGI_COMPLEXOBJ 0x14 /* Buffer, String, or package (Used by INDEX op only) */ +#define ARGI_REF_OR_STRING 0x15 /* Reference or String (Used by DEREFOF op only) */ +#define ARGI_REGION_OR_BUFFER 0x16 /* Used by LOAD op only */ +#define ARGI_DATAREFOBJ 0x17 /* Note: types above can expand to 0x1F maximum */ diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/amlresrc.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/amlresrc.h index 87f52c5ae3..cd9eb2d301 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/amlresrc.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/amlresrc.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/platform/acenv.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/platform/acenv.h index 614a538bb0..63076ab271 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/platform/acenv.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/platform/acenv.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License @@ -369,6 +369,7 @@ #define ACPI_INTERNAL_VAR_XFACE #endif + /* * Debugger threading model * Use single threaded if the entire subsystem is contained in an application @@ -378,11 +379,11 @@ * multi-threaded if ACPI_APPLICATION is not set. */ #ifndef DEBUGGER_THREADING -#ifdef ACPI_APPLICATION -#define DEBUGGER_THREADING DEBUGGER_SINGLE_THREADED +#if !defined (ACPI_APPLICATION) || defined (ACPI_EXEC_APP) +#define DEBUGGER_THREADING DEBUGGER_MULTI_THREADED #else -#define DEBUGGER_THREADING DEBUGGER_MULTI_THREADED +#define DEBUGGER_THREADING DEBUGGER_SINGLE_THREADED #endif #endif /* !DEBUGGER_THREADING */ diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/platform/acenvex.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/platform/acenvex.h index 3daf77e128..a0a4ed1b43 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/platform/acenvex.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/platform/acenvex.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/platform/acgcc.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/platform/acgcc.h index 958b4ac7c9..3d36a38a38 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/platform/acgcc.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/platform/acgcc.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/platform/achaiku.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/platform/achaiku.h index fb8762397b..f41d6ec38f 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/platform/achaiku.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/platform/achaiku.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/include/platform/acintel.h b/src/add-ons/kernel/bus_managers/acpi/acpica/include/platform/acintel.h index b9bd615029..d7f242390e 100644 --- a/src/add-ons/kernel/bus_managers/acpi/acpica/include/platform/acintel.h +++ b/src/add-ons/kernel/bus_managers/acpi/acpica/include/platform/acintel.h @@ -8,7 +8,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. * All rights reserved. * * 2. License From 1fe3cb8742458662adcca7e6b43440196ec1c60c Mon Sep 17 00:00:00 2001 From: Dario Casalinuovo Date: Tue, 19 Jan 2016 22:25:45 +0100 Subject: [PATCH 164/242] AudioMixer: Notify the producer basing on latency variation * Since the producer may take an undefined amount of buffers to process the latency increase, possibly depending on it's queue, the consumer will notify only the difference between the old latency and the new. While not solving completely, this improves the situation under virtual box (and slow systems) making the sound more stable. --- src/add-ons/media/media-add-ons/mixer/AudioMixer.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/add-ons/media/media-add-ons/mixer/AudioMixer.cpp b/src/add-ons/media/media-add-ons/mixer/AudioMixer.cpp index f532179dca..5d0060ae97 100644 --- a/src/add-ons/media/media-add-ons/mixer/AudioMixer.cpp +++ b/src/add-ons/media/media-add-ons/mixer/AudioMixer.cpp @@ -321,7 +321,11 @@ AudioMixer::BufferReceived(BBuffer *buffer) void AudioMixer::HandleInputBuffer(BBuffer* buffer, bigtime_t lateness) { - if (lateness > kMaxJitter && lateness > fLastLateness) { + bigtime_t variation = 0; + if (lateness > fLastLateness) + variation = lateness-fLastLateness; + + if (variation > kMaxJitter) { debug_printf("AudioMixer: Dequeued input buffer %" B_PRIdBIGTIME " usec late\n", lateness); if (RunMode() == B_DROP_DATA || RunMode() == B_DECREASE_PRECISION @@ -333,7 +337,7 @@ AudioMixer::HandleInputBuffer(BBuffer* buffer, bigtime_t lateness) source.port = buffer->Header()->source_port; source.id = buffer->Header()->source; - NotifyLateProducer(source, lateness, TimeSource()->Now()); + NotifyLateProducer(source, variation, TimeSource()->Now()); if (RunMode() == B_DROP_DATA) { debug_printf("AudioMixer: dropping buffer\n"); @@ -341,6 +345,7 @@ AudioMixer::HandleInputBuffer(BBuffer* buffer, bigtime_t lateness) } } } + fLastLateness = lateness; fCore->Lock(); From 08a65695bb4f117688eb9a008c63e66ff6a1493c Mon Sep 17 00:00:00 2001 From: Dario Casalinuovo Date: Tue, 19 Jan 2016 22:32:32 +0100 Subject: [PATCH 165/242] AudioMixer: Replace debug_printf with TRACE --- src/add-ons/media/media-add-ons/mixer/AudioMixer.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/add-ons/media/media-add-ons/mixer/AudioMixer.cpp b/src/add-ons/media/media-add-ons/mixer/AudioMixer.cpp index 5d0060ae97..1af6a4d5bf 100644 --- a/src/add-ons/media/media-add-ons/mixer/AudioMixer.cpp +++ b/src/add-ons/media/media-add-ons/mixer/AudioMixer.cpp @@ -326,11 +326,11 @@ AudioMixer::HandleInputBuffer(BBuffer* buffer, bigtime_t lateness) variation = lateness-fLastLateness; if (variation > kMaxJitter) { - debug_printf("AudioMixer: Dequeued input buffer %" B_PRIdBIGTIME + TRACE("AudioMixer: Dequeued input buffer %" B_PRIdBIGTIME " usec late\n", lateness); if (RunMode() == B_DROP_DATA || RunMode() == B_DECREASE_PRECISION || RunMode() == B_INCREASE_LATENCY) { - debug_printf("AudioMixer: sending notify\n"); + TRACE("AudioMixer: sending notify\n"); // Build a media_source out of the header data media_source source = media_source::null; @@ -340,7 +340,7 @@ AudioMixer::HandleInputBuffer(BBuffer* buffer, bigtime_t lateness) NotifyLateProducer(source, variation, TimeSource()->Now()); if (RunMode() == B_DROP_DATA) { - debug_printf("AudioMixer: dropping buffer\n"); + TRACE("AudioMixer: dropping buffer\n"); return; } } @@ -1043,7 +1043,7 @@ AudioMixer::LateNoticeReceived(const media_source& what, bigtime_t howMuch, fLastLateNotification = TimeSource()->Now() + howMuch; - debug_printf("AudioMixer: increasing internal latency to %" + TRACE("AudioMixer: increasing internal latency to %" B_PRIdBIGTIME " usec\n", fInternalLatency); SetEventLatency(fDownstreamLatency + fInternalLatency); From c21a2c7feda5def95e3a7a91b440dc3b0cfc8ccb Mon Sep 17 00:00:00 2001 From: Dario Casalinuovo Date: Wed, 20 Jan 2016 01:14:42 +0100 Subject: [PATCH 166/242] SystemTimeSource: Exit loop when the port is closed --- src/servers/media_addon/SystemTimeSource.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/servers/media_addon/SystemTimeSource.cpp b/src/servers/media_addon/SystemTimeSource.cpp index bac891a54f..2d7cc282ac 100644 --- a/src/servers/media_addon/SystemTimeSource.cpp +++ b/src/servers/media_addon/SystemTimeSource.cpp @@ -84,6 +84,6 @@ SystemTimeSource::ControlThread() status_t err; do { err = WaitForMessage(B_INFINITE_TIMEOUT); - } while (err == B_OK || err == B_ERROR); + } while (err != B_BAD_PORT_ID); TRACE("SystemTimeSource::ControlThread() exit\n"); } From 1a352e46ccc6538a5f2914ea9b4d984503caf9a6 Mon Sep 17 00:00:00 2001 From: Humdinger Date: Wed, 20 Jan 2016 19:31:51 +0100 Subject: [PATCH 167/242] Updated Clipdinger to v0.5.2 Bug fix: The Auto-paste setting was ignored on startup. --- build/jam/repositories/HaikuPorts/x86 | 2 +- build/jam/repositories/HaikuPorts/x86_64 | 2 +- build/jam/repositories/HaikuPorts/x86_gcc2 | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/build/jam/repositories/HaikuPorts/x86 b/build/jam/repositories/HaikuPorts/x86 index 69b78b54c9..2b135ebbdb 100644 --- a/build/jam/repositories/HaikuPorts/x86 +++ b/build/jam/repositories/HaikuPorts/x86 @@ -64,7 +64,7 @@ RemotePackageRepository HaikuPorts cdrtools_devel-3.01~a27-1 clang-3.4-3 clang_analysis-3.4-3 - clipdinger-0.5.1-1 + clipdinger-0.5.2-1 cmake-3.3.1-1 coreutils-8.24-1 cpio-2.10-1 diff --git a/build/jam/repositories/HaikuPorts/x86_64 b/build/jam/repositories/HaikuPorts/x86_64 index bb1eca6e33..21b9d0d418 100644 --- a/build/jam/repositories/HaikuPorts/x86_64 +++ b/build/jam/repositories/HaikuPorts/x86_64 @@ -66,7 +66,7 @@ RemotePackageRepository HaikuPorts cdrtools_devel-3.02~a04-1 clang-3.5.1-1 clang_analysis-3.5.1-1 - clipdinger-0.5.1-1 + clipdinger-0.5.2-1 cmake-3.3.2-3 coreutils-8.24-1 cpio-2.12-1 diff --git a/build/jam/repositories/HaikuPorts/x86_gcc2 b/build/jam/repositories/HaikuPorts/x86_gcc2 index 38ee7fd702..63545fa8d2 100644 --- a/build/jam/repositories/HaikuPorts/x86_gcc2 +++ b/build/jam/repositories/HaikuPorts/x86_gcc2 @@ -77,7 +77,7 @@ RemotePackageRepository HaikuPorts cdrtools-3.02~a04-1 cdrtools_devel-3.02~a04-1 chat-20100903-2 - clipdinger-0.5.1-1 + clipdinger-0.5.2-1 clockwerk-git-3 cpctools-0.3.0-2 criticalmass-2.2-1 From 2037db14891703eedcdbb71e27722249e3e8f7e9 Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Tue, 19 Jan 2016 05:59:58 -0500 Subject: [PATCH 168/242] bin/mail: move to 'mail_utils' subdir. --- src/bin/Jamfile | 5 ----- src/bin/mail_utils/Jamfile | 6 ++++++ src/bin/{ => mail_utils}/mail.cpp | 0 src/bin/mail_utils/mail.rdef | 13 +++++++++++++ 4 files changed, 19 insertions(+), 5 deletions(-) rename src/bin/{ => mail_utils}/mail.cpp (100%) create mode 100644 src/bin/mail_utils/mail.rdef diff --git a/src/bin/Jamfile b/src/bin/Jamfile index db4534eb0b..de947dc57e 100644 --- a/src/bin/Jamfile +++ b/src/bin/Jamfile @@ -205,11 +205,6 @@ StdBinCommands setvolume.cpp : be libmedia.so [ TargetLibsupc++ ] : $(haiku-utils_rsrc) ; -# standard commands that need libbe.so, libmail.so -StdBinCommands - mail.cpp - : be libmail.so : $(haiku-utils_rsrc) ; - # standard commands that need libbe.so, libpackage.so, libsupc++.so StdBinCommands findpaths.cpp diff --git a/src/bin/mail_utils/Jamfile b/src/bin/mail_utils/Jamfile index ffad6a9802..df3d01968d 100644 --- a/src/bin/mail_utils/Jamfile +++ b/src/bin/mail_utils/Jamfile @@ -8,6 +8,12 @@ if $(TARGET_PLATFORM) != haiku { UsePrivateHeaders mail ; +StdBinCommands + mail.cpp + : be mail + : mail.rdef + ; + StdBinCommands mail2mbox.cpp : be diff --git a/src/bin/mail.cpp b/src/bin/mail_utils/mail.cpp similarity index 100% rename from src/bin/mail.cpp rename to src/bin/mail_utils/mail.cpp diff --git a/src/bin/mail_utils/mail.rdef b/src/bin/mail_utils/mail.rdef new file mode 100644 index 0000000000..39a0a83d28 --- /dev/null +++ b/src/bin/mail_utils/mail.rdef @@ -0,0 +1,13 @@ +resource app_flags B_MULTIPLE_LAUNCH | B_ARGV_ONLY; + +resource app_signature "application/x-vnd.Haiku-mail_utils-mail"; + +resource app_version { + major = 1, + middle = 0, + minor = 0, + variety = B_APPV_FINAL, + internal = 1, + short_info = "mail", + long_info = "mail" +}; From 83082f2e9c3454bf618823f8ab9e3bb5b20ecc59 Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Tue, 19 Jan 2016 06:09:34 -0500 Subject: [PATCH 169/242] mail_utils/mail: Reformat & fix a few error handling problems. --- src/bin/mail_utils/mail.cpp | 137 ++++++++++++++++++------------------ 1 file changed, 69 insertions(+), 68 deletions(-) diff --git a/src/bin/mail_utils/mail.cpp b/src/bin/mail_utils/mail.cpp index ff0ddf8ca6..f33bc07234 100644 --- a/src/bin/mail_utils/mail.cpp +++ b/src/bin/mail_utils/mail.cpp @@ -1,117 +1,118 @@ -// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ -// -// Copyright (c) 2003, OpenBeOS -// -// This software is part of the OpenBeOS distribution and is covered -// by the OpenBeOS license. -// -// -// File: mail.cpp -// Author: Santiago (Jacques) Lema -// Description: sends an e-mail from the command-line -// Created : May 23, 2003 -// Modified by: Jérome Duval -// -// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ +/* + * Copyright 2003-2016, Haiku Inc. All rights reserved. + * Distributed under the terms of the MIT License. + * + * Authors: + * Santiago (Jacques) Lema + * Jérôme Duval, jerome.duval@gmail.com + * Augustin Cavalier, + */ + -#include #include #include #include -#define APP_SIG "application/x-vnd.OBos-cmd-mail" +#include -int main( int argc, char* argv[] ) + +#define APP_SIG "application/x-vnd.Haiku-mail_utils-mail" + + +int main(int argc, char* argv[]) { BApplication mailApp(APP_SIG); // No arguments, show usage - if (argc==1) { - fprintf(stdout,"[OBOS-mail] Sorry: This program can only send mail, not read it.\n"); - fprintf(stdout,"usage: /bin/mail [-v] [-s subject] [-c cc-addr] [-b bcc-addr] to-addr ...\n"); - fflush(stdout); - return B_OK; + if (argc < 2) { + fprintf(stdout,"This program can only send mail, not read it.\n"); + fprintf(stdout,"usage: %s [-v] [-s subject] [-c cc-addr] " + "[-b bcc-addr] to-addr ...\n", argv[0]); + fflush(stdout); + return 0; } - + char *subject = "No title"; - char *cc = ""; + char *cc = ""; char *bcc = ""; BString to = ""; BString body = ""; - bool verbose =false; - //parse arguments - for (int i=1; i \n",to.String()); - fprintf(stdout,"Cc:\t<%s> \n",cc); - fprintf(stdout,"Bcc:\t<%s> \n",bcc); - fprintf(stdout,"Subj:\t<%s> \n",subject); - fprintf(stdout,"Body:\t<%s> \n",body.String()); - fprintf(stdout,"\n"); + fprintf(stdout, "\n"); + fprintf(stdout, "To:\t<%s> \n", to.String()); + fprintf(stdout, "Cc:\t<%s> \n", cc); + fprintf(stdout, "Bcc:\t<%s> \n", bcc); + fprintf(stdout, "Subj:\t<%s> \n", subject); + fprintf(stdout, "Body:\t<%s> \n", body.String()); + fprintf(stdout, "\n"); } - - //check if valid recipients - if (strcmp(to.String(), "") == 0 - && strcmp(cc, "") == 0 - && strcmp(bcc, "") == 0) { - - fprintf(stdout, - "[Error]\nYou must specify at least one recipient in to,cc or bcc fields.\n"); - return B_ERROR; - } - - //read each line until we get a single dot "." on a line - char line[32768] = ""; - printf("Now type your message.\nType '.' alone on a line to send it.\n"); - do { + // Check if recipients are valid + if (strcmp(to.String(), "") == 0 && + strcmp(cc, "") == 0 && + strcmp(bcc, "") == 0) { + + fprintf(stdout, "[Error]: You must specify at least one recipient " + "in to, cc or bcc fields.\n"); + return -1; + } + + // Read each line until we get a single dot "." on a line + char line[32768] = ""; + + printf("Now type your message.\nType '.' alone on a line to send it.\n"); + do { gets(line); - + if (strcmp(line, ".") != 0) { body.Append(line).Append("\n"); - } - //fprintf(stdout,"Line: %s \n",line); + } + // fprintf(stdout,"Line: %s \n",line); } while (strcmp(line, ".") != 0); - + if (verbose) fprintf(stdout, "\nBody:\n%s\n", body.String()); if (verbose) fprintf(stdout, "\nSending E-mail...\n"); - - fflush(stdout); - + BMailMessage mail; mail.AddHeaderField(B_MAIL_TO, to.String()); mail.AddHeaderField(B_MAIL_CC, cc); mail.AddHeaderField(B_MAIL_BCC, bcc); - mail.AddHeaderField(B_MAIL_SUBJECT, subject); - mail.AddContent(body.String(),strlen(body.String())); - status_t result = mail.Send(); - - if (result==B_OK) + mail.AddHeaderField(B_MAIL_SUBJECT, subject); + mail.AddContent(body.String(), strlen(body.String())); + status_t result = mail.Send(); + + if (result == B_OK) { fprintf(stdout, "\nMessage was sent successfully.\n"); - + return 0; + } + + fprintf(stdout, "Message failed to send: %s", strerror(result)); + return result; } From 6352a1b8c3523e2eb0bd04bec32e6431f175889b Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Tue, 19 Jan 2016 06:14:38 -0500 Subject: [PATCH 170/242] Add the 'mail' tool to the build. --- build/jam/images/definitions/regular | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/jam/images/definitions/regular b/build/jam/images/definitions/regular index c5df1b2ec6..31e34ce434 100644 --- a/build/jam/images/definitions/regular +++ b/build/jam/images/definitions/regular @@ -9,7 +9,7 @@ SYSTEM_BIN += [ FFilterByBuildFeatures dpms FirstBootPrompt fwcontrol@x86 installsound - mail2mbox mbox2mail mkdos mount_nfs + mail mail2mbox mbox2mail mkdos mount_nfs play playfile playsound playwav screenshot setdecor spamdbm translate From 3565a24b442bb1e7629301d0655d98b477472bd4 Mon Sep 17 00:00:00 2001 From: Automatic Committer Date: Thu, 21 Jan 2016 05:20:24 +0100 Subject: [PATCH 171/242] Update pci.ids from pciids.sourceforge.net --- src/data/ids/pci.ids | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/src/data/ids/pci.ids b/src/data/ids/pci.ids index f6715dd743..3d146944a0 100644 --- a/src/data/ids/pci.ids +++ b/src/data/ids/pci.ids @@ -1,8 +1,8 @@ # # List of PCI ID's # -# Version: 2016.01.10 -# Date: 2016-01-10 03:15:01 +# Version: 2016.01.20 +# Date: 2016-01-20 03:15:01 # # Maintained by Albert Pool, Martin Mares, and other volunteers from # the PCI ID Project at http://pci-ids.ucw.cz/. @@ -12186,6 +12186,7 @@ 1137 00cd VIC 1285 PCIe Management Controller 1137 00ce VIC 1225T PCIe Management Controller 1137 012e VIC 1227 PCIe Management Controller + 1137 014d VIC 1385 PCIe Management Controller 0043 VIC Ethernet NIC 1137 0047 VIC P81E PCIe Ethernet NIC 1137 0048 VIC M81KR Mezzanine Ethernet NIC @@ -12211,6 +12212,7 @@ 1137 012c VIC 1340 MLOM Ethernet NIC Dynamic 1137 012e VIC 1227 PCIe Ethernet NIC Dynamic 1137 0137 VIC 1380 Mezzanine Ethernet NIC Dynamic + 1137 014d VIC 1385 PCIe Ethernet NIC Dynamic 0045 VIC FCoE HBA 1137 0047 VIC P81E PCIe FCoE HBA 1137 0048 VIC M81KR Mezzanine FCoE HBA @@ -12223,6 +12225,7 @@ 1137 012c VIC 1340 MLOM FCoE HBA 1137 012e VIC 1227 PCIe FCoE HBA 1137 0137 VIC 1380 Mezzanine FCoE HBA + 1137 014d VIC 1385 PCIe FCoE HBA 0046 VIC SCSI Controller 1137 012a VIC M4308 SCSI Controller 004e VIC 82 PCIe Upstream Port @@ -12231,6 +12234,7 @@ 1137 012a VIC M4308 Dual 40Gb 1137 012c VIC 1340 Dual 40Gb MLOM 1137 0137 VIC 1380 Dual 40Gb Mezzanine + 1137 014d VIC 1385 Dual 40Gb PCIe 00cf VIC Userspace NIC 1137 004f VIC 1280 Mezzanine Userspace NIC 1137 0084 VIC 1240 MLOM Userspace NIC @@ -15365,7 +15369,6 @@ 1412 VIA Technologies Inc. 1712 ICE1712 [Envy24] PCI Multi-Channel I/O Controller 1412 1712 Hoontech ST Audio DSP 24 - 1412 3632 M-Audio Delta Audiophile 192 1412 d630 M-Audio Delta 1010 1412 d631 M-Audio Delta DiO 1412 d632 M-Audio Delta 66 @@ -15390,6 +15393,7 @@ 1412 1724 Albatron PX865PE 7.1 1412 3630 M-Audio Revolution 7.1 1412 3631 M-Audio Revolution 5.1 + 1412 3632 M-Audio Audiophile 192 153b 1145 Aureon 7.1 Space 153b 1147 Aureon 5.1 Sky 153b 1150 PHASE 22 @@ -16362,6 +16366,7 @@ 1656 NetXtreme BCM5718 Gigabit Ethernet PCIe 1657 NetXtreme BCM5719 Gigabit Ethernet PCIe 103c 169d Ethernet 1Gb 4-port 331FLR Adapter + 103c 22be Ethernet 1Gb 4-port 331i Adapter 1659 NetXtreme BCM5721 Gigabit Ethernet PCI Express 1014 02c6 eServer xSeries server mainboard 1028 01e6 PowerEdge 860 @@ -17535,6 +17540,7 @@ 1007 MT27520 Family [ConnectX-3 Pro] 103c 22f3 InfiniBand FDR/Ethernet 10Gb/40Gb 2-port 544+QSFP Adapter 103c 22f4 InfiniBand FDR/Ethernet 10Gb/40Gb 2-port 544+FLR-QSFP Adapter + 103c 801f Ethernet 10G 2-port 546SFP+ Adapter 117c 0090 FastFrame NQ41 117c 0091 FastFrame NQ42 117c 0092 FastFrame NQ11 @@ -19564,6 +19570,8 @@ 1b85 OCZ Technology Group, Inc. 1041 RevoDrive 3 X2 PCI-Express SSD 240 GB (Marvell Controller) 8788 RevoDrive Hybrid +1b94 Signatec / Dynamic Signals Corp + e400 PX14400 Dual Xilinx Virtex5 based Digitizer 1b96 Western Digital 1b9a XAVi Technologies Corp. 1bad ReFLEX CES @@ -22080,6 +22088,7 @@ 8086 000d Ethernet Controller X710 for 10GbE SFP+ 8086 4005 Ethernet Controller XL710 for 10 Gigabit SFP+ 8086 4006 Ethernet Controller X710 for 10GbE SFP+ + 1578 DSL6540 Thunderbolt [Alpine Ridge] 157b I210 Gigabit Network Connection 157c I210 Gigabit Backplane Connection 1580 Ethernet Controller XL710 for 40GbE backplane @@ -22134,6 +22143,7 @@ 15ac Ethernet Connection X552 10 GbE SFP+ 15ad Ethernet Connection X552/X557-AT 10GBASE-T 15ae Ethernet Connection X552 1000BASE-T + 15b6 DSL6540 USB 3.1 Controller [Alpine Ridge] 15b7 Ethernet Connection (2) I219-LM 15b8 Ethernet Connection (2) I219-V 15b9 Ethernet Connection (3) I219-LM @@ -26594,6 +26604,17 @@ 9ce4 Wildcat Point-LP Serial IO UART Controller #1 9ce5 Wildcat Point-LP Serial IO GSPI Controller #0 9ce6 Wildcat Point-LP Serial IO GSPI Controller #1 + 9d03 Sunrise Point-LP SATA Controller [AHCI mode] + 9d14 Sunrise Point-LP PCI Express Root Port #5 + 9d21 Sunrise Point-LP PMC + 9d23 Sunrise Point-LP SMBus + 9d27 Sunrise Point-LP LPSS UART #0 + 9d2d Sunrise Point-LP Secure Digital IO Controller + 9d2f Sunrise Point-LP USB 3.0 xHCI Controller + 9d31 Sunrise Point-LP Thermal subsystem + 9d3a Sunrise Point-LP CSME HECI #1 + 9d48 Sunrise Point-LP LPC Controller + 9d70 Sunrise Point-LP HD Audio a000 Atom Processor D4xx/D5xx/N4xx/N5xx DMI Bridge 1458 5000 GA-D525TUD 8086 4f4d DeskTop Board D510MO From 9b8f9f7a2e2074b33b50d0444d7d6bb4f1f42829 Mon Sep 17 00:00:00 2001 From: Dario Casalinuovo Date: Thu, 21 Jan 2016 16:21:00 +0100 Subject: [PATCH 172/242] Revert "SystemTimeSource: Exit loop when the port is closed" This reverts commit c21a2c7feda5def95e3a7a91b440dc3b0cfc8ccb. --- src/servers/media_addon/SystemTimeSource.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/servers/media_addon/SystemTimeSource.cpp b/src/servers/media_addon/SystemTimeSource.cpp index 2d7cc282ac..bac891a54f 100644 --- a/src/servers/media_addon/SystemTimeSource.cpp +++ b/src/servers/media_addon/SystemTimeSource.cpp @@ -84,6 +84,6 @@ SystemTimeSource::ControlThread() status_t err; do { err = WaitForMessage(B_INFINITE_TIMEOUT); - } while (err != B_BAD_PORT_ID); + } while (err == B_OK || err == B_ERROR); TRACE("SystemTimeSource::ControlThread() exit\n"); } From 2bc48401b450ffe1f412e3398fde4999139a2109 Mon Sep 17 00:00:00 2001 From: autonielx Date: Sat, 23 Jan 2016 06:37:16 +0100 Subject: [PATCH 173/242] Update translations from Pootle --- .../add-ons/disk_systems/intel/sk.catkeys | 4 +- .../add-ons/disk_systems/ntfs/sk.catkeys | 2 + .../inbound_filters/match_header/de.catkeys | 5 +- .../inbound_filters/match_header/fr.catkeys | 5 +- .../inbound_filters/match_header/sk.catkeys | 7 +- .../inbound_filters/notifier/sk.catkeys | 26 +-- .../inbound_filters/spam_filter/sk.catkeys | 3 +- .../inbound_protocols/imap/sk.catkeys | 7 +- .../outbound_filters/fortune/sk.catkeys | 3 +- .../media/media-add-ons/mixer/sk.catkeys | 2 +- .../media-add-ons/multi_audio/sk.catkeys | 34 ++++ .../network_settings/dnsclient/sk.catkeys | 10 ++ .../add-ons/network_settings/ftpd/sk.catkeys | 3 + .../add-ons/network_settings/ipv4/sk.catkeys | 2 + .../add-ons/network_settings/ipv6/sk.catkeys | 2 + .../add-ons/network_settings/sshd/sk.catkeys | 3 + .../network_settings/telnetd/sk.catkeys | 3 + .../add-ons/screen_savers/debugnow/sk.catkeys | 4 +- .../add-ons/tracker/zipomatic/sk.catkeys | 4 +- .../add-ons/translators/gif/sk.catkeys | 7 +- .../add-ons/translators/icns/sk.catkeys | 5 + .../add-ons/translators/jpeg/sk.catkeys | 3 +- .../add-ons/translators/jpeg2000/sk.catkeys | 3 +- .../add-ons/translators/ppm/sk.catkeys | 4 +- .../add-ons/translators/psd/sk.catkeys | 22 +++ .../add-ons/translators/rtf/sk.catkeys | 4 +- .../add-ons/translators/sgi/sk.catkeys | 4 +- .../add-ons/translators/tga/sk.catkeys | 4 +- .../add-ons/translators/tiff/sk.catkeys | 4 +- .../translators/wonderbrush/sk.catkeys | 3 +- data/catalogs/apps/aboutsystem/sk.catkeys | 22 ++- data/catalogs/apps/activitymonitor/sk.catkeys | 5 +- data/catalogs/apps/bootmanager/sk.catkeys | 9 +- data/catalogs/apps/charactermap/sk.catkeys | 3 +- data/catalogs/apps/codycam/sk.catkeys | 12 +- data/catalogs/apps/deskbar/sk.catkeys | 6 +- data/catalogs/apps/deskcalc/sk.catkeys | 3 +- data/catalogs/apps/diskprobe/sk.catkeys | 3 +- data/catalogs/apps/diskusage/sk.catkeys | 5 +- data/catalogs/apps/drivesetup/sk.catkeys | 24 ++- data/catalogs/apps/expander/sk.catkeys | 3 +- data/catalogs/apps/firstbootprompt/sk.catkeys | 3 +- data/catalogs/apps/fontdemo/sk.catkeys | 3 +- data/catalogs/apps/haikudepot/sk.catkeys | 153 ++++++++++++++++++ data/catalogs/apps/icon-o-matic/sk.catkeys | 8 +- data/catalogs/apps/installer/sk.catkeys | 8 +- data/catalogs/apps/launchbox/sk.catkeys | 3 +- data/catalogs/apps/magnify/sk.catkeys | 3 +- data/catalogs/apps/mail/sk.catkeys | 10 +- data/catalogs/apps/mediaconverter/sk.catkeys | 14 +- data/catalogs/apps/mediaplayer/sk.catkeys | 12 +- data/catalogs/apps/midiplayer/sk.catkeys | 4 +- .../catalogs/apps/packageinstaller/sk.catkeys | 8 +- data/catalogs/apps/pairs/sk.catkeys | 9 +- data/catalogs/apps/patchbay/sk.catkeys | 2 + data/catalogs/apps/people/sk.catkeys | 4 +- data/catalogs/apps/poorman/sk.catkeys | 4 +- data/catalogs/apps/powerstatus/sk.catkeys | 6 +- .../apps/processcontroller/sk.catkeys | 7 +- .../apps/screenshot/Screenshot/sk.catkeys | 4 +- data/catalogs/apps/showimage/sk.catkeys | 3 +- data/catalogs/apps/soundrecorder/sk.catkeys | 5 +- data/catalogs/apps/stylededit/sk.catkeys | 4 +- data/catalogs/apps/sudoku/sk.catkeys | 3 +- data/catalogs/apps/terminal/sk.catkeys | 22 ++- data/catalogs/apps/text_search/sk.catkeys | 4 +- data/catalogs/apps/webpositive/sk.catkeys | 30 +++- data/catalogs/bin/desklink/sk.catkeys | 3 +- data/catalogs/bin/dstcheck/sk.catkeys | 4 +- data/catalogs/kits/mail/sk.catkeys | 3 +- data/catalogs/kits/sk.catkeys | 7 +- data/catalogs/kits/textencoding/sk.catkeys | 3 +- data/catalogs/kits/tracker/sk.catkeys | 19 ++- .../preferences/appearance/sk.catkeys | 11 +- .../catalogs/preferences/bluetooth/sk.catkeys | 3 +- .../catalogs/preferences/filetypes/sk.catkeys | 5 +- data/catalogs/preferences/keymap/sk.catkeys | 89 +++++++++- data/catalogs/preferences/mail/sk.catkeys | 6 +- data/catalogs/preferences/media/sk.catkeys | 6 +- .../network/InterfacesAddOn/sk.catkeys | 32 ++++ .../network/ServicesAddOn/sk.catkeys | 2 + data/catalogs/preferences/network/sk.catkeys | 70 +++++--- .../preferences/notifications/sk.catkeys | 5 +- data/catalogs/preferences/printers/sk.catkeys | 3 +- data/catalogs/preferences/screen/sk.catkeys | 4 +- .../preferences/screensaver/sk.catkeys | 5 +- .../catalogs/preferences/shortcuts/sk.catkeys | 5 +- data/catalogs/preferences/time/sk.catkeys | 7 +- .../preferences/virtualmemory/sk.catkeys | 3 +- data/catalogs/servers/keystore/sk.catkeys | 17 ++ data/catalogs/servers/mail/sk.catkeys | 5 +- data/catalogs/servers/print/sk.catkeys | 3 +- .../net/preflet/InterfacesAddOn/sk.catkeys | 33 ++++ .../tests/servers/app/playground/sk.catkeys | 32 ++++ 94 files changed, 895 insertions(+), 113 deletions(-) create mode 100644 data/catalogs/add-ons/disk_systems/ntfs/sk.catkeys create mode 100644 data/catalogs/add-ons/media/media-add-ons/multi_audio/sk.catkeys create mode 100644 data/catalogs/add-ons/network_settings/dnsclient/sk.catkeys create mode 100644 data/catalogs/add-ons/network_settings/ftpd/sk.catkeys create mode 100644 data/catalogs/add-ons/network_settings/ipv4/sk.catkeys create mode 100644 data/catalogs/add-ons/network_settings/ipv6/sk.catkeys create mode 100644 data/catalogs/add-ons/network_settings/sshd/sk.catkeys create mode 100644 data/catalogs/add-ons/network_settings/telnetd/sk.catkeys create mode 100644 data/catalogs/add-ons/translators/icns/sk.catkeys create mode 100644 data/catalogs/add-ons/translators/psd/sk.catkeys create mode 100644 data/catalogs/apps/haikudepot/sk.catkeys create mode 100644 data/catalogs/apps/patchbay/sk.catkeys create mode 100644 data/catalogs/preferences/network/InterfacesAddOn/sk.catkeys create mode 100644 data/catalogs/preferences/network/ServicesAddOn/sk.catkeys create mode 100644 data/catalogs/servers/keystore/sk.catkeys create mode 100644 data/catalogs/tests/kits/net/preflet/InterfacesAddOn/sk.catkeys create mode 100644 data/catalogs/tests/servers/app/playground/sk.catkeys diff --git a/data/catalogs/add-ons/disk_systems/intel/sk.catkeys b/data/catalogs/add-ons/disk_systems/intel/sk.catkeys index 7f6defbc1f..4d60568ed4 100644 --- a/data/catalogs/add-ons/disk_systems/intel/sk.catkeys +++ b/data/catalogs/add-ons/disk_systems/intel/sk.catkeys @@ -1,2 +1,2 @@ -1 slovak x-vnd.Haiku-IntelDiskAddOn 4191422532 -Active partition BFS_Creation_Parameter Aktívna oblasť +1 slovak x-vnd.Haiku-IntelDiskAddOn 946918966 +Active partition PrimaryPartitionEditor Aktívna oblasť diff --git a/data/catalogs/add-ons/disk_systems/ntfs/sk.catkeys b/data/catalogs/add-ons/disk_systems/ntfs/sk.catkeys new file mode 100644 index 0000000000..91bc388214 --- /dev/null +++ b/data/catalogs/add-ons/disk_systems/ntfs/sk.catkeys @@ -0,0 +1,2 @@ +1 slovak x-vnd.Haiku-NTFSDiskAddOn 25755486 +Name: NTFS_Initialize_Parameter Názov: diff --git a/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/de.catkeys b/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/de.catkeys index 83da7838b4..35ec83c47b 100644 --- a/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/de.catkeys +++ b/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/de.catkeys @@ -1,5 +1,7 @@ -1 german x-vnd.Haiku-MatchHeader 4262558281 +1 german x-vnd.Haiku-MatchHeader 548057976 ConfigView +Header field (e.g. Subject, From, ...) ConfigView Kopfdaten (z.B. Betreff, Ansender, ...) +Account ConfigView Email-Konto has ConfigView enthält Move to ConfigView Verschieben nach Then ConfigView Dann @@ -12,3 +14,4 @@ Match header RuleFilter Kopfdaten filtern Reply with ConfigView Antworten von Konto If ConfigView Wenn Match \"%attribute\" against \"%regex\" RuleFilter \"%attribute\" mit \"%regex\" vergleichen +Wildcard value like \"*spam*\".\nPrefix with \"REGEX:\" in order to use regular expressions. ConfigView Platzhalter wie \"*spam*\".\nFür reguläre Audrücke \"REGEX:\" voranstellen. diff --git a/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/fr.catkeys b/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/fr.catkeys index 563ed63c0b..c93f38aaca 100644 --- a/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/fr.catkeys +++ b/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/fr.catkeys @@ -1,5 +1,7 @@ -1 french x-vnd.Haiku-MatchHeader 4262558281 +1 french x-vnd.Haiku-MatchHeader 548057976 ConfigView +Header field (e.g. Subject, From, ...) ConfigView Champ d’entête (ex. Sujet, De, …) +Account ConfigView Compte has ConfigView a Move to ConfigView Déplacer vers Then ConfigView Alors @@ -12,3 +14,4 @@ Match header RuleFilter Entête de correspondance Reply with ConfigView Répondre avec If ConfigView Si Match \"%attribute\" against \"%regex\" RuleFilter Faire correspondre « %attribute » à « %regex » +Wildcard value like \"*spam*\".\nPrefix with \"REGEX:\" in order to use regular expressions. ConfigView Expression générique comme « *spam* ».\nPréfixer avec « REGEX: » afin d'utiliser des expressions régulières. diff --git a/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/sk.catkeys b/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/sk.catkeys index 537afded29..23e2711bd1 100644 --- a/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/sk.catkeys +++ b/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/sk.catkeys @@ -1,5 +1,7 @@ -1 slovak x-vnd.Haiku-MatchHeader 1349121828 +1 slovak x-vnd.Haiku-MatchHeader 548057976 ConfigView +Header field (e.g. Subject, From, ...) ConfigView Pole hlavičky (napr. Predmet, Od, ...) +Account ConfigView Účet has ConfigView má Move to ConfigView Presunúť do Then ConfigView potom @@ -8,5 +10,8 @@ Delete message ConfigView Zmazať správu ConfigView Set flags to ConfigView Nastaviť príznaky na Set as read ConfigView Nastaviť ako prečítané +Match header RuleFilter Zhoda hlavičky Reply with ConfigView Odpovedať pomocou If ConfigView ak +Match \"%attribute\" against \"%regex\" RuleFilter Zhoda \"%attribute\" voči \"%regex\" +Wildcard value like \"*spam*\".\nPrefix with \"REGEX:\" in order to use regular expressions. ConfigView Hodnota so zástupnými znakmi ako napr. „*spam*“.\nPoužite predponu „REGEX:“ ak chcete použiť regulárny výraz. diff --git a/data/catalogs/add-ons/mail_daemon/inbound_filters/notifier/sk.catkeys b/data/catalogs/add-ons/mail_daemon/inbound_filters/notifier/sk.catkeys index fcdf4fff5e..ec37a1b259 100644 --- a/data/catalogs/add-ons/mail_daemon/inbound_filters/notifier/sk.catkeys +++ b/data/catalogs/add-ons/mail_daemon/inbound_filters/notifier/sk.catkeys @@ -1,12 +1,14 @@ -1 slovak x-vnd.Haiku-NewMailNotification 583443025 -Keyboard LEDs ConfigView LED klávesnice -Log window ConfigView Okno záznamu -Central beep ConfigView Centrálne pípnutie -Beep ConfigView Pípnutie -Method: ConfigView Metóda: -Central alert ConfigView Centrálne upozornenie -Alert ConfigView Upozornenie -none ConfigView žiadne -New messages filter Nové správy -New mails notification ConfigView Upozornenie na nové správy -OK filter OK +1 slovak x-vnd.Haiku-NewMailNotification 73789504 +You have {0, plural, one{One new message} other{# new messages}} for %account. NotifierFilter Máte {0, plural, one{Jednu novú správu} few{# nové správy} other{# nových správ}} pre %account. +none NotifierConfigView žiadne +Method: NotifierConfigView Metóda: +Beep NotifierConfigView Pípnutie +{0, plural, one{One new message} other{# new messages}} NotifierFilter {0, plural, one{Jedna nová správa} few{# nové správy} other{# nových správ}} +New mails notification NotifierFilter Upozornenie na nové správy +Central alert NotifierConfigView Centrálne upozornenie +OK NotifierFilter OK +New messages NotifierFilter Nové správy +Log window NotifierConfigView Okno záznamu +Keyboard LEDs NotifierConfigView LED klávesnice +Central beep NotifierConfigView Centrálne pípnutie +Alert NotifierConfigView Upozornenie diff --git a/data/catalogs/add-ons/mail_daemon/inbound_filters/spam_filter/sk.catkeys b/data/catalogs/add-ons/mail_daemon/inbound_filters/spam_filter/sk.catkeys index e3bb82c86a..f34fed09b4 100644 --- a/data/catalogs/add-ons/mail_daemon/inbound_filters/spam_filter/sk.catkeys +++ b/data/catalogs/add-ons/mail_daemon/inbound_filters/spam_filter/sk.catkeys @@ -1,6 +1,7 @@ -1 slovak x-vnd.Haiku-SpamFilter 160316705 +1 slovak x-vnd.Haiku-SpamFilter 468104950 or empty e-mail SpamFilterConfig alebo prázdny email Genuine below and uncertain above: SpamFilterConfig Originálny pod a neistý nad: Spam above: SpamFilterConfig Spam nad: Add spam rating to start of subject SpamFilterConfig Pridať ohodnotenie ako spam na začiatok predmetu +Bayesian Spam Filter SpamFilter Bayesovo filtrovanie spamu Learn from all incoming e-mail SpamFilterConfig Učiť sa na základe všetkej prichádzajúcej pošty diff --git a/data/catalogs/add-ons/mail_daemon/inbound_protocols/imap/sk.catkeys b/data/catalogs/add-ons/mail_daemon/inbound_protocols/imap/sk.catkeys index 3c4eb04f7f..81d70a364e 100644 --- a/data/catalogs/add-ons/mail_daemon/inbound_protocols/imap/sk.catkeys +++ b/data/catalogs/add-ons/mail_daemon/inbound_protocols/imap/sk.catkeys @@ -1,7 +1,12 @@ -1 slovak x-vnd.Haiku-IMAP 3950045582 +1 slovak x-vnd.Haiku-IMAP 354143849 Destination: imap_config Cieľ: +Ok IMAPFolderConfig OK status IMAPFolderConfig stav +Configure IMAP Folders imap_config Nastavenie priečinkov IMAP +Cancel IMAPFolderConfig Zrušiť Apply IMAPFolderConfig Použiť Fetching IMAP folders, have patience... IMAPFolderConfig Sťahujú sa priečinky IMAP, strpenie... +Could not connect to server \"%server%\":\n%error% IMAPFolderConfig Nepodarilo sa pripojiť k serveru „%server%“:\n%error% IMAP Folders IMAPFolderConfig Priečinky IMAP +Update subcription of IMAP folders, have patience... IMAPFolderConfig Aktualizujú sa odbery priečinkov IMAP. Prosíme o strpenie... Failed to fetch available storage. IMAPFolderConfig Nepodarilo sa zistiť dostupné úložné miesto. diff --git a/data/catalogs/add-ons/mail_daemon/outbound_filters/fortune/sk.catkeys b/data/catalogs/add-ons/mail_daemon/outbound_filters/fortune/sk.catkeys index 8410bd1d07..8b0d33bd93 100644 --- a/data/catalogs/add-ons/mail_daemon/outbound_filters/fortune/sk.catkeys +++ b/data/catalogs/add-ons/mail_daemon/outbound_filters/fortune/sk.catkeys @@ -1,4 +1,5 @@ -1 slovak x-vnd.Haiku-Fortune 1292458430 +1 slovak x-vnd.Haiku-Fortune 52757361 +Fortune FortuneFilter Koláčiky šťastia Fortune file: ConfigView Súbor s koláčikmi: Fortune cookie says:\n\n ConfigView Koláčik šťastia hovorí:\n\n Tag line: ConfigView Tag line: diff --git a/data/catalogs/add-ons/media/media-add-ons/mixer/sk.catkeys b/data/catalogs/add-ons/media/media-add-ons/mixer/sk.catkeys index cdef6154a0..80fa63099e 100644 --- a/data/catalogs/add-ons/media/media-add-ons/mixer/sk.catkeys +++ b/data/catalogs/add-ons/media/media-add-ons/mixer/sk.catkeys @@ -6,7 +6,7 @@ Refuse output format changes AudioMixer Odmietnuť zmeny výstupného formátu Output mapping AudioMixer Mapovanie výstupu Allow input channel remapping AudioMixer Povoliť premapovanie vstupného kanála Resampling algorithm AudioMixer Algoritmus prevzorkovania -Attenuate mixer output by 3dB (like BeOS R5) AudioMixer Utlmiť výstup zmiešavačao 3dB (ako BeOS R5) +Attenuate mixer output by 3dB (like BeOS R5) AudioMixer Utlmiť výstup zmiešavača o 3dB (ako BeOS R5) Display balance control for stereo connections AudioMixer Zobraziť ovládanie vyváženia pri stereo spojeniach To output AudioMixer Na výstup not connected AudioMixer nepripojené diff --git a/data/catalogs/add-ons/media/media-add-ons/multi_audio/sk.catkeys b/data/catalogs/add-ons/media/media-add-ons/multi_audio/sk.catkeys new file mode 100644 index 0000000000..6436541349 --- /dev/null +++ b/data/catalogs/add-ons/media/media-add-ons/multi_audio/sk.catkeys @@ -0,0 +1,34 @@ +1 slovak x-vnd.Haiku-hmulti_audio.media_addon 451057402 +Master MultiAudio Hlavný +SPDIF MultiAudio SPDIF +Gain MultiAudio Zosilnenie +Output 3D center MultiAudio Výstup 3D stred +Extended Setup MultiAudio Rozšírené nastavenie +CD MultiAudio CD +Tone control MultiAudio Ovládanie tónu +Phone MultiAudio Telefón +Aux MultiAudio Aux +Output bass MultiAudio Basy na výstupe +Headphones MultiAudio Slúchadlá +Beep MultiAudio Pípnutie +Output mono mix MultiAudio Zmiešaný mono na výstupe +Output stereo mix MultiAudio Zmiešaný stereo na výstupe +Input MultiAudio Vstup +Output treble MultiAudio Výšky na výstupe +Mono mix MultiAudio Zmiešaný mono +General MultiAudio Všeobecné +Input & Output MultiAudio Vstup a výstup +Enhanced Setup MultiAudio Rozšírené nastavenie +Stereo mix MultiAudio Zmiešaný stereo +Output 3D depth MultiAudio Výstup 3D hĺbka +Volume MultiAudio Hlasitosť +Output MultiAudio Výstup +Video MultiAudio Video +Line MultiAudio Linka +Mic MultiAudio Mikrofón + frequency: MultiAudio frekvencia: +Enable MultiAudio Zapnúť +Mute MultiAudio Stlmiť +Wave MultiAudio Vlna +Setup MultiAudio Nastavenie +Level MultiAudio Úroveň diff --git a/data/catalogs/add-ons/network_settings/dnsclient/sk.catkeys b/data/catalogs/add-ons/network_settings/dnsclient/sk.catkeys new file mode 100644 index 0000000000..3c8a338d20 --- /dev/null +++ b/data/catalogs/add-ons/network_settings/dnsclient/sk.catkeys @@ -0,0 +1,10 @@ +1 slovak x-vnd.Haiku-DNSClientService 2825577357 +DNS settings DNSClientServiceAddOn Nastavenie DNS +Move down DNSSettingsView Presunúť dolu +DNS settings DNSSettingsView Nastavenie DNS +Remove DNSSettingsView Odstrániť +Domain: DNSSettingsView Doména: +Add DNSSettingsView Pridať +Server: DNSSettingsView Server: +Move up DNSSettingsView Presunúť hore +Apply DNSSettingsView Použiť diff --git a/data/catalogs/add-ons/network_settings/ftpd/sk.catkeys b/data/catalogs/add-ons/network_settings/ftpd/sk.catkeys new file mode 100644 index 0000000000..e88e7ab886 --- /dev/null +++ b/data/catalogs/add-ons/network_settings/ftpd/sk.catkeys @@ -0,0 +1,3 @@ +1 slovak x-vnd.Haiku-FTPService 4086152171 +FTP server FTPServiceAddOn Server FTP +The FTP server allows you to remotely access the files on your machine using the FTP protocol.\n\nPlease note that it is an insecure and unencrypted connection. FTPServiceAddOn Server FTP vám umožňuje vzdialený prístup k súborom na vašom počítači pomocou protokolu FTP.\n\nProsím, pamätajte, že to je nezabezpečené a nešifrované spojenie. diff --git a/data/catalogs/add-ons/network_settings/ipv4/sk.catkeys b/data/catalogs/add-ons/network_settings/ipv4/sk.catkeys new file mode 100644 index 0000000000..2f7bc85d81 --- /dev/null +++ b/data/catalogs/add-ons/network_settings/ipv4/sk.catkeys @@ -0,0 +1,2 @@ +1 slovak x-vnd.Haiku-IPv4Interface 2854844856 +IPv4 IPv4InterfaceAddOn IPv4 diff --git a/data/catalogs/add-ons/network_settings/ipv6/sk.catkeys b/data/catalogs/add-ons/network_settings/ipv6/sk.catkeys new file mode 100644 index 0000000000..a8aeb47c2c --- /dev/null +++ b/data/catalogs/add-ons/network_settings/ipv6/sk.catkeys @@ -0,0 +1,2 @@ +1 slovak x-vnd.Haiku-IPv6Interface 1391114020 +IPv6 IPv6InterfaceAddOn IPv6 diff --git a/data/catalogs/add-ons/network_settings/sshd/sk.catkeys b/data/catalogs/add-ons/network_settings/sshd/sk.catkeys new file mode 100644 index 0000000000..cdd537d54d --- /dev/null +++ b/data/catalogs/add-ons/network_settings/sshd/sk.catkeys @@ -0,0 +1,3 @@ +1 slovak x-vnd.Haiku-SSHService 770129055 +The SSH server allows you to remotely access your machine with a terminal session, as well as file access using the SCP and SFTP protocols. SSHServiceAddOn Server SSH vám umožňuje vzdialený prístup k zariadeniu pomocou relácie terminálu a tiež prístup k súborom pomocou protokolov SCP a SFTP. +SSH server SSHServiceAddOn Server SSH diff --git a/data/catalogs/add-ons/network_settings/telnetd/sk.catkeys b/data/catalogs/add-ons/network_settings/telnetd/sk.catkeys new file mode 100644 index 0000000000..291ac1ca1d --- /dev/null +++ b/data/catalogs/add-ons/network_settings/telnetd/sk.catkeys @@ -0,0 +1,3 @@ +1 slovak x-vnd.Haiku-TelnetService 1209067113 +Telnet server TelnetServiceAddOn Server telnet +The Telnet server allows you to remotely access your machine with a terminal session using the telnet protocol.\n\nPlease note that it is an insecure and unencrypted connection. TelnetServiceAddOn Telnet server umožňuje vzdialený prístup k zariadeniu pomocou relácie terminálu protokolom telnet.\n\nUpozorňujeme, že je to nezabezpečené a nešifrované spojenie. diff --git a/data/catalogs/add-ons/screen_savers/debugnow/sk.catkeys b/data/catalogs/add-ons/screen_savers/debugnow/sk.catkeys index 6a272c5df6..9915d7d9d0 100644 --- a/data/catalogs/add-ons/screen_savers/debugnow/sk.catkeys +++ b/data/catalogs/add-ons/screen_savers/debugnow/sk.catkeys @@ -1,2 +1,4 @@ -1 slovak x-vnd.Haiku-DebugNowScreensaver 822203648 +1 slovak x-vnd.Haiku-DebugNowScreensaver 3664380395 +DEBUG Screensaver DebugNow keep it short and all uppercase, 5 characters or less LADENIE by Ryan Leavengood Screensaver DebugNow vytvoril Ryan Leavengood +NOW Screensaver DebugNow keep it short and all uppercase, 5 characters or less TERAZ diff --git a/data/catalogs/add-ons/tracker/zipomatic/sk.catkeys b/data/catalogs/add-ons/tracker/zipomatic/sk.catkeys index a52a58d701..ffb911afdc 100644 --- a/data/catalogs/add-ons/tracker/zipomatic/sk.catkeys +++ b/data/catalogs/add-ons/tracker/zipomatic/sk.catkeys @@ -1,15 +1,17 @@ -1 slovak x-vnd.haiku.zip-o-matic 1573273374 +1 slovak x-vnd.haiku.zip-o-matic 2032806096 Stop file:ZipOMaticWindow.cpp Zastaviť Creating archive: %s file:ZipOMaticWindow.cpp Vytvára sa archív: %s Continue file:ZipOMaticWindow.cpp Pokračovať Preparing to archive file:ZipperThread.cpp Pripravuje sa na archiváciu Drop files here. file:ZipOMaticWindow.cpp Sem pretiahnite súbory. Filename: %s file:ZipOMaticWindow.cpp Názov súboru: %s +You have {0, plural, one{# Zip-O-Matic} other{# Zip-O-Matics}} running.\n\n file:ZipOMatic.cpp Už {0, plural, one{beží jedna ďalšia inštancia} few{bežia # ďalšie inštancie} other{beží # ďalších inštancií}} Zip-O-Matic.\n\n Let them continue file:ZipOMatic.cpp Nechať ich pokračovať Do you want to stop them? file:ZipOMatic.cpp Chcete ich zastaviť? Are you sure you want to stop creating this archive? file:ZipOMaticWindow.cpp Ste si istý, že chcete zastaviť vytvorenie tohto archívu? Stopped file:ZipOMaticWindow.cpp Zastavené Archive file:ZipperThread.cpp Archív Error creating archive file:ZipOMaticWindow.cpp Chyba pri vytváraní archívu +{0, plural, one{# file added.} other{# files added.}} file:ZipOMaticWindow.cpp {0, plural, one{# súbor pridaný} few{# súbory pridané} other{# súborov pridaných}}. Archive created OK file:ZipOMaticWindow.cpp Archív úspešne vytvorený Stop them file:ZipOMatic.cpp Zastaviť ich diff --git a/data/catalogs/add-ons/translators/gif/sk.catkeys b/data/catalogs/add-ons/translators/gif/sk.catkeys index 85051a24ad..f370dcc94d 100644 --- a/data/catalogs/add-ons/translators/gif/sk.catkeys +++ b/data/catalogs/add-ons/translators/gif/sk.catkeys @@ -1,12 +1,17 @@ -1 slovak x-vnd.Haiku-GIFTranslator 2250422222 +1 slovak x-vnd.Haiku-GIFTranslator 2201651797 Websafe GIFView Farby pre web Write interlaced images GIFView Zapisovať obrázky s prekladanými riadkami Optimal GIFView Optimálne Greyscale GIFView Odtiene šedej +Colors: GIFView Farby: +GIF image translator GIFTranslator Prekladač obrázkov GIF Be Bitmap Format (GIFTranslator) GIFTranslator Be Bitmap Format (GIFTranslator) GIF image translator GIFView Prekladač obrázkov GIF +Palette: GIFView Paleta: GIF image GIFTranslator Obrázok GIF Write transparent images GIFView Zapisovať priesvitné obrázky +GIF images GIFTranslator Obrázky GIF +Version %d.%d.%d, %s GIFView Verzia %d.%d.%d, %s Use RGB color GIFView Použiť farby RGB Use dithering GIFView Použiť dithering GIF Settings GIFTranslator Nastavenia GIF diff --git a/data/catalogs/add-ons/translators/icns/sk.catkeys b/data/catalogs/add-ons/translators/icns/sk.catkeys new file mode 100644 index 0000000000..29378bc2e2 --- /dev/null +++ b/data/catalogs/add-ons/translators/icns/sk.catkeys @@ -0,0 +1,5 @@ +1 slovak x-vnd.Haiku-ICNSTranslator 2416672857 +Version %d.%d.%d, %s ICNSConfig Verzia %d.%d.%d, %s +Apple icons ICNSTranslator Ikony Apple +Apple icon translator ICNSTranslator Prekladač ikon Applie +Apple icon translator ICNSConfig Prekladač ikon Applie diff --git a/data/catalogs/add-ons/translators/jpeg/sk.catkeys b/data/catalogs/add-ons/translators/jpeg/sk.catkeys index 831679d5f2..9e725577dc 100644 --- a/data/catalogs/add-ons/translators/jpeg/sk.catkeys +++ b/data/catalogs/add-ons/translators/jpeg/sk.catkeys @@ -1,4 +1,4 @@ -1 slovak x-vnd.Haiku-JPEGTranslator 965709535 +1 slovak x-vnd.Haiku-JPEGTranslator 3788699631 Output quality JPEGTranslator Kvalita výstupu JPEG images JPEGTranslator Obrázky JPEG Prevent colors 'washing out' JPEGTranslator Zabrániť „vyblednutiu“ farieb @@ -15,6 +15,7 @@ Output smoothing strength JPEGTranslator Sila vyhladzovania výstupu High JPEGTranslator Vysoká Write JPEGTranslator Zapísať Write black-and-white images as RGB24 JPEGTranslator Zapísať čiernobiele obrázky ako RGB24 +Version %d.%d.%d JPEGTranslator Verzia %d.%d.%d Read greyscale images as RGB32 JPEGTranslator Čítať čiernobiele obrázky ako RGB32 Read JPEGTranslator Čítať JPEG Library Warning: %s\n be_jerror Upozornenie knižnice JPEG: %s\n diff --git a/data/catalogs/add-ons/translators/jpeg2000/sk.catkeys b/data/catalogs/add-ons/translators/jpeg2000/sk.catkeys index a42c318d35..c2e97e3cd2 100644 --- a/data/catalogs/add-ons/translators/jpeg2000/sk.catkeys +++ b/data/catalogs/add-ons/translators/jpeg2000/sk.catkeys @@ -1,6 +1,7 @@ -1 slovak x-vnd.Haiku-JPEG2000Translator 547915409 +1 slovak x-vnd.Haiku-JPEG2000Translator 3265915643 Write JPEG2000Translator Zapísať JPEG2000 images JPEG2000Translator Obrázky JPEG2000 +Version %d.%d.%d JPEG2000Translator Verzia %d.%d.%d Output only codestream (.jpc) JPEG2000Translator Na výstup poslať iba kódový tok (.jpc) Write black-and-white images as RGB24 JPEG2000Translator Zapísať čiernobiele obrázky ako RGB24 Output quality JPEG2000Translator Kvalita výstupu diff --git a/data/catalogs/add-ons/translators/ppm/sk.catkeys b/data/catalogs/add-ons/translators/ppm/sk.catkeys index 706311bbb4..2385332f46 100644 --- a/data/catalogs/add-ons/translators/ppm/sk.catkeys +++ b/data/catalogs/add-ons/translators/ppm/sk.catkeys @@ -1,4 +1,5 @@ -1 slovak x-vnd.Haiku-PPMTranslator 797856484 +1 slovak x-vnd.Haiku-PPMTranslator 2233502290 +Version %d.%d.%d, %s PPMTranslator Verzia %d.%d.%d, %s PPM Settings PPMMain Nastavenia PPM Based on PPMTranslator sample code PPMTranslator Založené na vzorovom kóde PPMTranslator OK PPMMain OK @@ -8,6 +9,7 @@ PPM image PPMTranslator Obrázok PPM RGBA 5:5:5:1 16 bits PPMTranslator RGBA 5:5:5:1 16 bitov Be Bitmap Format (PPMTranslator) PPMTranslator Be Bitmap Format (PPMTranslator) CMYA 8:8:8:8 32 bits PPMTranslator CMYA 8:8:8:8 32 bitov +Input color space: PPMTranslator Vstupný farebný priestor: CMYK 8:8:8:8 32 bits PPMTranslator CMYK 8:8:8:8 32 bitov PPM image translator PPMTranslator Prekladač obrázkov PPM bits/space PPMTranslator bitov/priestor diff --git a/data/catalogs/add-ons/translators/psd/sk.catkeys b/data/catalogs/add-ons/translators/psd/sk.catkeys new file mode 100644 index 0000000000..c5f8001d87 --- /dev/null +++ b/data/catalogs/add-ons/translators/psd/sk.catkeys @@ -0,0 +1,22 @@ +1 slovak x-vnd.Haiku-PSDTranslator 3654055550 +Lab PSDLoader Laboratórium +Uncompressed PSDConfig Nekomprimovaný +Indexed PSDLoader Indexovaný +Grayscale PSDLoader Odtiene šedej +Photoshop image translator PSDConfig Prekladač obrázkov Photoshopu +Photoshop image translator PSDTranslator Prekladač obrázkov Photoshopu +Version %d.%d.%d, %s PSDConfig Verzia %d.%d.%d, %s +Photoshop Document (PSD file) PSDConfig Dokument Photoshop (súbor PSD) +Photoshop image PSDTranslator Obrázok Photoshop +RLE PSDConfig RLE +Photoshop Big Document (PSB file) PSDConfig Photoshop Big Document (súbor PSB) +RGBA PSDLoader RGBA +Photoshop image (%s) PSDTranslator Obrázok Photoshop (%s) +PSDTranslator Settings PSDConfig Nastavenia PSDTranslator +RGB PSDLoader RGB +Bitmap PSDLoader Bitová mapa +CMYK PSDLoader CMYK +Compression: PSDConfig Kompresia: +Format: PSDConfig Formát: +Multichannel PSDLoader Viackanálový +Duotone PSDLoader Dvojtónový diff --git a/data/catalogs/add-ons/translators/rtf/sk.catkeys b/data/catalogs/add-ons/translators/rtf/sk.catkeys index a2dccbd995..86a5785f0e 100644 --- a/data/catalogs/add-ons/translators/rtf/sk.catkeys +++ b/data/catalogs/add-ons/translators/rtf/sk.catkeys @@ -1,9 +1,11 @@ -1 slovak x-vnd.Haiku-RTFTranslator 1620328626 +1 slovak x-vnd.Haiku-RTFTranslator 334451110 Version %d.%d.%d, %s ConfigView Verzia %d.%d.%d, %s RTF text files RTFTranslator Textové súbory RTF RTF-Translator Settings ConfigView Nastavenia prekladača RTF Rich Text Format (RTF) translator ConfigView Prekladač RTF (obohatený text) RTF Settings main Nastavenia RTF RichTextFormat file RTFTranslator Súbor RTF +Be style text file RTFTranslator Textový súbor v štýle Be +Plain text file RTFTranslator Obyčajný textový súbor Rich Text Format translator RTFTranslator Prekladač RTF Rich Text Format translator v%d.%d.%d %s RTFTranslator Prekladač RTF v%d.%d.%d %s diff --git a/data/catalogs/add-ons/translators/sgi/sk.catkeys b/data/catalogs/add-ons/translators/sgi/sk.catkeys index 9bbfe3629c..7ad049b6cc 100644 --- a/data/catalogs/add-ons/translators/sgi/sk.catkeys +++ b/data/catalogs/add-ons/translators/sgi/sk.catkeys @@ -1,9 +1,11 @@ -1 slovak x-vnd.Haiku-SGITranslator 4153400005 +1 slovak x-vnd.Haiku-SGITranslator 129108011 Use compression: SGIView Použiť kompresiu: SGITranslator Settings SGITranslator Nastavenia Prekladača SGI None SGIView Žiadne SGI images SGITranslator Obrázky SGI SGI image translator SGITranslator Prekladač obrázkov SGI +\nbased on GIMP SGI plugin v1.5:\n SGIView \nzaložené na zásuvnom module GIMP SGI v1.5:\n +Version %d.%d.%d, %s SGIView Verzia %d.%d.%d, %s SGI image SGITranslator Obrázok SGI RLE SGIView RLE SGI Settings SGIMain Nastavenia SGI diff --git a/data/catalogs/add-ons/translators/tga/sk.catkeys b/data/catalogs/add-ons/translators/tga/sk.catkeys index d3679e86fa..6971fa53b4 100644 --- a/data/catalogs/add-ons/translators/tga/sk.catkeys +++ b/data/catalogs/add-ons/translators/tga/sk.catkeys @@ -1,4 +1,5 @@ -1 slovak x-vnd.Haiku-TGATranslator 77519970 +1 slovak x-vnd.Haiku-TGATranslator 3075011211 +Save with RLE compression TGAView Uložiť s kompresiou RLE Targa image (%d bits truecolor) TGATranslator Obrázok Targa (%d-bitový truecolor) Ignore TGA alpha channel TGAView Ignorovať alfa kanál TGA Targa image (%d bits colormap) TGATranslator Obrázok Targa (%d-bitová farebná mapa) @@ -8,6 +9,7 @@ Targa image (%d bits gray) TGATranslator Obrázok Targa (%d bitov šedej) Written by the Haiku Translation Kit Team TGAView Napísal Haiku Translation Kit Team Targa image (%d bits RLE truecolor) TGATranslator Obrázok Targa (%d-bitový truecolor RLE) TGA images TGATranslator Obrázky TGA +Version %d.%d.%d, %s TGAView Verzia %d.%d.%d, %s TGATranslator Settings TGATranslator Nastavenia TGATranslator TGA image translator TGATranslator Prekladač obrázkov TGA Targa image (%d bits RLE gray) TGATranslator Obrázok Targa (%d-bitov šedej RLE) diff --git a/data/catalogs/add-ons/translators/tiff/sk.catkeys b/data/catalogs/add-ons/translators/tiff/sk.catkeys index 5a36173010..0597a8079d 100644 --- a/data/catalogs/add-ons/translators/tiff/sk.catkeys +++ b/data/catalogs/add-ons/translators/tiff/sk.catkeys @@ -1,5 +1,6 @@ -1 slovak x-vnd.Haiku-TIFFTranslator 4029790542 +1 slovak x-vnd.Haiku-TIFFTranslator 2234713102 LZW TIFFView LZW +Version %d.%d.%d, %s TIFFView Verzia %d.%d.%d, %s identify_tiff_header: couldn't set directory\n TIFFTranslator identify_tiff_header: nepodarilo sa nastaviť adresár\n TIFF image TIFFTranslator Obrázok TIFF TIFF Library: TIFFView Knižnica TIFF: @@ -10,5 +11,6 @@ TIFFTranslator Settings TIFFTranslator Nastavenia TIFFTranslator TIFF image translator TIFFTranslator Prekladač obrázkov TIFF RLE (Packbits) TIFFView RLE (Packbits) TIFF Settings TIFFMain Nastavenia TIFF +Use compression: TIFFView Použiť kompresiu: identify_tiff_header: invalid document index\n TIFFTranslator identify_tiff_header: neplatný index dokumentu\n ZIP (Deflate) TIFFView ZIP (Deflate) diff --git a/data/catalogs/add-ons/translators/wonderbrush/sk.catkeys b/data/catalogs/add-ons/translators/wonderbrush/sk.catkeys index af3f32bcb6..989851f8cd 100644 --- a/data/catalogs/add-ons/translators/wonderbrush/sk.catkeys +++ b/data/catalogs/add-ons/translators/wonderbrush/sk.catkeys @@ -1,4 +1,5 @@ -1 slovak x-vnd.Haiku-WonderBrushTranslator 820358316 +1 slovak x-vnd.Haiku-WonderBrushTranslator 1289038178 +Version %d.%d.%d, %s WonderBrushView Verzia %d.%d.%d, %s WonderBrush image translator WonderBrushTranslator Prekladač obrázkov WonderBrush WBI Settings WonderBrushTranslator Nastavenia WBI WBI Settings WonderBrushMain Nastavenia WBI diff --git a/data/catalogs/apps/aboutsystem/sk.catkeys b/data/catalogs/apps/aboutsystem/sk.catkeys index 2829a11b36..0b0d1c1549 100644 --- a/data/catalogs/apps/aboutsystem/sk.catkeys +++ b/data/catalogs/apps/aboutsystem/sk.catkeys @@ -1,10 +1,14 @@ -1 slovak x-vnd.Haiku-About 2724473542 +1 slovak x-vnd.Haiku-About 3251436090 Copyright © 1999-2010 by the authors of Gutenprint. All rights reserved. AboutView Copyright © 1999-2010 autori Gutenprint. Všetky práva vyhradené. +Copyright © 1996-2002, 2006 David Turner, Robert Wilhelm and Werner Lemberg. AboutView Copyright © 1996-2002, 2006 David Turner, Robert Wilhelm a Werner Lemberg. +Past website & marketing:\n AboutView Web a marketing v minulosti:\n Travis Geiselbrecht (and his NewOS kernel)\n AboutView Travis Geiselbrecht (a jeho jadro NewOS)\n +Ralink (firmware) AboutWindow Ralink (firmvér) Copyright © 1996-2005 Julian R Seward. All rights reserved. AboutView Copyright © 1996-2005 Julian R Seward. Všetky práva vyhradené. %d MiB total AboutView %d MiB celkom Michael Phipps (project founder)\n\n AboutView Michael Phipps (zakladateľ projektu)\n\n %d MiB used (%d%%) AboutView %d MiB využitých (%d%%) +Contains software from the GNU Project, released under the GPL and LGPL licenses:\nGNU C Library, GNU coretools, diffutils, findutils, sharutils, gawk, bison, m4, make, wget, ncurses, termcap, Bourne Again Shell.\nCopyright © The Free Software Foundation. AboutView Obsahuje softvér z projektu GNU uvoľnený za podmienok licencií GPL alebo LGPL:\nGNU C Library, GNU coretools, diffutils, findutils, sharutils, gawk, bison, m4, make, wget, ncurses, termcap, Bourne Again Shell.\nCopyright © The Free Software Foundation. AboutSystem System name O systéme Copyright © 2003 Peter Hanappe and others. AboutView Copyright © 2003 Peter Hanappe a ďalší. Copyright © 1994-1997 Mark Kilgard. All rights reserved. AboutView Copyright © 1994-1997 Mark Kilgard. Všetky práva vyhradené. @@ -13,21 +17,32 @@ Copyright © 2002-2005 Industrial Light & Magic, a division of Lucas Digital Ltd Be Inc. and its developer team, for having created BeOS!\n\n AboutView Be Inc. a jeho tímu vývojárov za vytvorenie BeOS!\n\n Copyright © 1999-2000 Y.Takagi. All rights reserved. AboutView Copyright © 1999-2000 Y.Takagi. Všetky práva vyhradené. Source Code: AboutView Zdrojový kód: +{0, plural, one{Processor:} other{# Processors:}} AboutView \"Processor:\" or \"2 Processors:\" {0, plural, one{Procesor} few{# procesory} other{# procesorov}}: Kernel: AboutView Jadro: +BSD (4-clause) AboutWindow BSD (4-bodová) The copyright to the Haiku code is property of Haiku, Inc. or of the respective authors where expressly noted in the source. Haiku® and the HAIKU logo® are registered trademarks of Haiku, Inc.\n\n AboutView Autorské práva ku kódu Haiku sú vlastníctvom Haiku, Inc. alebo príslušných autorov, kde sú výslovne uvedení v zdrojovom kóde. Haiku® a logo HAIKU® sú registrovanými ochrannými známkami Haiku, Inc.\n\n +Marvell (firmware) AboutWindow Marvell (firmvér) Copyright © 1987-1988 Digital Equipment Corporation, Maynard, Massachusetts.\nAll rights reserved. AboutView Copyright © 1987-1988 Digital Equipment Corporation, Maynard, Massachusetts.\nVšetky práva vyhradené. +GNU LGPL v2 AboutWindow GNU LGPL v2 +The HaikuPorts team\n AboutView Tím Haiku-Ports\n %total MiB total, %inaccessible MiB inaccessible AboutView %total MiB celkom, %inaccessible MiB neprístupných +Intel (2xxx firmware) AboutWindow Intel (2xxx firmvér) Contributors:\n AboutView Prispievatelia:\n Unknown AboutView Neznáme Copyright © 2001-2003 Expat maintainers. AboutView Copyright © 2001-2003 správci Expat. Copyright © 1999-2006 Brian Paul. Mesa3D Project. All rights reserved. AboutView Copyright © 1999-2006 Brian Paul. Mesa3D Project. Všetky práva vyhradené. Copyright © 2002-2004 Vivek Mohan. All rights reserved. AboutView Copyright © 2002-2004 Vivek Mohan. Všetky práva vyhradené. +Public Domain AboutWindow Voľné dielo +Intel (firmware) AboutWindow Intel (firmvér) +BSD (2-clause) AboutWindow BSD (2-bodová) %.2f GHz AboutView %.2f GHz Memory: AboutView Pamäť: Copyright © 1996-1997 Jeff Prosise. All rights reserved. AboutView Copyright © 1996-1997 Jeff Prosise. Všetky práva vyhradené. Copyright © 2006-2012 Kentaro Fukuchi AboutView Copyright © 2006-2012 Kentaro Fukuchi Copyright © 1994-2009, Thomas G. Lane, Guido Vollbeding. This software is based in part on the work of the Independent JPEG Group. AboutView Copyright © 1994-2009, Thomas G. Lane, Guido Vollbeding. Tento softvér je sčasti zaločený na práci Independent JPEG Group. Past maintainers:\n AboutView Minulí vývojári:\n +Contains software from the FreeBSD Project, released under the BSD license:\nftpd, ping, telnet, telnetd, traceroute\nCopyright © 1994-2008 The FreeBSD Project. All rights reserved. AboutView Obsahuje softvér z projektu FreeBSD, uvoľnený za podmienok licencie BSD:\nftpd, ping, telnet, telnetd, traceroute\nCopyright © 1994-2008 The FreeBSD Project. Všetky práva vyhradené. +GNU GPL v3 AboutWindow GNU GPL v3 \n\nSpecial thanks to:\n AboutView \n\nŠpecialne poďakovanie:\n \n…and probably some more we forgot to mention (sorry!)\n\n AboutView \n… a zrejme mnoho ďalších, ktorých sme zabudli uviesť (prepáčte!)\n\n Licenses: AboutView Licencie: @@ -40,21 +55,25 @@ Copyright © 2006-2007 Intel Corporation. All rights reserved. AboutView Copyri The code that is unique to Haiku, especially the kernel and all code that applications may link against, is distributed under the terms of the . Some system libraries contain third party code distributed under the . You can find the copyrights to third party code below.\n\n AboutView and aren't variables and can be translated. However, please, don't remove < and > as they're needed as placeholders for proper hypertext functionality. Kód, ktorý je jedinečný pre Haiku, obzvlášť jadro a všetok kód, voči ktorému sa linkujú aplikácie je šírený za podmienok . Niektoré knižnice systému môžu obsahovať kód tretích strán, ktorý je šírený za podmienok. Informácie o autorských právach ku kódu tretích strán si môžete prečítať nižšie.\n\n Time running: AboutView Čas behu: Contains software developed by the NetBSD Foundation, Inc. and its contributors:\nftp, tput\nCopyright © 1996-2008 The NetBSD Foundation, Inc. All rights reserved. AboutView Obsahuje softvér, ktorý vyvinula NetBSD Foundation, Inc. a jej prispievatelia:\nftp, tput\nCopyright © 1996-2008 The NetBSD Foundation, Inc. Všetky práva vyhradené. +GNU GPL v2 AboutWindow GNU GPL v2 Google and their Google Summer of Code and Google Code In programs\n AboutView Google a ich programy Google Summer of Code a Google Code-in The Haikuware team and their bounty program\n AboutView Tím Haikuware a ich program odmien\n Copyright © 1995, 1998-2001 Jef Poskanzer. All rights reserved. AboutView Copyright © 1995, 1998-2001 Jef Poskanzer. Všetky práva vyhradené. Copyright © 2010-2011 Google Inc. All rights reserved. AboutView Copyright © 2010-2011 Google Inc. Všetky práva vyhradené. +Website & marketing:\n AboutView Web a marketing:\n About this system AboutWindow O tomto systéme Version: AboutView Verzia: Copyright © 1994-2008 Xiph.Org. All rights reserved. AboutView Copyright © 1994-2008 Xiph.Org. Všetky práva vyhradené. Copyright © 1998-2000 Thai Open Source Software Center Ltd and Clark Cooper. AboutView Copyright © 1998-2000 Thai Open Source Software Center Ltd a Clark Cooper. Copyright © 2004-2005 Intel Corporation. All rights reserved. AboutView Copyright © 2004-2005 Intel Corporation. Všetky práva vyhradené. Copyright © 2002-2006 Maxim Shemanarev (McSeem). AboutView Copyright © 2002-2006 Maxim Shemanarev (McSeem). +Copyright © 2000-2014 Fabrice Bellard, et al. AboutView Copyright © 2000-2014 Fabrice Bellard, et al. Copyright © 1999-2007 Michael C. Ring. All rights reserved. AboutView Copyright © 1999-2007 Michael C. Ring. Všetky práva vyhradené. The BeGeistert team\n AboutView Tím BeGeistert\n The University of Auckland and Christof Lutteroth\n\n AboutView University of Auckland a Christof Lutteroth\n\n Copyright © 1990-2003 Wada Laboratory, the University of Tokyo. AboutView Copyright © 1990-2003 Wada Laboratory, University of Tokyo. Copyright © 1995-2001 Lars Düning. All rights reserved. AboutView Copyright © 1995-2001 Lars Düning. Všetky práva vyhradené. +GNU LGPL v2.1 AboutWindow GNU LGPL v2.1 Copyright © 2003-2006 Intel Corporation. All rights reserved. AboutView Copyright © 2003-2006 Intel Corporation. Všetky práva vyhradené. %ld MHz AboutView %ld MHz Copyright © 1997-2006 PDFlib GmbH and Thomas Merz. All rights reserved.\nPDFlib and PDFlib logo are registered trademarks of PDFlib GmbH. AboutView Copyright © 1997-2006 PDFlib GmbH a Thomas Merz. Všetky práva vyhradené.\nPDFlib a logo PDFlib sú registrované ochranné známky PDFlib GmbH. @@ -63,6 +82,7 @@ Copyright © 1991-2000 Silicon Graphics, Inc. All rights reserved. AboutView Co MIT license. All rights reserved. AboutView Licencia MIT. Všetky práva vyhradené. [Click a license name to read the respective license.]\n\n AboutView [Kliknite na názov licencie a prečítajte si príslušnú licenciu.]\n\n Copyright © 2007 Ralink Technology Corporation. All rights reserved. AboutView Copyright © 2007 Ralink Technology Corporation. Všetky práva vyhradené. +BSD (3-clause) AboutWindow BSD (3-bodová) Copyright © 1990-2002 Info-ZIP. All rights reserved. AboutView Copyright © 1990-2002 Info-ZIP. Všetky práva vyhradené. License: AboutView Licencia: 2001 by Andy Ritger based on the Generalized Timing Formula AboutView 2001, Andy Ritger, založené na Zovšeobecnenom časovacom vzorci diff --git a/data/catalogs/apps/activitymonitor/sk.catkeys b/data/catalogs/apps/activitymonitor/sk.catkeys index 5800853b4d..b162316f7e 100644 --- a/data/catalogs/apps/activitymonitor/sk.catkeys +++ b/data/catalogs/apps/activitymonitor/sk.catkeys @@ -1,10 +1,12 @@ -1 slovak x-vnd.Haiku-ActivityMonitor 234995750 +1 slovak x-vnd.Haiku-ActivityMonitor 2455521641 P-faults DataSource P-fault Media nodes DataSource Mediálne uzly Threads DataSource Vlákna +Always on top ActivityWindow Vždy na vrchu Add graph ActivityWindow Pridať graf Teams DataSource Tímy Hide legend ActivityView Skryť legendu +MiB DataSource MiB Network send DataSource Sieť - odoslané CPU usage (combined) DataSource Využitie CPU (kombinované) CPU DataSource CPU @@ -31,6 +33,7 @@ Remove graph ActivityView Odstrániť graf CPU usage DataSource Využitie CPU Raw clipboard DataSource Schránka bez formátu Sems DataSource Semafory +%.1f MiB DataSource %.1f MiB ActivityMonitor System name Monitor aktivity Running applications DataSource Bežiace aplikácie Semaphores DataSource Semafory diff --git a/data/catalogs/apps/bootmanager/sk.catkeys b/data/catalogs/apps/bootmanager/sk.catkeys index b9ecc75345..cbd450ef2c 100644 --- a/data/catalogs/apps/bootmanager/sk.catkeys +++ b/data/catalogs/apps/bootmanager/sk.catkeys @@ -1,4 +1,4 @@ -1 slovak x-vnd.Haiku-BootManager 3355843558 +1 slovak x-vnd.Haiku-BootManager 3886671855 The boot manager has been successfully installed on your system. BootManagerController Správca zavádzania bol úspešne nainštalovaný na váš systém. After two seconds DefaultPartitionPage Po dvoch sekundách Uninstall Boot Manager UninstallPage Title Odinštalovať Správcu zavádzania @@ -8,10 +8,12 @@ Hard Drive DrivesPage Default disk name Pevný disk USB Drive DrivesPage Default disk name Disk USB The Master Boot Record (MBR) of the boot device:\n\t%s\nwill now be saved to disk. Please select a file to save the MBR into.\n\nIf something goes wrong with the installation or if you later wish to remove the boot menu, simply run the bootman program and choose the 'Uninstall' option. BootManagerController MBR zavádzacieho zariadenia:\n\t %s\nsa teraz uloží na disk. Prosím, zvoľte súbor, kam sa uloží MBR.\n\nAk sa niečo v inštalácii pokazí alebo jednoducho neskôr budete chcieť odstrániť menu zavádzača, jednoducho spustite program Správca zavádzania a zvoľte možnosť „Odinštalovať“. About to restore the Master Boot Record (MBR) of %disk from %file. Do you wish to continue? BootManagerController Don't translate the place holders: %disk and %file Chystáte sa obnoviť MBR disku %disk zo súboru %file. Chcete pokračovať? +First partition starts too early BootManagerController Title Prvá disková oblasť začína príliš zavčasu An error occurred writing the boot menu. The Master Boot Record might be destroyed, you should restore the MBR now! BootManagerController Vyskytla sa chyba počas zapisovania menu zavádzača. MBR môže byť zničený. Mali by ste ihneď obnoviť MBR! Partitions PartitionsPage Title Oblasti Timeout: %s DefaultPartitionPage Časový interval: %s Select FileSelectionPage Button Vybrať +Incompatible format! DrivesPage Cannot install Nekompatibilný formát! Cannot access! DrivesPage Cannot install Nie je možný prístup! Uninstall boot manager BootManagerController Title Odinštalovať Správcu zavádzania After four seconds DefaultPartitionPage Po štyroch sekundách @@ -24,7 +26,9 @@ Please specify a default partition and a timeout.\nThe boot menu will load the d After one second DefaultPartitionPage Po jednej sekunde The following partitions were detected. Please check the box next to the partitions to be included in the boot menu. You can also set the names of the partitions as you would like them to appear in the boot menu. PartitionsPage Boli zistené nasledovné oblasti. Prosím, zaškrtnite pole vedľa oblastí, ktoré chcete zahrnúť do menu zavádzača. Môžete tiež nastaviť názvy oblastí, aké chcete aby sa zobrazovali v menu zavádzača. After one minute DefaultPartitionPage Po jednej minúte +The old Master Boot Record could not be saved to %s. You can continue the installation but there will be no way to uninstall the boot menu. BootManagerController Starý Master Boot Record sa nepodarilo uložiť do %s. Môžete pokračovať v inštalácii, ale to nebude možné odinštalovať menu zavádzača systému. The Master Boot Record of the boot device (%DISK) has been successfully restored from %FILE. BootManagerController MBR zavádzacieho zariadenia (%DISK) bol úspešne obnovený zo súboru %FILE. +Quit WizardView Button Ukončiť Write boot menu BootManagerController Button Zapísať menu zavádzača The Master Boot Record could not be restored! BootManagerController MBR nebolo možné obnoviť! Uninstall DrivesPage Button Odinštalovať @@ -35,6 +39,7 @@ Installation of boot menu completed BootManagerController Title Inštalácia men Unnamed %d LegacyBootMenu Default name of a partition whose name could not be read from disk; characters in codepage 437 are allowed only Nepomenovaný %d File: FileSelectionPage Text control label Súbor: Previous WizardView Button Späť +The first partition on the disk starts too early and does not leave enough space free for a boot menu.\nBoot Manager needs 2 KiB available space before the first partition. BootManagerController Prvá oblasť na disku začína príliš zavčasu a nenecháva dostatok voľného miesta pre zavádzacie menu.\nSprávca zavádzania potrebuje 2 KiB voľného miesta pred prvou oblasťou. Install DrivesPage Button Nainštalovať About to write the following boot menu to the boot disk (%s). Please verify the information below before continuing. BootManagerController Chystá sa zápis nasledovného menu zavádzača na zavádzací disk (%s). Prosím, overte nasledovné informácie predtým, než budete pokračovať. Unknown LegacyBootMenu Text is shown for an unknown partition type Neznámy @@ -45,9 +50,11 @@ No space available! DrivesPage Cannot install Nie je voľné miesto! Never DefaultPartitionPage Nikdy Partition table not compatible BootManagerController Title Tabuľka oblastí nie je kompatibilná Old Master Boot Record saved BootManagerController Title Starý MBR je uložený +Old Master Boot Record backup failure BootManagerController Title Zlyhalo zálohovanie starého MBR Boot Manager is unable to read the partition table! BootManagerController Správca zavádzania nedokáže prečítať tabuľku oblastí! Error reading partition table BootManagerController Title Chyba pri čítaní tabuľky oblastí Installation of boot menu failed BootManagerController Title Inštalácia menu zavádzača zlyhala +The partition table of the first hard disk is not compatible with Boot Manager.\nBoot Manager only works with IBM PC MBR partitions. BootManagerController Tabuľka diskových oblastí prvého disku nie je kompatibilná so Správcom zavádzania.\nSprávca zavádzania dokáže pracovať len s oblasťami IBM PC MBR. Backup Master Boot Record BootManagerController Title Zálohovať MBR About to write the boot menu to disk. Are you sure you want to continue? BootManagerController Chystá sa zápis menu zavádzača na disk. Ste si istý, že chcete pokračovať? The old Master Boot Record was successfully saved to %s. BootManagerController Starý MBR bol úspešne uložený do %s. diff --git a/data/catalogs/apps/charactermap/sk.catkeys b/data/catalogs/apps/charactermap/sk.catkeys index e64a15ca9b..266b9835ed 100644 --- a/data/catalogs/apps/charactermap/sk.catkeys +++ b/data/catalogs/apps/charactermap/sk.catkeys @@ -1,4 +1,4 @@ -1 slovak x-vnd.Haiku-CharacterMap 56063163 +1 slovak x-vnd.Haiku-CharacterMap 1534181938 Enclosed alphanumerics UnicodeBlocks Uzavreté alfanumerické znaky Basic Latin UnicodeBlocks Latinka - základné znaky View CharacterWindow Zobraziť @@ -123,6 +123,7 @@ Vai UnicodeBlocks Vai Yi Radicals UnicodeBlocks Yi - radikály Cyrillic extended B UnicodeBlocks Cyrillika, rozšírená A Quit CharacterWindow Ukončiť +Ancient symbols UnicodeBlocks Staré symboly Braille patterns UnicodeBlocks Braillove vzory New Tai Lue UnicodeBlocks New Tai Lue Runic UnicodeBlocks Runy diff --git a/data/catalogs/apps/codycam/sk.catkeys b/data/catalogs/apps/codycam/sk.catkeys index 4aa231fbc3..25180be96c 100644 --- a/data/catalogs/apps/codycam/sk.catkeys +++ b/data/catalogs/apps/codycam/sk.catkeys @@ -1,4 +1,5 @@ -1 slovak x-vnd.Haiku-CodyCam 183572276 +1 slovak x-vnd.Haiku-CodyCam 2193838145 +Upload… VideoConsumer.cpp Nahrať… Capturing Image… VideoConsumer.cpp Zachytáva sa obrázok… Every 30 seconds CodyCam Každých 30 sekúnd File name: CodyCam Názov súboru: @@ -10,9 +11,9 @@ Format: CodyCam Formát: Every 2 hours CodyCam Každé 2 hodiny Closing the window\n VideoConsumer.cpp Zatvára sa okno\n login ID expected CodyCam očakávalo sa prihlasovacie meno -Rate: CodyCam Rýchlosť: +Rate: CodyCam Interval: JPEG image CodyCam Obrázok JPEG -Capture Rate Menu CodyCam Menu rýchlosti zachytávania +Capture Rate Menu CodyCam Menu intervalu zachytávania File %s # unterminated quote at end of file\n SettingsHandler Súbor %s # neukončená úvodzovka na konci súboru\n Password: CodyCam Heslo: Passive FTP CodyCam Pasívne FTP @@ -61,12 +62,13 @@ upload client name expected CodyCam očakával sa názov nahrávacieho klienta SFTP CodyCam SFTP Connected… VideoConsumer.cpp Pripojené… PASS (real password sent)\n FtpClient PASS (skutočné odoslané heslo)\n +File upload failed VideoConsumer.cpp Nahranie súboru zlyhalo Every 5 minutes CodyCam Každých 5 minút read: %d\n SftpClient prečítané: %d\n Capture controls CodyCam Ovládacie prvky zachytávania Every hour CodyCam Každú hodinu Cannot connect the video source to the video window CodyCam Nebolo možné spojiť zdroj videa s oknom s videom -capture rate expected CodyCam očakávaná rýchlosť zachytávania +capture rate expected CodyCam očakávaný interval zachytávania Error getting initial latency for the capture node CodyCam Chyba pri zisťovaní úvodnej latencie uzla zachytávania Send to… CodyCam Poslať kam… on or off expected Settings Do not translate 'on' and 'off' očakávalo sa „on“ alebo „off“ @@ -84,7 +86,7 @@ Every 4 hours CodyCam Každé 4 hodiny FTP CodyCam FTP Cannot seek time source! CodyCam Nie je možné posunúť sa na zdroj času! File CodyCam Súbor -Image Format Menu CodyCam Menu formát obrázka +Image Format Menu CodyCam Menu formátu obrázka Every 30 minutes CodyCam Každých 30 minút reply: '%s'\n SftpClient odpoveď: „%s“\n Start video CodyCam Spustiť video diff --git a/data/catalogs/apps/deskbar/sk.catkeys b/data/catalogs/apps/deskbar/sk.catkeys index a6a7503c50..795fa7d084 100644 --- a/data/catalogs/apps/deskbar/sk.catkeys +++ b/data/catalogs/apps/deskbar/sk.catkeys @@ -1,16 +1,19 @@ -1 slovak x-vnd.Be-TSKB 1363745697 +1 slovak x-vnd.Be-TSKB 2656653225 Power off DeskbarMenu Vypnúť +Sort applications by name PreferencesWindow Zoradiť aplikácie podľa názvu Suspend DeskbarMenu Režim spánku Hide clock TimeView Skryť hodiny Applications PreferencesWindow Aplikácie Time preferences… TimeView Nastavenia času… About Haiku DeskbarMenu O Haiku +Edit in Tracker… PreferencesWindow Upraviť v Trackeri… Recent documents: PreferencesWindow Nedávne dokumenty: Recent applications DeskbarMenu Nedávne aplikácie Applications B_USER_DESKBAR_DIRECTORY/Applications Aplikácie Find… DeskbarMenu Nájsť… Show clock Tray Zobraziť hodiny Window PreferencesWindow Okno +Defaults PreferencesWindow Predvolené Menu PreferencesWindow Menu Recent documents DeskbarMenu Nedávne dokumenty Auto-hide PreferencesWindow Automaticky skrývať @@ -27,6 +30,7 @@ Show application expander PreferencesWindow Zobraziť výsuvný zoznam aplikác Close all WindowMenu Zatvoriť všetky Deskbar preferences PreferencesWindow Nastavenia Panelu Mount DeskbarMenu Pripojiť +Revert PreferencesWindow Vrátiť späť Small PreferencesWindow Malé Recent applications: PreferencesWindow Nedávne aplikácie: Shutdown… DeskbarMenu Vypnúť… diff --git a/data/catalogs/apps/deskcalc/sk.catkeys b/data/catalogs/apps/deskcalc/sk.catkeys index e26dbe378d..5426a66d9b 100644 --- a/data/catalogs/apps/deskcalc/sk.catkeys +++ b/data/catalogs/apps/deskcalc/sk.catkeys @@ -1,9 +1,10 @@ -1 slovak x-vnd.Haiku-DeskCalc 3276968552 +1 slovak x-vnd.Haiku-DeskCalc 1694821448 Compact CalcView Kompaktná Scientific CalcView Vedecká DeskCalc System name Kalkulačka Basic CalcView Základná Radians CalcView Radiány Enable Num Lock on startup CalcView Zapnúť NumLock pri štarte +Calculating CalcView Počíta sa Degrees CalcView Stupne Audio Feedback CalcView Zvuková spätná väzba diff --git a/data/catalogs/apps/diskprobe/sk.catkeys b/data/catalogs/apps/diskprobe/sk.catkeys index 61e8ef0503..3963fffed2 100644 --- a/data/catalogs/apps/diskprobe/sk.catkeys +++ b/data/catalogs/apps/diskprobe/sk.catkeys @@ -1,4 +1,4 @@ -1 slovak x-vnd.Haiku-DiskProbe 1806743923 +1 slovak x-vnd.Haiku-DiskProbe 2944605311 File offset: ProbeView Ofset súboru: %ld (native) ProbeView %ld (natívne) 64 bit unsigned value: TypeEditors 64-bitová hodnota bez znamienka: @@ -98,6 +98,7 @@ Base ProbeView A menu item, the number that is basis for a system of calculation Image view TypeEditors Image means here a picture file, not a disk image. Zobrazenie obrázka Cancel AttributeWindow Zrušiť Type editor not supported ProbeView Editor typov nie je podporovaný +Block size ProbeView Menu item. This is in the same menu window than 'Base' and 'Font size' Veľkosť bloku MIME type editor TypeEditors Editor typov MIME Swapped: %Ld (0x%0*Lx) ProbeView Vymenené: %Ld (0x%0*Lx) Find FindWindow Nájsť diff --git a/data/catalogs/apps/diskusage/sk.catkeys b/data/catalogs/apps/diskusage/sk.catkeys index 042bb1b8b9..efbe21ab84 100644 --- a/data/catalogs/apps/diskusage/sk.catkeys +++ b/data/catalogs/apps/diskusage/sk.catkeys @@ -1,5 +1,7 @@ -1 slovak x-vnd.Haiku-DiskUsage 4268917316 +1 slovak x-vnd.Haiku-DiskUsage 2951688400 +%size% in {0, plural, one{# file} other{# files}} Info Window %size% v {0, plural, one{# súbore} other{# súboroch}} Scanning %refName% Scanner Prehľadáva sa %refName% +%d files Status View For UI layouting only, use the longest plural form for your language %d súborov Size Info Window Veľkosť Rescan Pie View Znovu preskúmať Kind Info Window Druh @@ -16,5 +18,6 @@ Modified Info Window Zmenené Abort Status View Zrušiť Open with Pie View Otvoriť pomocou Open Pie View Otvoriť +{0, plural, one{# file} other{# files}} Status View {0, plural, one{# súbor} few{# súbory} other{# súborov}} %a, %d %b %Y, %r Info Window %a, %d %b %Y, %r Free on %refName% Scanner Voľné na %refName% diff --git a/data/catalogs/apps/drivesetup/sk.catkeys b/data/catalogs/apps/drivesetup/sk.catkeys index 80a2b18467..80b2d2d0ab 100644 --- a/data/catalogs/apps/drivesetup/sk.catkeys +++ b/data/catalogs/apps/drivesetup/sk.catkeys @@ -1,11 +1,13 @@ -1 slovak x-vnd.Haiku-DriveSetup 973049051 +1 slovak x-vnd.Haiku-DriveSetup 2321187933 DriveSetup System name Nastavenie diskových oblastí +Could not acquire partitioning information. MainWindow Nepodarilo sa získať informácie o diskových oblastiach. Cancel AbstractParametersPanel Zrušiť Delete MainWindow Zmazať Are you sure you want to write the changes back to disk now?\n\nAll data on the selected partition will be irretrievably lost if you do so! MainWindow Ste si istí, že chcete tieto zmeny teraz zapísať na disk?\n\nAk tak urobíte, všetky údaje na vybranej diskovej oblasti budú nenávratne stratené! Rescan MainWindow Znovu preskúmať OK MainWindow OK There's no space on the partition where a child partition could be created. MainWindow Na oblasti nie je miesto, kde by bolo možné vytvoriť podriadenú oblasť. +Could not unmount partition MainWindow Nepodarilo sa odpojiť oblasť Initialize InitializeParametersPanel Inicializovať OK AbstractParametersPanel OK PartitionList @@ -15,8 +17,10 @@ No disk devices have been recognized. DiskView Neboli rozpoznané žiadne disko Failed to initialize the disk %s!\n MainWindow Nepodarilo sa inicializovať disk %s!\n The selected disk is read-only. MainWindow Vybraný disk je len na čítanie. Are you sure you want to format the partition \"%s\"? You will be asked again before changes are written to the disk. MainWindow Ste si istí, že chcete naformátovať oblasť „%s“? Pred zapísaním zmien na disk sa vás program znova spýta. +Should unmounting be forced?\n\nNote: If an application is currently writing to the volume, unmounting it now might result in loss of data.\n MainWindow Vynútiť odpojenie?\n\nPozn.: Ak aplikácia momentálne na zväzok zapisuje, jeho odpojenie môže spôsobiť stratu dát.\n Could not mount partition %s. MainWindow Nepodarilo sa pripojiť oblasť %s. The partition %s has been successfully formatted.\n MainWindow Oblasť %s bola úspešne naformátovaná.\n +Change parameters MainWindow Zmeniť parametre The partition %s is already unmounted. MainWindow Oblasť %s je už odpojená. Failed to delete the partition. No changes have been written to disk. MainWindow Nepodarilo sa zmazať oblasť. Žiadne zmeny neboli zapísané na disk. Could not delete the selected partition. MainWindow Nepodarilo sa zmazať vybranú oblasť. @@ -35,36 +39,54 @@ Write changes MainWindow Zapísať zmeny There was an error preparing the disk for modifications. MainWindow Vyskytla sa chyba pri pripravovaní disku na zmeny. The partition %s is already mounted. MainWindow Oblasť %s je už pripojená. Are you sure you want to format the partition? You will be asked again before changes are written to the disk. MainWindow Ste si istí, že chcete naformátovať oblasť? Pred zapísaním zmien na disk sa vás program znova spýta. +Partition name: ChangeParametersPanel Názov oblasti: +Change ChangeParametersPanel Zmeniť Are you sure you want to write the changes back to disk now?\n\nAll data on the disk %s will be irretrievably lost if you do so! MainWindow Ste si istý, že chcete tieto zmeny teraz zapísať na disk?\n\nAk tak urobíte, všetky údaje na disku %s budú nenávratne stratené! Are you sure you want to delete the selected partition?\n\nAll data on the partition will be irretrievably lost if you do so! MainWindow Ste si istí, že chcete zmazať vybranú diskovú oblasť?\n\nAk tak urobíte, všetky údaje na vybranej diskovej oblasti budú nenávratne stratené! Create… MainWindow Vytvoriť… +Are you sure you want to format a raw disk? (Most people initialize the disk with a partitioning system first) You will be asked again before changes are written to the disk. MainWindow Ste si istý, že chcete naformátovať prázdny disk? (Väčšina ľudí najskôr disk inicializuje zapísaním tabuľky oblastí) Požiadame vás znova o potvrdenie predtým, než sa zmeny zapíšu na disk. The disk has been successfully initialized.\n MainWindow Disk bol úspešne inicializovaný.\n Could not unmount partition %s. MainWindow Nepodarilo sa odpojiť oblasť %s. +Failed to change the parameters of the partition. No changes have been written to disk. MainWindow Nepodarilo sa zmeniť parametre oblasti. Žiadne zmeny neboli zapísané na disk. Failed to format the partition %s!\n MainWindow Nepodarilo sa naformátovať oblasť %s!\n Mount MainWindow Pripojiť +Partition type PartitionList Typ oblasti +The panel experienced a problem! MainWindow Vyskytol sa problém v Paneli! +Change parameters… MainWindow Zmeniť parametre… Device PartitionList Zariadenie Disk MainWindow Disk Are you sure you want to initialize the selected disk? All data will be lost. You will be asked again before changes are written to the disk.\n MainWindow Ste si istí, že chcete inicializovať vybraný disk? Stratia sa všetky údaje na ňom. Pred zapísaním zmien na disk sa vás program znova spýta.\n +Partition size CreateParametersPanel Veľkosť oblasti Device DiskView Zariadenie Active PartitionList Aktívna Volume name PartitionList Názov zväzku Continue MainWindow Pokračovať Cannot delete the selected partition. MainWindow Nie je možné zmazať vybranú diskovú oblasť. Mount all MainWindow Pripojiť všetky +End: %s Support Koniec: %s +The panel could not return successfully. MainWindow Panel sa nedokázal úspešne ukončiť. Cancel MainWindow Zrušiť Delete partition MainWindow Zmazať oblasť +Are you sure you want to change parameters of the selected partition?\n\nThe partition may no longer be recognized by other operating systems anymore! MainWindow Ste si istí, že chcete zmeniť parametre vybranej oblasti?\n\nJe možné, že iné operačné systémy už oblasť nerozpoznajú! +Disk system \"%s\" not found! MainWindow Diskový systém „%s“ nenájdený! Eject MainWindow Vysunúť Partition MainWindow Oblasť +Validation of the given parameters failed. MainWindow Overenie zadaných parametrov zlyhalo. +Force unmount MainWindow Vynútiť odpojenie +Create CreateParametersPanel Vytvoriť File system PartitionList Súborový systém Validation of the given creation parameters failed. MainWindow Overenie zadaných parametrov vytvorenia zlyhalo. +Partition type: ChangeParametersPanel Typ oblasti Size PartitionList Veľkosť Wipe (not implemented) MainWindow Bezpečne vymazať (neimplementované) Validation of the given initialization parameters failed. MainWindow Overenie zadaných parametrov inicializácie zlyhalo. The selected partition does not contain a partitioning system. MainWindow Zdá sa, že vybraná disková oblasť neobsahuje systém oblastí. +Offset: %s Support Posun: %s Are you sure you want to write the changes back to disk now?\n\nAll data on the partition %s will be irretrievably lost if you do so! MainWindow Ste si istí, že chcete tieto zmeny teraz zapísať na disk?\n\nAk tak urobíte, všetky údaje na diskovej oblasti %s budú nenávratne stratené! The partition %s is currently mounted. MainWindow Oblasť %s je momentálne pripojená. Surface test (not implemented) MainWindow Test povrchu disku (neimplementované) Format MainWindow Naformátovať +Could not change the parameters of the selected partition. MainWindow Nepodarilo sa zmeniť parametre vybranej oblasti. Parameters PartitionList Parametre Creation of the partition has failed. MainWindow Vytvorenie diskovej oblasti zlyhalo. The currently selected partition is not empty. MainWindow Momentálne vybraná disková oblasť nie je prázdna. diff --git a/data/catalogs/apps/expander/sk.catkeys b/data/catalogs/apps/expander/sk.catkeys index 5654133d7a..06f0f79335 100644 --- a/data/catalogs/apps/expander/sk.catkeys +++ b/data/catalogs/apps/expander/sk.catkeys @@ -1,4 +1,4 @@ -1 slovak x-vnd.Haiku-Expander 3431738656 +1 slovak x-vnd.Haiku-Expander 2177073262 Expand ExpanderMenu Rozbaliť Close window when done expanding ExpanderPreferences Zatvoriť okno po dokončení rozbaľovania Set destination… ExpanderMenu Nastaviť cieľ… @@ -34,6 +34,7 @@ Automatically show contents listing ExpanderPreferences Automaticky zobrazovať OK ExpanderPreferences OK Leave destination folder path empty ExpanderPreferences Ponechať cestu k cieľovému priečinku prázdnu Failed to create the destination folder. ExpanderWindow Nepodarilo sa vytvoriť cieľový priečinok. +Select '%s'… DirectoryFilePanel Vybrať „%s“… Create ExpanderWindow Vytvoriť The folder was either moved, renamed or not\nsupported. ExpanderWindow Priečinok bol presunutý, premenovaný\nalebo nie je podporovaný. The file doesn't exist ExpanderWindow Súbor neexistuje diff --git a/data/catalogs/apps/firstbootprompt/sk.catkeys b/data/catalogs/apps/firstbootprompt/sk.catkeys index 7a8fedb577..db2372494d 100644 --- a/data/catalogs/apps/firstbootprompt/sk.catkeys +++ b/data/catalogs/apps/firstbootprompt/sk.catkeys @@ -1,5 +1,6 @@ -1 slovak x-vnd.Haiku-FirstBootPrompt 988630706 +1 slovak x-vnd.Haiku-FirstBootPrompt 2649051796 Custom BootPromptWindow Vlastná +Boot to Desktop BootPromptWindow Spustiť pracovné prostredie Thank you for trying out Haiku! We hope you'll like it!\n\nYou can select your preferred language and keyboard layout from the list on the left which will then be used instantly. You can easily change both settings from the Desktop later on on the fly.\n\nDo you wish to run the Installer or continue booting to the Desktop?\n BootPromptWindow For other languages, a note could be added: \"Note: Localization of Haiku applications and other components is an on-going effort. You will frequently encounter untranslated strings, but if you like, you can join in the work at .\" Ďakujeme, že skúšate Haiku! Dúfame, že sa vám bude páčiť!\n\nZo zoznamu vľavo môžete vybrať váš preferovaný jazyk a rozloženie klávesnice, ktoré sa ihneď použije. Obe nastavenia môžete neskôr jednoducho za behu zmeniť z pracovného prostredia.\n\nChcete spustiť inštalátor alebo pokračovať v zavedení pracovného prostredia?\n Language BootPromptWindow Jazyk Welcome to Haiku! BootPromptWindow Vitajte v Haiku! diff --git a/data/catalogs/apps/fontdemo/sk.catkeys b/data/catalogs/apps/fontdemo/sk.catkeys index b5c5877045..0c45bcc216 100644 --- a/data/catalogs/apps/fontdemo/sk.catkeys +++ b/data/catalogs/apps/fontdemo/sk.catkeys @@ -1,4 +1,4 @@ -1 slovak x-vnd.Haiku-FontDemo 1300625863 +1 slovak x-vnd.Haiku-FontDemo 3522850500 Outline: ControlView Obrys: Size: 50 ControlView Veľkosť: 50 Stop cycling ControlView Zastaviť opakovanie @@ -14,6 +14,7 @@ Rotation: 0 ControlView Otočenie: 0 Drawing mode: ControlView Režim kreslenia: Haiku, Inc. ControlView Haiku, Inc. Controls FontDemo Ovládacie prvky +FontDemo System name Demo Písiem Outline: %d ControlView Obrys: %d Text: ControlView Text: Antialiased text ControlView Antialiasovaný text diff --git a/data/catalogs/apps/haikudepot/sk.catkeys b/data/catalogs/apps/haikudepot/sk.catkeys new file mode 100644 index 0000000000..899de9e6a8 --- /dev/null +++ b/data/catalogs/apps/haikudepot/sk.catkeys @@ -0,0 +1,153 @@ +1 slovak x-vnd.Haiku-HaikuDepot 2365524674 +Name PackageListView Názov +Available packages MainWindow Dostupné balíky +Open %DeskbarLink% PackageManager Otvoriť %DeskbarLink% +Close RatePackageWindow Zatvoriť +The captcha puzzle needs to be solved. UserLoginWindow Je potrebné vyriešiť captcha. +Changelog PackageInfoView Záznam zmien +Your rating: RatePackageWindow Vaše hodnotenie: +The passwords do not match. UserLoginWindow Heslá sa nezhodujú. +Log in… MainWindow Prihlásiť sa… +Rate %Package% RatePackageWindow Ohodnotiť %Package% +Stability: RatePackageWindow Stabilita: +Click a package to view information PackageInfoView Informácie zobrazíte kliknutím na balík +Other users can see this rating RatePackageWindow Toto hodnotenie uvidia aj iní používatelia +Stability RatePackageWindow Stabilita +for %Version% PackageInfoView %Version% +No changelog available. PackageInfoView Záznam zmien nie je dostupný. +Depot: FilterView Zdroj: +Description PackageListView Popis +Install PackageManager Nainštalovať +Source packages MainWindow Zdrojové balíky +Authentication failed. The user does not exist or the wrong password was supplied. UserLoginWindow Overenie zlyhalo. Používateľ neexistuje alebo bolo zadané chybné heslo. +Account created successfully. You can now rate packages and do other useful things. UserLoginWindow Účet bol úspešne vytvorený. Teraz môžete hodnotiť balíky a robiť ďalšie užitočné veci. +Tools MainWindow Nástroje +HaikuDepot System name HaikuDepot +Close UserLoginWindow Zatvoriť +Rate package… PackageInfoView Ohodnotiť balík… +Category FilterView Kategória +Uninstall PackageManager Odinštalovať +An error occurred while obtaining the package list: %message% MainWindow Vyskytla sa chyba pri získavaní zoznamu balíkov: %message% +Your rating was updated successfully. RatePackageWindow Vaše hodnotenie bolo úspešne aktualizované. + PackageInfoView <žiadne info> +Starting the package daemon failed:\n\n%Error% App Spustenie démona balíkov zlyhalo:\n\n%Error% +An error occurred while initializing the package manager: %message% MainWindow Vyskytla sa chyba pri inicializovaní správcu balíkov: %message% +Email address: UserLoginWindow Emailová adresa: +Your rating was uploaded successfully. You can update or remove it at any time by rating the package again. RatePackageWindow Vaše hodnotenie bolo úspešne nahrané. Môžete ho kedykoľvek aktualizovať alebo odstrániť tým, že balík znova ohodnotíte. +Very unstable RatePackageWindow Veľmi nestabilný + PackageContentsView +The username is already taken. Please choose another. UserLoginWindow Toto používateľské meno už niekto používa. Prosím, vyberte si iné. +Close PackageManager Zatvoriť +Not logged in MainWindow Neprihlásený +The authentication was successful. UserLoginWindow Overenie prebehlo úspešne. +Installed packages MainWindow Nainštalované balíky +Status PackageListView Stav +Switch account… MainWindow Prepnúť účet… +Ignore UserLoginWindow Ignorovať +Language UserLoginWindow Jazyk +The password is too weak or invalid. Please use at least 8 characters with at least 2 numbers and 2 upper-case letters. UserLoginWindow Heslo je príliš slabé alebo je neplatné. Použite najmenej 8 znakov s aspoň 2 číslami a 2 veľkými písmenami. +Rate package RatePackageWindow Ohodnotiť balík +Development Model Vývoj +Fatal error PackageManager Kritická chyba +The user name needs to be at least 3 letters long. UserLoginWindow Meno používateľa musí byť aspoň 3 písmená dlhé. +Log in UserLoginWindow Prihlásiť sa +Repeat pass phrase: UserLoginWindow Zopakujte heslo: +Ratings PackageInfoView Hodnotenia +But none could be listed here, sorry. UserLoginWindow Ale žiadne tu nebolo možné uviesť, ľutujeme. +System & Utilities Model Systém a nástroje +Inactive PackageListView Neaktívne +Refresh depots MainWindow Obnoviť zdroje +The package action could not be scheduled: %Error% PackageInfoView Operáciu s balíkom nebolo možné naplánovať: %Error% +Science & Mathematics Model Veda a matematika +Main Menu MainWindow Hlavné menu +(%Votes%) PackageInfoView (%Votes%) +You have not solved the captcha puzzle correctly. UserLoginWindow Nevyriešili ste správne captcha. +Success UserLoginWindow Úspech +HaikuDepot needs the package daemon to function, and it appears to be not running.\nWould you like to start it now? App HaikuDepot vyžaduje funkčný démon balíkov. Zdá sa, že nebeží.\nChcete ho teraz spustiť? +Downloading: PackageInfoView Sťahuje sa: +Mostly stable RatePackageWindow Prevažne stabilný +There was a puzzling response from the web service. RatePackageWindow Webová služba poslala neočakávanú odpoveď. +Log out MainWindow Odhlásiť sa +Education Model Vzdelávanie +Search terms: FilterView Hľadaný výraz: +%Version% PackageInfoView %Version% +No user ratings available. PackageInfoView Používateľské hodnotenie nie je dostupné. +Failed to update rating RatePackageWindow Nepodarilo sa aktualizovať hodnotenie +Does not start RatePackageWindow Nespúšťa sa +An error occurred while refreshing the repository: %error% (%details%) MainWindow Vyskytla sa chyba pri obnovovaní zdroja: %error% (%details%) +It was not possible to contact the web service. RatePackageWindow Nepodarilo sa kontaktovať webovú službu. +Only featured packages MainWindow Iba odporúčané balíky +There are problems in the form:\n\n UserLoginWindow Vyskytli sa problémy s formulárom:\n\n +The package was not found by the web service. This probably means that it comes from a depot which is not tracked there. Rating such packages is unfortunately not supported. RatePackageWindow Webová služba nenašla balík. To pravdepodobne znamená, že to pochádza zo zdroja, ktorý tu nie je uvedený. Hodnotenie takých balíkov bohužiaľ nie je podporované. +Create account UserLoginWindow Vytvoriť účet +Productivity Model Kancelária +No, quit HaikuDepot App Nie, ukončiť HaikuDepot +Authentication failed UserLoginWindow Overenie totožnosti zlyhalo +Logged in as %User% MainWindow Prihlásený ako %User% +9999.99 KiB PackageListView 9999.99 KiB +Language RatePackageWindow Jazyk +Size PackageListView Veľkosť +Failed to create or update rating: %s\n RatePackageWindow Nepodarilo sa vytvoriť alebo aktualizovať hodnotenie: %s\n +You need to be logged into an account before you can rate packages. MainWindow Musíte byť prihlásení do účtu predtým, než budete môcť hodnotiť balíky. + It responded with: RatePackageWindow Prišla odpoveď: +User name: UserLoginWindow Používateľské meno: +User Menu MainWindow Používateľské menu +Unstable but usable RatePackageWindow Nestabilný, ale použiteľný +The email address appears to be malformed. UserLoginWindow Zdá sa, že formát emailovej adresy je chybný. +Games Model Hry +Rating PackageListView Hodnotenie +(%Votes%) FeaturedPackagesView (%Votes%) +There was a puzzling response from the web service. UserLoginWindow Od webovej služby prišla neočakávaná odpoveď. +Graphics Model Grafika +Local MainWindow Miestne +Close MainWindow Zatvoriť +Preferred language: UserLoginWindow Preferovaný jazyk: +Failed to rate package RatePackageWindow Nepodarilo sa ohodnotiť balík +Internet & Network Model Internet a siete +Cancel MainWindow Zrušiť +Quit HaikuDepot App Ukončiť HaikuDepot +Input validation UserLoginWindow Overenie platnosti vstupu +Update RatePackageWindow Aktualizovať +Video Model Video +All categories FilterView Všetky kategórie +Contents PackageInfoView Obsah +An error occurred while refreshing the repository: %error% MainWindow Vyskytla sa chyba pri obnovovaní repozitára: %error% +Try again App Skúsiť znova +Login or Create account MainWindow Prihlásiť sa alebo Vytvoriť účet +Pending… PackageListView Čaká sa… +Depot FilterView Zdroj +{0, plural, one{# item} other{# items}} PackageListView {0, plural, one{# položka} few{# položky} other{# položiek}} +OK PackageInfoView OK +Uninstalled PackageListView Odinštalované +Show MainWindow Zobraziť +Stable RatePackageWindow Stabilný +Unknown PackageListView Neznámy +All depots FilterView Všetky repozitáre +Comment language: RatePackageWindow Jazyk komentára: +Pass phrase: UserLoginWindow Heslo: +Screenshot ScreenshotWindow Snímka obrazovky +Not specified RatePackageWindow Neuvedené +Available PackageListView Dostupné +Develop packages MainWindow Vývoj balíkov +n/a PackageInfoView n/a +If you do not provide an email address, you will not be able to reset your password if you forget it. UserLoginWindow Ak nezadáte emailovú adresu, nebudete môcť obnoviť svoje heslo, ak ho zabudnete. + It responded with: UserLoginWindow Prišla odpoveď: +Authentication failed. Connection to the service failed. UserLoginWindow Overenie totožnosti zlyhalo. Pripojenie k službe zlyhalo. +Cancel RatePackageWindow Zrušiť +Package action failed PackageInfoView Operácia s balíkom zlyhala +OK UserLoginWindow OK +Send RatePackageWindow Poslať +- no package size - +Category: FilterView Kategória: +Failed to create account UserLoginWindow Nepodarilo sa vytvoriť účet +There are problems with the data you entered:\n\n UserLoginWindow Vyskytli sa problémy v údajoch, ktoré ste zadali:\n\n +Featured packages MainWindow Odporúčané balíky +Start package daemon App Spustiť démona balíkov +Success RatePackageWindow Úspešné +Business Model Obchod +Audio Model Zvuk +About PackageInfoView O aplikácii +Active PackageListView Aktívny +It was not possible to contact the web service. UserLoginWindow Nepodarilo sa kontaktovať webovú službu. +Failed to create account: %s\n UserLoginWindow Nepodarilo sa vytvoriť účet: %s\n +Cancel UserLoginWindow Zrušiť diff --git a/data/catalogs/apps/icon-o-matic/sk.catkeys b/data/catalogs/apps/icon-o-matic/sk.catkeys index b15a3941f3..7ac83392b2 100644 --- a/data/catalogs/apps/icon-o-matic/sk.catkeys +++ b/data/catalogs/apps/icon-o-matic/sk.catkeys @@ -1,4 +1,4 @@ -1 slovak x-vnd.haiku-icon_o_matic 2373738110 +1 slovak x-vnd.haiku-icon_o_matic 3554185674 Select All Icon-O-Matic-PathManipulator Vybrať všetky Add Style Icon-O-Matic-AddStylesCmd Pridať štýl Color (#%02x%02x%02x) Style name after dropping a color Farba (#%02x%02x%02x) @@ -42,6 +42,7 @@ Untitled Icon-O-Matic-Main Bez názvu Multi Set Multi Set (property name) Multi množina any of the other lists to Empty property list - 2nd line ľubovoľný z ostatných zoznamov na Save as… Icon-O-Matic-Menu-File Uložiť ako… +Don't save Icon-O-Matic-Menu-Settings Neukladať Change Color Icon-O-Matic-SetColorCmd Zmeniť farbu Style Icon-O-Matic-Menus Štýl Icon-O-Matic-PathCmd @@ -66,16 +67,19 @@ HVIF Source Code Icon-O-Matic-SavePanel Zdrojový kód HVIF Reset Transformations Icon-O-Matic-ResetTransformationCmd Obnoviť transformácie Settings Icon-O-Matic-Menus Nastavena All Icon-O-Matic-Properties Všetky +The text you are trying to import is quite long, are you sure? Icon-O-Matic-StyledTextImport Text, ktorý sa pokúšate importovať je dosť dlhý, ste si istý? Multi Paste Properties Icon-O-Matic-Properties Vlastnosti multi-vloženia Undo Icon-O-Matic-Main Vrátiť Click on a shape above Empty transformers list - 1st line Kliknite na tvar hore Add Shape Icon-O-Matic-AddShapesCmd Pridať tvar Contour Transformation Obrys +Save changes to current icon before closing? Icon-O-Matic-Menu-Settings Uložiť zmeny v aktuálnej ikone pred zatvorením? Icon-O-Matic-Menu-Edit Perspective Transformation Perspektíva Move Transformer Icon-O-Matic-MoveTransformersCmd Transformátor pohybu Opacity Icon-O-Matic-PropertyNames Krytie Add with path Icon-O-Matic-ShapesList Pridať s cestou +Export icon Dialog title Exportovať ikonu Gradient type Icon-O-Matic-StyleTypes Typ farebného prechodu Icon-O-Matic System name Icon-O-Matic Cancel Icon-O-Matic-Menu-Settings Zrušiť @@ -183,9 +187,11 @@ Save Icon-O-Matic-Menu-File Uložiť Append… Icon-O-Matic-Menu-File Pripojiť… Move Path Icon-O-Matic-MovePathsCmd Presunúť cestu Overwrite Icon-O-Matic-SVGExport Prepísať +Text too long Icon-O-Matic-StyledTextImport Text je príliš dlhý Freeze Shapes Icon-O-Matic-FreezeTransformationCmd Zmraziť tvary Split Control Point Icon-O-Matic-SplitPointsCmd Rozdeliť riadiaci bod Open… Icon-O-Matic-Menu-File Otvoriť… +Save icon Dialog title Uložiť ikonu Color (#%02x%02x%02x) Icon-O-Matic-StyledTextImport Farba (#%02x%02x%02x) Edit Gradient Icon-O-Matic-SetGradientCmd Upraviť farebný prechod Clean Up Path Icon-O-Matic-CleanUpPathCmd Vyčistiť cestu diff --git a/data/catalogs/apps/installer/sk.catkeys b/data/catalogs/apps/installer/sk.catkeys index 1a9e8b07c6..7785824046 100644 --- a/data/catalogs/apps/installer/sk.catkeys +++ b/data/catalogs/apps/installer/sk.catkeys @@ -1,4 +1,5 @@ -1 slovak x-vnd.Haiku-Installer 528139900 +1 slovak x-vnd.Haiku-Installer 3421507633 +Boot Manager, the application to configure the Haiku boot menu, could not be launched. InstallerWindow Správcu zavádzania, aplikáciu na nastavenie zavádzacieho menu Haku, sa nepodarilo spustiť. Are you sure you want to abort the installation and restart the system? InstallerWindow Ste si istí, že chcete zrušiť inštaláciu a reštartovať systém? Installer\n\twritten by Jérôme Duval and Stephan Aßmus\n\tCopyright 2005-2010, Haiku.\n\n InstallerApp Inštalátor\n\tnapísal Jérôme Duval a Stephan Aßmus\n\tCopyright 2005-2010, Haiku.\n\n \t}\n\n InstallerApp \t}\n\n @@ -16,12 +17,15 @@ Are you sure you want to install onto the current boot disk? The Installer will Quit Boot Manager InstallerWindow Ukončiť Správcu zavádzania Stop InstallerWindow Zastaviť \t\tchainloader +1\n InstallerApp \t\tchainloader +1\n +If the os-prober approach doesn't work for you, GRUB 2 uses an extra configuration file to add custom entries to the boot menu. To add them to the top, you have to create/edit a file by launching your favorite editor from a Terminal like this:\n\n InstallerApp Ak vám prístup založený na os-prober nevyhovuje, GRUB 2 používa ďalší konfiguračný súbor na pridanie vlastných položiek do zavádzacieho menu. Ak ich chcete pridať na vrch menu, musíte vytvoriť/upraviť súbor spustením vášho obľúbeného editora z terminálu, takto:\n\n OK InstallerApp OK Choose the source and destination disk from the pop-up menus. Then click \"Begin\". InstallerWindow Zvoľte zdrojový a cieľový disk z roletových menu. Potom kliknite na „Začať“. \t# Haiku on /dev/sda7\n InstallerApp \t# Haiku na /dev/sda7\n +Failed to launch Boot Manager InstallerWindow Nepodarilo sa spustiť Správcu zavádzania Install from: InstallerWindow Inštalovať z: %1ld of %2ld InstallerWindow number of files copied %1ld z %2ld IMPORTANT INFORMATION BEFORE INSTALLING HAIKU\n\n InstallerApp DÔLEŽITÉ INFORMÁCIE PRED INŠTALÁCIOU HAIKU\n\n +GRUB's naming scheme for partitions is: (hdN,n)\n\n InstallerApp Konvencia pomenovania oblastí v GRUB je: (hdN,n)\n\n Continue InstallerWindow In alert after pressing Stop Pokračovať Write boot sector to '%s' InstallerWindow Zapísať zavádzací sektor na „%s“ Collecting copy information. InstallProgress Zhromažďujú sa informácie o kopírovaní. @@ -42,6 +46,7 @@ README InstallerApp README The destination disk may not have enough space. Try choosing a different disk or choose to not install optional items. InstallProgress Cieľový disk nemusí mať dostatok miesta. Skúste zvoliť iný disk alebo zvoľte neinštalovať voliteľné položky. Please close the Boot Manager and DriveSetup windows before closing the Installer window. InstallerWindow Prosím, zatvorte okná Správcu zavádzania a Nastavenie diskových oblastí predtým, než zatvoríte okno Inštalátora. Scanning for disks… InstallerWindow Zisťujú sa disky… +2.2) GRUB 2\n InstallerApp 2.2) GRUB 2\n The disk can't be mounted. Please choose a different disk. InstallProgress Disk nie je možné pripojiť. Prosím, zvoľte iný disk. ?? of ?? InstallerWindow Unknown progress ?? z ?? \tmenuentry \"Haiku Alpha\" {\n InstallerApp \tmenuentry \"Haiku Alpha\" {\n @@ -86,6 +91,7 @@ With GRUB 2 the first logical partition always has the number \"5\", regardless Write boot sector InstallerWindow Zapísať zavádzací sektor Cancel InstallerWindow Zrušiť DriveSetup, the application to configure disk partitions, could not be launched. InstallerWindow Nastavenie diskových oblastí, aplikáciu na konfiguráciu diskových oblastí, nebolo možné spustiť. +The target volume is not empty. Are you sure you want to install anyway?\n\nNote: The 'system' folder will be a clean copy from the source volume but will retain its settings folder, all other folders will be merged, whereas files and links that exist on both the source and target volume will be overwritten with the source volume version. InstallProgress Cieľový zväzok nie je prázdny. Ste si istý, že napriek tomu chcete pokračovať v inštalácii?\n\nPozn.: Priečinok „system“ bude čistou kópiou zo zdrojového zväzku, ale zachová si priečinok nastavení, všetky ostatné priečinky budú zlúčené, zatiaľ čo súbory a odkazy existujúce zároveň na zdrojovom aj cieľovom zväzku budú prepísané verziou zo zdrojového zväzku. No optional packages available. PackagesView Nie sú dostupné žiadne voliteľné balíky. All hard disks start with \"hd\".\n InstallerApp Všetky pevné disky začínajú „hd“.\n Continue InstallerApp Pokračovať diff --git a/data/catalogs/apps/launchbox/sk.catkeys b/data/catalogs/apps/launchbox/sk.catkeys index 84b236e64b..98b058fedc 100644 --- a/data/catalogs/apps/launchbox/sk.catkeys +++ b/data/catalogs/apps/launchbox/sk.catkeys @@ -1,4 +1,4 @@ -1 slovak x-vnd.Haiku-LaunchBox 3016105370 +1 slovak x-vnd.Haiku-LaunchBox 3692177981 New LaunchBox Nový Set description… LaunchBox Nastaviť popis… Vertical layout LaunchBox Zvislé rozloženie @@ -6,6 +6,7 @@ OK LaunchBox OK Pad 1 LaunchBox Oblasť 1 last chance LaunchBox posledná šanca Quit LaunchBox Ukončiť +Open containing folder LaunchBox Otvoriť nadradený adresár Clear button LaunchBox Tlačidlo Vyčistiť LaunchBox System name Spúšťač Ignore double-click LaunchBox Ignorovať dvojité kliknutie diff --git a/data/catalogs/apps/magnify/sk.catkeys b/data/catalogs/apps/magnify/sk.catkeys index 3bdf6af551..32365518c5 100644 --- a/data/catalogs/apps/magnify/sk.catkeys +++ b/data/catalogs/apps/magnify/sk.catkeys @@ -1,9 +1,10 @@ -1 slovak x-vnd.Haiku-Magnify 233476436 +1 slovak x-vnd.Haiku-Magnify 2046693978 no clip msg\n In console, when clipboard is empty after clicking Copy image správa prázdna schránka\n Make square Magnify-Main Urobiť štvorec Copy image Magnify-Main Kopírovať obrázok usage: magnify [size] (magnify size * size pixels)\n Console použitie: magnify [veľkosť] (veľkosť zväčšenia * veľkosť pixlov)\n Stick coordinates Magnify-Main Prilepiť súradnice +%width x %height @ {0, plural, one{# pixel/pixel} other{# pixels/pixel}} Magnify-Main %width x %height @ {0, plural, one{# pixel/pixel} few{# pixely/pixel} other{# pixelov/pixel}} Hide/Show grid Magnify-Main Skryť/zobraziť mriežku magnify: size must be a multiple of 4\n Console lupa: veľkosť musí byť násobok 4\n Decrease pixel size Magnify-Main Zmenšiť veľkosť pixla diff --git a/data/catalogs/apps/mail/sk.catkeys b/data/catalogs/apps/mail/sk.catkeys index 3b82d49394..f78ef68556 100644 --- a/data/catalogs/apps/mail/sk.catkeys +++ b/data/catalogs/apps/mail/sk.catkeys @@ -1,7 +1,8 @@ -1 slovak x-vnd.Be-MAIL 2046881004 +1 slovak x-vnd.Be-MAIL 1865394837 View Mail Zobraziť %d - Date Mail %d - Dátum Attach attributes: Mail Pripojiť atribúty: +Unknown Mail Neznáma Inconsistency occurred in the undo/redo buffer. Mail V zásobníku vrátení/opakovaní sa vyskytla nekonzistencia. An error occurred trying to save the attachment. Mail Vyskytla sa chyba pri pokuse uložiť prílohu. Copy to new Mail Skopírovať ako novú @@ -63,7 +64,7 @@ Print… Mail Tlačiť… Warn unencodable: Mail Upozorniť na nezakódovateľné: Quit Mail Ukončiť %n - Full name Mail %n - Plný názov - Read Mail Prečítené + Read Mail Prečítané UTF-8 Mail This string is used as a key to set default message compose encoding. It must be correct IANA name from http://cgit.haiku-os.org/haiku/tree/src/kits/textencoding/character_sets.cpp Translate it only if you want to change default message compose encoding for your locale. If you don't know what is it and why it may needs changing, just leave \"UTF-8\". UTF-8 Trash Mail Kôš Default account: Mail Predvolený účet: @@ -107,6 +108,7 @@ Close Mail Zatvoriť No matches Mail Žiadne zhody The mail_daemon is not running. The message is queued and will be sent when the mail_daemon is started. Mail mail_daemon nebeží. Správa bola zaradená do frontu a bude odoslaná po spustení mail_daemon. Really delete this signature? This cannot be undone. Mail Skutočne zmazať tento podpis? Túto operáciu nemožno vrátiť. +Save this message as a draft before closing? Mail Uložiť túto správu ako rozpísanú pred ukončením? Open Mail Otvoriť draft B_USER_DIRECTORY/mail/draft rozpísané Quote Mail Citovať @@ -118,6 +120,7 @@ Send message Mail Poslať správu Remove enclosure Mail Odstrániť prílohu Sorry, could not find an application that supports the 'Person' data type. Mail Ľutujeme, nebola nájdená aplikácia podporujúca dátový typ „Osoba“. Delete Mail Zmazať +Don't send Mail Neposielať Leave as '%s' Mail Ponechať ako „%s“ Copy Mail Kopírovať Mail couldn't find its dictionary. Mail Pošta nenašla svoj slovník. @@ -132,6 +135,7 @@ Font: Mail Písmo: (Address unavailable) Mail (Adresa nedostupná) Save address Mail Uložiť adresu Queries Mail Požiadavky +Send this message before closing? Mail Poslať túto správu pred zatvorením? Save Mail Uložiť Random Mail Náhodný Close and Mail Zatvoriť a @@ -141,7 +145,9 @@ Open attachment Mail Otvoriť prílohu sent B_USER_DIRECTORY/mail/sent odoslané (Date unavailable) Mail (Dátum nedostupný) Put your favorite e-mail queries and query templates in this folder. Mail Do tohto priečinka uložte svoje obľúbené požiadavky a šablóny požiadaviek súvisiace s emailom. +Spam Mail Spam Reply Mail Odpovedať +Encoding Mail Kódovanie From: Mail Od: Couldn't open this signature. Sorry. Mail Nebolo možné otvoriť tento podpis. Ľutujeme. Open draft Mail Otvoriť rozpísané diff --git a/data/catalogs/apps/mediaconverter/sk.catkeys b/data/catalogs/apps/mediaconverter/sk.catkeys index 16b18d712d..c510a0f879 100644 --- a/data/catalogs/apps/mediaconverter/sk.catkeys +++ b/data/catalogs/apps/mediaconverter/sk.catkeys @@ -1,9 +1,14 @@ -1 slovak x-vnd.Haiku-MediaConverter 449941121 +1 slovak x-vnd.Haiku-MediaConverter 341686525 Video using parameters form settings MediaConverter Video používajúce parametre z nastavení +{0, plural, one{The file was not recognized as a supported media file:} other{# files were not recognized as supported media files:}} MediaConverter {0, plural, one{Súbor nebol rozpoznaný ako podporovaný multimediálny súbor:} few{# súbory neboli rozpoznané ako podporované multimediálne súbory:} other{# súborov nebolo rozpoznaných ako podporované multimediálne súbory:}} Video encoding: MediaConverter Kódovanie videa: +%u x %u, %.2ffps MediaFileInfo Width x Height, fps %u x %u, %.2ffps +Error read audio frame %lld MediaConverter Chyba čítania zvukového rámca %lld No audio Audio codecs list Bez zvuku Error MediaConverter Chyba +{0, plural, one{# bit} other{# bits}} MediaFileInfo {0, plural, one{# bit} few{# bity} other{# bitov}} Error loading a file MediaConverter Chyba pri načítaní súboru +Error read video frame %lld MediaConverter Chyba čítania video rámca %lld File Error MediaConverter-FileInfo Chyba súboru Open… Menu Otvoriť… Start [ms]: MediaConverter Začiatok [ms]: @@ -14,6 +19,7 @@ MediaConverter System name Konvertor multimédií No video Video codecs list Bez videa Duration: MediaConverter-FileInfo Trvanie: OK MediaConverter OK +%.1f kHz mono MediaFileInfo %.1f kHz mono Error converting '%filename' MediaConverter Chyba pri konverzii „%filename“ Low MediaConverter Nízka Conversion completed MediaConverter Konverzia dokončená @@ -21,7 +27,11 @@ Audio: MediaConverter-FileInfo Zvuk: OK MediaConverter-FileInfo OK seconds MediaFileInfo sekúnd Source files MediaConverter Zdrojové súbory +Error writing video frame %lld MediaConverter Chyba zápisu video rámca %lld +{0, plural, one{# frame} other{# frames}} MediaFileInfo {0, plural, one{# rámec} few{# rámce} other{# rámcov}} +Error writing audio frame %lld MediaConverter Chyba zápisu zvukového rámca %lld Cancelling MediaConverter Ruší sa +{0, plural, one{# byte} other{# bytes}} MediaFileInfo {0, plural, one{# bajt} other{# bajty} other{# bajtov}} Error loading files MediaConverter Chyba pri načítaní súborov Cancel MediaConverter Zrušiť None available Video codecs Žiadny nie je dostupný @@ -49,9 +59,11 @@ Drop media files onto this window MediaConverter Pretiahnite súbory do tohto o Audio encoding: MediaConverter Kódovanie zvuku: Audio quality not supported MediaConverter Kvalita zvuku nie je podporovaná File Menu Súbor +%.1f kHz stereo MediaFileInfo %.1f kHz stereo Convert MediaConverter Konvertovať Writing audio track: %ld%% complete MediaConverter Zápis zvukovej stopy: %ld%% hotovo Video quality: %3d%% MediaConverter Kvalita videa: %3d%% +%.1f kHz %ld channel MediaFileInfo %.1f kHz %ld kanál Output folder MediaConverter Výstupný priečinok Audio quality: %3d%% MediaConverter Kvalita zvuku: %3d%% An error has occurred reading the file info.\n\nError : MediaConverter-FileInfo Vyskytla sa chyba pri čítaní informácií súboru.\n\nChyba: diff --git a/data/catalogs/apps/mediaplayer/sk.catkeys b/data/catalogs/apps/mediaplayer/sk.catkeys index 34b6cf7fde..0082f465ea 100644 --- a/data/catalogs/apps/mediaplayer/sk.catkeys +++ b/data/catalogs/apps/mediaplayer/sk.catkeys @@ -1,4 +1,4 @@ -1 slovak x-vnd.Haiku-MediaPlayer 2390862402 +1 slovak x-vnd.Haiku-MediaPlayer 3805057997 raw audio MediaPlayer-InfoWin nespracovaný zvuk Location MediaPlayer-InfoWin Umiestnenie 1.85 : 1 (American) MediaPlayer-Main 1.85 : 1 (americký) @@ -20,10 +20,12 @@ Subtitle placement: MediaPlayer-SettingsWindow Umiestnenie titulkov: Close MediaPlayer-Main Zatvoriť Some files could not be moved into Trash. MediaPlayer-RemovePLItemsCmd Niektoré súbory nebolo možné presunúť do Koša. MediaPlayer-InfoWin +Seek MediaPlayer-Main Posunúť Open MediaPlayer-Main Otvoriť Next MediaPlayer-Main Ďalší OK MediaPlayer-SettingsWindow OK Track %d MediaPlayer-Main Stopa %d +Gets/sets the current playing position in microseconds. MediaPlayer-Main Zistí/nastaví aktuálnu pozíciu prehrávania v mikrosekundách. 2.35 : 1 (Cinemascope) MediaPlayer-Main 2.35 : 1 (Cinemascope) Display mode MediaPlayer-InfoWin Zobrazovací režim Medium MediaPlayer-SettingsWindow Stredná @@ -66,6 +68,7 @@ Select all MediaPlayer-PlaylistWindow Vybrať všetky Move Entry MediaPlayer-MovePLItemsCmd Presunúť položku Open MediaPlayer-PlaylistWindow Otvoriť Stop playing. MediaPlayer-Main Zastaviť prehrávanie. +Seek by the specified amounts of microseconds. MediaPlayer-Main Posunie o zadaný počet mikrosekúnd. The file '%filename' could not be opened.\n\n MediaPlayer-Main Súbor „%filename“ nebolo možné otvoriť.\n\n Error: MediaPlayer-RemovePLItemsCmd Chyba: Audio MediaPlayer-InfoWin Zvuk @@ -88,6 +91,7 @@ Automatically start playing MediaPlayer-SettingsWindow Automaticky spustiť pre Track Video Track Menu Stopa Internal error (locking failed). Saving the playlist failed. MediaPlayer-PlaylistWindow Vnútorná chyba (zamykanie zlyhalo). Ukladanie zoznamu stôp zlyhalo. View options MediaPlayer-SettingsWindow Možnosti zobrazenia +none MediaPlayer-Main žiadne Play mode MediaPlayer-SettingsWindow Režim prehrávania Remove Entries MediaPlayer-RemovePLItemsCmd Odstrániť položky Video track MediaPlayer-Main Video stopa @@ -97,6 +101,7 @@ All files could not be moved into Trash. MediaPlayer-RemovePLItemsCmd Nie všet PlaylistItem-title Track Audio Track Menu Stopa unknown format MediaPlayer-InfoWin neznámy formát +Position MediaPlayer-Main Pozícia MediaPlayer-PlaylistWindow Skip to the next track. MediaPlayer-Main Preskočiť na ďalšiu stopu. Play MediaPlayer-Main Prehrať @@ -109,12 +114,14 @@ Error: MediaPlayer-Main Chyba: Large MediaPlayer-SettingsWindow Veľká Bottom of video MediaPlayer-SettingsWindow Spodok videa DrawBitmap MediaPlayer-InfoWin Nakresliť bitmapu +Total duration: %s MediaPlayer-PlaylistWindow Celkové trvanie: %s Stop MediaPlayer-Main Zastaviť MediaPlayer-InfoWin raw video MediaPlayer-InfoWin nespracované video Volume of background clips MediaPlayer-SettingsWindow Hlasitosť klipov na pozadí Internal error (out of memory). Saving the playlist failed. MediaPlayer-PlaylistWindow Vnútorná chyba (nedostatok pamäte). Ukladanie zoznamu stôp zlyhalo. Hide interface MediaPlayer-Main Skryť rozhranie +Open clips MediaPlayer-Main Otvoriť klipy Copy Entry MediaPlayer-CopyPLItemsCmd Kopírovať položku none Subtitles menu žiadne Move file to Trash MediaPlayer-PlaylistWindow Presunúť súbor do Koša @@ -131,11 +138,14 @@ Edit MediaPlayer-PlaylistWindow Upraviť Start media server MediaPlayer-Main Spustiť multimediálny server %.3f fps MediaPlayer-InfoWin %.3f fps Toggle fullscreen. MediaPlayer-Main Prepnúť celoobrazovkový režim. +Gets the duration of the currently playing item in microseconds. MediaPlayer-Main Získa trvanie aktuálne prehrávanej položky v mikrosekundách. ToggleFullscreen MediaPlayer-Main Prepnúť celoobrazovkový režim +{0, plural, =1{Mono} =2{Stereo} other{# Channels}} MediaPlayer-InfoWin {0, plural, =1{Mono} =2{Stereo} other{# kanálov}} PlaylistItem-name OK MediaPlayer-PlaylistWindow OK none Audio track menu žiadne Gets/sets the volume (0.0-2.0). MediaPlayer-Main Zistí/nastaví hlasitosť (0.0-2.0). +Duration MediaPlayer-Main Trvanie Playlist… MediaPlayer-Main Zoznam stôp… PlaylistItem-author Save as… MediaPlayer-PlaylistWindow Uložiť ako… diff --git a/data/catalogs/apps/midiplayer/sk.catkeys b/data/catalogs/apps/midiplayer/sk.catkeys index adac42d5a3..4b8f76641d 100644 --- a/data/catalogs/apps/midiplayer/sk.catkeys +++ b/data/catalogs/apps/midiplayer/sk.catkeys @@ -1,11 +1,13 @@ -1 slovak x-vnd.Haiku-MidiPlayer 471142057 +1 slovak x-vnd.Haiku-MidiPlayer 1046133011 None Main Window Žiadna Live input: Main Window Živý vstup: Stop Main Window Zastaviť +This tiny program\nKnows how to play thousands of\nCheesy sounding songs Main Application This is a haiku. First line has five syllables, second has seven and last has five again. Create your own. Tento drobný program\ndokáže prehrať tisíce\nlacno znejúcich piesní Cavern Main Window Jaskyňa Volume: Main Window Hlasitosť: Reverb: Main Window Ozvena: OK Main Window OK +Loading instruments… Scope View Načítajú sa nástroje… Off Main Window Vypnúť Dungeon Main Window Temnica Play Main Window Prehrať diff --git a/data/catalogs/apps/packageinstaller/sk.catkeys b/data/catalogs/apps/packageinstaller/sk.catkeys index a2143eb0be..dbdb4c52bb 100644 --- a/data/catalogs/apps/packageinstaller/sk.catkeys +++ b/data/catalogs/apps/packageinstaller/sk.catkeys @@ -1,4 +1,4 @@ -1 slovak x-vnd.Haiku-PackageInstaller 172019075 +1 slovak x-vnd.Haiku-PackageInstaller 591566249 Install to: PackageView Inštalovať do: OK PackageView OK Accept PackageTextViewer Prijať @@ -11,12 +11,14 @@ Do you want to remember this decision for the rest of this installation?\n Packa There seems to be a file size mismatch in the package file. The package might be corrupted or have been modified after its creation. Do you still wish to continue? PackageInfo Zdá sa, že sa vyskytla nezhoda vo veľkosti súboru balíka. Balík môže byť poškodený alebo bol po vytvorení zmenený. Želáte si napriek tomu pokračovať? Error while installing the package\n PackageView Chyba počas inštalácie balíka\n Disclaimer PackageTextViewer Zrieknutie sa zodpovednosti +%name% (%size% free) PackageView %name% (%size% voľných) The installation of the package has been aborted. PackageView Inštalácia balíka bola zrušená. Done PackageInstall Hotovo All existing files will be replaced? PackageView Všetky existujúce súbory budú nahradené? Preparing package PackageInstall Pripravuje sa balík No package available. PackageInfo Žiaden balík nie je dostupný. none PackageView žiadny +Install %name% PackageView Nainštalovať %name% Stop PackageStatus Zastaviť Other… PackageView Iné… No installation type selected PackageView Nebol vybraný typ inštalácie @@ -41,10 +43,14 @@ Decline PackageTextViewer Zamietnuť The file named '%s' already exits in the given path.\nReplace the file with the one from this package or skip it? PackageView Súbor s názvom „%s“ už v danej ceste existuje.\nNahradiť súbor súborom z tohto balíka alebo ho preskočiť? All existing files will be skipped? PackageView Všetky existujúce súbory sa preskočia? Continue PackageInfo Pokračovať +%index% of %total% PackageInstall %index% z %total% Abort PackageInfo Zrušiť PackageInstaller System name Inštalátor balíkov Abort PackageInstall Zrušiť +%name% (%size%) PackageView %name% (%size%) Continue PackageTextViewer Pokračovať +Begin PackageView Začiatok +The symbolic link named '%s' already exists in the given path.\nReplace the link with the one from this package or skip it? PackageView Symbolický odkaz s názvom „%s“ už v uvedenom adresári existuje.\nChcete nahradiť odkaz odkazom z tohto balíka alebo ho ponechať nezmenený? Replace PackageView Nahradiť Installation progress PackageView Priebeh inštalácie The package file is not readable.\nOne of the possible reasons for this might be that the requested file is not a valid BeOS .pkg package. PackageView Súbor balíka nie je čitateľný.\nJeden z možných dôvodov je, že požadovaný súbor nie je platný balík .pkg BeOs. diff --git a/data/catalogs/apps/pairs/sk.catkeys b/data/catalogs/apps/pairs/sk.catkeys index 39daf14126..41f1c85e63 100644 --- a/data/catalogs/apps/pairs/sk.catkeys +++ b/data/catalogs/apps/pairs/sk.catkeys @@ -1,11 +1,18 @@ -1 slovak x-vnd.Haiku-Pairs 2647083837 +1 slovak x-vnd.Haiku-Pairs 818003250 +Pairs did not find enough vector icons to start; it needs at least %zu, found %zu.\n Pairs Don't translate \"%zu\", but make sure to keep them. Hra Dvojice nenašla dostatok vektorových ikon, aby mohla začať. Potrebuje ich aspoň %zu, našlo %zu.\n +%app%\n\twritten by Ralf Schülke\n\tCopyright 2008-2010, Haiku Inc.\n\n PairsWindow %app%\n\tnapísal Ralf Schülke\n\tCopyright 2008-2010, Haiku Inc.\n\n Expert (8x8) PairsWindow Expert (8x8) Beginner (4x4) PairsWindow Začiatočník (4x4) +You completed the game in {0, plural, one{# click} other{# clicks}}.\n PairsWindow Dokončili ste hru na {0, plural, one{# kliknutie} few{# kliknutia} other{# kliknutí}}.\n Quit game PairsWindow Ukončiť hru +Large PairsWindow Veľké +Small PairsWindow Malé Game PairsWindow Hra +OK Pairs OK Size PairsWindow Veľkosť New PairsWindow Nová Intermediate (6x6) PairsWindow Pokročilý (6x6) Quit PairsWindow Ukončiť Pairs System name Dvojice New game PairsWindow Nová hra +Medium PairsWindow Stredné diff --git a/data/catalogs/apps/patchbay/sk.catkeys b/data/catalogs/apps/patchbay/sk.catkeys new file mode 100644 index 0000000000..6e0ac50002 --- /dev/null +++ b/data/catalogs/apps/patchbay/sk.catkeys @@ -0,0 +1,2 @@ +1 slovak x-vnd.Haiku.PatchBay 3114958111 +No MIDI devices found! Patch Bay Neboli nájdené žiadne zariadenia MIDI diff --git a/data/catalogs/apps/people/sk.catkeys b/data/catalogs/apps/people/sk.catkeys index 79e820cb64..4582a3a081 100644 --- a/data/catalogs/apps/people/sk.catkeys +++ b/data/catalogs/apps/people/sk.catkeys @@ -1,4 +1,4 @@ -1 slovak x-vnd.Be-PEPL 3273435274 +1 slovak x-vnd.Be-PEPL 2332202134 Edit People Upraviť Error People Chyba City People Mesto @@ -21,6 +21,7 @@ Nickname People Prezývka Quit People Ukončiť Name People Meno Revert People Vrátiť +Don't save People Neukladať Undo People Späť E-mail People E-mail Load image… People Načítať obrázok… @@ -30,6 +31,7 @@ Launching the FileTypes preflet to configure Person attributes has failed.\n\nEr Home phone People Telefón domov Save as… People Uložiť ako… Redo People Opakovať +Save changes before closing? People Uložiť zmeny pred ukončením? Paste People Vložiť Drop an image here,\nor use the contextual menu. People Sem pretiahnite obrázok\nalebo použite kontextové menu. Save People Uložiť diff --git a/data/catalogs/apps/poorman/sk.catkeys b/data/catalogs/apps/poorman/sk.catkeys index 36afd00459..4b8ef7aa1a 100644 --- a/data/catalogs/apps/poorman/sk.catkeys +++ b/data/catalogs/apps/poorman/sk.catkeys @@ -1,4 +1,4 @@ -1 slovak x-vnd.Haiku-PoorMan 3296382959 +1 slovak x-vnd.Haiku-PoorMan 1829050509 Website location PoorMan Umiestnenie webstránky Error Server PoorMan Chybový server Settings… PoorMan Nastavenia… @@ -12,6 +12,7 @@ PoorMan settings PoorMan Nastavenia PoorMan Clear hit counter PoorMan Vyčistiť počítadlo zásahov Copy PoorMan Kopírovať Max. simultaneous connections: PoorMan Max. súčasných spojení: +Create public_html PoorMan Vytvoriť public_html Start page: PoorMan Úvodná stránka: done.\n PoorMan hotovo.\n Create PoorMan Vytvoriť @@ -33,6 +34,7 @@ Log to console PoorMan Posielať záznam na konzolu Directory: (none) PoorMan Adresár: (žiaden) Please choose the folder to publish on the web.\n\nYou can have PoorMan create a default \"public_html\" in your home folder.\nOr you select one of your own folders instead. PoorMan Prosím, vyberte priečinok, ktorý chcete zverejniť na webe.\n\nPoorMan môže pre vás vytvoriť predvolený priečinok „public_html“ vo vašom domovskom priečinku.\nAlebo namiesto toho vyberte jeden z vašich vlastných priečinkov. Log To Console PoorMan Záznam na konzolu +{0, plural, one{# connection} other{# connections}} PoorMan {0, plural, one{# spojenie} few{# spojenia} other{# spojení}} Connections PoorMan Spojenia Status: Running PoorMan Stav: Beží Controls PoorMan Ovládacie prvky diff --git a/data/catalogs/apps/powerstatus/sk.catkeys b/data/catalogs/apps/powerstatus/sk.catkeys index bb0a21dea5..9854c80cc1 100644 --- a/data/catalogs/apps/powerstatus/sk.catkeys +++ b/data/catalogs/apps/powerstatus/sk.catkeys @@ -1,8 +1,10 @@ -1 slovak x-vnd.Haiku-PowerStatus 3224068645 +1 slovak x-vnd.Haiku-PowerStatus 3969330583 Design capacity low warning: PowerStatus Upozornenie na nízku navrhnutú kapacitu: Show percent PowerStatus Zobrazovať percentá Design capacity: PowerStatus Navrhnutá kapacita: mW PowerStatus mW +The battery level is getting low, please plug in the device. PowerStatus Úroveň nabitia batérie je nízka. Prosím, pripojte zariadenie do elektrickej siete. +Battery low PowerStatus Nízka úroveň batérie Type: PowerStatus Typ: non-rechargeable PowerStatus nedobíjateľná Empty battery slot PowerStatus Prázdne miesto na batériu @@ -27,10 +29,12 @@ Install in Deskbar PowerStatus Nainštalovať do Panelu Capacity: PowerStatus Kapacita: Battery discharging PowerStatus Batéria sa vybíja Serial number: PowerStatus Sériové číslo: +Battery critical PowerStatus Kritická úroveň batérie Capacity granularity 1: PowerStatus Granularita kapacity 1: OEM info: PowerStatus Info OEM: Design voltage: PowerStatus Návrhové napätie: Battery charging PowerStatus Batéria sa nabíja +The battery level is critical, please plug in the device immediately. PowerStatus Úroveň nabitia batérie je kritická. Prosím, ihneď pripojte zariadenie do elektrickej siete. Design capacity warning: PowerStatus Upozornenie navrhnutej kapacity: Battery info PowerStatus Info o batérii Quit PowerStatus Ukončiť diff --git a/data/catalogs/apps/processcontroller/sk.catkeys b/data/catalogs/apps/processcontroller/sk.catkeys index ec38b90d67..c6d01bd137 100644 --- a/data/catalogs/apps/processcontroller/sk.catkeys +++ b/data/catalogs/apps/processcontroller/sk.catkeys @@ -1,12 +1,15 @@ -1 slovak x-vnd.Haiku-ProcessController 2886374724 +1 slovak x-vnd.Haiku-ProcessController 1761882987 Memory usage ProcessController Využitie pamäte +Kill this team! ProcessController Ukončiť tento tím! Idle priority ProcessController Priorita nečinný Restart Deskbar ProcessController Reštartovať Panel Custom priority ProcessController Vlastná priorita This team is already gone… ProcessController Tento tím už je preč… Error saving file ProcessController Chyba pri ukladaní súboru Real-time priority ProcessController Priorita v reálnom čase +Power saving ProcessController Šetrenie energie Your setting file could not be saved!\n(%s) ProcessController Váš súbor s nastavením nebolo možné uložiť!\n(%s) +What do you want to do with the team \"%s\"? ProcessController Čo chcete robiť s tímom „%s“? This thread is already gone… ProcessController Toto vlákno už je preč… Cancel ProcessController Zrušiť Display priority ProcessController Priorita zobrazenie @@ -34,8 +37,10 @@ Quit an application ProcessController Ukončiť aplikáciu Install in Deskbar ProcessController Nainštalovať do Panelu Threads and CPU usage ProcessController Vlákna a využitie CPU Urgent display priority ProcessController Priorita naliehavé zobrazenie +Low latency ProcessController Nízka latencia OK ProcessController OK Damned! ProcessController Sakra! +Debug this team! ProcessController Ladiť tento tím! Usage: %s [-deskbar]\n ProcessController Použitie: %s [-deskbar]\n ProcessController System name Správca procesov Real-time display priority ProcessController Priorita zobrazenie v reálnom čase diff --git a/data/catalogs/apps/screenshot/Screenshot/sk.catkeys b/data/catalogs/apps/screenshot/Screenshot/sk.catkeys index 1e8e7eadce..c6e5ea9c8a 100644 --- a/data/catalogs/apps/screenshot/Screenshot/sk.catkeys +++ b/data/catalogs/apps/screenshot/Screenshot/sk.catkeys @@ -1,4 +1,4 @@ -1 slovak x-vnd.haiku-screenshot 4088965159 +1 slovak x-vnd.haiku-screenshot 3896204963 seconds ScreenshotWindow sekúnd Desktop ScreenshotWindow Plocha Include window border ScreenshotWindow Vrátane okraja okna @@ -7,6 +7,8 @@ Select ScreenshotWindow Vybrať Capture active window ScreenshotWindow Zachytiť aktívne okno Cancel ScreenshotWindow Zrušiť Name: ScreenshotWindow Názov: +Choose folder… ScreenshotWindow Vyberte priečinok… +This file already exists.\n Are you sure you would like to overwrite it? ScreenshotWindow Súbor %1 už existuje.\n Ste si istý, že ho chcete prepísať? Choose folder ScreenshotWindow Vyberte priečinok Save ScreenshotWindow Uložiť Overwrite ScreenshotWindow Prepísať diff --git a/data/catalogs/apps/showimage/sk.catkeys b/data/catalogs/apps/showimage/sk.catkeys index fd96539df3..ff11338dd5 100644 --- a/data/catalogs/apps/showimage/sk.catkeys +++ b/data/catalogs/apps/showimage/sk.catkeys @@ -1,4 +1,4 @@ -1 slovak x-vnd.Haiku-ShowImage 466377502 +1 slovak x-vnd.Haiku-ShowImage 575555985 Use as background… Menus Použiť ako pozadie… File Menus Súbor Slide delay Menus Oneskorenie snímku @@ -52,6 +52,7 @@ Select all Menus Vybrať všetky Zoom factor in %: PrintOptionsWindow Priblíženie v %: Width: PrintOptionsWindow Šírka: Image Menus Obrázok +Move to Trash Menus Presunúť do Koša OK Alerts OK Rotate clockwise Menus Otočiť v smere hodinových ručičiek Job setup PrintOptionsWindow Nastavenie úlohy diff --git a/data/catalogs/apps/soundrecorder/sk.catkeys b/data/catalogs/apps/soundrecorder/sk.catkeys index 796b60fc03..efa7d6273f 100644 --- a/data/catalogs/apps/soundrecorder/sk.catkeys +++ b/data/catalogs/apps/soundrecorder/sk.catkeys @@ -1,13 +1,15 @@ -1 slovak x-vnd.Haiku-SoundRecorder 3982150268 +1 slovak x-vnd.Haiku-SoundRecorder 24440888 Loop RecorderWindow Opakovať Cannot find default audio hardware RecorderWindow Štandardný zvukový hardvér nenájdený Cannot find the temporary file created to hold the new recording RecorderWindow Nebol nájdený dočasný súbor obsahujúci nový záznam Sample size: RecorderWindow Veľkosť vzorky: Nothing to play RecorderWindow Niet čo prehrať +None of the files appear to be audio files. RecorderWindow Zdá sa, že žiadne z týchto súborov nie sú zvukové súbory. Duration: RecorderWindow Trvanie: File info RecorderWindow Info súboru Drop files here SoundListView Pretiahnite súbory sem Input RecorderWindow Vstup +Some of the files don't appear to be audio files. RecorderWindow Zdá sa, že niektoré súbory nie sú zvukové súbory. Stop RecorderWindow Zastaviť Format: RecorderWindow Formát: Sound List RecorderWindow Zoznam zvukov @@ -40,4 +42,5 @@ Channels: RecorderWindow Kanály: Save RecorderWindow Uložiť Sample rate: RecorderWindow Vzorkovacia frekvencia: Cannot connect to media server RecorderWindow Nie je možné pripojiť sa k multimediálnemu serveru +The file doesn't appear to be an audio file. RecorderWindow Tento súbor nevyzerá ako zvukový súbor. File name: RecorderWindow Názov súboru: diff --git a/data/catalogs/apps/stylededit/sk.catkeys b/data/catalogs/apps/stylededit/sk.catkeys index e77023a0f4..bac9713895 100644 --- a/data/catalogs/apps/stylededit/sk.catkeys +++ b/data/catalogs/apps/stylededit/sk.catkeys @@ -1,5 +1,6 @@ -1 slovak x-vnd.Haiku-StyledEdit 1954793944 +1 slovak x-vnd.Haiku-StyledEdit 727465241 StyledEdit System name StyledEdit +This file is marked read-only. Save changes to the document \"%s\"? SaveAlert Tento súbor je označený iba na čítanie. Uložiť zmeny v dokumente „%s“? Paste Menus Vložiť OK LoadAlert OK File Menus Súbor @@ -16,6 +17,7 @@ Page setup… Menus Nastavenie stránky… Print… Menus Tlačiť… Can't undo Menus Nie je možné vrátiť späť Save Menus Uložiť +Default Menus Predvolené Replace with: FindandReplaceWindow Nahradiť čím: Cancel SaveAlert Zrušiť Cannot revert, file not found: \"%s\". RevertToSavedAlert Nie je možné vrátiť späť, súbor nebol nájdený: „%s“. diff --git a/data/catalogs/apps/sudoku/sk.catkeys b/data/catalogs/apps/sudoku/sk.catkeys index 387d99d8ae..05bf917d5a 100644 --- a/data/catalogs/apps/sudoku/sk.catkeys +++ b/data/catalogs/apps/sudoku/sk.catkeys @@ -1,4 +1,4 @@ -1 slovak x-vnd.Haiku-Sudoku 2463385585 +1 slovak x-vnd.Haiku-Sudoku 3382377306 Restore snapshot SudokuWindow Obnoviť snímku Could not set Sudoku:\n%s\n SudokuWindow Nepodarilo sa nastaviť Sudoku:\n%s\n Export as… SudokuWindow Exportovať ako… @@ -26,6 +26,7 @@ Text SudokuWindow Text Creating solvable field SudokuGenerator Vytvára sa vyriešiteľné pole View SudokuWindow Zobraziť Progress monitor ProgressWindow Monitor priebehu +Set all hints SudokuWindow Nastaviť všetky rady Mark invalid values SudokuWindow Označiť neplatné hodnoty Blank SudokuWindow Prázdne Help SudokuWindow Pomoc diff --git a/data/catalogs/apps/terminal/sk.catkeys b/data/catalogs/apps/terminal/sk.catkeys index ef586fce33..8331fa5fe0 100644 --- a/data/catalogs/apps/terminal/sk.catkeys +++ b/data/catalogs/apps/terminal/sk.catkeys @@ -1,4 +1,4 @@ -1 slovak x-vnd.Haiku-Terminal 3872844040 +1 slovak x-vnd.Haiku-Terminal 2980268722 Not found. Terminal TermWindow Nenájdené. Switch Terminals Terminal TermWindow Prepnúť terminály Change directory Terminal TermView Zmeniť adresár @@ -26,12 +26,16 @@ Window title: Terminal TermWindow Titulok okna: Unrecognized option \"%s\"\n Terminal arguments parsing Nerozpoznaná voľba „%s“\n Blue Terminal colors scheme Modrá Custom Terminal colors scheme Vlastné +Encoding: Terminal AppearancePrefView Kódovanie: %app% settings Terminal PrefWindow window title %app% - nastavenia Cancel Terminal SetTitleWindow Zrušiť Increase Terminal TermWindow Zväčšiť Settings Terminal TermWindow Nastavenia +Window size Terminal TermWindow Veľkosť okna Selected text Terminal AppearancePrefView Vybraný text +\t%d\t-\tThe current working directory of the active process in the\n\t\t\tcurrent tab. Optionally the maximum number of path components\n\t\t\tcan be specified. E.g. '%2d' for at most two components.\n\t%T\t-\tThe Terminal application name for the current locale.\n\t%e\t-\tThe encoding of the current tab. Not shown for UTF-8.\n\t%i\t-\tThe index of the window.\n\t%p\t-\tThe name of the active process in the current tab.\n\t%t\t-\tThe title of the current tab. Terminal ToolTips \t%d\t-\tAktuálny adresár aktívneho procesu v aktuálnej\n\t\t\tkarte. Nepovinne je možné uviesť maximálny počet\n\t\t\tzložiek cesty. Napr. „%2d“ pre najviac dve zložky.\n\t%T\t-\tNázov aplikácie Terminál v aktuálnom locale.\n\t%e\t-\tKódovanie aktuálnej karty. Nezobrazuje sa v prípade UTF-8.\n\t%i\t-\tIndex okna.\n\t%p\t-\tNázov aktívneho procesu v aktuálnej karte.\n\t%t\t-\tNázov aktuálnej karty. Find Terminal FindWindow Nájsť +The pattern specifying the window titles. The following placeholders\ncan be used: Terminal AppearancePrefView Vzor určujúci názvy okien. Je možné použiť\nnasledovné zástupné symboly: Appearance Terminal PrefWindow Vzhľad Tab title: Terminal AppearancePrefView Titulok karty: OK Terminal SetTitleWindow OK @@ -44,14 +48,19 @@ Window title… Terminal TermWindow Titulok okna… Full screen Terminal TermWindow Celoobrazovkový režim Page setup… Terminal TermWindow Nastavenie stránky… The following processes are still running:\n\n\t%1\n\nIf you close the Terminal, the processes will be killed. Terminal TermWindow Nasledovné procesy ešte stále bežia:\n\n\t%1\n\nAk zatvoríte Terminál, procesy budú zabité. +Custom Terminal AppearancePrefView Window size Vlastné Insert path Terminal TermView Vložiť cestu Haiku Terminal\nCopyright 2001-2009 Haiku, Inc.\nCopyright(C) 1999 Kazuho Okui and Takashi Murai.\n\nUsage: %s [OPTION] [SHELL]\n Terminal TermApp Terminál Haiku\nCopyright 2001-2009 Haiku, Inc.\nCopyright(C) 1999 Kazuho Okui a Takashi Murai.\n\nPoužitie: %s [VOĽBA] [SHELL]\n +Window size: Terminal AppearancePrefView Veľkosť okna: No search string was entered. Terminal TermWindow Nebol zadaný vyhľadávací reťazec. Font size Terminal TermWindow Veľkosť písma Blinking cursor Terminal AppearancePrefView Blikajúci kurzor Set window title Terminal TermWindow Nastaviť titulok okna +Revert Terminal PrefWindow Vrátiť späť Terminal System name Terminál +Copy path Terminal TermView Kopírovať cestu Close other tabs Terminal TermWindow Zatvoriť ostatné karty +Defaults Terminal PrefWindow Predvoľby Match word Terminal FindWindow Nájsť slovo Nothing is selected. Terminal TermWindow Nič nie je vybrané. Text not found. Terminal TermWindow Text nenájdený. @@ -64,18 +73,24 @@ New tab Terminal TermWindow Nová karta Selected background Terminal AppearancePrefView Vybrané pozadie Slate Terminal colors scheme Bridlica Text under cursor Terminal AppearancePrefView Text pod kurzorom +Use bright instead of bold text Terminal AppearancePrefView Použiť svetlý text namiesto hrubého Midnight Terminal colors scheme Polnoc Decrease Terminal TermWindow Zmenšiť Default Terminal colors scheme Predvolená Create link here Terminal TermView Vytvoriť tu odkaz +The pattern specifying the tab titles. The following placeholders\ncan be used: Terminal AppearancePrefView Vzor určujúci názvy kariet. Je možné použiť nasledovné\nzástupné symboly: Close Terminal TermWindow Zatvoriť Text Terminal AppearancePrefView Text Clear all Terminal TermWindow Vyčistiť všetko Text encoding Terminal TermWindow Kódovanie textu Close window Terminal TermWindow Zatvoriť okno +Copy absolute path Terminal TermView Kopírovať absolútnu cestu +Save as default Terminal TermWindow Uložiť ako predvolené Set tab title Terminal TermWindow Nastaviť titulok okna Settings… Terminal TermWindow Nastavenia… Abort Terminal Shell Zrušiť +Open link Terminal TermView Otvoriť odkaz +Solarized Light Terminal colors scheme Solarizovaná svetlá Edit Terminal TermWindow Upraviť Color: Terminal AppearancePrefView Farba: The pattern specifying the window title. The following placeholders\ncan be used:\n Terminal TermWindow Vzor určujúci titulky okien. Možno použiť\nnasledovné zástupné symboly:\n @@ -86,11 +101,16 @@ OK Terminal TermApp OK Find failed Terminal TermWindow Hľadanie zlyhalo Search forward Terminal FindWindow Hľadať vpred Edit tab title… Terminal TermWindow Upraviť titulok karty… +Open path Terminal TermView Otvoriť cestu +\t%d\t-\tThe current working directory of the active process.\n\t\t\tOptionally the maximum number of path components can be\n\t\t\tspecified. E.g. '%2d' for at most two components.\n\t%i\t-\tThe index of the tab.\n\t%e\t-\tThe encoding of the current tab. Not shown for UTF-8.\n\t%p\t-\tThe name of the active process.\n\t%%\t-\tThe character '%'. Terminal ToolTips \t%d\t-\tAktuálny adresár aktívneho procesu.\n\t\t\tNepovinný. Je možné zadať maximálny počet zložiek\n\t\t\tcesty. Napr. „%2d“ pre javiac dve zložky.\n\t%i\t-\tIndex karty.\n\t%e\t-\tKódovanie aktuálnej karty. Nezobrazuje sa v prípade UTF-8.\n\t%p\t-\tNázov aktívneho procesu.\n\t%%\t-\tZnak „%“. Find previous Terminal TermWindow Nájsť predošlý +Copy link location Terminal TermView Kopírovať umiestnenie odkazu Tab title: Terminal TermWindow Titulok karty: Find next Terminal TermWindow Nájsť ďalší Close active tab Terminal TermWindow Zatvoriť aktívnu kartu +\t%%\t-\tThe character '%'.\n\t%<\t-\tStarts a section that will only be shown if a placeholder\n\t\t\tafterwards is not empty.\n\t%>\t-\tStarts a section that will only be shown if a placeholder\n\t\t\tbetween a previous %< section and this one is not empty.\n\t%-\t-\tEnds a %< or %> section.\n\nAny non alpha numeric character between '%' and the format letter will insert a space only\nif the placeholder value is not empty. It will add to the %< section. Terminal ToolTips \t%%\t-\tZnak „%“.\n\t%<\t-\tZačína sekciu, ktorá sa zobrazí iba ak rezervované\n\t\t\tmiesto po nej nie je prázdne.\n\t%>\t-\tZačína sekciu, ktorá sa zobrazí iba ak rezervované\n\t\t\tmiesto medzi predošlou %< sekciou a touto nie je prázdne.\n\t%-\t-\tKončí sekciu %< alebo %>.\n\nAkékoľvek nealfanumerické znaky medzi „%“, a písmenom formátu vložia medzeru iba\nv prípade, že hodnota rezervovaného miesta nie je prázdna. Pridá do sekcie %<. Paste Terminal TermWindow Vložiť +Solarized Dark Terminal colors scheme Solarizovaná tmavá Shell Terminal TermWindow Shell Cancel Terminal TermView Zrušiť Use default Terminal SetTitleWindow Použiť predvolené diff --git a/data/catalogs/apps/text_search/sk.catkeys b/data/catalogs/apps/text_search/sk.catkeys index 758d33c139..942d83d89d 100644 --- a/data/catalogs/apps/text_search/sk.catkeys +++ b/data/catalogs/apps/text_search/sk.catkeys @@ -1,4 +1,4 @@ -1 slovak x-vnd.Haiku.TextSearch 1180598828 +1 slovak x-vnd.Haiku.TextSearch 2496563907 %s: Not enough room to escape the filename. Grepper %s: nedostatok miesta na vloženie únikových klauzúl do názvu súboru. Trim to selection GrepWindow Orezať na výber Follow symbolic links GrepWindow Nasledovať symbolické odkazy @@ -8,6 +8,7 @@ The unselected files will be removed from the list. GrepWindow Nevybrané súbo Set target… GrepWindow Nastaviť cieľ… Please select the files you wish to have selected for you in Tracker. GrepWindow Prosím, vyberte súbory, ktoré chcete mať vybrané v Trackeri. Open files in Pe GrepWindow Otvoriť súbory v Pe +%appname% : %path% GrepWindow %appname% : %path% Copy text to clipboard GrepWindow Skopírovať text do schránky Settings GrepWindow Nastavenia Select all GrepWindow Vybrať všetky @@ -31,3 +32,4 @@ Show files in Tracker GrepWindow Zobraziť súbory v Trackeri Case-sensitive GrepWindow Rozlišovať veľkosť písmen Text files only GrepWindow Iba textové súbory Show lines GrepWindow Zobrazovať riadky +%appname% : %path% : %searchtext% GrepWindow %appname% : %path% : %searchtext% diff --git a/data/catalogs/apps/webpositive/sk.catkeys b/data/catalogs/apps/webpositive/sk.catkeys index e3a1f388d0..19625f192a 100644 --- a/data/catalogs/apps/webpositive/sk.catkeys +++ b/data/catalogs/apps/webpositive/sk.catkeys @@ -1,4 +1,4 @@ -1 slovak x-vnd.Haiku-WebPositive 82284269 +1 slovak x-vnd.Haiku-WebPositive 1282126593 Show home button Settings Window Zobraziť tlačidlo Domov Username: Authentication Panel Používateľské meno: Copy URL to clipboard Download Window Kopírovať URL do schránky @@ -16,12 +16,20 @@ Start page: Settings Window Úvodná stránka: History WebPositive Window História Error opening downloads folder Download Window Chyba pri otváraní priečinka stiahnutých súborov Paste WebPositive Window Vložiť +Expiration Cookie Manager Vypršanie platnosti +Double-click or middle-click to open new tab. Tab Manager Novú kartu otvoríte dvojitým kliknutím alebo kliknutím stredným tlačidlom +Proxy username: Settings Window Používateľské meno proxy: +Save page as… WebPositive Window Uložiť stránku ako… +Over %days left Download Window Zostáva viac ako %days Settings Settings Window Nastavenie Confirmation WebPositive Window Potvrdenie Window WebPositive Window Okno +Cookie manager Cookie Manager Správca cookies Decrease size WebPositive Window Zmenšiť veľkosť Serif font: Settings Window Pätkové písmo: Loading %url WebPositive Window Načítava sa %url +Download aborted Download Window Sťahovanie zrušené +Value Cookie Manager Hodnota Page source WebPositive Window Zdroj stránky Next WebPositive Window Ďalší Find next WebPositive Window Nájsť ďalší @@ -37,15 +45,19 @@ Auto-hide mouse pointer Settings Window Automaticky skrývať kurzor myši Quit WebPositive Window Ukončiť Full screen WebPositive Window Celoobrazovkový režim Open download error Download Window Chyba pri otváraní sťahovaného súboru +The cookie jar is empty! Cookie Manager Nádoba s cookies je prázdna! Standard font: Settings Window Štandardné písmo: +Find previous occurrence of search terms WebPositive Window find bar previous button tooltip Nájsť predchádzajúci výskyt hľadaného reťazca Restart Download Window Reštartovať Proxy server Settings Window Proxy server Open containing folder Download Window Otvoriť nadradený priečinok New window WebPositive Window Nové okno +WebPositive Download Window WebPositive Open Download Window Otvoriť Reload WebPositive Window Znovu načítať Downloads Download Window Sťahovania Sans serif font: Settings Window Bezpätkové písmo: +Delete Cookie Manager Odstrániť Forward WebPositive Window Dopredu of Download Window ...as in '12kB of 256kB' z Revert Settings Window Vrátiť @@ -54,6 +66,7 @@ Cut WebPositive Window Vystrihnúť Bookmark this page WebPositive Window Uložiť stránku do záložiek There was an error trying to show the Bookmarks folder.\n\nError: %error WebPositive Window Don't translate variable %error Vyskytla sa chyba pri zobrazovaní priečinka Záložky.\n\nChyba: %error Open downloads folder Download Window Otvoriť priečinok stiahnutých súborov +Proxy password: Settings Window Heslo proxy: Number of days to keep links in History menu: Settings Window Koľko dní ponechať odkazy v menu História: Hide Download Window Skryť Reset size WebPositive Window Obnoviť veľkosť @@ -62,6 +75,7 @@ Increase size WebPositive Window Zväčšiť veľkosť There was an error retrieving the bookmark folder.\n\nError: %error WebPositive Window Don't translate the variable %error Vyskytla sa chyba pri získavaní priečinka záložiek.\n\nChyba: %error Downloads WebPositive Window Sťahovania Requesting %url WebPositive Window Prebieha požiadavka na %url +Find next occurrence of search terms WebPositive Window find bar next button tooltip Nájsť ďalší výskyt hľadaného reťazca Apply Settings Window Použiť Bookmark info WebPositive Window Info o záložke Size: Font Selection view Veľkosť: @@ -75,17 +89,22 @@ Open blank page Settings Window Otvoriť prázdnu stránku New tabs: Settings Window Nové karty: Cancel WebPositive Window Zrušiť Open all WebPositive Window Otvoriť všetko +Proxy server requires authentication Settings Window Server proxy vyžaduje overenie totožnosti Clear URL Bar Vyčistiť Cut URL Bar Vystrihnúť Clear WebPositive Window Vyčistiť +Script console Console Window Konzola skriptov Remove Download Window Odstrániť Find WebPositive Window Nájsť: Find previous WebPositive Window Nájsť predchádzajúci Settings WebPositive Window Nastavenia +Script console WebPositive Window Konzola skriptov +Name Cookie Manager Meno Proxy server address: Settings Window Adresa proxy servera: Proxy server port: Settings Window Port proxy servera: Bookmarks WebPositive Window Záložky Paste URL Bar Vložiť +Cookie manager WebPositive Window Správca cookies /s) Download Window ...as in 'per second' /s) Hide password text Authentication Panel Skryť text hesla The quick brown fox jumps over the lazy dog. Font Selection view Don't translate this literally ! Use a phrase showing all chars from A to Z. Kŕdeľ ďatľov učí koňa obhrýzať kôru a žrať mäso @@ -93,11 +112,15 @@ Over 1 minute left Download Window Zostáva viac ako 1 minúta Open start page Settings Window Otvoriť úvodnú stránku Continue downloads WebPositive Pokračovať v sťahovaní Cancel Download Window Zrušiť +Flags Cookie Manager Príznaky Open search page Settings Window Otvoriť vyhľadávaciu stránku +Clear Console Window Vyčistiť Password: Authentication Panel Heslo: +Path Cookie Manager Cesta Back WebPositive Window Späť New browser window Download Window Nové okno prehliadača Today WebPositive Window Dnes +Over %hours left Download Window Zostáva viac ako %hours Remember username and password for this site Authentication Panel Zapamätať si používateľské meno a heslo pre túto lokalitu Earlier WebPositive Window Skoršie Authentication required Authentication Panel Vyžaduje sa overenie totožnosti @@ -105,6 +128,7 @@ Use proxy server to connect to the internet Settings Window Používať na prip There are still downloads in progress, do you really want to quit WebPositive now? WebPositive Ešte stále prebieha sťahovanie. Skutočne chcete teraz WebPositive ukončiť? Auto-hide interface in full screen mode Settings Window Automaticky skryť prvky rozhrania v celoobrazovkovom režime %url failed WebPositive Window Loading URL failed. Don't translate variable %url. %url zlyhalo +%seconds left Download Window zostáva %seconds New tab WebPositive Window Nová karta Downloads in progress WebPositive Prebieha sťahovanie Style: Font Selection view Štýl: @@ -119,11 +143,15 @@ Open bookmarks confirmation WebPositive Window Potvrdenie otvorenia záložiek Remove missing Download Window Odstrániť chýbajúce Clone current page Settings Window Klonovať aktuálnu stránku Do you want to open %addedCount bookmarks all at once? WebPositive Window Don't translate variable %addedCount. Chcete otvoriť %addedCoun záložiek naraz? +Session cookie Cookie Manager Cookie relácie OK Authentication Panel OK Copy URL Bar Kopírovať +Download finished Download Window Sťahovanie dokončené +Show bookmark bar WebPositive Window Zobraziť panel záložiek OK WebPositive Window OK Manage bookmarks WebPositive Window Spravovať záložky A bookmark for this page (%bookmarkName) already exists. WebPositive Window Don't translate variable %bookmarkName Záložka tejto stránky (%bookmarkName) už existuje. +Cookies for %s Cookie Manager Cookies pre %s New windows: Settings Window Nové okná: %url finished WebPositive Window Loading URL finished. Don't translate variable %url. %url dokončené Remove finished Download Window Odstrániť dokončené diff --git a/data/catalogs/bin/desklink/sk.catkeys b/data/catalogs/bin/desklink/sk.catkeys index a644f618a0..8c52cb2db7 100644 --- a/data/catalogs/bin/desklink/sk.catkeys +++ b/data/catalogs/bin/desklink/sk.catkeys @@ -1,6 +1,7 @@ -1 slovak x-vnd.Haiku-desklink 2797960853 +1 slovak x-vnd.Haiku-desklink 3451447865 Control physical output MediaReplicant Ovládanie fyzického výstupu Couldn't launch MediaReplicant Nepodarilo sa spustiť +Muted MediaReplicant Stlmené OK MediaReplicant OK Sound preferences… MediaReplicant Nastavenia zvuku… %g dB MediaReplicant %g dB diff --git a/data/catalogs/bin/dstcheck/sk.catkeys b/data/catalogs/bin/dstcheck/sk.catkeys index 6fd79dbd66..4cb0c89934 100644 --- a/data/catalogs/bin/dstcheck/sk.catkeys +++ b/data/catalogs/bin/dstcheck/sk.catkeys @@ -1,3 +1,5 @@ -1 slovak x-vnd.Haiku-cmd-dstconfig 81357278 +1 slovak x-vnd.Haiku-cmd-dstconfig 684321431 Ask me later dstcheck Spýtať sa ma neskôr Manually adjust time… dstcheck Ručne nastaviť čas… +Keep this time dstcheck Použiť tento čas +Attention!\n\nBecause of the switch from daylight saving time, your computer's clock may be an hour off.\nYour computer thinks it is %current time%.\n\nIs this the correct time? dstcheck Upozornenie!\n\nVzhľadom na prechod z letného času, je možné, že hodiny vášho počítača sú o hodinu posunuté.\nVáš počítač si myslí, že je %current time%.\n\nJe to správny čas? diff --git a/data/catalogs/kits/mail/sk.catkeys b/data/catalogs/kits/mail/sk.catkeys index 5e121e2dda..20770ad13a 100644 --- a/data/catalogs/kits/mail/sk.catkeys +++ b/data/catalogs/kits/mail/sk.catkeys @@ -1,10 +1,11 @@ -1 slovak x-vnd.Haiku-libmail 161731481 +1 slovak x-vnd.Haiku-libmail 3450478295 Partially download messages larger than ProtocolConfigView Čiastočne stiahnuť správy väčšie ako Password: ProtocolConfigView Heslo: Remove mail from server when deleted ProtocolConfigView Odstrániť poštu zo servera pri zmazaní Mail server: ProtocolConfigView Poštový server: Select… MailKit Vybrať… Connection type: ProtocolConfigView Typ pripojenia: +KB ProtocolConfigView kilo byte KB Leave mail on server ProtocolConfigView Ponechať poštu na serveri Username: ProtocolConfigView Používateľské meno: Login type: ProtocolConfigView Typ prihlásenia: diff --git a/data/catalogs/kits/sk.catkeys b/data/catalogs/kits/sk.catkeys index 3e543728d4..c3dedc1080 100644 --- a/data/catalogs/kits/sk.catkeys +++ b/data/catalogs/kits/sk.catkeys @@ -1,4 +1,4 @@ -1 slovak x-vnd.Haiku-libbe 3805079751 +1 slovak x-vnd.Haiku-libbe 3337473349 gamma AboutWindow gama beta AboutWindow beta %3.2f GiB StringForSize %3.2f GiB @@ -12,11 +12,16 @@ Copy TextView Kopírovať alpha AboutWindow alfa Error PrintJob Chyba All Rights Reserved. AboutWindow Všetky práva vyhradené. +{0, plural, one{# byte} other{# bytes}} StringForSize {0, plural, one{# bajt} few{# bajty} other{# bajtov}} +About %app% AboutWindow O aplikácii %app% +No pages to print! PrintJob Nie je čo tlačiť! OK Dragger OK OK PrintJob OK Green: ColorControl Zelená: Version history: AboutWindow História verzií: Remove replicant Dragger Odstrániť replikanta +Select all TextView Vybrať všetko +OK AboutWindow OK OK ZombieReplicantView OK Print Server is not responding. PrintJob Tlačový server neodpovedá. Paste TextView Vložiť diff --git a/data/catalogs/kits/textencoding/sk.catkeys b/data/catalogs/kits/textencoding/sk.catkeys index 4187082c8f..14a53a797c 100644 --- a/data/catalogs/kits/textencoding/sk.catkeys +++ b/data/catalogs/kits/textencoding/sk.catkeys @@ -1,4 +1,4 @@ -1 slovak x-vnd.Haiku-libtextencoding 3062073902 +1 slovak x-vnd.Haiku-libtextencoding 1525027211 ISO Greek textencodings ISO grécke ISO South European textencodings ISO juhoeurópske Chinese Big5 textencodings Čínske Big5 @@ -7,6 +7,7 @@ ISO Arabic textencodings ISO arabské ISO Latin 9 textencodings ISO Latin 9 Japanese Shift JIS textencodings Japonské Shift JIS DOS Cyrillic textencodings DOS cyrilika +Windows Central European (CP 1250) textencodings Windows stredoeurópske (CP 1250) Windows Cyrillic (CP 1251) textencodings Windows cyrilika (CP 1251) Japanese EUC textencodings Japonské EUC Unicode textencodings Unicode diff --git a/data/catalogs/kits/tracker/sk.catkeys b/data/catalogs/kits/tracker/sk.catkeys index acae14f731..686c7ac6d6 100644 --- a/data/catalogs/kits/tracker/sk.catkeys +++ b/data/catalogs/kits/tracker/sk.catkeys @@ -1,6 +1,7 @@ -1 slovak x-vnd.Haiku-libtracker 1652028443 +1 slovak x-vnd.Haiku-libtracker 3917713227 OK WidgetAttributeText OK Add-ons FilePanelPriv Doplnky +Mount settings… ContainerWindow Nastavenia pripojenia… Desktop Model Plocha Identify ContainerWindow Identifikovať Warning space color SettingsView Farba priestoru upozornenia @@ -18,6 +19,7 @@ Modified QueryPoseView Zmenené Created ContainerWindow Vytvorené Error %error loading add-On %name. ContainerWindow Chyba %error pri načítaní doplnku %name. If you %ifYouDoAction the settings folder, %osName may not behave properly!\n\nAre you sure you want to do this? FSUtils Ak %ifYouDoAction priečinok nastavení, %osName sa nemusí chovať správne!\n\nSte si istí, že to chcete urobiť? +Skip all FSUtils Preskočiť všetko contains SelectionWindow obsahuje Sorry, you can't save things at the root of your system. FilePanelPriv Ľutujeme, nemôžete ukladať veci do koreňového adresára systému. Show shared volumes on Desktop SettingsView Zobraziť zdieľané zväzky na Ploche @@ -67,6 +69,7 @@ Arrange by ContainerWindow Usporiadať podľa Mount server error AutoMounterSettings Chyba pripájacieho servera Search FindPanel Hľadať Preparing to empty Trash… StatusWindow Pripravuje sa vyprázdnenie Koša… +You cannot put the selected item(s) into the trash. FSUtils Vybrané položky nemôžete presunúť do Koša. Disks Model Disky Create link ContainerWindow Vytvoriť odkaz Decrease size DeskWindow Zmenšiť veľkosť @@ -91,6 +94,7 @@ Error calculating folder size. InfoWindow Chyba pri výpočte veľkosti prieči New folder FilePanelPriv Nový priečinok %name info InfoWindow InfoWindow Title Info o %name Favorites FavoritesMenu Obľúbené +\"%name\" is an unsupported executable. FSUtils „%name“ je nepodporovaný spustiteľný súbor. Sorry, you can't copy items to the Trash. PoseView Ľutujeme, nemôžete kopírovať položky do Koša. matches wildcard expression SelectionWindow zodpovedá výrazu so zástupnými znakmi rename TextWidget As in 'if you rename this folder...' (en) 'Wird dieser Ordner umbenannt...' (de) premenujete @@ -127,6 +131,7 @@ Add-ons ContainerWindow Doplnky Edit templates… TemplatesMenu Upraviť šablóny… Finish: %time - Over %finishtime left StatusWindow (Koniec: %time - zostáva viac ako %finishtime) An item named \"%name\" already exists in this folder. Would you like to replace it with the symbolic link you are creating? FSUtils Položka s názvom „%name“ už v tomto priečinku existuje. Chcete ju nahradiť symbolickým odkazom, ktorý vytvárate? +Fewer options FindPanel Menej možností Sorry, there is not enough free space on the destination volume to copy the selection. FSUtils Ľutujeme, na cieľovom zväzku nie je dostatok voľného miesta na skopírovanie výberu. Could not open \"%document\" with application \"%app\" (%error). FSUtils Nebolo možné otvoriť „%document“, pomocou aplikácie „%app“ (%error). Sorry, saving more than one item is not allowed. FilePanelPriv Ľutujeme, ukladanie viac ako jednej položky nie je dovolené. @@ -174,6 +179,7 @@ Error in regular expression:\n\n'%errstring' PoseView Chyba v regulárnom výra Mount all MountMenu Pripojiť všetky calculating… InfoWindow prebieha výpočet… Mount all disks now AutoMounterSettings Pripojiť všetky disky teraz +Hide dotfiles SettingsView Skryť súbory s bodkou na začiatku Untitled bitmap PoseView Bitmapa bez názvu of %items StatusWindow z %items Description: InfoWindow Popis: @@ -195,8 +201,10 @@ Move FSUtils Button label, 'Move' (en), 'Verschieben' (de) Presunúť Get info ContainerWindow Získať info Error creating link to \"%name\". FSUtils Chyba pri vytváraní odkazu „%name“. Select SelectionWindow Vybrať +{0, plural, one{# byte} other{# bytes}} WidgetAttributeText {0, plural, one{# bajt} few{# bajty} other{# bajtov}} Or FindPanel alebo The Tracker must be running to see set the default printer. PoseView Tracker musí bežať, aby bolo možné nastaviť predvolenú tlačiareň. +{0, plural, one{# byte} other{# bytes}} FSUtils {0, plural, one{# bajt} few{# bajty} other{# bajtov}} by formula FindPanel podľa vzorca 40 x 40 DeskWindow 40 x 40 Name PoseView Názov @@ -207,12 +215,14 @@ Created: InfoWindow Vytvorené: Copying: StatusWindow Kopíruje sa: Capacity: InfoWindow Kapacita: Delete FilePanelPriv Zmazať +{0, plural, one{(# byte)} other{(# bytes)}} InfoWindow {0, plural, one{# bajt} few{# bajty} other{# bajtov}} Save FindPanel Uložiť copy FSUtils filename copy kopírovať Temporary FindPanel Dočasné Version OpenWithWindow Verzia Default application InfoWindow Predvolená aplikácia Preparing to copy items… StatusWindow Pripravuje sa kopírovanie položiek… +Save query as template… FindPanel Uložiť požiadavku ako šablónu… Show folder location in title tab SettingsView Zobraziť umiestnenie priečinka v nadpise karty Proceed FSUtils Pokračovať Some items already exist in this folder with the same names as the items you are %verb.\n \nWould you like to replace them with the ones you are %verb or be prompted for each one? FSUtils Niektoré položku už existujú v tomto priečinku s rovnakými názvami ako majú položky, ktoré sa pokúšate %verb.\n \nChcete ich nahradiť položkami z priečinka, ktorý sa pokúšate %verb alebo chcete byť vyzvaný pri každej položke zvlášť? @@ -241,6 +251,7 @@ Sorry, you cannot edit that attribute. WidgetAttributeText Ľutujeme, tento atr Name ContainerWindow Názov Reverse order ContainerWindow Opačné poradie 48 x 48 DeskWindow 48 x 48 +{0, plural, one{# item} other{# items}} CountView Number of selected items: \"1 item\" or \"2 items\" {0, plural, one{# položka} few{# položky} other{# položiek}} OK OpenWithWindow OK Add current folder FilePanelPriv Pridať aktuálny priečinok Could not open \"%document\" with application \"%app\" (Missing symbol: %symbol). \n FSUtils Nebolo možné otvoriť „%document“ aplikáciou „%app“ (Chýbajúci symbol: %symbol). \n @@ -284,6 +295,7 @@ Cancel PoseView Zrušiť You can't move or copy items to read-only volumes. FSUtils Nemôžete presúvať alebo kopírovať položky na zväzky, ktoré sú len na čítanie. Unknown FilePermissionsView Neznáme All files and folders FindPanel Všetky súbory a priečinky +{0, plural, one{for # file} other{for # files}} InfoWindow {0, plural, one{# súbor} few{# súbory} other{# súborov}} Could not open \"%document\" (Missing libraries: %library). \n FSUtils Nepodarilo sa otvoriť „%document“ (Chýbajúce knižnice: %library). \n The Tracker must be running to see Info windows. PoseView Tracker musí bežať, aby ste videli Info okná. Other FilePermissionsView Iné @@ -306,6 +318,7 @@ The specified name is already used as the name of a folder. Please choose anothe Clean up ContainerWindow Vyčistiť after FindPanel po Select… QueryContainerWindow Vybrať… +More options FindPanel Ďalšie možnosti link FSUtils filename link odkaz At %func \nfind_directory() failed. \nReason: %error TrackerInitialState V %func \nfind_directory() zlyhalo. \nDôvod: %error The specified name is illegal. Please choose another name. FilePanelPriv Uvedený názov je neplatný. Prosím, vyberte iný názov. @@ -321,6 +334,7 @@ New folder %ld FSUtils Nový priečinok %ld All BeOS disks AutoMounterSettings Všetky disky BeOS Used space color SettingsView Farba využitého miesta Sorry, could not create a new folder. FSUtils Ľutujeme, nie je možné vytvoriť nový pričinok. +Disk mount TrackerSettingsWindow Pripojenie diskov multiple disks FindPanel viaceré disky You must drop items on one of the disk icons in the \"Disks\" window. PoseView Musíte pretiahnuť položky na jednu z ikon diskov v okne „Disky“. Untitled clipping PoseView Orezávanie nepomenovaných @@ -377,6 +391,7 @@ Paste layout ContainerWindow Vložiť rozloženie Select InfoWindow Vybrať Could not update permissions of file \"%name\". %error FSUtils Nepodarilo sa aktualizovať oprávnenia súboru „%name“. %error Select… FilePanelPriv Vybrať… +\"%name\" is a legacy executable. Please obtain an updated version or recompile the application. FSUtils „%name“ je spustiteľný súbor v starom formáte. Prosím, zožeňte si aktualizovanú verziu alebo znovu skompilujte aplikáciu. There was an error resolving the link. Tracker Vyskytla sa chyba pri preklade odkazu. %BytesPerSecond/s StatusWindow %BytesPerSecond/s You can't move or copy the trash. FSUtils Nemôžete presunúť alebo skopírovať Kôš. @@ -396,6 +411,7 @@ New ContainerWindow Nový Name matches wildcard expression:### SelectionWindow Názov zodpovedá zástupným znakom:### less than FindPanel menej ako 64 x 64 DeskWindow 64 x 64 +develop B_SYSTEM_DEVELOP_DIRECTORY vývoj Modified ContainerWindow Zmenené Edit Query template FindPanel Upraviť šablónu Požiadavky Prompt FSUtils Výzva @@ -413,6 +429,7 @@ contains FindPanel obsahuje Relation OpenWithWindow Vzťah Open FilePanelPriv Otvoriť Mount DeskWindow Pripojiť +Recent queries FindPanel Nedávne požiadavky Mount ContainerWindow Pripojiť %capacity (%used used -- %free free) InfoWindow %capacity (%used využité -- %free voľné) Cancel FSClipBoard Zrušiť diff --git a/data/catalogs/preferences/appearance/sk.catkeys b/data/catalogs/preferences/appearance/sk.catkeys index 0a390d085b..d135593e11 100644 --- a/data/catalogs/preferences/appearance/sk.catkeys +++ b/data/catalogs/preferences/appearance/sk.catkeys @@ -1,4 +1,4 @@ -1 slovak x-vnd.Haiku-Appearance 76206318 +1 slovak x-vnd.Haiku-Appearance 1140137500 Plain font: Font view Základné písmo: Control highlight Colors tab Zvýraznenie ovládacieho prvku Control border Colors tab Okraj ovládacieho prvku @@ -6,15 +6,20 @@ Antialiasing type: AntialiasingSettingsView Typ antialiasingu: Shadow Colors tab Tieň On AntialiasingSettingsView Zapnuté Defaults APRWindow Predvoľby +Link hover Colors tab Podržanie myši nad odkazom Grayscale AntialiasingSettingsView Stupne šedej Shine Colors tab Svit About DecorSettingsView O aplikácii +About decorator DecorSettingsView O dekorátore Off AntialiasingSettingsView Vypnutý +Link text Colors tab Text odkazu +Link active Colors tab Aktívny odkaz Choose Decorator DecorSettingsView Vyberte dekorátor Success Colors tab Úspešné Inactive window tab text Colors tab Text záložky neaktívneho okna Failure Colors tab Zlyhanie Hinting menu AntialiasingSettingsView Menu s tipmi +Scroll bar: DecorSettingsView Posuvník: Document background Colors tab Pozadie dokumentu Revert APRWindow Vrátiť Window tab Colors tab Záložka okna @@ -34,6 +39,8 @@ List background Colors tab Pozadie zoznamu OK DecorSettingsView OK Control mark Colors tab Riadiaca značka Size: Font Selection view Veľkosť: +Link visited Colors tab Navštívený odkaz +Decorator: DecorSettingsView Dekorátor: Selected list item background Colors tab Pozadie zvolenej položky menu Panel background Colors tab Pozadie panelu Menu font: Font view Písmo menu: @@ -44,8 +51,10 @@ List item text Colors tab Text položky menu Appearance System name Vzhľad Fixed font: Font view Písmo s pevnou šírkou: The quick brown fox jumps over the lazy dog. Font Selection view Don't translate this literally ! Use a phrase showing all chars from A to Z. Kŕdeľ ďatľov učí koňa obhrýzať kôru a žrať mäso. +%decorName\n\nAuthors:\n\t%decorAuthors\n\nURL: %decorURL\nLicense: %decorLic\n\n%decorDesc\n DecorSettingsView %decorName\n\nAutori:\n\t%decorAuthors\n\nURL: %decorURL\nLicencia: %decorLic\n\n%decorDesc\n Reduce colored edges filter strength: AntialiasingSettingsView Zmenšiť silu filtra farebných hrán: Subpixel based anti-aliasing in combination with glyph hinting is not available in this build of Haiku to avoid possible patent issues. To enable this feature, you have to build Haiku yourself and enable certain options in the libfreetype configuration header. AntialiasingSettingsView Subpixlový antialiasing v kombinácii s tipmi grafém nie je v tomto zostavení Haiku dostupný, aby sme sa vyhli možným problémom s pantentmi. Ak chcete túto možnosť zapnúť, musíte si Haiku zostaviť sami a zapnúť isté voľby v konfiguračnom hlavičkovom súbore libfreetype. +Scroll bar thumb Colors tab Palec posuvníka Control text Colors tab Text ovládacieho prvku Single: DecorSettingsView Jednoduché: Tooltip text Colors tab Text tipu diff --git a/data/catalogs/preferences/bluetooth/sk.catkeys b/data/catalogs/preferences/bluetooth/sk.catkeys index 946fb78d1c..1299814d23 100644 --- a/data/catalogs/preferences/bluetooth/sk.catkeys +++ b/data/catalogs/preferences/bluetooth/sk.catkeys @@ -1,4 +1,4 @@ -1 slovak x-vnd.Haiku-BluetoothPrefs 1628593228 +1 slovak x-vnd.Haiku-BluetoothPrefs 3212620536 About Bluetooth… Window O aplikácii Bluetooth… Handheld Settings view Handheld Default inquiry time: Settings view Predvolený čas zisťovania: @@ -55,6 +55,7 @@ Always ask Settings view Vždy sa pýtať Retrieving name of %1 Inquiry panel Zisťuje sa názov %1 Check that the Bluetooth capabilities of your remote device are activated. Press 'Inquiry' to start scanning. The needed time for the retrieval of the names is unknown, although should not take more than 3 seconds per device. Afterwards you will be able to add them to your main list, where you will be able to pair with them. Inquiry panel Zistiť, či sú schopnosti Bluetooth vášho vzdialeného zariadenia aktivované. Stlačením „Zistenie“ spustíte hľadanie. Potrebný čas na zistenie názvov nie je známy, ale nemal by byť dlhší ako 3 sekundy na zariadenie. Potom ich budete môcť pridať do svojho hlavného zoznamu, kde sa s nimi budete môcť spárovať. Authenticate Extended local device view Autentifikovať +Pick device... Settings view Vybrať zariadenie... Retrieving names... Inquiry panel Získavajú sa názvy... Help Window Pomoc Add… Remote devices Pridať… diff --git a/data/catalogs/preferences/filetypes/sk.catkeys b/data/catalogs/preferences/filetypes/sk.catkeys index f583ee74a0..c3a8d8ee21 100644 --- a/data/catalogs/preferences/filetypes/sk.catkeys +++ b/data/catalogs/preferences/filetypes/sk.catkeys @@ -1,4 +1,4 @@ -1 slovak x-vnd.Haiku-FileTypes 4042259532 +1 slovak x-vnd.Haiku-FileTypes 734679611 Application types… FileTypes Window Typy aplikácií… Description: Application Types Window Popis: Args only Application Type Window Iba argumenty @@ -49,7 +49,10 @@ Group name: New File Type Window Názov skupiny: Preferred application FileType Window Preferovaná aplikácia Progress Application Types Window Priebeh Set preferred application Preferred App Menu Nastaviť preferovanú aplikáciu +Don't save Application Type Window Neukladať +Save changes before closing? Application Type Window Uložiť zmeny pred ukončením? File Application Type Window Súbor +{0, plural, one{# Application type could be removed} other{# Application types could be removed}} Application Types Window {0, plural, one{# typ} few{# typy} other{# typov}} aplikácie nebolo možné odstrániť Version: Application Type Window Verzia: Select… FileTypes Window Vybrať… FileTypes request FileTypes Požiadavka Typy súborov diff --git a/data/catalogs/preferences/keymap/sk.catkeys b/data/catalogs/preferences/keymap/sk.catkeys index ba482b62ce..3de4e7f9fe 100644 --- a/data/catalogs/preferences/keymap/sk.catkeys +++ b/data/catalogs/preferences/keymap/sk.catkeys @@ -1,38 +1,125 @@ -1 slovak x-vnd.Haiku-Keymap 4022885915 +1 slovak x-vnd.Haiku-Keymap 3155537444 +Dvorak Keyboard Layout View Dvorak Shift: Modifier keys window Shift key role name Posun: Revert Modifier keys window Vrátiť +Slovak Keyboard Layout View slovenské +Hungarian Keyboard Layout View maďarské +German Keyboard Layout View nemecké +Swiss-French Keyboard Layout View švajčiarsko-francúzske +Warning: left and right key roles do not match Modifier keys window Upozornenie: role ľavého a pravého klávesu sa líšia +Belgian (comma) Keyboard Layout View belgické (čiarka) +Scroll lock Keyboard Layout View Scroll Lock +Belarusian (Mac) Keyboard Layout View bieloruské (Mac) +Greek Keyboard Layout View grécke +Menu Keyboard Layout View Menu key Menu +US Keyboard Layout View USA +Left control Keyboard Layout View Ľavý control +Spanish Keyboard Layout View španielske +Ukrainian (Mac) Keyboard Layout View ukrajinské (Mac) +Belarusian Keyboard Layout View bieloruské +Italian Keyboard Layout View talianske +Polish (Typewriter) Keyboard Layout View poľské (písací stroj) Tilde trigger Keymap window Spúšťač tilda Grave trigger Keymap window Spúšťač apostrof Role Modifier keys window As in the role of a modifier key Úloha +Caps lock Keyboard Layout View Caps Lock Select dead keys Keymap window Vyberte mŕtve klávesy +Bulgarian (Cyrillic) Keyboard Layout View bulharské (azbuka) Cancel Modifier keys window Zrušiť +Russian Keyboard Layout View ruské +Icelandic Keyboard Layout View islandské +Command Keyboard Layout View Command key Príkaz +Polish Keyboard Layout View poľské +Serbian (Cyrillic) Keyboard Layout View srbské (azbuka) +French Keyboard Layout View francúzske +Faeroese Keyboard Layout View faerské +Japanese Keyboard Layout View japonské +Bulgarian (Phonetic) Keyboard Layout View bulharské (fonetické) +Dvorak (programmer's) Keyboard Layout View Dvorak (programátorské) +Estonian Keyboard Layout View estónske +Russian (Mac) Keyboard Layout View ruské (Mac) +Defaults Keymap window Predvolené Quit Keymap window Ukončiť +Dutch Keyboard Layout View holandské Switch shortcut keys to Haiku mode Keymap window Vymeniť skratkové klávesy na režim Haiku Circumflex trigger Keymap window Spúšťač vokáň +Hebrew Keyboard Layout View hebrejské +ISO-9995 Keyboard Layout View ISO-9995 Diaeresis trigger Keymap window Spúšťač rozluky Disabled Modifier keys window Do nothing Vypnuté +Belarusian (Latin) Keyboard Layout View bieloruské (latinka) +Danish Keyboard Layout View dánske Open… Keymap window Otvoriť… +Russian (Typewriter) Keyboard Layout View ruské (písací stroj) +Error: duplicate keys Modifier keys window Chyba: Duplicitné kľúče System: Keymap window Systém: +Lithuanian Keyboard Layout View litovské +Finnish Keyboard Layout View fínske +Svorak Keyboard Layout View Svorak +Left command Keyboard Layout View Ľavý command +Romanian Keyboard Layout View rumunské Set modifier keys… Keymap window Nastaviť klávesy modifikátorov… Option: Modifier keys window Option key role name Voľba: +Czech (Mac) Keyboard Layout View české (Mac) +Control Keyboard Layout View Control key Control +Left option Keyboard Layout View Ľavý alt +Portuguese Keyboard Layout View portugalské +Right control Keyboard Layout View Pravý control +Belgian (point) Keyboard Layout View belgické (point) Switch shortcut keys Keymap window Vymeniť skratkové klávesy +Norwegian Keyboard Layout View nórske Shift key Modifier keys window Label of key above Ctrl, usually Shift Kláves Shift User: Keymap window Používateľ: +Esperanto Keyboard Layout View esperanto +Arabic (102) Keyboard Layout View arabské (102) +United-Kingdom Keyboard Layout View Veľká Británia +German (Mac) Keyboard Layout View nemecké (Mac) +Right option Keyboard Layout View Pravý alt +Right shift Keyboard Layout View Pravý shift Key Modifier keys window As in a computer keyboard key Kláves Ctrl key Modifier keys window Label of key farthest from the spacebar, usually Ctrle.g. Strg for German keyboard Kláves Ctrl Control: Modifier keys window Control key role name Control: +Brazilian Keyboard Layout View brazílske +Remove Keyboard Layout View Odstrániť +Brazilian (ABNT2) Keyboard Layout View brazílske (ABNT2) +French (Bépo) Keyboard Layout View francúzske (Bépo) +Option Keyboard Layout View Option key Alt +US-International Keyboard Layout View USA medzinárodná Sample and clipboard: Keymap window Vzor a schránka: +Swiss-German Keyboard Layout View švajčiarsko-nemecké Alt/Opt key Modifier keys window Label of Alt key (PC)/Option key (Mac) Kláves Alt/Opt Layout Keymap window Rozloženie Switch shortcut keys to Windows/Linux mode Keymap window Vymeniť skratkové klávesy na režim Windows/Linux +Albanian Keyboard Layout View albánske +Right command Keyboard Layout View Pravý command Revert Keymap window Vrátiť Command: Modifier keys window Command key role name Príkaz: +Latin-American Keyboard Layout View latinskoamerické +Spanish (Dvorak) Keyboard Layout View španielske (Dvorak) +Lithuanian (Standard) Keyboard Layout View litovské (štandardné) +Canadian-French Keyboard Layout View kanadsko-francúzske +Irish Keyboard Layout View írske +Turkish (Type-F) Keyboard Layout View turecké (Type-F) +Slovene Keyboard Layout View slovinské +Turkish (Type-Q) Keyboard Layout View turecké (Type-Q) Save as… Keymap window Uložiť ako… Win/Cmd key Modifier keys window Label of the \"Windows\" key (PC)/Command key (Mac) Kláves Win/Cmd +Serbian (Latin) Keyboard Layout View srbské (latinka) File Keymap window Súbor +Num lock Keyboard Layout View Num Lock +Swedish Keyboard Layout View švédske +Macedonian Keyboard Layout View macedónske (Current) Keymap window (aktuálne) Font Keymap window Písmo Keymap System name Mapa kláves +French (Mac) Keyboard Layout View francúzske (Mac) +Left shift Keyboard Layout View Ľavý shift +Shift Keyboard Layout View Shift key Shift +Ukrainian Keyboard Layout View ukrajinské +Croatian Keyboard Layout View chorvátske +Kazakh Keyboard Layout View kazašské +Czech Keyboard Layout View české Set modifier keys Modifier keys window Nastaviť modifikačné klávesy +Colemak Keyboard Layout View Colemak Modifier keys Modifier keys window Modifikačné klávesy Acute trigger Keymap window Spúšťač dĺžeň diff --git a/data/catalogs/preferences/mail/sk.catkeys b/data/catalogs/preferences/mail/sk.catkeys index c74219b8e5..59d591abf7 100644 --- a/data/catalogs/preferences/mail/sk.catkeys +++ b/data/catalogs/preferences/mail/sk.catkeys @@ -1,9 +1,10 @@ -1 slovak x-vnd.Haiku-Mail 688530788 +1 slovak x-vnd.Haiku-Mail 2750130554 Settings Config Window Nastavenie Never Config Window show status window Nikdy While sending and receiving Config Window Počas odosielania a prijímania Incoming Config Window Prichádzajúce Server name: E-Mail Názov servera: +An error occurred while creating the config view: %error. Config Views Vyskytla sa chyba počas vytvárania zobrazenia len na čítanie: %error. OK Config Window OK E-mail address: E-Mail Emailová adresa: Account name: E-Mail Názov účtu: @@ -18,8 +19,11 @@ Password: E-Mail Heslo: Accounts Config Window Účty Finish AutoConfigWindow Dokončiť Remove Config Window Odstrániť +Create a new account with the Add button.\n\nRemove an account with the Remove button on the selected item.\n\nSelect an item in the list to change its settings. Config Window Vytvorte nový účet pomocou tlačidla Pridať.\n\nOdstráňte účet pomocou tlačidla Odstrániť na vybranej položke.\n\nVyberte položku v zozname ak chcete zmeniť jej nastavenie. +Error! Config Views Chyba! Server Name: E-Mail Názov servera: While sending Config Window Počas odosielania +Show notifications: Config Window Zobrazovať upozornenia: Enter a valid e-mail address. AutoConfigWindow Zadajte platnú emailovú adresu. Add Config Window Pridať Account settings AutoConfigWindow Nastavenie účtu diff --git a/data/catalogs/preferences/media/sk.catkeys b/data/catalogs/preferences/media/sk.catkeys index a27379cf2a..3b981fb0d6 100644 --- a/data/catalogs/preferences/media/sk.catkeys +++ b/data/catalogs/preferences/media/sk.catkeys @@ -1,7 +1,10 @@ -1 slovak x-vnd.Haiku-Media 2605101563 +1 slovak x-vnd.Haiku-Media 4205337498 Couldn't add volume control in Deskbar: %s\n Media views Nepodarilo sa pridať ovládanie hlasitosti do Panela: %s\n Video input: Media views Video vstup: +Warning! Media Window Upozornenie! +Quit anyway Media Window Ukončiť napriek tomu Defaults Media views Predvolené +MIDI Settings Media Window Nastavenia MIDI Quit Media Window Ukončiť Video settings Media Window Video nastavenia Video output: Media views Video výstup: @@ -9,6 +12,7 @@ Could not connect to the media server.\nWould you like to start it ? Media Windo Restart media services Media views Reštartovať multimediálne služby Couldn't remove volume control in Deskbar: %s\n Media views Nepodarilo sa odstrániť ovládanie hlasitosti z Panela: %s\n Media System name Multimédiá +Quitting Media now will stop the restarting of the media services. Flaky or unavailable media functionality is the likely result. Media Window Ak Media teraz ukončíte, zastavíte reštartovanie multimediálnych služieb. To bude mať pravdepodobne za náseldok nefunkčné alebo nedostupné multimediálne funkcie. Audio mixer Media Window Zmiešavač zvuku This hardware has no controls. Media Window Tento hardvér nemá žiadne ovládacie prvky. Audio output: Media views Zvukový výstup: diff --git a/data/catalogs/preferences/network/InterfacesAddOn/sk.catkeys b/data/catalogs/preferences/network/InterfacesAddOn/sk.catkeys new file mode 100644 index 0000000000..ab62a8a21a --- /dev/null +++ b/data/catalogs/preferences/network/InterfacesAddOn/sk.catkeys @@ -0,0 +1,32 @@ +1 slovak x-vnd.Haiku-InterfacesAddOn 3297241710 +Interface InterfaceWindow Rozhranie +Network: IntefaceHardwareView Sieť: +Static IntefaceAddressView Statická +None InterfacesListView Žiadna +IP: InterfacesListView IPv4 address label IP: +Renegotiate address InterfacesListView Znovu vyjednať adresu +Status: IntefaceHardwareView Stav: +IPv6: InterfacesListView IPv6 address label IPv6: +Link speed: IntefaceHardwareView Rýchlosť linky: +The method for obtaining an IP address IntefaceAddressView Spôsob získania adresy IP +Your gateway IntefaceAddressView Vaša brána +Enable InterfacesListView Povoliť +Received: IntefaceHardwareView Prijatých: +Choose automatically IntefaceHardwareView Zvoliť automaticky +connected IntefaceHardwareView pripojené +Automatic IntefaceAddressView Automaticky +Gateway: IntefaceAddressView Brána: +Disable InterfacesListView Zakázať +Sent: IntefaceHardwareView Odoslaných: +DHCP IntefaceAddressView DHCP +Mode: IntefaceAddressView Režim: + IntefaceHardwareView +Your netmask IntefaceAddressView Maska siete +IP Address: IntefaceAddressView Adresa IP: +Off IntefaceAddressView Vypnuté +MAC address: IntefaceHardwareView Adresa MAC: +Renegotiate IntefaceHardwareView Znovu vyjednať +Netmask: IntefaceAddressView Sieťová maska: +Your IP address IntefaceAddressView Vaša adresa IP +disconnected IntefaceHardwareView odpojené +Disable IntefaceHardwareView Zakázať diff --git a/data/catalogs/preferences/network/ServicesAddOn/sk.catkeys b/data/catalogs/preferences/network/ServicesAddOn/sk.catkeys new file mode 100644 index 0000000000..13bc86355d --- /dev/null +++ b/data/catalogs/preferences/network/ServicesAddOn/sk.catkeys @@ -0,0 +1,2 @@ +1 slovak x-vnd.Haiku-NetworkServices 1268988047 +DNS Client Services Klient DNS diff --git a/data/catalogs/preferences/network/sk.catkeys b/data/catalogs/preferences/network/sk.catkeys index a782f3ea0f..9fbd1fead5 100644 --- a/data/catalogs/preferences/network/sk.catkeys +++ b/data/catalogs/preferences/network/sk.catkeys @@ -1,20 +1,50 @@ -1 slovak x-vnd.Haiku-Network 2106277099 -Choose automatically EthernetSettingsView Zvoliť automaticky -Gateway: EthernetSettingsView Brána: -Netmask: EthernetSettingsView Maska siete: -DHCP EthernetSettingsView DHCP -Apply EthernetSettingsView Použiť -OK EthernetSettingsView OK -IP address: EthernetSettingsView IP adresa: -Adapter: EthernetSettingsView Adaptér: -Domain: EthernetSettingsView Doména: -Revert EthernetSettingsView Vrátiť - EthernetSettingsView -Network System name Sieť -Mode: EthernetSettingsView Režim: -Network: EthernetSettingsView Sieť: -The net_server needs to run for the auto configuration! EthernetSettingsView Aby bola možná automatická konfigurácia, musí bežať net_server! -Disabled EthernetSettingsView Vypnuté -Auto-configuring failed: EthernetSettingsView Automatická konfigurácia sa nepodarila: -Static EthernetSettingsView Statická - EthernetSettingsView <žiaden adaptér> +1 slovak x-vnd.Haiku-Network 2512967175 +Static IntefaceAddressView Statická +EAP EAP protected network EAP +Services NetworkWindow Služby +no link InterfaceListItem bez spojenia +WPA2 WPA2 protected network WPA2 +Choose automatically IntefaceView Vybrať automaticky +connected IntefaceView pripojené +Ethernet device InterfaceListItem Ethernetové zariadenie +The netmask defines your local network IntefaceAddressView Sieťová maska definuje vašu lokálnu sieť +%name% (%authenticationMode%) WirelessNetworkMenuItem %name% (%authenticationMode%) +Network NetworkWindow Sieť +Show network status in Deskbar NetworkWindow Zobraziť stav siete v Paneli +The method for obtaining an IP address IntefaceAddressView Spôsob získania adresy IP +connected InterfaceListItem pripojené +disabled InterfaceListItem zakázané +Dial Up NetworkWindow Vytáčané pripojenie Dial-Up +Apply IntefaceAddressView Použiť +Installing NetworkStatus in Deskbar failed: %s NetworkWindow Inštalácia Stavu siete do Panelu zlyhala: %s +MAC address: IntefaceView Adresa MAC: +Wireless device InterfaceListItem Bezdrôtové zariadenie +Disabled IntefaceAddressView Zakázané +Renegotiate IntefaceView Znovu vyjednať +Ok NetworkWindow OK +Network: IntefaceView Sieť: +launch error NetworkWindow chyba pri spustení +Other NetworkWindow Iné +Automatic IntefaceAddressView Automaticky +Gateway: IntefaceAddressView Brána: +Revert NetworkWindow Vrátiť +Enable ServiceView Povoliť +disconnected IntefaceView odpojené +Status: IntefaceView Stav: +Link speed: IntefaceView Rýchlosť linky: +Your gateway to the internet IntefaceAddressView Vaša brána do internetu +New… NetworkWindow Nová… +DHCP IntefaceAddressView DHCP +Mode: IntefaceAddressView Režim: +WPA WPA protected network WPA +Sent: IntefaceView Odoslaných: +open Open network otvorená +IP Address: IntefaceAddressView Adresa IP: +Received: IntefaceView Prijatých: +Disable IntefaceView Zakázať + IntefaceView +Netmask: IntefaceAddressView Sieťová maska: +Disable ServiceView Zakázať +Your IP address IntefaceAddressView Vaša adresa IP +Manage… NetworkWindow Spravovať… +WEP WEP protected network WEP diff --git a/data/catalogs/preferences/notifications/sk.catkeys b/data/catalogs/preferences/notifications/sk.catkeys index d53059d039..edb7e03a3f 100644 --- a/data/catalogs/preferences/notifications/sk.catkeys +++ b/data/catalogs/preferences/notifications/sk.catkeys @@ -1,4 +1,5 @@ -1 slovak x-vnd.Haiku-Notifications 2718138102 +1 slovak x-vnd.Haiku-Notifications 3961154942 +An error occurred saving the preferences.\nIt's possible you are running out of disk space. PrefletWin Vyskytla sa chyba pri ukladaní nastavení.\nJe možné, že vám došlo miesto na disku. Notifications GeneralView Oznamy seconds of inactivity GeneralView sekundách nečinnosti Revert PrefletWin Vrátiť @@ -6,6 +7,7 @@ Mini icon DisplayView Mini ikona Enable notifications GeneralView Zapnúť upozornenia Error NotificationView Chyba OK GeneralView OK +OK PrefletWin OK Type NotificationView Typ Notifications cannot be stopped, because the server can't be reached. GeneralView Oznámenia nemožno zastaviť, pretože server nebolo možné kontaktovať. Cannot enable notifications because the server cannot be found.\nThis means your InfoPopper installation was not successfully completed. GeneralView Oznámenia nemožno zapnúť, pretože server nebol nájdený.\nTo znamená, že vaša inštalácia InfoPopper nebola úspešne dokončená. @@ -14,6 +16,7 @@ Cannot disable notifications because the server can't be reached. GeneralView N Progress NotificationView Priebeh Last Received NotificationView Posledný prijatý General PrefletView Všeobecné +Apply PrefletWin Použiť Display PrefletView Displej Search: NotificationView Hľadať: Allowed NotificationView Povolené diff --git a/data/catalogs/preferences/printers/sk.catkeys b/data/catalogs/preferences/printers/sk.catkeys index ad566ca8df..751045a342 100644 --- a/data/catalogs/preferences/printers/sk.catkeys +++ b/data/catalogs/preferences/printers/sk.catkeys @@ -1,4 +1,4 @@ -1 slovak x-vnd.Be-PRNT 200447094 +1 slovak x-vnd.Be-PRNT 2163275033 Printer: %printer_name%\nDriver: %driver%\n TestPageView Tlačiareň: %printer_name%\nOvládač: %driver%\n Waiting JobListView Čaká sa Print test page PrintersWindow Vytlačiť testovaciu stránku @@ -9,6 +9,7 @@ Cancel AddPrinterDialog Zrušiť Add printer AddPrinterDialog Pridať tlačiareň Green TestPageView Zelená Printers PrintersWindow Tlačiarne +Add… PrintersWindow Pridať… Default Printer PrinterListView Predvolená tlačiareň Transport: %transport% %transport_address% PrinterListView Transport: %transport% %transport_address% No pending jobs. PrinterListView Žiadne úlohy vo fronte. diff --git a/data/catalogs/preferences/screen/sk.catkeys b/data/catalogs/preferences/screen/sk.catkeys index 74b221e2ac..cc769cef7d 100644 --- a/data/catalogs/preferences/screen/sk.catkeys +++ b/data/catalogs/preferences/screen/sk.catkeys @@ -1,4 +1,4 @@ -1 slovak x-vnd.Haiku-Screen 1388881963 +1 slovak x-vnd.Haiku-Screen 4090394050 yes Screen áno Use laptop panel: Screen Použiť panel noteboku: 15 bits/pixel, 32768 colors Screen 15 bitov/pixel, 32768 farieb @@ -12,6 +12,7 @@ Set background… Screen Nastaviť pozadie… Undo Screen Vrátiť späť if needed Screen ak treba Screen preferences by the Haiku team Screen Nastavenie obrazovky, vytvoril tím Haiku +Settings will revert in %seconds. Screen Nastavenia sa vrátia späť o %seconds sekúnd. Screen System name Obrazovka OK Screen OK Workspaces Screen Pracovné plochy @@ -38,6 +39,7 @@ bits/pixel Screen bitov/pixel Refresh rate: Screen Obnovovacia frekvencia: Hz Screen Hz Do you wish to keep these settings? Screen Chcete tieto nastavenia zachovať? +Confirm changes Screen Potvrdiť zmeny Rows: Screen Riadkov: vertically Screen zvisle Resolution: Screen Rozlíšenie: diff --git a/data/catalogs/preferences/screensaver/sk.catkeys b/data/catalogs/preferences/screensaver/sk.catkeys index aaac183df9..794a2c0488 100644 --- a/data/catalogs/preferences/screensaver/sk.catkeys +++ b/data/catalogs/preferences/screensaver/sk.catkeys @@ -1,4 +1,4 @@ -1 slovak x-vnd.Haiku-ScreenSaver 904083067 +1 slovak x-vnd.Haiku-ScreenSaver 557704281 Could not load screen saver ScreenSaver Nebolo možné načítať šetrič obrazovky 30 seconds ScreenSaver 30 sekúnd Start screensaver ScreenSaver Spustiť šetrič obrazovky @@ -10,7 +10,9 @@ Display Power Management Signaling not available ScreenSaver Display Power Mana ScreenSaver System name Šetrič obrazovky Test ScreenSaver Test General ScreenSaver Všeobecné +Fade now when mouse is here ScreenSaver Skryť teraz, keď myš je tu Enable screensaver ScreenSaver Zapnúť šetrič obrazovky +Don't fade when mouse is here ScreenSaver Neskrývať, keď myš je tu Cancel ScreenSaver Zrušiť Turn off screen ScreenSaver Vypnúť obrazovku No options available ScreenSaver Žiadne dostupné možnosti @@ -22,4 +24,5 @@ Blackness ScreenSaver Čiernota Use custom password ScreenSaver Použiť vlastné heslo Done ScreenSaver Hotovo Confirm password: ScreenSaver Potvrďte heslo: +No preview available PreviewView Náhľad nie je k dispozícii Use network password ScreenSaver Použiť sieťové heslo diff --git a/data/catalogs/preferences/shortcuts/sk.catkeys b/data/catalogs/preferences/shortcuts/sk.catkeys index 5bc53beea4..f45e94cd49 100644 --- a/data/catalogs/preferences/shortcuts/sk.catkeys +++ b/data/catalogs/preferences/shortcuts/sk.catkeys @@ -1,4 +1,4 @@ -1 slovak x-vnd.Haiku-Shortcuts 1755582132 +1 slovak x-vnd.Haiku-Shortcuts 102336796 OK ShortcutsWindow OK Shortcuts wasn't able to save your keyset. ShortcutsWindow Aplikácia Skratky nedokázala uložiť vašu sadu kláves. Cancel ShortcutsWindow Zrušiť @@ -6,6 +6,7 @@ Append KeySet… ShortcutsWindow Pridať SaduKláves… Control ShortcutsSpec Name for modifier on keyboard Ctrl Key ShortcutsWindow Kláves Open KeySet… ShortcutsWindow Otvoriť SaduKláves… +Error, NULL state description? ShortcutsSpec Chyba, NULL popis stavu? Revert to saved ShortcutsWindow Vrátiť spať uložené Alt ShortcutsSpec Name for modifier on keyboard Alt *InsertString \"Your Text Here\" ShortcutsWindow *VložiťReťazec \"Váš text sem\" @@ -14,9 +15,11 @@ Alt ShortcutsSpec Name for modifier on keyboard Alt *LaunchHandler text/html ShortcutsWindow *SpustiťObsluhu text/html Shortcuts was couldn't open your KeySet file! ShortcutsWindow Aplikácia Skratky nedokázala otvoriť váš súbor SadaKláves! *Multi \"*MoveMouseTo 100% 0\" \"*MouseButton 1\" ShortcutsWindow *Multi \"*PresunúťMyšNa 100% 0\" \"*TlačidloMyši 1\" +Option ShortcutsSpec Name for modifier on keyboard Možnosť Save ShortcutsWindow Uložiť *MouseButton 1 ShortcutsWindow *TlačidloMyši 1 *MoveMouse +20 +0 ShortcutsWindow *PresunúťMyš +20 +0 +Save changes before closing? ShortcutsWindow Uložiť zmeny pred ukončením? Remove selected shortcut ShortcutsWindow Odstrániť vybranú skratku Add new shortcut ShortcutsWindow Prodať novú skratku Save & apply ShortcutsWindow Uložiť a použiť diff --git a/data/catalogs/preferences/time/sk.catkeys b/data/catalogs/preferences/time/sk.catkeys index 007938f872..8f4904de5e 100644 --- a/data/catalogs/preferences/time/sk.catkeys +++ b/data/catalogs/preferences/time/sk.catkeys @@ -1,9 +1,10 @@ -1 slovak x-vnd.Haiku-Time 2575883892 +1 slovak x-vnd.Haiku-Time 3180389660 GMT (UNIX compatible) Time GMT (kompatibilné s Unixom) OK Time OK Asia Time Ázia \nNow: Time \nTeraz: Africa Time Afrika +Reset to default server list Time Obnoviť predvolený zoznam serverov Stop Time Zastaviť Could not contact server Time Nepodarilo sa kontaktovať server Australia Time Austrália @@ -11,6 +12,7 @@ Preview time: Time Náhľad času: Synchronize Time Synchronizovať Revert Time Vrátiť Pacific Time Pacifik +Show day of week Time Zobraziť deň v týždni Add Time Pridať Date and time Time Dátum a čas about Time O aplikácii @@ -26,12 +28,15 @@ Time Time Čas Indian Time Indický Sending request failed Time Odoslanie požiadavky zlyhalo Arctic Time Arktída +Display time with seconds Time Zobraziť sekundy v čase Time System name Čas America Time Amerika Synchronize at boot Time Synchronizovať pri štarte Time & Date, written by:\n\n\tAndrew Edward McCall\n\tMike Berg\n\tJulun\n\tPhilippe Saint-Pierre\n\nCopyright 2004-2012, Haiku. Time Čas a dátum, napísali:\n\n\tAndrew Edward McCall\n\tMike Berg\n\tJulun\n\tPhilippe Saint-Pierre\n\nCopyright 2004-2012, Haiku. Received invalid time Time Prijatý neplatný čas Antarctica Time Antarktída +Show time zone Time Zobraziť časové pásmo +Show clock in Deskbar Time Zobraziť hodiny v Paneli The following error occured while synchronizing:r\n%s: %s Time Počas synchronizácie sa vyskytla nasledovná chyba:r\n%s: %s Time Current time: Time Aktuálny čas: diff --git a/data/catalogs/preferences/virtualmemory/sk.catkeys b/data/catalogs/preferences/virtualmemory/sk.catkeys index 7b3fd60559..c0ec98c8d4 100644 --- a/data/catalogs/preferences/virtualmemory/sk.catkeys +++ b/data/catalogs/preferences/virtualmemory/sk.catkeys @@ -1,5 +1,6 @@ -1 slovak x-vnd.Haiku-VirtualMemory 4238590117 +1 slovak x-vnd.Haiku-VirtualMemory 2090796060 Quit SettingsWindow Ukončiť +Automatic swap management SettingsWindow Automatická správa odkladacieho priestoru Turn off SettingsWindow Vypnúť Disabling virtual memory will have unwanted effects on system stability once the memory is used up.\nVirtual memory does not affect system performance until this point is reached.\n\nAre you really sure you want to turn it off? SettingsWindow Vypnutie virtuálnej pamäte bude mať nežiadúce účinky na stabilitu systému v prípade vyčerpania pamäte.\nVirtuálna pamäť nemá vplyv na výkon systému pred dosiahnutím tohto stavu.\n\nSte si naozaj istí, že ju chcete vypnúť? Requested swap file size: SettingsWindow Požadovaná veľkosť odkladacieho súboru: diff --git a/data/catalogs/servers/keystore/sk.catkeys b/data/catalogs/servers/keystore/sk.catkeys new file mode 100644 index 0000000000..fe385055cc --- /dev/null +++ b/data/catalogs/servers/keystore/sk.catkeys @@ -0,0 +1,17 @@ +1 slovak x-vnd.Haiku-keystore_server 2429996361 +This application hasn't been granted access before. AppAccessRequestWindow Tejto aplikácii zatiaľ nebol udelený prístup. +Unlock KeyRequestWindow Odomknúť +This application has been updated since it was last granted access. AppAccessRequestWindow Táto aplikácia bola od posledného udelenia prístupu aktualizovaná. +Allow always AppAccessRequestWindow Vždy povoliť +Application keyring access AppAccessRequestWindow Prístup aplikácie k zväzku kľúčov +to perform the following action:\n%accessString%\n\n AppAccessRequestWindow vykonanie nasledovnej operácie:\n%accessString%\n\n +The application:\n%signature% (%path%)\n\n AppAccessRequestWindow Aplikácia:\n%signature% (%path%)\n\n +This application doesn't yet have the required privileges. AppAccessRequestWindow Táto aplikácia zatiaľ nemá požadované oprávnenie. +Password: KeyRequestWindow Heslo: +Cancel KeyRequestWindow Zrušiť +Keyring: KeyRequestWindow Zväzok kľúčov: +Unlock keyring KeyRequestWindow Odomknúť zväzok kľúčov +An application wants to access the keyring below, but it is locked with a passphrase. Please enter the passphrase to unlock the keyring.\nIf you unlock the keyring, it stays unlocked until the system is shut down or the keyring is manually locked again.\nIf you cancel this dialog the keyring will remain locked. KeyRequestWindow Aplikácia žiada o prístup k nižšie uvedenému zväzku kľúčov, ale ten je uzamknutý pomocou hesla. Prosím, zadajte heslo na odomknutie zväzku kľúčov.\nAk odomknete zväzok kľúčov, zostane odomknutý až do vypnutia systému alebo kým zväzok kľúčov opäť ručne nezamknete.\nAk tento dialóg zrušíte, zväzok kľúčov zostane zamknutý. +Allow once AppAccessRequestWindow Povoliť raz +Disallow AppAccessRequestWindow Zakázať +requests access to keyring:\n%keyringName%\n\n AppAccessRequestWindow žiada o prístup k zväzku kľúčov:\n%keyringName%\n\n diff --git a/data/catalogs/servers/mail/sk.catkeys b/data/catalogs/servers/mail/sk.catkeys index d1c38f109d..7754a64281 100644 --- a/data/catalogs/servers/mail/sk.catkeys +++ b/data/catalogs/servers/mail/sk.catkeys @@ -1,7 +1,10 @@ -1 slovak x-vnd.Be-POST 825141276 +1 slovak x-vnd.Be-POST 2949558073 Fetching mail for %name Notifier Sťahuje sa pošta účtu %name Check for mails only DeskbarView Iba skontrolovať poštu Send pending mails DeskbarView Poslať čakajúcu poštu +{0, plural, one{One new message} other{# new messages}} MailDaemon {0, plural, one{jedna nová správa} few{# nové správy} other{# nových správ}} +{0, plural, one{# new message} other{# new messages}} DeskbarView {0, plural, one{# nová správa} few{# nové správy} other{# nových správ}} +{0, plural, one{# new message} other{# new messages}} for %name\n MailDaemon {0, plural, one{# nová správa} few{# nové správy} other{# nových správ}} pre %name\n New Messages MailDaemon Nové správy DeskbarView <žiadne účty> Mail status MailDaemon Stav pošty diff --git a/data/catalogs/servers/print/sk.catkeys b/data/catalogs/servers/print/sk.catkeys index 7ffadf0b48..50d2e9d3b9 100644 --- a/data/catalogs/servers/print/sk.catkeys +++ b/data/catalogs/servers/print/sk.catkeys @@ -1,4 +1,4 @@ -1 slovak x-vnd.Be-PSRV 1761631281 +1 slovak x-vnd.Be-PSRV 123334776 Undefined ConfigWindow Nedefinované Return the number of available transports PrintServerApp Scripting Vrátiť počet dostupných transportov Return the number of available printers PrintServerApp Scripting Vrátiť počet dostupných tlačiarní @@ -9,6 +9,7 @@ Retrieve a specific printer PrintServerApp Scripting Zistiť konkrétnu tlačia Page %1 to %2 ConfigWindow Strany %1 až %2 Get name of the printer add-on used for this printer Printer Scripting Zistiť názov doplnku tejto tlačiarene Page setup: ConfigWindow Nastavenie stránky: +B5 (JIS) ConfigWindow JIS P0138 B5, a Japanese paper size B5 (JIS) OK ConfigWindow OK Cancel ConfigWindow Zrušiť Printer server ConfigWindow Tlačový server diff --git a/data/catalogs/tests/kits/net/preflet/InterfacesAddOn/sk.catkeys b/data/catalogs/tests/kits/net/preflet/InterfacesAddOn/sk.catkeys new file mode 100644 index 0000000000..96995761c8 --- /dev/null +++ b/data/catalogs/tests/kits/net/preflet/InterfacesAddOn/sk.catkeys @@ -0,0 +1,33 @@ +1 slovak x-vnd.Haiku-InterfacesAddOn 160108912 +Interface InterfaceWindow Rozhranie +Configure… InterfacesListView Nastaviť... +Static IntefaceAddressView Statická +None InterfacesListView Žiadna +IP: InterfacesListView IPv4 address label IP: +Status: IntefaceHardwareView Stav: +IPv6: InterfacesListView IPv6 address label IPv6: +Save InterfaceWindow Uložiť +Link speed: IntefaceHardwareView Rýchlosť linky: +Renegotiate InterfacesAddOn Znovu vyjednať +The method for obtaining an IP address IntefaceAddressView Spôsob získania adresy IP +Your gateway IntefaceAddressView Vaša brána +Enable InterfacesListView Povoliť +Received: IntefaceHardwareView Prijatých: +Revert InterfaceWindow Vrátiť späť +connected IntefaceHardwareView pripojené +Gateway: IntefaceAddressView Brána: +Disable InterfacesListView Zakázať +Sent: IntefaceHardwareView Odoslaných: +Disable InterfacesAddOn Zakázať +Configure… InterfacesAddOn Nastaviť... +Renegotiate Address InterfacesListView Znovu vyjednať adresu +DHCP IntefaceAddressView DHCP +Mode: IntefaceAddressView Režim: +Your netmask IntefaceAddressView Maska siete +IP Address: IntefaceAddressView Adresa IP: +Off IntefaceAddressView Vypnuté +MAC address: IntefaceHardwareView Adresa MAC: +Netmask: IntefaceAddressView Maska siete: +Your IP address IntefaceAddressView Vaša adresa IP +%llu KBytes IntefaceHardwareView %llu KBajtov +disconnected IntefaceHardwareView odpojené diff --git a/data/catalogs/tests/servers/app/playground/sk.catkeys b/data/catalogs/tests/servers/app/playground/sk.catkeys new file mode 100644 index 0000000000..2aeffb810a --- /dev/null +++ b/data/catalogs/tests/servers/app/playground/sk.catkeys @@ -0,0 +1,32 @@ +1 slovak x-vnd.Haiku-Playground 1375574837 +Line Playground Čiara +Fill Playground Vyplniť +Over Playground Viac ako +Quit Playground Ukončiť +Rect Playground Obdĺžnik +Select Playground Vybrať +Click and drag to draw an object Playground Kliknutím a ťahaním nakreslíte objekt +Controls Playground Ovládacie prvky +Round rect Playground Zoblený obdĺžnik +Alpha: Playground Alfa: +Mode: Playground Režim: +Submenu Playground Podmenu +Copy Playground Kopírovať +Cancel Playground Zrušiť +Clear Playground Vyčistiť +Min Playground Min. +Blend Playground Zmiešať +Invert Playground Invertovať +Clear all drawing objects? Playground Vyčistiť všetky nakreslené objekty? +Width: Playground Šírka: +Alpha Playground Alfa +New object Playground Nový objekt +Test Playground Test +Max Playground Max. +Add Playground Pridať +Playground System name Hrisko +Erase Playground Zmazať +File Playground Súbor +Subtract Playground Odčítať + Playground +Ellipse Playground Elipsa From bd0b62b178ebe00f813a8dfd6cf2e96affde5388 Mon Sep 17 00:00:00 2001 From: Humdinger Date: Sat, 23 Jan 2016 17:09:56 +0100 Subject: [PATCH 174/242] Rebuilt psqlODBC package. Rebuilt to make it installable again with regard to the libssl dependency. --- build/jam/repositories/HaikuPorts/x86_gcc2 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build/jam/repositories/HaikuPorts/x86_gcc2 b/build/jam/repositories/HaikuPorts/x86_gcc2 index 63545fa8d2..544e75b904 100644 --- a/build/jam/repositories/HaikuPorts/x86_gcc2 +++ b/build/jam/repositories/HaikuPorts/x86_gcc2 @@ -416,8 +416,8 @@ RemotePackageRepository HaikuPorts postgresql_devel-9.3.5-2 psiconv-0.9.8-1 psiconv_devel-0.9.8-1 - psqlodbc-09.03.0400-1 - psqlodbc_devel-09.03.0400-1 + psqlodbc-09.03.0400-2 + psqlodbc_devel-09.03.0400-2 python-2.7.11-1 python_dateutil-1.5-2 python_imaging-1.1.7-2 From 8376bc1bc1d68d7024f31eec056d6dee2569f3d4 Mon Sep 17 00:00:00 2001 From: Hannah Date: Sat, 23 Jan 2016 00:06:09 +0000 Subject: [PATCH 175/242] screeninfo:also print all supported bitmap overlay colorspaces --- src/bin/screeninfo.cpp | 75 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) diff --git a/src/bin/screeninfo.cpp b/src/bin/screeninfo.cpp index ff2a06f886..5056d50d1a 100644 --- a/src/bin/screeninfo.cpp +++ b/src/bin/screeninfo.cpp @@ -12,6 +12,79 @@ #include +#define M(x) { B_##x, #x } + +struct ColorSpace { + color_space space; + const char* name; +}; + +ColorSpace table[] = +{ + M(RGB32), + M(RGB32), + M(RGBA32), + M(RGB24), + M(RGB16), + M(RGB15), + M(RGBA15), + M(CMAP8), + M(GRAY8), + M(GRAY1), + M(RGB32_BIG), + M(RGBA32_BIG), + M(RGB24_BIG), + M(RGB16_BIG), + M(RGB15_BIG), + M(RGBA15_BIG), + M(YCbCr422), + M(YCbCr411), + M(YCbCr444), + M(YCbCr420), + M(YUV422), + M(YUV411), + M(YUV444), + M(YUV420), + M(YUV9), + M(YUV12), + M(UVL24), + M(UVL32), + M(UVLA32), + M(LAB24), + M(LAB32), + M(LABA32), + M(HSI24), + M(HSI32), + M(HSIA32), + M(HSV24), + M(HSV32), + M(HSVA32), + M(HLS24), + M(HLS32), + M(HLSA32), + M(CMY24), + M(CMY32), + M(CMYA32), + M(CMYK32), + M(CMYA32), + M(CMYK32) +}; + + +void +print_supported_overlays() +{ + for (int32 i = 0; i < sizeof(table) / sizeof(table[0]); i++) + { + uint32 supportFlags = 0; + + if (bitmaps_support_space(table[i].space, &supportFlags) + && (supportFlags & B_BITMAPS_SUPPORT_OVERLAY)) + printf("\t%s\n", table[i].name); + } +} + + int main() { @@ -34,6 +107,8 @@ main() printf(" name: %s\n", info.name); printf(" chipset: %s\n", info.chipset); printf(" serial: %s\n", info.serial_no); + printf(" bitmap overlay colorspaces supported:\n"); + print_supported_overlays(); } } while (screen.SetToNext() == B_OK); From 0fa7d5c4df86cbe5961935d731adb551ed5d3036 Mon Sep 17 00:00:00 2001 From: Rudolf Cornelissen Date: Sat, 23 Jan 2016 23:44:37 +0100 Subject: [PATCH 176/242] VIA gfx driver: overlay engine on K8M800 responds now, wip. --- headers/private/graphics/via/macros.h | 9 +- src/add-ons/accelerants/via/engine/bes.c | 335 ++++++++++++++++------- 2 files changed, 240 insertions(+), 104 deletions(-) diff --git a/headers/private/graphics/via/macros.h b/headers/private/graphics/via/macros.h index 41fa989630..feb3448ff1 100644 --- a/headers/private/graphics/via/macros.h +++ b/headers/private/graphics/via/macros.h @@ -705,6 +705,7 @@ #define ENBES_HI_TRANSP_COL 0x00000270 #define ENBES_V3A_FIFO 0x00000278 #define ENBES_V3_SRC_WIDTH 0x0000027c +#define ENBES_V3_COLKEY 0x00000280 #define ENBES_VID1_COLSPAC1 0x00000284 #define ENBES_VID1_COLSPAC2 0x00000288 #define ENBES_VID1U_ADDR0 0x0000028c @@ -714,14 +715,14 @@ #define ENBES_VID3_CTL 0x000002a0 #define ENBES_VID3_ADDR0 0x000002a4 #define ENBES_VID3_ADDR1 0x000002a8 -#define ENBES_VID3_STRIBE 0x000002ac +#define ENBES_VID3_STRIDE 0x000002ac #define ENBES_VID3_HVSTART 0x000002b0 #define ENBES_VID3_SIZE 0x000002b4 #define ENBES_V3A_FETCH 0x000002b8 #define ENBES_VID3_ZOOM 0x000002bc -#define ENBES_VID3_MICTL 0x000002c0 -#define ENBES_VID3_CSC1 0x000002c4 -#define ENBES_VID3_CSC2 0x000002c8 +#define ENBES_VID3_MINI_CTL 0x000002c0 +#define ENBES_VID3_COLSPAC1 0x000002c4 +#define ENBES_VID3_COLSPAC2 0x000002c8 #define ENBES_VID1U_ADDR1 0x000002e4 #define ENBES_VID1U_ADDR2 0x000002e8 #define ENBES_VID1U_ADDR3 0x000002ec diff --git a/src/add-ons/accelerants/via/engine/bes.c b/src/add-ons/accelerants/via/engine/bes.c index a1db20633b..bcba5bb57b 100644 --- a/src/add-ons/accelerants/via/engine/bes.c +++ b/src/add-ons/accelerants/via/engine/bes.c @@ -1,5 +1,5 @@ /* VIA Unichrome Back End Scaler functions */ -/* Written by Rudolf Cornelissen 05/2002-1/2006 */ +/* Written by Rudolf Cornelissen 05/2002-1/2016 */ #define MODULE_BIT 0x00000200 @@ -396,31 +396,62 @@ static void eng_bes_program_move_overlay(move_overlay_info moi) *** actually program the registers *** **************************************/ - /* setup clipped(!) buffer startadress in RAM */ - /* VIA bes doesn't have clipping registers, so no subpixelprecise clipping - * either. We do pixelprecise vertical and 'two pixel' precise horizontal clipping here. */ - /* first include 'pixel precise' left clipping... (top clipping was already included) */ - moi.a1orgv += ((moi.hsrcstv >> 16) * 2); - /* we need to step in 4-byte (2 pixel) granularity due to the nature of yuy2 */ - BESW(VID1Y_ADDR0, (moi.a1orgv & 0x07fffffc)); + if (si->ps.card_arch < K8M800) + { + /* setup clipped(!) buffer startadress in RAM */ + /* VIA bes doesn't have clipping registers, so no subpixelprecise clipping + * either. We do pixelprecise vertical and 'two pixel' precise horizontal clipping here. */ + /* first include 'pixel precise' left clipping... (top clipping was already included) */ + moi.a1orgv += ((moi.hsrcstv >> 16) * 2); + /* we need to step in 4-byte (2 pixel) granularity due to the nature of yuy2 */ + BESW(VID1Y_ADDR0, (moi.a1orgv & 0x07fffffc)); - /* horizontal source end does not use subpixelprecision: granularity is 8 pixels */ - /* notes: - * - make absolutely sure the engine can fetch the last pixel needed from - * the sourcebitmap even if only to generate a tiny subpixel from it! - * - the engine uses byte format instead of pixel format; - * - the engine uses 16 bytes, so 8 pixels granularity. */ - BESW(VID1_FETCH, (((((moi.hsrcendv >> 16) + 1 + 0x0007) & ~0x0007) * 2) << (20 - 4))); + /* horizontal source end does not use subpixelprecision: granularity is 8 pixels */ + /* notes: + * - make absolutely sure the engine can fetch the last pixel needed from + * the sourcebitmap even if only to generate a tiny subpixel from it! + * - the engine uses byte format instead of pixel format; + * - the engine uses 16 bytes, so 8 pixels granularity. */ + BESW(VID1_FETCH, (((((moi.hsrcendv >> 16) + 1 + 0x0007) & ~0x0007) * 2) << (20 - 4))); - /* setup output window position */ - BESW(VID1_HVSTART, ((moi.hcoordv & 0xffff0000) | ((moi.vcoordv & 0xffff0000) >> 16))); + /* setup output window position */ + BESW(VID1_HVSTART, ((moi.hcoordv & 0xffff0000) | ((moi.vcoordv & 0xffff0000) >> 16))); - /* setup output window size */ - BESW(VID1_SIZE, (((moi.hcoordv & 0x0000ffff) << 16) | (moi.vcoordv & 0x0000ffff))); + /* setup output window size */ + BESW(VID1_SIZE, (((moi.hcoordv & 0x0000ffff) << 16) | (moi.vcoordv & 0x0000ffff))); - /* enable colorkeying (b0 = 1), disable chromakeying (b1 = 0), Vid1 on top of Vid3 (b20 = 0), - * all registers are loaded during the next 'BES-'VBI (b28 = 1), Vid1 cmds fire (b31 = 1) */ - BESW(COMPOSE, 0x90000001); + /* enable colorkeying (b0 = 1), disable chromakeying (b1 = 0), Vid1 on top of Vid3 (b20 = 0), + * all registers are loaded during the next 'BES-'VBI (b28 = 1), Vid1 cmds fire (b31 = 1) */ + BESW(COMPOSE, 0x90000001);//fixme: >>>!<<< don't touch colorkey enable bit! + } + else + { + /* setup clipped(!) buffer startadress in RAM */ + /* VIA bes doesn't have clipping registers, so no subpixelprecise clipping + * either. We do pixelprecise vertical and 'two pixel' precise horizontal clipping here. */ + /* first include 'pixel precise' left clipping... (top clipping was already included) */ + moi.a1orgv += ((moi.hsrcstv >> 16) * 2); + /* we need to step in 4-byte (2 pixel) granularity due to the nature of yuy2 */ + BESW(VID3_ADDR0, (moi.a1orgv & 0x07fffffc)); + + /* horizontal source end does not use subpixelprecision: granularity is 8 pixels */ + /* notes: + * - make absolutely sure the engine can fetch the last pixel needed from + * the sourcebitmap even if only to generate a tiny subpixel from it! + * - the engine uses byte format instead of pixel format; + * - the engine uses 16 bytes, so 8 pixels granularity. */ + //BESW(VID1_FETCH, (((((moi.hsrcendv >> 16) + 1 + 0x0007) & ~0x0007) * 2) << (20 - 4))); + + /* setup output window position */ + BESW(VID3_HVSTART, ((moi.hcoordv & 0xffff0000) | ((moi.vcoordv & 0xffff0000) >> 16))); + + /* setup output window size */ + BESW(VID3_SIZE, (((moi.hcoordv & 0x0000ffff) << 16) | (moi.vcoordv & 0x0000ffff))); + + /* enable colorkeying (b0 = 1), disable chromakeying (b1 = 0), Vid3 on top of Vid1 (b20 = 1), + * all registers are loaded during the next 'BES-'VBI (b8 = 1), Vid3 cmds fire (b30 = 1) */ + BESW(COMPOSE, 0x40100101);//fixme: >>>!<<< don't touch colorkey enable bit! + } } status_t eng_bes_to_crtc(bool crtc) @@ -453,21 +484,32 @@ status_t eng_bes_to_crtc(bool crtc) status_t eng_bes_init() { - if (si->ps.chip_rev < 0x10) + if (si->ps.card_arch < K8M800) { - /* select colorspace setup for B_YCbCr422 */ - BESW(VID1_COLSPAC1, 0x140020f2); - BESW(VID1_COLSPAC2, 0x0a0a2c00); - /* fifo depth is $20 (b0-5), threshold $10 (b8-13), prethreshold $1d (b24-29) */ - BESW(VID1_FIFO, 0x1d00101f); + if (si->ps.chip_rev < 0x10) + { + /* select colorspace setup for B_YCbCr422 */ + BESW(VID1_COLSPAC1, 0x140020f2); + BESW(VID1_COLSPAC2, 0x0a0a2c00); + /* fifo depth is $20 (b0-5), threshold $10 (b8-13), prethreshold $1d (b24-29) */ + BESW(VID1_FIFO, 0x1d00101f); + } + else + { + /* select colorspace setup for B_YCbCr422 */ + BESW(VID1_COLSPAC1, 0x13000ded); + BESW(VID1_COLSPAC2, 0x13171000); + /* fifo depth is $40 (b0-5), threshold $38 (b8-13), prethreshold $38 (b24-29) */ + BESW(VID1_FIFO, 0x3800383f); + } } else { /* select colorspace setup for B_YCbCr422 */ - BESW(VID1_COLSPAC1, 0x13000ded); - BESW(VID1_COLSPAC2, 0x13171000); - /* fifo depth is $40 (b0-5), threshold $38 (b8-13), prethreshold $38 (b24-29) */ - BESW(VID1_FIFO, 0x3800383f); + BESW(VID3_COLSPAC1, 0x140020f2); + BESW(VID3_COLSPAC2, 0x0a0a2c00); + /* fifo depth is $20 (b0-5), threshold $10 (b8-13), prethreshold $1d (b24-29) */ + //BESW(VID1_FIFO, 0x1d00101f); } /* disable overlay ints (b0 = buffer 0, b4 = buffer 1) */ @@ -793,72 +835,135 @@ status_t eng_configure_bes *** actually program the registers *** **************************************/ - /* setup clipped(!) buffer startadress in RAM */ - /* VIA bes doesn't have clipping registers, so no subpixelprecise clipping - * either. We do pixelprecise vertical and 'two pixel' precise horizontal clipping here. */ - /* first include 'pixel precise' left clipping... (top clipping was already included) */ - moi.a1orgv += ((moi.hsrcstv >> 16) * 2); - /* we need to step in 4-byte (2 pixel) granularity due to the nature of yuy2 */ - BESW(VID1Y_ADDR0, (moi.a1orgv & 0x07fffffc)); - - /* horizontal source end does not use subpixelprecision: granularity is 8 pixels */ - /* notes: - * - make absolutely sure the engine can fetch the last pixel needed from - * the sourcebitmap even if only to generate a tiny subpixel from it! - * - the engine uses byte format instead of pixel format; - * - the engine uses 16 bytes, so 8 pixels granularity. */ - BESW(VID1_FETCH, (((((moi.hsrcendv >> 16) + 1 + 0x0007) & ~0x0007) * 2) << (20 - 4))); - - /* enable horizontal filtering if asked for */ - if (ow->flags & B_OVERLAY_HORIZONTAL_FILTERING) + if (si->ps.card_arch < K8M800) { - minictrl |= (1 << 1); - LOG(4,("Overlay: using horizontal interpolation on scaling\n")); - } - /* enable vertical filtering if asked for */ - if (ow->flags & B_OVERLAY_VERTICAL_FILTERING) - { - /* vertical interpolation b0, interpolation on Y, Cb and Cr all (b2) */ - minictrl |= ((1 << 2) | (1 << 0)); - LOG(4,("Overlay: using vertical interpolation on scaling\n")); - } - /* and program horizontal and vertical 'prescaling' for downscaling */ - BESW(VID1_MINI_CTL, minictrl); + /* setup clipped(!) buffer startadress in RAM */ + /* VIA bes doesn't have clipping registers, so no subpixelprecise clipping + * either. We do pixelprecise vertical and 'two pixel' precise horizontal clipping here. */ + /* first include 'pixel precise' left clipping... (top clipping was already included) */ + moi.a1orgv += ((moi.hsrcstv >> 16) * 2); + /* we need to step in 4-byte (2 pixel) granularity due to the nature of yuy2 */ + BESW(VID1Y_ADDR0, (moi.a1orgv & 0x07fffffc)); - /* setup buffersize */ - BESW(V1_SOURCE_WH, ((ob->height << 16) | (ob->width))); + /* horizontal source end does not use subpixelprecision: granularity is 8 pixels */ + /* notes: + * - make absolutely sure the engine can fetch the last pixel needed from + * the sourcebitmap even if only to generate a tiny subpixel from it! + * - the engine uses byte format instead of pixel format; + * - the engine uses 16 bytes, so 8 pixels granularity. */ + BESW(VID1_FETCH, (((((moi.hsrcendv >> 16) + 1 + 0x0007) & ~0x0007) * 2) << (20 - 4))); - /* setup buffer source pitch including slopspace (in bytes) */ - BESW(VID1_STRIDE, (ob->width * 2)); + /* enable horizontal filtering if asked for */ + if (ow->flags & B_OVERLAY_HORIZONTAL_FILTERING) + { + minictrl |= (1 << 1); + LOG(4,("Overlay: using horizontal interpolation on scaling\n")); + } + /* enable vertical filtering if asked for */ + if (ow->flags & B_OVERLAY_VERTICAL_FILTERING) + { + /* vertical interpolation b0, interpolation on Y, Cb and Cr all (b2) */ + minictrl |= ((1 << 2) | (1 << 0)); + LOG(4,("Overlay: using vertical interpolation on scaling\n")); + } + /* and program horizontal and vertical 'prescaling' for downscaling */ + BESW(VID1_MINI_CTL, minictrl); - /* setup output window position */ - BESW(VID1_HVSTART, ((moi.hcoordv & 0xffff0000) | ((moi.vcoordv & 0xffff0000) >> 16))); + /* setup buffersize */ + BESW(V1_SOURCE_WH, ((ob->height << 16) | (ob->width))); - /* setup output window size */ - BESW(VID1_SIZE, (((moi.hcoordv & 0x0000ffff) << 16) | (moi.vcoordv & 0x0000ffff))); + /* setup buffer source pitch including slopspace (in bytes) */ + BESW(VID1_STRIDE, (ob->width * 2)); - /* setup horizontal and vertical scaling: - * setup horizontal scaling enable (b31), setup vertical scaling enable (b15). - * Note: - * Vertical scaling has a different resolution than horizontal scaling(!). */ - scaleval = 0x00000000; - if (scale_x) scaleval |= 0x80000000; - if (scale_y) scaleval |= 0x00008000; - BESW(VID1_ZOOM, (scaleval | ((hiscalv << 16) >> 5) | (viscalv >> 6))); + /* setup output window position */ + BESW(VID1_HVSTART, ((moi.hcoordv & 0xffff0000) | ((moi.vcoordv & 0xffff0000) >> 16))); - if (si->ps.chip_rev < 0x10) - { - /* enable BES (b0), format yuv422 (b2-4 = %000), set colorspace sign (b7 = 1), - * input is frame (not field) picture (b9 = 0), expire = $5 (b16-19), - * select field (not frame)(!) base (b24 = 0) */ - BESW(VID1_CTL, 0x00050081); + /* setup output window size */ + BESW(VID1_SIZE, (((moi.hcoordv & 0x0000ffff) << 16) | (moi.vcoordv & 0x0000ffff))); + + /* setup horizontal and vertical scaling: + * setup horizontal scaling enable (b31), setup vertical scaling enable (b15). + * Note: + * Vertical scaling has a different resolution than horizontal scaling(!). */ + scaleval = 0x00000000; + if (scale_x) scaleval |= 0x80000000; + if (scale_y) scaleval |= 0x00008000; + BESW(VID1_ZOOM, (scaleval | ((hiscalv << 16) >> 5) | (viscalv >> 6))); + + if (si->ps.chip_rev < 0x10) + { + /* enable BES (b0), format yuv422 (b2-4 = %000), set colorspace sign (b7 = 1), + * input is frame (not field) picture (b9 = 0), expire = $5 (b16-19), + * select field (not frame)(!) base (b24 = 0) */ + BESW(VID1_CTL, 0x00050081); + } + else + { + /* enable BES (b0), format yuv422 (b2-4 = %000), set colorspace sign (b7 = 1), + * input is frame (not field) picture (b9 = 0), expire = $f (b16-19), + * select field (not frame)(!) base (b24 = 0) */ + BESW(VID1_CTL, 0x000f0081); + } } else { - /* enable BES (b0), format yuv422 (b2-4 = %000), set colorspace sign (b7 = 1), - * input is frame (not field) picture (b9 = 0), expire = $f (b16-19), - * select field (not frame)(!) base (b24 = 0) */ - BESW(VID1_CTL, 0x000f0081); + /* setup clipped(!) buffer startadress in RAM */ + /* VIA bes doesn't have clipping registers, so no subpixelprecise clipping + * either. We do pixelprecise vertical and 'two pixel' precise horizontal clipping here. */ + /* first include 'pixel precise' left clipping... (top clipping was already included) */ + moi.a1orgv += ((moi.hsrcstv >> 16) * 2); + /* we need to step in 4-byte (2 pixel) granularity due to the nature of yuy2 */ + BESW(VID3_ADDR0, (moi.a1orgv & 0x07fffffc)); + + /* horizontal source end does not use subpixelprecision: granularity is 8 pixels */ + /* notes: + * - make absolutely sure the engine can fetch the last pixel needed from + * the sourcebitmap even if only to generate a tiny subpixel from it! + * - the engine uses byte format instead of pixel format; + * - the engine uses 16 bytes, so 8 pixels granularity. */ + //BESW(VID1_FETCH, (((((moi.hsrcendv >> 16) + 1 + 0x0007) & ~0x0007) * 2) << (20 - 4))); + + /* enable horizontal filtering if asked for */ + if (ow->flags & B_OVERLAY_HORIZONTAL_FILTERING) + { + minictrl |= (1 << 1); + LOG(4,("Overlay: using horizontal interpolation on scaling\n")); + } + /* enable vertical filtering if asked for */ + if (ow->flags & B_OVERLAY_VERTICAL_FILTERING) + { + /* vertical interpolation b0, interpolation on Y, Cb and Cr all (b2) */ + minictrl |= ((1 << 2) | (1 << 0)); + LOG(4,("Overlay: using vertical interpolation on scaling\n")); + } + /* and program horizontal and vertical 'prescaling' for downscaling */ + BESW(VID3_MINI_CTL, minictrl); + + /* setup buffersize */ + BESW(V3_SRC_WIDTH, ((ob->height << 16) | (ob->width))); //fixme >>>!<<< height?? + + /* setup buffer source pitch including slopspace (in bytes) */ + BESW(VID3_STRIDE, (ob->width * 2)); + + /* setup output window position */ + BESW(VID3_HVSTART, ((moi.hcoordv & 0xffff0000) | ((moi.vcoordv & 0xffff0000) >> 16))); + + /* setup output window size */ + BESW(VID3_SIZE, (((moi.hcoordv & 0x0000ffff) << 16) | (moi.vcoordv & 0x0000ffff))); + + /* setup horizontal and vertical scaling: + * setup horizontal scaling enable (b31), setup vertical scaling enable (b15). + * Note: + * Vertical scaling has a different resolution than horizontal scaling(!). */ + scaleval = 0x00000000; + if (scale_x) scaleval |= 0x80000000; + if (scale_y) scaleval |= 0x00008000; + BESW(VID3_ZOOM, (scaleval | ((hiscalv << 16) >> 5) | (viscalv >> 6))); + + /* enable BES (b0), format yuv422 (b2-3 = %00), set colorspace sign (b7 = 1), + * expire = $8 (b16-19), select field (not frame)(!) base (b24 = 0), + * enable prefetch (b30 = 1) */ + BESW(VID3_CTL, 0x40080081); } @@ -926,17 +1031,35 @@ status_t eng_configure_bes break; } - /* disable chromakeying (b1 = 0), Vid1 on top of Vid3 (b20 = 0), - * all registers are loaded during the next 'BES-'VBI (b28 = 1), Vid1 cmds fire (b31 = 1) */ - if (ow->flags & B_OVERLAY_COLOR_KEY) + if (si->ps.card_arch < K8M800) { - /* enable colorkeying (b0 = 1) */ - BESW(COMPOSE, 0x90000001); + /* disable chromakeying (b1 = 0), Vid1 on top of Vid3 (b20 = 0), + * all registers are loaded during the next 'BES-'VBI (b28 = 1), Vid1 cmds fire (b31 = 1) */ + if (ow->flags & B_OVERLAY_COLOR_KEY) + { + /* enable colorkeying (b0 = 1) */ + BESW(COMPOSE, 0x90000001); + } + else + { + /* disable colorkeying (b0 = 0) */ + BESW(COMPOSE, 0x90000000); + } } else { - /* disable colorkeying (b0 = 0) */ - BESW(COMPOSE, 0x90000000); + /* disable chromakeying (b1 = 0), Vid3 on top of Vid1 (b20 = 1), + * all registers are loaded during the next 'BES-'VBI (b8 = 1), Vid3 cmds fire (b30 = 1) */ + if (ow->flags & B_OVERLAY_COLOR_KEY) + { + /* enable colorkeying (b0 = 1) */ + BESW(COMPOSE, 0x40100101); + } + else + { + /* disable colorkeying (b0 = 0) */ + BESW(COMPOSE, 0x40100100); + } } /* note that overlay is in use (for eng_bes_move_overlay()) */ @@ -947,12 +1070,24 @@ status_t eng_configure_bes status_t eng_release_bes() { - /* setup BES control: disable scaler (b0 = 0) */ - BESW(VID1_CTL, 0x00000000); + if (si->ps.card_arch < K8M800) + { + /* setup BES control: disable scaler (b0 = 0) */ + BESW(VID1_CTL, 0x00000000); - /* make sure the 'disable' command really gets executed: (no 'VBI' anymore if BES disabled) */ - /* all registers are loaded immediately (b29 = 1), Vid1 cmds fire (b31 = 1) */ - BESW(COMPOSE, 0xa0000000); + /* make sure the 'disable' command really gets executed: (no 'VBI' anymore if BES disabled) */ + /* all registers are loaded immediately (b29 = 1), Vid1 cmds fire (b31 = 1) */ + BESW(COMPOSE, 0xa0000000); + } + else + { + /* setup BES control: disable scaler (b0 = 0) */ + BESW(VID3_CTL, 0x00000000); + + /* make sure the 'disable' command really gets executed: (no 'VBI' anymore if BES disabled) */ + /* all registers are loaded immediately (b29 = 1), Vid3 cmds fire (b30 = 1) */ + BESW(COMPOSE, 0x60000000);//fixme >>>!<<< test b29, should that be b27?? + } /* note that overlay is not in use (for eng_bes_move_overlay()) */ si->overlay.active = false; From efc430eaf33ae1b3e2c5b997264a9bc24006774e Mon Sep 17 00:00:00 2001 From: Adrien Destugues Date: Sun, 24 Jan 2016 10:51:05 +0100 Subject: [PATCH 177/242] Remove unused code. --- src/servers/notification/NotificationView.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/servers/notification/NotificationView.cpp b/src/servers/notification/NotificationView.cpp index 1e54662412..2856b42f16 100644 --- a/src/servers/notification/NotificationView.cpp +++ b/src/servers/notification/NotificationView.cpp @@ -284,9 +284,6 @@ NotificationView::Draw(BRect updateRect) DrawString(l->text.String(), l->text.Length(), l->location); } - rgb_color detailCol = ui_color(B_CONTROL_BORDER_COLOR); - detailCol = tint_color(detailCol, B_LIGHTEN_2_TINT); - AppGroupView* groupView = dynamic_cast(Parent()); if (groupView != NULL && groupView->ChildrenCount() > 1) _DrawCloseButton(updateRect); From 37f9a29216ef9d2eb82476acca50f70df6d950e4 Mon Sep 17 00:00:00 2001 From: looncraz Date: Mon, 18 Jan 2016 15:30:59 +0000 Subject: [PATCH 178/242] Improve Default BButton Appearance Change control border color to 172, 172, 172 and use for default button indicator drawing. People doing an in-place upgrade will need to modify the border color from its previous default manually or by pressing "Default" in the Appearance preflet. This is a one-time annoyance. Signed-off-by: Adrien Destugues Fixes: #12589 --- src/kits/interface/ControlLook.cpp | 13 ++++++------- src/kits/interface/InterfaceDefs.cpp | 2 +- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/src/kits/interface/ControlLook.cpp b/src/kits/interface/ControlLook.cpp index 931baf155c..252e400c20 100644 --- a/src/kits/interface/ControlLook.cpp +++ b/src/kits/interface/ControlLook.cpp @@ -2149,18 +2149,17 @@ BControlLook::_DrawButtonFrame(BView* view, BRect& rect, rgb_color edgeShadowColor; // default button frame color - // TODO: B_BLEND_FRAME - float defaultIndicatorTint = 1.2; - if ((flags & B_DISABLED) != 0) - defaultIndicatorTint = (B_NO_TINT + defaultIndicatorTint) / 2; - - rgb_color defaultIndicatorColor = tint_color(base, defaultIndicatorTint); + rgb_color defaultIndicatorColor = ui_color(B_CONTROL_BORDER_COLOR); rgb_color cornerBgColor; + if ((flags & B_DISABLED) != 0) { + defaultIndicatorColor = disable_color(defaultIndicatorColor, + background); + } + drawing_mode oldMode = view->DrawingMode(); if ((flags & B_DEFAULT_BUTTON) != 0) { - defaultIndicatorColor = ui_color(B_CONTROL_HIGHLIGHT_COLOR); cornerBgColor = defaultIndicatorColor; edgeLightColor = _EdgeLightColor(defaultIndicatorColor, contrast * ((flags & B_DISABLED) != 0 ? 0.3 : 0.8), diff --git a/src/kits/interface/InterfaceDefs.cpp b/src/kits/interface/InterfaceDefs.cpp index 97017b31e4..6c8d9802d8 100644 --- a/src/kits/interface/InterfaceDefs.cpp +++ b/src/kits/interface/InterfaceDefs.cpp @@ -86,7 +86,7 @@ static const rgb_color _kDefaultColors[kColorWhichCount] = { {0, 0, 0, 255}, // B_DOCUMENT_TEXT_COLOR {245, 245, 245, 255}, // B_CONTROL_BACKGROUND_COLOR {0, 0, 0, 255}, // B_CONTROL_TEXT_COLOR - {0, 0, 0, 255}, // B_CONTROL_BORDER_COLOR + {172, 172, 172, 255}, // B_CONTROL_BORDER_COLOR {102, 152, 203, 255}, // B_CONTROL_HIGHLIGHT_COLOR {0, 0, 0, 255}, // B_NAVIGATION_PULSE_COLOR {255, 255, 255, 255}, // B_SHINE_COLOR From be1537b41ae3ec2ddab1e819aa80f02ecabda5d9 Mon Sep 17 00:00:00 2001 From: Adrien Destugues Date: Sun, 24 Jan 2016 13:42:11 +0100 Subject: [PATCH 179/242] BBox: tolerate non-layouted child in layouted mode While mixing layouted and non-layouted views is not supported, we are doing it in some cases, including translator preferences (which uses layout, but the views may come from a translator add-on which doesn't). So, try to handle that case and at least avoid crashes by calling MinSize/MaxSize and other unsupported layout code on views which won't handle it. Fixes #12610. --- src/kits/interface/Box.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/kits/interface/Box.cpp b/src/kits/interface/Box.cpp index fe0a395b98..0b0cb82054 100644 --- a/src/kits/interface/Box.cpp +++ b/src/kits/interface/Box.cpp @@ -592,14 +592,18 @@ BBox::DoLayout() return; // layout the child - if (BView* child = _Child()) { + BView* child = _Child(); + if (child) { BRect frame(Bounds()); frame.left += fLayoutData->insets.left; frame.top += fLayoutData->insets.top; frame.right -= fLayoutData->insets.right; frame.bottom -= fLayoutData->insets.bottom; - BLayoutUtils::AlignInFrame(child, frame); + if (child->Flags() & B_SUPPORTS_LAYOUT) + BLayoutUtils::AlignInFrame(child, frame); + else + child->MoveTo(frame.LeftTop()); } } @@ -855,7 +859,7 @@ BBox::_ValidateLayoutData() // finally consider the child constraints, if we shall support layout BView* child = _Child(); - if (child && (Flags() & B_SUPPORTS_LAYOUT)) { + if (child && (child->Flags() & B_SUPPORTS_LAYOUT)) { BSize min = child->MinSize(); BSize max = child->MaxSize(); BSize preferred = child->PreferredSize(); From f9fe8e12c3bea369d37ebbf35947ba49edbf5327 Mon Sep 17 00:00:00 2001 From: Adrien Destugues Date: Sun, 24 Jan 2016 17:04:06 +0100 Subject: [PATCH 180/242] Style fixes as suggested by Axel. --- src/kits/interface/Box.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/kits/interface/Box.cpp b/src/kits/interface/Box.cpp index 0b0cb82054..481cba0c3b 100644 --- a/src/kits/interface/Box.cpp +++ b/src/kits/interface/Box.cpp @@ -593,14 +593,14 @@ BBox::DoLayout() // layout the child BView* child = _Child(); - if (child) { + if (child != NULL) { BRect frame(Bounds()); frame.left += fLayoutData->insets.left; frame.top += fLayoutData->insets.top; frame.right -= fLayoutData->insets.right; frame.bottom -= fLayoutData->insets.bottom; - if (child->Flags() & B_SUPPORTS_LAYOUT) + if ((child->Flags() & B_SUPPORTS_LAYOUT) != 0) BLayoutUtils::AlignInFrame(child, frame); else child->MoveTo(frame.LeftTop()); From 522150d01af2c8d4e7327cd38a783655b8b9bac8 Mon Sep 17 00:00:00 2001 From: Humdinger Date: Mon, 25 Jan 2016 17:36:14 +0100 Subject: [PATCH 181/242] Updated DocumentViewer package Needed a recompile after app_server changes. --- build/jam/repositories/HaikuPorts/x86_gcc2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/jam/repositories/HaikuPorts/x86_gcc2 b/build/jam/repositories/HaikuPorts/x86_gcc2 index 544e75b904..3df97401ed 100644 --- a/build/jam/repositories/HaikuPorts/x86_gcc2 +++ b/build/jam/repositories/HaikuPorts/x86_gcc2 @@ -603,7 +603,7 @@ RemotePackageRepository HaikuPorts devil_x86_devel-1.7.8-2 djvulibre_x86-3.5.25-1 djvulibre_x86_devel-3.5.25-1 - documentviewer_x86-0.3_git-7 + documentviewer_x86-0.3_git-8 dosbox_x86-0.74-2 dtc_x86-1.4.1-1 enca_x86-1.15-1 From de4b1dede1d53ff01585d2bd9087ebafdbb8e582 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Wed, 20 Jan 2016 21:11:58 +0100 Subject: [PATCH 182/242] BMailProtocol: Removed delete/append methods. * The mail system is file based which makes these methods pretty much superfluous. --- headers/os/add-ons/mail_daemon/MailProtocol.h | 9 ---- .../inbound_protocols/imap/IMAPProtocol.cpp | 16 ------ .../inbound_protocols/imap/IMAPProtocol.h | 2 - .../inbound_protocols/pop3/POP3.cpp | 31 ------------ .../mail_daemon/inbound_protocols/pop3/POP3.h | 1 - src/kits/mail/MailProtocol.cpp | 50 ------------------- 6 files changed, 109 deletions(-) diff --git a/headers/os/add-ons/mail_daemon/MailProtocol.h b/headers/os/add-ons/mail_daemon/MailProtocol.h index 6ae1dffb7b..48400576e5 100644 --- a/headers/os/add-ons/mail_daemon/MailProtocol.h +++ b/headers/os/add-ons/mail_daemon/MailProtocol.h @@ -70,11 +70,6 @@ public: virtual void MessageReceived(BMessage* message); - // Mail storage operations - virtual status_t MoveMessage(const entry_ref& ref, - BDirectory& dir); - virtual status_t DeleteMessage(const entry_ref& ref); - // Convenience methods that call the BMailNotifier void ShowError(const char* error); void ShowMessage(const char* message); @@ -140,8 +135,6 @@ public: BMessenger* replyTo); virtual status_t MarkMessageAsRead(const entry_ref& ref, read_flags flags = B_READ); - virtual status_t DeleteMessage(const entry_ref& ref); - virtual status_t AppendMessage(const entry_ref& ref); static void ReplyBodyFetched(const BMessenger& replyTo, const entry_ref& ref, status_t status); @@ -150,8 +143,6 @@ protected: virtual status_t HandleFetchBody(const entry_ref& ref, const BMessenger& replyTo) = 0; - virtual status_t HandleDeleteMessage(const entry_ref& ref) = 0; - void NotiyMailboxSynchronized(status_t status); }; diff --git a/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPProtocol.cpp b/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPProtocol.cpp index 8ad0f54f2b..2af060538f 100644 --- a/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPProtocol.cpp +++ b/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPProtocol.cpp @@ -200,14 +200,6 @@ IMAPProtocol::MarkMessageAsRead(const entry_ref& ref, read_flags flags) } -status_t -IMAPProtocol::AppendMessage(const entry_ref& ref) -{ - printf("IMAP: append message %s\n", ref.name); - return B_ERROR; -} - - void IMAPProtocol::MessageReceived(BMessage* message) { @@ -247,14 +239,6 @@ IMAPProtocol::HandleFetchBody(const entry_ref& ref, const BMessenger& replyTo) } -status_t -IMAPProtocol::HandleDeleteMessage(const entry_ref& ref) -{ - printf("IMAP: delete message %s\n", ref.name); - return B_ERROR; -} - - void IMAPProtocol::ReadyToRun() { diff --git a/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPProtocol.h b/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPProtocol.h index 57ab5816d6..0f89ae4b8a 100644 --- a/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPProtocol.h +++ b/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPProtocol.h @@ -47,14 +47,12 @@ public: virtual status_t SyncMessages(); virtual status_t MarkMessageAsRead(const entry_ref& ref, read_flags flags = B_READ); - virtual status_t AppendMessage(const entry_ref& ref); virtual void MessageReceived(BMessage* message); protected: virtual status_t HandleFetchBody(const entry_ref& ref, const BMessenger& replyTo); - virtual status_t HandleDeleteMessage(const entry_ref& ref); void ReadyToRun(); diff --git a/src/add-ons/mail_daemon/inbound_protocols/pop3/POP3.cpp b/src/add-ons/mail_daemon/inbound_protocols/pop3/POP3.cpp index 4ecdfc525a..313aa74682 100644 --- a/src/add-ons/mail_daemon/inbound_protocols/pop3/POP3.cpp +++ b/src/add-ons/mail_daemon/inbound_protocols/pop3/POP3.cpp @@ -316,37 +316,6 @@ POP3Protocol::HandleFetchBody(const entry_ref& ref, const BMessenger& replyTo) } -status_t -POP3Protocol::HandleDeleteMessage(const entry_ref& ref) -{ - status_t error = Connect(); - if (error < B_OK) - return error; - - error = _RetrieveUniqueIDs(); - if (error < B_OK) { - Disconnect(); - return error; - } - - char uidString[256]; - BNode node(&ref); - if (node.ReadAttr("MAIL:unique_id", B_STRING_TYPE, 0, uidString, 256) < 0) { - Disconnect(); - return B_ERROR; - } - - #if DEBUG - printf("DeleteMessage: ID is %d\n", (int)fUniqueIDs.IndexOf(uidString)); - // What should we use for int32 instead of %d? - #endif - Delete(fUniqueIDs.IndexOf(uidString)); - - Disconnect(); - return B_OK; -} - - status_t POP3Protocol::Open(const char* server, int port, int) { diff --git a/src/add-ons/mail_daemon/inbound_protocols/pop3/POP3.h b/src/add-ons/mail_daemon/inbound_protocols/pop3/POP3.h index c4cf020300..4049cd9039 100644 --- a/src/add-ons/mail_daemon/inbound_protocols/pop3/POP3.h +++ b/src/add-ons/mail_daemon/inbound_protocols/pop3/POP3.h @@ -43,7 +43,6 @@ public: protected: virtual status_t HandleFetchBody(const entry_ref& ref, const BMessenger& replyTo); - virtual status_t HandleDeleteMessage(const entry_ref& ref); // pop3 methods status_t Open(const char* server, int port, diff --git a/src/kits/mail/MailProtocol.cpp b/src/kits/mail/MailProtocol.cpp index eb3bcc1698..c4291b093b 100644 --- a/src/kits/mail/MailProtocol.cpp +++ b/src/kits/mail/MailProtocol.cpp @@ -39,10 +39,6 @@ using namespace BPrivate; -const uint32 kMsgDeleteMessage = '&DeM'; -const uint32 kMsgAppendMessage = '&ApM'; - - BMailProtocol::BMailProtocol(const char* name, const BMailAccountSettings& settings) : @@ -136,22 +132,6 @@ BMailProtocol::MessageReceived(BMessage* message) } -status_t -BMailProtocol::MoveMessage(const entry_ref& ref, BDirectory& dir) -{ - BEntry entry(&ref); - return entry.MoveTo(&dir); -} - - -status_t -BMailProtocol::DeleteMessage(const entry_ref& ref) -{ - BEntry entry(&ref); - return entry.Remove(); -} - - void BMailProtocol::ShowError(const char* error) { @@ -435,22 +415,6 @@ BInboundMailProtocol::MessageReceived(BMessage* message) break; } - case kMsgDeleteMessage: - { - entry_ref ref; - message->FindRef("ref", &ref); - DeleteMessage(ref); - break; - } - - case kMsgAppendMessage: - { - entry_ref ref; - message->FindRef("ref", &ref); - AppendMessage(ref); - break; - } - default: BMailProtocol::MessageReceived(message); break; @@ -478,20 +442,6 @@ BInboundMailProtocol::MarkMessageAsRead(const entry_ref& ref, read_flags flag) } -status_t -BInboundMailProtocol::DeleteMessage(const entry_ref& ref) -{ - return B_ERROR; -} - - -status_t -BInboundMailProtocol::AppendMessage(const entry_ref& ref) -{ - return B_OK; -} - - /*static*/ void BInboundMailProtocol::ReplyBodyFetched(const BMessenger& replyTo, const entry_ref& ref, status_t status) From a83b9383fafdc5f633366ae32bd23f197515c91e Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Wed, 27 Jan 2016 19:25:10 -0500 Subject: [PATCH 183/242] Zlib license: Make it generic like the other licenses. Fixes #12619. --- data/system/data/licenses/Zlib | 40 +++++++++++++--------------------- 1 file changed, 15 insertions(+), 25 deletions(-) diff --git a/data/system/data/licenses/Zlib b/data/system/data/licenses/Zlib index 125f989873..4c850a1d24 100644 --- a/data/system/data/licenses/Zlib +++ b/data/system/data/licenses/Zlib @@ -1,29 +1,19 @@ -/* zlib.h -- interface of the 'zlib' general purpose compression library - version 1.2.3, July 18th, 2005 +The Zlib License - Copyright (C) 1995-2005 Jean-loup Gailly and Mark Adler +Copyright (c) - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any damages - arising from the use of this software. +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - 3. This notice may not be removed or altered from any source distribution. - - Jean-loup Gailly Mark Adler - jloup@gzip.org madler@alumni.caltech.edu - - - The data format used by the zlib library is described by RFCs (Request for - Comments) 1950 to 1952 in the files http://www.ietf.org/rfc/rfc1950.txt - (zlib format), rfc1951.txt (deflate format) and rfc1952.txt (gzip format). -*/ \ No newline at end of file +1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. From 7beac31fbc0e6cf29ada2dd64dcd6548677f000b Mon Sep 17 00:00:00 2001 From: Pete Goodeve Date: Wed, 27 Jan 2016 19:38:09 -0500 Subject: [PATCH 184/242] addattr: Fix some deficiencies. The addattr didn't quite match its help text, wrt the kinds of values one can use for type codes. Aside from the list of named types (which isn't actually quite complete compared to the choices in the source) the help said one can enter "numeric values", and gives both hex and decimal examples. However, trying a hex value didn't work -- only decimal numbers were accepted. This turned out to be because the sscanf format option is "%u" (actually B_SCNu32) which only handles decimal. It has to be B_SCNi32 (which means it would be allowed to enter a negative value -- just not very sensible...) The other example entry given is " 'ABCD' ", which apparently is meant to indicate that one can enter 'FourCC' direct type-code representations, but of course that wouldn't work as shown because the shell strips off the quotes. Escaping the quotes -- \'ABCD\' -- or adding a second layer -- "'ABCD'" -- does work but is not obvious. (I can't think of any other command line that requires such a convention.) I have added another option: "-c ABCD". The current way can still work, but the new option should be fairly evident to anyone. Signed-off-by: Augustin Cavalier Fixes #12562. --- src/bin/addattr/main.cpp | 65 ++++++++++++++++++++++++++++------------ 1 file changed, 46 insertions(+), 19 deletions(-) diff --git a/src/bin/addattr/main.cpp b/src/bin/addattr/main.cpp index d1994ac9bc..1f03d40193 100644 --- a/src/bin/addattr/main.cpp +++ b/src/bin/addattr/main.cpp @@ -90,12 +90,14 @@ typeForString(const char* string, type_code* _result) } } - // type didn't show up - in this case, we parse the string - // as number and use it directly as type code + // type didn't show up - in this case, we try to parse + // the string as number and use it directly as type code - if (sscanf(string, "%" B_SCNu32, _result) == 1) + if (sscanf(string, "%" B_SCNi32, _result) == 1) return B_OK; + // if that didn't work, try the string as a char-type-code + // enclosed in single quotes uchar type[4]; if (sscanf(string, "'%c%c%c%c'", &type[0], &type[1], &type[2], &type[3]) == 4) { *_result = (type[0] << 24) | (type[1] << 16) | (type[2] << 8) | type[3]; @@ -109,13 +111,17 @@ typeForString(const char* string, type_code* _result) void usage(int returnValue) { - fprintf(stderr, "usage: %s [-t type] [ -P ] attr value file1 [file2...]\n" - " or: %s [-f value-from-file] [-t type] [ -P ] attr file1 [file2...]\n\n" + fprintf(stderr, "usage: %s [-t type|-c code] [ -P ] attr value file1 [file2...]\n" + " or: %s [-f value-from-file] [-t type|-c code] [ -P ] attr file1 [file2...]\n\n" "\t-P : Don't resolve links\n" - "\tType is one of:\n" - "\t\tstring, mime, int, llong, float, double, bool, time, icon, raw\n" - "\t\tor a numeric value (ie. 0x1234, 42, 'ABCD', ...)\n" - "\tThe default is \"string\"\n", kProgramName, kProgramName); + "\tThe '-t' and '-c' options are alternatives; use one or the other.\n" + "\ttype is one of:\n" + "\t\tstring, mime, int, int32, uint32, llong, int64, uint64,\n" + "\t\tfloat, double, bool, icon, time, raw\n" + "\t\tor a numeric value (ie. 0x1234, 42, ...),\n" + "\t\tor an escape-quoted type code, eg. \\'MICN\\'\n" + "\tThe default is \"string\"\n" + "\tcode is a four-char type ID (eg. MICN)\n", kProgramName, kProgramName); exit(returnValue); } @@ -126,9 +132,21 @@ invalidAttrType(const char* attrTypeName) { fprintf(stderr, "%s: attribute type \"%s\" is not valid\n", kProgramName, attrTypeName); - fprintf(stderr, "\tTry one of: string, mime, int, llong, float, double,\n"); - fprintf(stderr, "\t\tbool, time, icon, raw, or a numeric value (ie. 0x1234, 42, 'ABCD'" - ", ...)\n"); + fprintf(stderr, "\tTry one of: string, mime, int, llong, float, double,\n" + "\t\tbool, icon, time, raw, or a numeric value (ie. 0x1234, 42, ...),\n" + "\t\tor a quoted type code, eg.: \\'MICN\\'\n" + "\t\tOr enter the actual type code with the '-c' option\n"); + + exit(1); +} + + +void +invalidTypeCode(const char* attrTypeName) +{ + fprintf(stderr, "%s: attribute type code \"%s\" is not valid\n", kProgramName, + attrTypeName); + fprintf(stderr, "\tIt must be exactly four characters\n"); exit(1); } @@ -139,8 +157,8 @@ invalidBoolValue(const char* value) { fprintf(stderr, "%s: attribute value \"%s\" is not valid\n", kProgramName, value); - fprintf(stderr, "\tBool accepts: 0, f, false, disabled, off,\n"); - fprintf(stderr, "\t\t1, t, true, enabled, on\n"); + fprintf(stderr, "\tBool accepts: 0, f, false, disabled, off,\n" + "\t\t1, t, true, enabled, on\n"); exit(1); } @@ -155,7 +173,7 @@ main(int argc, char* argv[]) bool resolveLinks = true; int c; - while ((c = getopt_long(argc, argv, "hf:t:P", kLongOptions, NULL)) != -1) { + while ((c = getopt_long(argc, argv, "hf:t:c:P", kLongOptions, NULL)) != -1) { switch (c) { case 0: break; @@ -170,7 +188,7 @@ main(int argc, char* argv[]) optarg, strerror(status)); return 1; } - + status = file.GetSize(&size); if (status == B_OK) { if (size == 0) { @@ -188,12 +206,12 @@ main(int argc, char* argv[]) else status = B_NO_MEMORY; } - + if (status < B_OK) { ERR("can't read attribute value: %s\n", strerror(status)); return 1; } - + valueFileLength = (size_t)size; break; } @@ -202,6 +220,15 @@ main(int argc, char* argv[]) if (typeForString(optarg, &attrType) != B_OK) invalidAttrType(optarg); break; + case 'c': + if (strlen(optarg) == 4) { + // Get the type code directly + char code[] = "' '"; + strncpy(code + 1, optarg, 4); + if (typeForString(code, &attrType) == B_OK) + break; + } + invalidTypeCode(optarg); case 'P': resolveLinks = false; break; @@ -213,7 +240,7 @@ main(int argc, char* argv[]) break; } } - + if (argc - optind < 1) usage(1); const char* attrName = argv[optind++]; From 220f79d835ee716c5ba41a026b466c0695e236be Mon Sep 17 00:00:00 2001 From: looncraz Date: Sun, 17 Jan 2016 12:20:13 +0000 Subject: [PATCH 185/242] Deskbar TimeView Text Render Fix Erroneous use of SetLowUIColor(ViewUIColor()) when the old API was more appropriate resulted in the tint value being ignored which resulted in some text rendering issues with certain color combinations and LCD subpixel aliasing. Fixes ticket# 12596 Signed-off-by: Augustin Cavalier --- src/apps/deskbar/TimeView.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/apps/deskbar/TimeView.cpp b/src/apps/deskbar/TimeView.cpp index 7c0803469b..25b54e6501 100644 --- a/src/apps/deskbar/TimeView.cpp +++ b/src/apps/deskbar/TimeView.cpp @@ -152,7 +152,7 @@ TTimeView::Draw(BRect /*updateRect*/) PushState(); SetHighColor(ViewColor()); - SetLowUIColor(ViewUIColor()); + SetLowColor(ViewColor()); FillRect(Bounds()); SetHighUIColor(B_MENU_ITEM_TEXT_COLOR); From 3e08f2160607185a7b85ba93d58537a8086fcca7 Mon Sep 17 00:00:00 2001 From: looncraz Date: Sun, 17 Jan 2016 12:06:36 +0000 Subject: [PATCH 186/242] MenuField Low Color (for frame) BMenuField's frame is drawn from the LowColor() which is adopted from its parent. However, we should be adopting the parent's view color for our low color, otherwise we sometimes end up with a miscolored border (most often white). This was not noticed earlier as most views have matching view and low colors. Fixes ticket #12603 Signed-off-by: Augustin Cavalier --- src/kits/interface/MenuField.cpp | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/kits/interface/MenuField.cpp b/src/kits/interface/MenuField.cpp index 3318dad21c..62aa993415 100644 --- a/src/kits/interface/MenuField.cpp +++ b/src/kits/interface/MenuField.cpp @@ -428,7 +428,20 @@ void BMenuField::AttachedToWindow() { CALLED(); - AdoptParentColors(); + + // Our low color must match the parent's view color. + if (Parent() != NULL) { + AdoptParentColors(); + + float tint = B_NO_TINT; + color_which which = ViewUIColor(&tint); + + if (which == B_NO_COLOR) + SetLowColor(ViewColor()); + else + SetLowUIColor(which, tint); + } else + AdoptSystemColors(); } @@ -1065,7 +1078,7 @@ BMenuField::_DrawLabel(BRect updateRect) flags |= BControlLook::B_DISABLED; // save the current low color - const rgb_color lowColor = LowColor(); + PushState(); rgb_color textColor; MenuPrivate menuPrivate(fMenuBar); @@ -1082,7 +1095,7 @@ BMenuField::_DrawLabel(BRect updateRect) BAlignment(fAlign, B_ALIGN_MIDDLE), &textColor); // restore the previous low color - SetLowColor(lowColor); + PopState(); } From 00bb5b5957b27c7d1ac389a309a8a8688c178c48 Mon Sep 17 00:00:00 2001 From: Kostadin Damyanov Date: Fri, 8 Jan 2016 04:06:00 +0200 Subject: [PATCH 187/242] unitests: fix the symlink to the resources directory Signed-off-by: Augustin Cavalier --- src/tests/kits/storage/Jamfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/tests/kits/storage/Jamfile b/src/tests/kits/storage/Jamfile index b09da4aa71..d9db26bbdb 100644 --- a/src/tests/kits/storage/Jamfile +++ b/src/tests/kits/storage/Jamfile @@ -30,9 +30,9 @@ UnitTestLib libstoragetest.so # To run the tests some test files must be around. { - local resdir = resources ; + local resdir = resources ; MakeLocate $(resdir) : $(TARGET_UNIT_TEST_DIR) ; - RelSymLink $(resdir) : [ FDirName $(SUBDIR) resources ] : false ; + RelSymLink $(resdir) : [ FDirName $(HAIKU_TOP) src tests kits storage resources ] : false ; Depends libstoragetest.so : $(resdir) ; } From ebec82dfe6e5d9d25d8b5367c7f69e5e50fa8c93 Mon Sep 17 00:00:00 2001 From: Automatic Committer Date: Thu, 28 Jan 2016 05:20:23 +0100 Subject: [PATCH 188/242] Update pci.ids from pciids.sourceforge.net --- src/data/ids/pci.ids | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/data/ids/pci.ids b/src/data/ids/pci.ids index 3d146944a0..721cd6be85 100644 --- a/src/data/ids/pci.ids +++ b/src/data/ids/pci.ids @@ -1,8 +1,8 @@ # # List of PCI ID's # -# Version: 2016.01.20 -# Date: 2016-01-20 03:15:01 +# Version: 2016.01.28 +# Date: 2016-01-28 03:15:02 # # Maintained by Albert Pool, Martin Mares, and other volunteers from # the PCI ID Project at http://pci-ids.ucw.cz/. @@ -10609,9 +10609,12 @@ 1025 0813 Aspire R7-571 103c 194e ProBook 455 G1 Notebook 103c 1985 Pavilion 17-e163sg Notebook PC + 522a RTS522A PCI Express Card Reader 5249 RTS5249 PCI Express Card Reader 103c 1909 ZBook 15 + 524a RTS524A PCI Express Card Reader 5250 RTS5250 PCI Express Card Reader + 525a RTS525A PCI Express Card Reader 5286 RTS5286 PCI Express Card Reader 5288 RTS5288 PCI Express Card Reader 5289 RTL8411 PCI Express Card Reader @@ -12179,6 +12182,7 @@ 1137 012c VIC 1340 Dual 40Gb MLOM 1137 012e VIC 1227 Dual 10Gb SFP+ PCIe 1137 0137 VIC 1380 Dual 40Gb Mezzanine + 1137 014d VIC 1385 Dual 40Gb PCIe 0041 VIC PCIe Downstream Port 0042 VIC Management Controller 1137 0047 VIC P81E PCIe Management Controller @@ -15950,6 +15954,7 @@ 144d Samsung Electronics Co Ltd 1600 Apple PCIe SSD a800 XP941 PCIe SSD + a802 NVMe SSD Controller a820 NVMe SSD Controller 171X 1028 1f95 Express Flash NVMe XS1715 SSD 400GB 1028 1f96 Express Flash NVMe XS1715 SSD 800GB @@ -22157,7 +22162,7 @@ 1600 Broadwell-U Host Bridge -OPI 1601 Broadwell-U PCI Express x16 Controller 1602 Broadwell-U Integrated Graphics - 1603 Broadwell-U Camarillo Device + 1603 Broadwell-U Processor Thermal Subsystem 1604 Broadwell-U Host Bridge -OPI 1605 Broadwell-U PCI Express x8 Controller 1606 Broadwell-U Integrated Graphics @@ -22192,8 +22197,9 @@ 163b Broadwell-U Integrated Graphics 163d Broadwell-U Integrated Graphics 163e Broadwell-U Integrated Graphics - 1900 Sky Lake Host Bridge/DRAM Registers + 1900 Skylake Host Bridge/DRAM Registers 1901 Sky Lake PCIe Controller (x16) + 1903 Skylake Processor Thermal Subsystem 1904 Sky Lake Host Bridge/DRAM Registers 1905 Sky Lake PCIe Controller (x8) 1908 Sky Lake Host Bridge/DRAM Registers @@ -22206,6 +22212,7 @@ 1916 Sky Lake Integrated Graphics 1918 Sky Lake Host Bridge/DRAM Registers 1919 Sky Lake Imaging Unit + 191b Skylake Integrated Graphics 191e Sky Lake Integrated Graphics 191f Sky Lake Host Bridge/DRAM Registers 1926 Sky Lake Integrated Graphics @@ -25167,6 +25174,8 @@ 8086 4010 Dual Band Wireless AC 3165 # Stone Peak 1x1 8086 4210 Dual Band Wireless AC 3165 +# Stone Peak 1x1 + 3166 Intel Dual Band Wireless-AC 3165 Plus Bluetooth 3200 GD31244 PCI-X SATA HBA 1775 c200 C2K onboard SATA host bus adapter 3310 IOP348 I/O Processor From 193416abaf3d05d1c34dbb57d7056d2657758e7f Mon Sep 17 00:00:00 2001 From: Rudolf Cornelissen Date: Thu, 28 Jan 2016 10:04:43 +0100 Subject: [PATCH 189/242] VIA driver: block overlay hooks if mode not supported! --- src/add-ons/accelerants/via/GetAccelerantHook.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/add-ons/accelerants/via/GetAccelerantHook.c b/src/add-ons/accelerants/via/GetAccelerantHook.c index dcd777eba1..168dccd352 100644 --- a/src/add-ons/accelerants/via/GetAccelerantHook.c +++ b/src/add-ons/accelerants/via/GetAccelerantHook.c @@ -4,7 +4,7 @@ Other authors: Mark Watson, - Rudolf Cornelissen 10/2002-7/2005 + Rudolf Cornelissen 10/2002-1/2016 */ #define MODULE_BIT 0x08000000 @@ -171,12 +171,13 @@ status_t check_overlay_capability(uint32 feature) } /* all supported cards have a bes, but it can't always be used... */ - if (eng_bes_chk_bandwidth()) + if (eng_bes_chk_bandwidth()) { LOG(4, ("Overlay: Exporting hook %s.\n", msg)); - else - LOG(4, ("Overlay: Not exporting hook %s.\n", msg)); + return B_OK; + } - return B_OK; + LOG(4, ("Overlay: Not exporting hook %s.\n", msg)); + return B_ERROR; } status_t check_acc_capability(uint32 feature) From 656b3130c363d936dc23ea9642f4e50e9b063692 Mon Sep 17 00:00:00 2001 From: Rudolf Cornelissen Date: Thu, 28 Jan 2016 10:34:56 +0100 Subject: [PATCH 190/242] VIA gfx driver: K8M800 overlay engine is now up and running OK :-) --- src/add-ons/accelerants/via/engine/bes.c | 37 +++++++++--------------- 1 file changed, 14 insertions(+), 23 deletions(-) diff --git a/src/add-ons/accelerants/via/engine/bes.c b/src/add-ons/accelerants/via/engine/bes.c index bcba5bb57b..0db40de56c 100644 --- a/src/add-ons/accelerants/via/engine/bes.c +++ b/src/add-ons/accelerants/via/engine/bes.c @@ -440,7 +440,7 @@ static void eng_bes_program_move_overlay(move_overlay_info moi) * the sourcebitmap even if only to generate a tiny subpixel from it! * - the engine uses byte format instead of pixel format; * - the engine uses 16 bytes, so 8 pixels granularity. */ - //BESW(VID1_FETCH, (((((moi.hsrcendv >> 16) + 1 + 0x0007) & ~0x0007) * 2) << (20 - 4))); + BESW(V3A_FETCH, (((((moi.hsrcendv >> 16) + 1 + 0x0007) & ~0x0007) * 2) << (20 - 4))); /* setup output window position */ BESW(VID3_HVSTART, ((moi.hcoordv & 0xffff0000) | ((moi.vcoordv & 0xffff0000) >> 16))); @@ -488,7 +488,7 @@ status_t eng_bes_init() { if (si->ps.chip_rev < 0x10) { - /* select colorspace setup for B_YCbCr422 */ + /* setup brightness, contrast and saturation to be 'neutral' */ BESW(VID1_COLSPAC1, 0x140020f2); BESW(VID1_COLSPAC2, 0x0a0a2c00); /* fifo depth is $20 (b0-5), threshold $10 (b8-13), prethreshold $1d (b24-29) */ @@ -496,7 +496,7 @@ status_t eng_bes_init() } else { - /* select colorspace setup for B_YCbCr422 */ + /* setup brightness, contrast and saturation to be 'neutral' */ BESW(VID1_COLSPAC1, 0x13000ded); BESW(VID1_COLSPAC2, 0x13171000); /* fifo depth is $40 (b0-5), threshold $38 (b8-13), prethreshold $38 (b24-29) */ @@ -505,22 +505,15 @@ status_t eng_bes_init() } else { - /* select colorspace setup for B_YCbCr422 */ - BESW(VID3_COLSPAC1, 0x140020f2); - BESW(VID3_COLSPAC2, 0x0a0a2c00); - /* fifo depth is $20 (b0-5), threshold $10 (b8-13), prethreshold $1d (b24-29) */ - //BESW(VID1_FIFO, 0x1d00101f); - } - - /* disable overlay ints (b0 = buffer 0, b4 = buffer 1) */ -// BESW(NV04_INTE, 0x00000000); - /* shut off GeForce4MX MPEG2 decoder */ -// BESW(DEC_GENCTRL, 0x00000000); - /* setup BES memory-range mask */ -// BESW(NV10_0MEMMASK, (si->ps.memory_size - 1)); /* setup brightness, contrast and saturation to be 'neutral' */ -// BESW(NV10_0BRICON, ((0x1000 << 16) | 0x1000)); -// BESW(NV10_0SAT, ((0x0000 << 16) | 0x1000)); + BESW(VID3_COLSPAC1, 0x13000ded); + BESW(VID3_COLSPAC2, 0x13171000); + + /* fifo prethreshold 60 (b0-6) */ + BESW(V3A_PREFIFO, (60 & 0x7f)); + /* fifo depth-1 is 63 (b0-7), threshold 60 (b8-15) */ + BESW(V3A_FIFO, ((63 & 0xff) | ((60 & 0xff) << 8))); + } return B_OK; } @@ -634,7 +627,6 @@ status_t eng_configure_bes LOG(4,("Overlay: horizontal scaling factor is %f\n", (float)65536 / ifactor)); /* check scaling factor (and modify if needed) to be within scaling limits */ - /* all cards have a upscaling limit of 8.0 (see official nVidia specsheets) */ //fixme: checkout... if (hiscalv < 0x00002000) { @@ -740,7 +732,6 @@ status_t eng_configure_bes si->overlay.v_ifactor = ifactor; /* check scaling factor (and modify if needed) to be within scaling limits */ - /* all cards have a upscaling limit of 8.0 (see official nVidia specsheets) */ //fixme: checkout... if (viscalv < 0x00002000) { @@ -921,7 +912,7 @@ status_t eng_configure_bes * the sourcebitmap even if only to generate a tiny subpixel from it! * - the engine uses byte format instead of pixel format; * - the engine uses 16 bytes, so 8 pixels granularity. */ - //BESW(VID1_FETCH, (((((moi.hsrcendv >> 16) + 1 + 0x0007) & ~0x0007) * 2) << (20 - 4))); + BESW(V3A_FETCH, (((((moi.hsrcendv >> 16) + 1 + 0x0007) & ~0x0007) * 2) << (20 - 4))); /* enable horizontal filtering if asked for */ if (ow->flags & B_OVERLAY_HORIZONTAL_FILTERING) @@ -939,8 +930,8 @@ status_t eng_configure_bes /* and program horizontal and vertical 'prescaling' for downscaling */ BESW(VID3_MINI_CTL, minictrl); - /* setup buffersize */ - BESW(V3_SRC_WIDTH, ((ob->height << 16) | (ob->width))); //fixme >>>!<<< height?? + /* setup buffersize (V3 does not need ob->height(?)) */ + BESW(V3_SRC_WIDTH, (ob->width)); /* setup buffer source pitch including slopspace (in bytes) */ BESW(VID3_STRIDE, (ob->width * 2)); From d6d5874afe4170e5e7da6356609d35c50f2a3588 Mon Sep 17 00:00:00 2001 From: Rudolf Cornelissen Date: Thu, 28 Jan 2016 11:09:48 +0100 Subject: [PATCH 191/242] VIA gfx driver: bumped version to 0.18, updated docs. --- src/add-ons/accelerants/via/engine/general.c | 2 +- src/add-ons/kernel/drivers/graphics/via/UPDATE.html | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/add-ons/accelerants/via/engine/general.c b/src/add-ons/accelerants/via/engine/general.c index e2f42a4663..849810922f 100644 --- a/src/add-ons/accelerants/via/engine/general.c +++ b/src/add-ons/accelerants/via/engine/general.c @@ -90,7 +90,7 @@ status_t eng_general_powerup() { status_t status; - LOG(1,("POWERUP: Haiku VIA Accelerant 0.17 running.\n")); + LOG(1,("POWERUP: Haiku VIA Accelerant 0.18 running.\n")); /* preset no laptop */ si->ps.laptop = false; diff --git a/src/add-ons/kernel/drivers/graphics/via/UPDATE.html b/src/add-ons/kernel/drivers/graphics/via/UPDATE.html index 5618356548..e0eb72950d 100644 --- a/src/add-ons/kernel/drivers/graphics/via/UPDATE.html +++ b/src/add-ons/kernel/drivers/graphics/via/UPDATE.html @@ -4,7 +4,7 @@

        Changes done for each driverversion:

        -

        via_driver (Haiku repository 0.17, Rudolf)

        +

        via_driver (Haiku repository 0.18, Rudolf)

        • Initial setup based on nVidia driver 0.30;
        • Kerneldriver uses MTR-WC mapping where available; @@ -22,7 +22,9 @@
        • Added video overlay support;
        • Finalized virtualscreen panning granularity constraints programming;
        • Added returning correct information in GET_ACCELERANT_DEVICE_INFO (displayed in Haiku screenprefs panel); -
        • Fixed wrong PLL registerdefines for K8M800 and added seperate pixelPLL calculation routine: K8M800 now works correctly whereas previously you'd have a black screen (tested different resolutions, refreshrates and colordepths). +
        • Fixed wrong PLL registerdefines for K8M800 and added seperate pixelPLL calculation routine: K8M800 now works correctly whereas previously you'd have a black screen (tested different resolutions, refreshrates and colordepths); +
        • Fixed blocking overlay hooks if current videomode is not supported (before overlay could kick in while it should not, resulting in bad video or desktop pictures); +
        • Fixed K8M800 video overlay: apparantly the engine was modified for this revision of the Unichrome video chipset: at least the 'V1' engine doesn't work here, while ' V3' does (using V3 now on K8M800).

        Still todo:

          @@ -33,6 +35,6 @@


          Rudolf Cornelissen. -

          (Page last updated on January 13, 2016)

          +

          (Page last updated on January 28, 2016)

          From 82fbf1b3b6b6f32642c9abf6111a403759302357 Mon Sep 17 00:00:00 2001 From: Humdinger Date: Wed, 27 Jan 2016 17:22:20 +0100 Subject: [PATCH 192/242] Add the attributes BePDF creates to the PDF MIME type Providing these attributes by default makes sense. Other applications are more likely to use those as well instead of creating their own. --- src/data/mime_db/application/pdf | 72 +++++++++++++++++++++++++++++++- 1 file changed, 71 insertions(+), 1 deletion(-) diff --git a/src/data/mime_db/application/pdf b/src/data/mime_db/application/pdf index aecdedace1..7594162c46 100644 --- a/src/data/mime_db/application/pdf +++ b/src/data/mime_db/application/pdf @@ -3,7 +3,7 @@ resource(0, "BEOS:TYPE") #'MIMS' "application/x-vnd.Be-meta-mime"; resource(1, "META:TYPE") "application/pdf"; -resource(2, "META:SNIFF_RULE") "0.50 (\"%PDF\")"; +resource(2, "META:SNIFF_RULE") "0.50 (\"%PDF\")"; resource(3, "META:PREF_APP") #'MSIG' "application/x-vnd.mp-xpdf"; @@ -34,3 +34,73 @@ resource(6, "META:ICON") #'VICN' array { $"8100040A01010A1001178402040A06010A000A05040D0B0C0E1815FF01178222" $"04" }; + +resource(7, "META:ATTR_INFO") message(233) { + "attr:name" = "PDF:subject", + "attr:name" = "PDF:title", + "attr:name" = "PDF:creator", + "attr:name" = "PDF:author", + "attr:name" = "PDF:keywords", + "attr:name" = "PDF:producer", + "attr:name" = "PDF:created", + "attr:name" = "PDF:modified", + "attr:name" = "PDF:pages", + "attr:name" = "PDF:version", + "attr:name" = "PDF:linearized", + "attr:public_name" = "Subject", + "attr:public_name" = "Title", + "attr:public_name" = "Creator", + "attr:public_name" = "Author", + "attr:public_name" = "Keywords", + "attr:public_name" = "Producer", + "attr:public_name" = "Created", + "attr:public_name" = "Modified", + "attr:public_name" = "Pages", + "attr:public_name" = "Version", + "attr:public_name" = "Linearized", + "attr:type" = 'CSTR', + "attr:type" = 'CSTR', + "attr:type" = 'CSTR', + "attr:type" = 'CSTR', + "attr:type" = 'CSTR', + "attr:type" = 'CSTR', + "attr:type" = 'LONG', + "attr:type" = 'LONG', + "attr:type" = 'LONG', + "attr:type" = 'DBLE', + "attr:type" = 'BOOL', + "attr:viewable" = true, + "attr:viewable" = true, + "attr:viewable" = true, + "attr:viewable" = true, + "attr:viewable" = true, + "attr:viewable" = true, + "attr:viewable" = true, + "attr:viewable" = true, + "attr:viewable" = true, + "attr:viewable" = true, + "attr:viewable" = true, + "attr:editable" = true, + "attr:editable" = true, + "attr:editable" = true, + "attr:editable" = true, + "attr:editable" = true, + "attr:editable" = true, + "attr:editable" = false, + "attr:editable" = false, + "attr:editable" = false, + "attr:editable" = false, + "attr:editable" = false, + "attr:width" = 200, + "attr:width" = 200, + "attr:width" = 150, + "attr:width" = 150, + "attr:width" = 150, + "attr:width" = 150, + "attr:width" = 60, + "attr:width" = 60, + "attr:width" = 50, + "attr:width" = 70, + "attr:width" = 90, + "type" = "application/pdf" +}; From 3d2853b218768eaf9c69872aaa1e47f74d7e00d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Thu, 28 Jan 2016 19:51:23 +0100 Subject: [PATCH 193/242] app_server: Update overlay hooks after mode change. * They are supposed to be depending on the current mode. * This should help with #12613. --- .../interface/local/AccelerantHWInterface.cpp | 50 +++++++++++++------ .../interface/local/AccelerantHWInterface.h | 6 ++- 2 files changed, 38 insertions(+), 18 deletions(-) diff --git a/src/servers/app/drawing/interface/local/AccelerantHWInterface.cpp b/src/servers/app/drawing/interface/local/AccelerantHWInterface.cpp index f51dba6f95..2f2a522368 100644 --- a/src/servers/app/drawing/interface/local/AccelerantHWInterface.cpp +++ b/src/servers/app/drawing/interface/local/AccelerantHWInterface.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2014 Haiku, Inc. All rights reserved. + * Copyright 2001-2016 Haiku, Inc. All rights reserved. * Distributed under the terms of the MIT License. * * Authors: @@ -133,6 +133,17 @@ AccelerantHWInterface::AccelerantHWInterface() fAccDPMSMode(NULL), fAccSetDPMSMode(NULL), + // overlay hooks + fAccOverlayCount(NULL), + fAccOverlaySupportedSpaces(NULL), + fAccOverlaySupportedFeatures(NULL), + fAccAllocateOverlayBuffer(NULL), + fAccReleaseOverlayBuffer(NULL), + fAccGetOverlayConstraints(NULL), + fAccAllocateOverlay(NULL), + fAccReleaseOverlay(NULL), + fAccConfigureOverlay(NULL), + fModeCount(0), fModeList(NULL), @@ -390,6 +401,27 @@ AccelerantHWInterface::_SetupDefaultHooks() fAccDPMSMode = (dpms_mode)fAccelerantHook(B_DPMS_MODE, NULL); fAccSetDPMSMode = (set_dpms_mode)fAccelerantHook(B_SET_DPMS_MODE, NULL); + return B_OK; +} + + +void +AccelerantHWInterface::_UpdateHooksAfterModeChange() +{ + // update acceleration hooks +#if USE_ACCELERATION + fAccFillRect = (fill_rectangle)fAccelerantHook(B_FILL_RECTANGLE, + (void *)&fDisplayMode); + fAccInvertRect = (invert_rectangle)fAccelerantHook(B_INVERT_RECTANGLE, + (void *)&fDisplayMode); + fAccScreenBlit = (screen_to_screen_blit)fAccelerantHook( + B_SCREEN_TO_SCREEN_BLIT, (void *)&fDisplayMode); +#else + fAccFillRect = NULL; + fAccInvertRect = NULL; + fAccScreenBlit = NULL; +#endif + // overlay fAccOverlayCount = (overlay_count)fAccelerantHook(B_OVERLAY_COUNT, NULL); fAccOverlaySupportedSpaces = (overlay_supported_spaces)fAccelerantHook( @@ -408,8 +440,6 @@ AccelerantHWInterface::_SetupDefaultHooks() = (release_overlay)fAccelerantHook(B_RELEASE_OVERLAY, NULL); fAccConfigureOverlay = (configure_overlay)fAccelerantHook(B_CONFIGURE_OVERLAY, NULL); - - return B_OK; } @@ -637,19 +667,7 @@ AccelerantHWInterface::SetMode(const display_mode& mode) depth, fFrameBufferConfig.bytes_per_row); #endif - // update acceleration hooks -#if USE_ACCELERATION - fAccFillRect = (fill_rectangle)fAccelerantHook(B_FILL_RECTANGLE, - (void *)&fDisplayMode); - fAccInvertRect = (invert_rectangle)fAccelerantHook(B_INVERT_RECTANGLE, - (void *)&fDisplayMode); - fAccScreenBlit = (screen_to_screen_blit)fAccelerantHook( - B_SCREEN_TO_SCREEN_BLIT, (void *)&fDisplayMode); -#else - fAccFillRect = NULL; - fAccInvertRect = NULL; - fAccScreenBlit = NULL; -#endif + _UpdateHooksAfterModeChange(); // in case there is no accelerated blit function, using // an offscreen located backbuffer will not be beneficial! diff --git a/src/servers/app/drawing/interface/local/AccelerantHWInterface.h b/src/servers/app/drawing/interface/local/AccelerantHWInterface.h index b9192fce88..5cb8e57603 100644 --- a/src/servers/app/drawing/interface/local/AccelerantHWInterface.h +++ b/src/servers/app/drawing/interface/local/AccelerantHWInterface.h @@ -1,10 +1,11 @@ /* - * Copyright 2005-2012, Haiku. + * Copyright 2005-2016, Haiku. * Distributed under the terms of the MIT License. * * Authors: - * Michael Lotz * Stephan Aßmus + * Axel Dörfler, axeld@pinc-software.de + * Michael Lotz */ #ifndef ACCELERANT_HW_INTERFACE_H #define ACCELERANT_HW_INTERFACE_H @@ -104,6 +105,7 @@ private: int _OpenGraphicsDevice(int deviceNumber); status_t _OpenAccelerant(int device); status_t _SetupDefaultHooks(); + void _UpdateHooksAfterModeChange(); status_t _UpdateModeList(); status_t _UpdateFrameBufferConfig(); void _RegionToRectParams(/*const*/ BRegion* region, From f1059fbd7f64bf0ae8324e3e6bed9ce28f593b23 Mon Sep 17 00:00:00 2001 From: Dario Casalinuovo Date: Thu, 28 Jan 2016 23:27:38 +0100 Subject: [PATCH 194/242] BSoundPlayer: Release the node instead to delete * It's a bad idea to delete directly a node. There are some mechanisms behind that might break if not used correctly. * May help with #12606. --- src/kits/media/SoundPlayer.cpp | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/kits/media/SoundPlayer.cpp b/src/kits/media/SoundPlayer.cpp index 42db720bca..1b57fe9046 100644 --- a/src/kits/media/SoundPlayer.cpp +++ b/src/kits/media/SoundPlayer.cpp @@ -143,8 +143,17 @@ cleanup: // We do not call BMediaRoster::ReleaseNode(), since // the player was created by using "new". We could // call BMediaRoster::UnregisterNode(), but this is - // supposed to be done by BMediaNode destructor automatically - delete fPlayerNode; + // supposed to be done by BMediaNode destructor automatically. + + // The node is deleted by the Release() when ref count reach 0. + // Since we are the sole owners, and no one acquired it + // this should be the case. The Quit() synchronization + // is handled by the DeleteHook inheritance. + // NOTE: this might be crucial when using a BMediaEventLooper. + if (fPlayerNode->Release() != NULL) { + TRACE("BSoundPlayer::~BSoundPlayer: Error the producer node " + "appears to be acquired by someone else than us!"); + } // do not delete fVolumeSlider, it belongs to the parameter web delete fParameterWeb; From f67a641192f539bf4f0bf9e3a2bcd1a68b188a94 Mon Sep 17 00:00:00 2001 From: autonielx Date: Sat, 30 Jan 2016 06:33:24 +0100 Subject: [PATCH 195/242] Update translations from Pootle --- .../mail_daemon/inbound_filters/match_header/ja.catkeys | 5 ++++- data/catalogs/apps/mediaplayer/ja.catkeys | 3 ++- data/catalogs/preferences/appearance/ja.catkeys | 6 +++++- .../catalogs/preferences/network/InterfacesAddOn/sk.catkeys | 2 +- 4 files changed, 12 insertions(+), 4 deletions(-) diff --git a/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/ja.catkeys b/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/ja.catkeys index f1d5b0c3a7..949579f865 100644 --- a/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/ja.catkeys +++ b/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/ja.catkeys @@ -1,5 +1,7 @@ -1 japanese x-vnd.Haiku-MatchHeader 4262558281 +1 japanese x-vnd.Haiku-MatchHeader 548057976 ConfigView <動作を選択> +Header field (e.g. Subject, From, ...) ConfigView ヘッダーフィールド (例. 件名, 差出人 ...) +Account ConfigView アカウント has ConfigView が Move to ConfigView に移動する Then ConfigView ならば @@ -12,3 +14,4 @@ Match header RuleFilter ヘッダー一致条件 Reply with ConfigView 返事を書く If ConfigView 条件: Match \"%attribute\" against \"%regex\" RuleFilter \"%regex\" と一致する \"%attribute\" +Wildcard value like \"*spam*\".\nPrefix with \"REGEX:\" in order to use regular expressions. ConfigView ワイルドカード値は \"*spam*\" のようなものです。\n正規表現を使用するには、先頭に \"REGEX:\" をつけてください。 diff --git a/data/catalogs/apps/mediaplayer/ja.catkeys b/data/catalogs/apps/mediaplayer/ja.catkeys index a822a9ab1a..b7dee94baf 100644 --- a/data/catalogs/apps/mediaplayer/ja.catkeys +++ b/data/catalogs/apps/mediaplayer/ja.catkeys @@ -1,4 +1,4 @@ -1 japanese x-vnd.Haiku-MediaPlayer 2711018042 +1 japanese x-vnd.Haiku-MediaPlayer 3805057997 raw audio MediaPlayer-InfoWin raw オーディオ Location MediaPlayer-InfoWin 場所 1.85 : 1 (American) MediaPlayer-Main 1.85 : 1 (American) @@ -114,6 +114,7 @@ Error: MediaPlayer-Main エラー: Large MediaPlayer-SettingsWindow 大 Bottom of video MediaPlayer-SettingsWindow ビデオの下側 DrawBitmap MediaPlayer-InfoWin DrawBitmap +Total duration: %s MediaPlayer-PlaylistWindow 総再生時間: %s Stop MediaPlayer-Main 停止 MediaPlayer-InfoWin <名前の無いメディア> raw video MediaPlayer-InfoWin raw ビデオ diff --git a/data/catalogs/preferences/appearance/ja.catkeys b/data/catalogs/preferences/appearance/ja.catkeys index 03bedf98b6..bfd6ba3716 100644 --- a/data/catalogs/preferences/appearance/ja.catkeys +++ b/data/catalogs/preferences/appearance/ja.catkeys @@ -1,4 +1,4 @@ -1 japanese x-vnd.Haiku-Appearance 727801787 +1 japanese x-vnd.Haiku-Appearance 1140137500 Plain font: Font view 標準フォント: Control highlight Colors tab コントロールのハイライト Control border Colors tab コントロールの境界 @@ -6,11 +6,14 @@ Antialiasing type: AntialiasingSettingsView アンチエイリアス: Shadow Colors tab 影 On AntialiasingSettingsView 有効 Defaults APRWindow デフォルト +Link hover Colors tab リンク (ポイント時) Grayscale AntialiasingSettingsView グレースケール Shine Colors tab 光 About DecorSettingsView 情報 About decorator DecorSettingsView デコレーターについて Off AntialiasingSettingsView 無効 +Link text Colors tab リンクテキスト +Link active Colors tab リンク (選択中) Choose Decorator DecorSettingsView デコレーターを選択 Success Colors tab 成功 Inactive window tab text Colors tab 非アクティブウィンドウタブの文字 @@ -36,6 +39,7 @@ List background Colors tab リストの背景 OK DecorSettingsView OK Control mark Colors tab コントロールの選択部 Size: Font Selection view サイズ: +Link visited Colors tab リンク (訪問済) Decorator: DecorSettingsView デコレーター: Selected list item background Colors tab リスト選択項目の背景 Panel background Colors tab パネルの背景 diff --git a/data/catalogs/preferences/network/InterfacesAddOn/sk.catkeys b/data/catalogs/preferences/network/InterfacesAddOn/sk.catkeys index ab62a8a21a..3a1d5f7343 100644 --- a/data/catalogs/preferences/network/InterfacesAddOn/sk.catkeys +++ b/data/catalogs/preferences/network/InterfacesAddOn/sk.catkeys @@ -26,7 +26,7 @@ IP Address: IntefaceAddressView Adresa IP: Off IntefaceAddressView Vypnuté MAC address: IntefaceHardwareView Adresa MAC: Renegotiate IntefaceHardwareView Znovu vyjednať -Netmask: IntefaceAddressView Sieťová maska: +Netmask: IntefaceAddressView Maska siete: Your IP address IntefaceAddressView Vaša adresa IP disconnected IntefaceHardwareView odpojené Disable IntefaceHardwareView Zakázať From 104f3b598cf25bf5460a591608f972c26d14abd5 Mon Sep 17 00:00:00 2001 From: Humdinger Date: Sun, 31 Jan 2016 10:53:02 +0100 Subject: [PATCH 196/242] Changes some of the extra attributes of the PDF MIME type. As discussed on the mailing list [1], I changed the name of some of the more universally useful extra attibutes from "PDF:*" to "META:*", according to their "Relation to Dublin Code" [2]. There are now: "attr:name" = "META:subject", "attr:name" = "META:title" [already in use by Bookmarks], "attr:name" = "META:creator", "attr:name" = "META:author", "attr:name" = "META:keyw" [already in use by Bookmarks], "attr:name" = "META:pages", [1] http://www.freelists.org/post/haiku-development/Adding-more-METAattributes [2] http://www.freedesktop.org/wiki/CommonExtendedAttributes/#relationtodublincore --- src/data/mime_db/application/pdf | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/data/mime_db/application/pdf b/src/data/mime_db/application/pdf index 7594162c46..0243779f64 100644 --- a/src/data/mime_db/application/pdf +++ b/src/data/mime_db/application/pdf @@ -9,12 +9,14 @@ resource(3, "META:PREF_APP") #'MSIG' "application/x-vnd.mp-xpdf"; resource(4, "META:S:DESC") #'MSDC' "PDF document"; -resource(5, "META:EXTENS") message(234) { +resource(5, "META:L:DESC") #'MLDC' "Portable Document Format (PDF)"; + +resource(6, "META:EXTENS") message(234) { "extensions" = "pdf", "type" = "application/pdf" }; -resource(6, "META:ICON") #'VICN' array { +resource(7, "META:ICON") #'VICN' array { $"6E636966080200160338D2F73CD163BF82B23B84A94B88504870C900E7BDFFFF" $"EB0501020106023E49240000000000003CAAAA4940004A3000FFF4F4F47CFFC0" $"C0040192020016023A55A6BAC2293F0DA33E958646C2EB47A1D60001FF9E05FF" @@ -35,16 +37,16 @@ resource(6, "META:ICON") #'VICN' array { $"04" }; -resource(7, "META:ATTR_INFO") message(233) { - "attr:name" = "PDF:subject", - "attr:name" = "PDF:title", - "attr:name" = "PDF:creator", - "attr:name" = "PDF:author", - "attr:name" = "PDF:keywords", +resource(8, "META:ATTR_INFO") message(233) { + "attr:name" = "META:subject", + "attr:name" = "META:title", + "attr:name" = "META:creator", + "attr:name" = "META:author", + "attr:name" = "META:keyw", "attr:name" = "PDF:producer", "attr:name" = "PDF:created", "attr:name" = "PDF:modified", - "attr:name" = "PDF:pages", + "attr:name" = "META:pages", "attr:name" = "PDF:version", "attr:name" = "PDF:linearized", "attr:public_name" = "Subject", From fb9a8324cf5799bc4eefc83342dd4058ccda1961 Mon Sep 17 00:00:00 2001 From: Humdinger Date: Sun, 31 Jan 2016 14:26:46 +0100 Subject: [PATCH 197/242] Updated youtube_dl and gutenprint packages --- build/jam/repositories/HaikuPorts/x86 | 6 ++++-- build/jam/repositories/HaikuPorts/x86_64 | 6 +++--- build/jam/repositories/HaikuPorts/x86_gcc2 | 6 +++--- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/build/jam/repositories/HaikuPorts/x86 b/build/jam/repositories/HaikuPorts/x86 index 2b135ebbdb..7318368551 100644 --- a/build/jam/repositories/HaikuPorts/x86 +++ b/build/jam/repositories/HaikuPorts/x86 @@ -13,6 +13,7 @@ RemotePackageRepository HaikuPorts unknown_horizons-2014.1-1 vl_gothic-20141206-1 wqy_microhei-0.2.0~beta-3 + youtube_dl-2016.01.29-1 : # repository architecture packages # primary architecture (x86) @@ -125,8 +126,8 @@ RemotePackageRepository HaikuPorts gperf-3.0.4-1 grep-2.21-1 groff-1.20.1-3 - gutenprint-5.2.10-1 - gutenprint_devel-5.2.10-1 + gutenprint-5.2.11-1 + gutenprint_devel-5.2.11-1 gzip-1.6-2 haikuwebkit-1.5.1-1 haikuwebkit_devel-1.5.1-1 @@ -587,6 +588,7 @@ RemotePackageRepository HaikuPorts yasm xml_parser xz_utils + youtube_dl zip zlib : diff --git a/build/jam/repositories/HaikuPorts/x86_64 b/build/jam/repositories/HaikuPorts/x86_64 index 21b9d0d418..793142efd3 100644 --- a/build/jam/repositories/HaikuPorts/x86_64 +++ b/build/jam/repositories/HaikuPorts/x86_64 @@ -15,7 +15,7 @@ RemotePackageRepository HaikuPorts timgmsoundfont-fixed-5 unknown_horizons-2014.1-1 vl_gothic-20141206-1 - youtube_dl-2015.06.15-1 + youtube_dl-2016.01.29-1 wqy_microhei-0.2.0~beta-3 : # repository architecture packages @@ -140,8 +140,8 @@ RemotePackageRepository HaikuPorts grep_debuginfo-2.21-1 groff-1.20.1-3 gtk_doc-1.20-1 - gutenprint-5.2.10-1 - gutenprint_devel-5.2.10-1 + gutenprint-5.2.11-1 + gutenprint_devel-5.2.11-1 gzip-1.6-2 haikuwebkit-1.5.1-1 haikuwebkit_devel-1.5.1-1 diff --git a/build/jam/repositories/HaikuPorts/x86_gcc2 b/build/jam/repositories/HaikuPorts/x86_gcc2 index 3df97401ed..0785b6d5f7 100644 --- a/build/jam/repositories/HaikuPorts/x86_gcc2 +++ b/build/jam/repositories/HaikuPorts/x86_gcc2 @@ -25,7 +25,7 @@ RemotePackageRepository HaikuPorts timgmsoundfont-fixed-5 vl_gothic-20141206-1 wqy_microhei-0.2.0~beta-3 - youtube_dl-2015.06.15-1 + youtube_dl-2016.01.29-1 : # repository architecture packages # primary architecture (x86_gcc2) @@ -177,8 +177,8 @@ RemotePackageRepository HaikuPorts gtk_doc-1.20-1 guilib-1.2.1-1 guilib_devel-1.2.1-1 - gutenprint-5.2.10-1 - gutenprint_devel-5.2.10-1 + gutenprint-5.2.11-1 + gutenprint_devel-5.2.11-1 gyp-r1948-2 gzip-1.6-2 hdialog-0.2-2 From f77b8f376e26d259dd59e4a9582ab07540d61821 Mon Sep 17 00:00:00 2001 From: Humdinger Date: Mon, 1 Feb 2016 18:04:33 +0100 Subject: [PATCH 198/242] yab and yab_ide needed a rebuild. --- build/jam/repositories/HaikuPorts/x86_gcc2 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build/jam/repositories/HaikuPorts/x86_gcc2 b/build/jam/repositories/HaikuPorts/x86_gcc2 index 0785b6d5f7..b364ce9a9c 100644 --- a/build/jam/repositories/HaikuPorts/x86_gcc2 +++ b/build/jam/repositories/HaikuPorts/x86_gcc2 @@ -533,8 +533,8 @@ RemotePackageRepository HaikuPorts xml_parser-2.36-1 xproto-7.0.26-2 xrick-021212-2 - yab-1.7.5-2 - yab_ide-2.2.5-1 + yab-1.7.5.2-2 + yab_ide-2.2.5-3 yasm-1.3.0-1 zip-3.0-2 zlib-1.2.8-4 From 66f815e0baa755ee6ac3f6caee85ea1ba7f3034e Mon Sep 17 00:00:00 2001 From: Humdinger Date: Mon, 1 Feb 2016 19:23:30 +0100 Subject: [PATCH 199/242] The yab package with a correct revision... bbjimmy informed me the correct revision is "1" as otherwise it would collide with the same package hosted on FatElk... Thanks! --- build/jam/repositories/HaikuPorts/x86_gcc2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/jam/repositories/HaikuPorts/x86_gcc2 b/build/jam/repositories/HaikuPorts/x86_gcc2 index b364ce9a9c..05e4cfb12b 100644 --- a/build/jam/repositories/HaikuPorts/x86_gcc2 +++ b/build/jam/repositories/HaikuPorts/x86_gcc2 @@ -533,7 +533,7 @@ RemotePackageRepository HaikuPorts xml_parser-2.36-1 xproto-7.0.26-2 xrick-021212-2 - yab-1.7.5.2-2 + yab-1.7.5.2-1 yab_ide-2.2.5-3 yasm-1.3.0-1 zip-3.0-2 From 4e7b05cca20d88909030317ce6aac83c71490d9c Mon Sep 17 00:00:00 2001 From: Alexander von Gluck IV Date: Tue, 2 Feb 2016 18:48:19 -0600 Subject: [PATCH 200/242] platform/bios_ia32: Fix regression introduced in hrev48326 * Reverts f3e381dd * Details in #12633 * For some unknown reason, this change breaks an Intel Core 2 system from booting (Dell Optiplex 960, E8400) * If anyone has any ideas on why, let me know :-) --- src/system/boot/platform/bios_ia32/mmu.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/system/boot/platform/bios_ia32/mmu.cpp b/src/system/boot/platform/bios_ia32/mmu.cpp index 0247e773fa..4897521ea9 100644 --- a/src/system/boot/platform/bios_ia32/mmu.cpp +++ b/src/system/boot/platform/bios_ia32/mmu.cpp @@ -212,7 +212,7 @@ unmap_page(addr_t virtualAddress) / (B_PAGE_SIZE * 1024)] & 0xfffff000); pageTable[(virtualAddress % (B_PAGE_SIZE * 1024)) / B_PAGE_SIZE] = 0; - asm volatile("invlpg (%0)" : : "r" (virtualAddress) : "memory"); + asm volatile("invlpg (%0)" : : "r" (virtualAddress)); } @@ -257,7 +257,7 @@ map_page(addr_t virtualAddress, addr_t physicalAddress, uint32 flags) pageTable[tableEntry] = physicalAddress | flags; - asm volatile("invlpg (%0)" : : "r" (virtualAddress) : "memory"); + asm volatile("invlpg (%0)" : : "r" (virtualAddress)); TRACE("map_page: done\n"); } From ffeb987dc475fb6a84f5c00a42c9b0ac86718d29 Mon Sep 17 00:00:00 2001 From: Dario Casalinuovo Date: Sun, 31 Jan 2016 12:54:12 +0100 Subject: [PATCH 201/242] BMediaEventLooper: Make lateness calculus in real time * After having this patch applied locally for some time, I'm going to be sure that we have to deal only with real_time values. * Since RealTime() is just a system_time() wrapper, the code will be slightly improved in performances too. * Additionally it performs very well when the thread is externally stopped (such as debugging it), so that the audio recover almost immediately. --- src/kits/media/MediaEventLooper.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/kits/media/MediaEventLooper.cpp b/src/kits/media/MediaEventLooper.cpp index 5110b24c05..8cb3f22975 100644 --- a/src/kits/media/MediaEventLooper.cpp +++ b/src/kits/media/MediaEventLooper.cpp @@ -241,12 +241,11 @@ BMediaEventLooper::ControlLoop() err = fRealTimeQueue.RemoveFirstEvent(&event); if (err == B_OK) { - // We are going to do this calculus in performance time + // We are going to do this calculus in real time // because otherwise we could get erroneous values. // This calculus allow us to detect both early and late // buffers, this is the meaning of the lateness concept. - bigtime_t lateness = event.event_time - fEventLatency - - fSchedulingLatency - TimeSource()->Now(); + bigtime_t lateness = waitUntil - TimeSource()->RealTime(); DispatchEvent(&event, -lateness, hasRealtime); } } else if (err != B_OK) From bb1f15aadee6533de6ddcb511d04d84b2c22029a Mon Sep 17 00:00:00 2001 From: Dario Casalinuovo Date: Tue, 2 Feb 2016 01:10:15 +0100 Subject: [PATCH 202/242] BMediaEventLooper: Better solution for negative timestamp * This problem happens only at the startup, so that it's preferred that we deal with it in the BMediaEventLooper side. * This solve some audio stability problems I had with slow systems. --- src/kits/media/MediaEventLooper.cpp | 10 ++++++++++ src/kits/media/MediaNode.cpp | 6 ------ 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/kits/media/MediaEventLooper.cpp b/src/kits/media/MediaEventLooper.cpp index 8cb3f22975..85af33acc6 100644 --- a/src/kits/media/MediaEventLooper.cpp +++ b/src/kits/media/MediaEventLooper.cpp @@ -217,6 +217,7 @@ BMediaEventLooper::ControlLoop() bigtime_t waitUntil = B_INFINITE_TIMEOUT; bool hasRealtime = false; bool hasEvent = false; + bool hasBooted = false; // While there are no events or it is not time for the earliest event, // process messages using WaitForMessages. Whenever this funtion times out, @@ -262,6 +263,15 @@ BMediaEventLooper::ControlLoop() waitUntil = TimeSource()->RealTimeFor( fEventQueue.FirstEventTime(), fEventLatency + fSchedulingLatency); + + // The first event we handle will have + // a negative startup wait. In this case + // we just check the port and let the + // first event to be executed just now. + if (!hasBooted && waitUntil < 0) { + waitUntil = 0; + hasBooted = true; + } } else if (!hasRealtime) { waitUntil = B_INFINITE_TIMEOUT; continue; diff --git a/src/kits/media/MediaNode.cpp b/src/kits/media/MediaNode.cpp index 5f2ab4fa20..362c3f3919 100644 --- a/src/kits/media/MediaNode.cpp +++ b/src/kits/media/MediaNode.cpp @@ -362,12 +362,6 @@ BMediaNode::WaitForMessage(bigtime_t waitUntil, uint32 flags, int32 message; ssize_t size; - // TODO: Investigate on this issue - if (waitUntil < 0) { - TRACE("BMediaNode::WaitForMessage: Negative timeout!\n"); - waitUntil = 0; - } - while (true) { size = read_port_etc(ControlPort(), &message, data, sizeof(data), B_ABSOLUTE_TIMEOUT, waitUntil); From 138a802617a45b58aa3f778b6f061b68d6341c48 Mon Sep 17 00:00:00 2001 From: Dario Casalinuovo Date: Tue, 2 Feb 2016 22:57:27 +0100 Subject: [PATCH 203/242] BMediaEventLooper: Use enqueue_time in a different shape * This is the only solution that allowed to use the best of both ways to do this calculus. I've also tested it with a modified sound player that snoozed every time the buffer should be handled, and found that neither of the lateness calculus I tested (including enqueue_time) really solve all problems. That's why I've tried to find an average solution. There's still room for improvements eventually. --- headers/os/media/TimedEventQueue.h | 3 ++- src/kits/media/MediaEventLooper.cpp | 23 ++++++++++++++++++----- src/kits/media/TimedEventQueuePrivate.cpp | 3 +++ 3 files changed, 23 insertions(+), 6 deletions(-) diff --git a/headers/os/media/TimedEventQueue.h b/headers/os/media/TimedEventQueue.h index 732fd1727b..ce00b5b6ed 100644 --- a/headers/os/media/TimedEventQueue.h +++ b/headers/os/media/TimedEventQueue.h @@ -38,8 +38,9 @@ struct media_timed_event { int32 data; int64 bigdata; char user_data[64]; + bigtime_t enqueue_time; - uint32 _reserved_media_timed_event_[8]; + uint32 _reserved_media_timed_event_[6]; }; diff --git a/src/kits/media/MediaEventLooper.cpp b/src/kits/media/MediaEventLooper.cpp index 85af33acc6..3eae84481a 100644 --- a/src/kits/media/MediaEventLooper.cpp +++ b/src/kits/media/MediaEventLooper.cpp @@ -242,11 +242,24 @@ BMediaEventLooper::ControlLoop() err = fRealTimeQueue.RemoveFirstEvent(&event); if (err == B_OK) { - // We are going to do this calculus in real time - // because otherwise we could get erroneous values. - // This calculus allow us to detect both early and late - // buffers, this is the meaning of the lateness concept. - bigtime_t lateness = waitUntil - TimeSource()->RealTime(); + // The general idea of lateness is to allow + // the client code to detect when the buffer + // is handled late or early. What we add is + // that the code log the time at which the + // current event is added to the queue. This + // allow us to detect cyclic/stagnant latency + // in the meantime, so that the client can + // notify to the producer only the portion + // that might be attributable. + bigtime_t lateness = 0; + if (waitUntil > 0) { + lateness = waitUntil - TimeSource()->RealTime(); + if (lateness > 0) { + bigtime_t enqueueLatency = event.enqueue_time - waitUntil; + if (enqueueLatency > 0) + lateness += enqueueLatency; + } + } DispatchEvent(&event, -lateness, hasRealtime); } } else if (err != B_OK) diff --git a/src/kits/media/TimedEventQueuePrivate.cpp b/src/kits/media/TimedEventQueuePrivate.cpp index 6b5be4d988..4e39b83f50 100644 --- a/src/kits/media/TimedEventQueuePrivate.cpp +++ b/src/kits/media/TimedEventQueuePrivate.cpp @@ -78,6 +78,9 @@ _event_queue_imp::AddEvent(const media_timed_event &event) return B_BAD_VALUE; } + const_cast(event).enqueue_time = + BTimeSource::RealTime(); + //create a new queue if (fFirstEntry == NULL) { ASSERT(fEventCount == 0); From e2cf46ca0c72a4617bf83e2c4099eefae7033eaf Mon Sep 17 00:00:00 2001 From: Dario Casalinuovo Date: Wed, 3 Feb 2016 18:41:50 +0100 Subject: [PATCH 204/242] TimedEventQueue: Fix style as suggested by axel --- src/kits/media/TimedEventQueuePrivate.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/kits/media/TimedEventQueuePrivate.cpp b/src/kits/media/TimedEventQueuePrivate.cpp index 4e39b83f50..ccb4091796 100644 --- a/src/kits/media/TimedEventQueuePrivate.cpp +++ b/src/kits/media/TimedEventQueuePrivate.cpp @@ -78,8 +78,8 @@ _event_queue_imp::AddEvent(const media_timed_event &event) return B_BAD_VALUE; } - const_cast(event).enqueue_time = - BTimeSource::RealTime(); + const_cast(event).enqueue_time + = BTimeSource::RealTime(); //create a new queue if (fFirstEntry == NULL) { From cfdffb0c14be6168a353ef074dba8db34c7e42ff Mon Sep 17 00:00:00 2001 From: autonielx Date: Sat, 6 Feb 2016 06:35:05 +0100 Subject: [PATCH 205/242] Update translations from Pootle --- .../mail_daemon/inbound_filters/match_header/pl.catkeys | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/pl.catkeys b/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/pl.catkeys index 5a6bd94fc5..ef4a3f1ac7 100644 --- a/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/pl.catkeys +++ b/data/catalogs/add-ons/mail_daemon/inbound_filters/match_header/pl.catkeys @@ -1,5 +1,7 @@ -1 polish x-vnd.Haiku-MatchHeader 4262558281 +1 polish x-vnd.Haiku-MatchHeader 548057976 ConfigView +Header field (e.g. Subject, From, ...) ConfigView Pole nagłówkowe (np. Temat, Od, ...) +Account ConfigView Konto has ConfigView ma Move to ConfigView Przenieś do Then ConfigView To @@ -12,3 +14,4 @@ Match header RuleFilter Porównaj nagłówek Reply with ConfigView Odpowiedz z If ConfigView Jeśli Match \"%attribute\" against \"%regex\" RuleFilter Porównaj „%attribute” z „%regex” +Wildcard value like \"*spam*\".\nPrefix with \"REGEX:\" in order to use regular expressions. ConfigView Maska, np. „*spam*”.\nPoprzedź frazą „REGEX:” w celu użycia wyrażeń regularnych. From 2e3e1a5902f4fd9824c90dff7fc45c638b67c834 Mon Sep 17 00:00:00 2001 From: Rudolf Cornelissen Date: Sun, 7 Feb 2016 22:46:49 +0100 Subject: [PATCH 206/242] VIA gfx driver: fixed overlay on DDR166 and DDR200 memory. v0.19, updated docs. --- src/add-ons/accelerants/via/engine/bes.c | 30 +++++++++++++++---- src/add-ons/accelerants/via/engine/general.c | 4 +-- .../kernel/drivers/graphics/via/UPDATE.html | 9 +++--- 3 files changed, 31 insertions(+), 12 deletions(-) diff --git a/src/add-ons/accelerants/via/engine/bes.c b/src/add-ons/accelerants/via/engine/bes.c index 0db40de56c..9ece4ac4b5 100644 --- a/src/add-ons/accelerants/via/engine/bes.c +++ b/src/add-ons/accelerants/via/engine/bes.c @@ -1,5 +1,5 @@ /* VIA Unichrome Back End Scaler functions */ -/* Written by Rudolf Cornelissen 05/2002-1/2016 */ +/* Written by Rudolf Cornelissen 05/2002-2/2016 */ #define MODULE_BIT 0x00000200 @@ -49,13 +49,21 @@ bool eng_bes_chk_bandwidth() switch (((CRTCR(MEMCLK)) & 0x70) >> 4) { case 0: /* SDR 66 */ - case 1: /* SDR 100 */ - case 2: /* SDR 133 */ - /* memory is too slow, sorry. */ + LOG(8,("Overlay: System memory is type SDR 66\n")); return false; break; - case 3: /* DDR 100 */ + case 1: /* SDR 100 */ + LOG(8,("Overlay: System memory is type SDR 100\n")); + return false; + break; + case 2: /* SDR 133 */ + /* memory is too slow, sorry. */ + LOG(8,("Overlay: System memory is type SDR 133\n")); + return false; + break; + case 3: /* DDR 100 (PC1600) */ /* DDR100's basic limit... */ + LOG(8,("Overlay: System memory is type DDR 100\n")); if (bandwidth > 921600000.0) return false; /* ... but we have constraints at higher than 800x600 */ if (si->dm.timing.h_display > 800) @@ -65,10 +73,20 @@ bool eng_bes_chk_bandwidth() if (refresh > 60.2) return false; } break; - case 4: /* DDR 133 */ + case 4: /* DDR 133 (PC2100) */ + LOG(8,("Overlay: System memory is type DDR 133\n")); if (bandwidth > 4045440000.0) return false; break; + case 5: /* DDR 166 (PC2700) */ + LOG(8,("Overlay: System memory is type DDR 166\n")); + if (bandwidth > 5210000000.0) return false;//fixme: set more correct limit? + break; + case 6: /* DDR 200 (PC3200) */ + LOG(8,("Overlay: System memory is type DDR 200\n")); + if (bandwidth > 6170000000.0) return false;//fixme: set more correct limit? + break; default: /* not (yet?) used */ + LOG(8,("Overlay: System memory is (yet) unknown type!\n")); return false; break; } diff --git a/src/add-ons/accelerants/via/engine/general.c b/src/add-ons/accelerants/via/engine/general.c index 849810922f..54efe494ad 100644 --- a/src/add-ons/accelerants/via/engine/general.c +++ b/src/add-ons/accelerants/via/engine/general.c @@ -1,7 +1,7 @@ /* Authors: Mark Watson 12/1999, Apsed, - Rudolf Cornelissen 10/2002-1/2016 + Rudolf Cornelissen 10/2002-2/2016 */ #define MODULE_BIT 0x00008000 @@ -90,7 +90,7 @@ status_t eng_general_powerup() { status_t status; - LOG(1,("POWERUP: Haiku VIA Accelerant 0.18 running.\n")); + LOG(1,("POWERUP: Haiku VIA Accelerant 0.19 running.\n")); /* preset no laptop */ si->ps.laptop = false; diff --git a/src/add-ons/kernel/drivers/graphics/via/UPDATE.html b/src/add-ons/kernel/drivers/graphics/via/UPDATE.html index e0eb72950d..dc4c63c1cf 100644 --- a/src/add-ons/kernel/drivers/graphics/via/UPDATE.html +++ b/src/add-ons/kernel/drivers/graphics/via/UPDATE.html @@ -4,7 +4,7 @@

          Changes done for each driverversion:

          -

          via_driver (Haiku repository 0.18, Rudolf)

          +

          via_driver (Haiku repository 0.19, Rudolf)

          • Initial setup based on nVidia driver 0.30;
          • Kerneldriver uses MTR-WC mapping where available; @@ -24,7 +24,8 @@
          • Added returning correct information in GET_ACCELERANT_DEVICE_INFO (displayed in Haiku screenprefs panel);
          • Fixed wrong PLL registerdefines for K8M800 and added seperate pixelPLL calculation routine: K8M800 now works correctly whereas previously you'd have a black screen (tested different resolutions, refreshrates and colordepths);
          • Fixed blocking overlay hooks if current videomode is not supported (before overlay could kick in while it should not, resulting in bad video or desktop pictures); -
          • Fixed K8M800 video overlay: apparantly the engine was modified for this revision of the Unichrome video chipset: at least the 'V1' engine doesn't work here, while ' V3' does (using V3 now on K8M800). +
          • Fixed K8M800 video overlay: apparantly the engine was modified for this revision of the Unichrome video chipset: at least the 'V1' engine doesn't work here, while ' V3' does (using V3 now on K8M800); +
          • Added overlay support on system memory types DDR 166 and DDR 200. Before on these memory types overlay would block.

          Still todo:

            @@ -34,7 +35,7 @@




            -Rudolf Cornelissen. -

            (Page last updated on January 28, 2016)

            +Rudolf Cornelissen.
            +

            (Page last updated on February 7, 2016)

            From 730d0700f5e76a35cdd22e27c30bfc9a2c0421bd Mon Sep 17 00:00:00 2001 From: Dario Casalinuovo Date: Tue, 2 Feb 2016 23:50:39 +0100 Subject: [PATCH 207/242] MultiAudioNode: Remove custom lateness code --- .../media-add-ons/multi_audio/MultiAudioNode.cpp | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/src/add-ons/media/media-add-ons/multi_audio/MultiAudioNode.cpp b/src/add-ons/media/media-add-ons/multi_audio/MultiAudioNode.cpp index 69b65729ed..fc2287401e 100644 --- a/src/add-ons/media/media-add-ons/multi_audio/MultiAudioNode.cpp +++ b/src/add-ons/media/media-add-ons/multi_audio/MultiAudioNode.cpp @@ -1163,20 +1163,13 @@ MultiAudioNode::_HandleBuffer(const media_timed_event* event, return B_MEDIA_BAD_DESTINATION; } - bigtime_t now = TimeSource()->Now(); - bigtime_t performanceTime = buffer->Header()->start_time; - - // the how_early calculate here doesn't include scheduling latency because - // we've already been scheduled to handle the buffer - bigtime_t howEarly = performanceTime - EventLatency() - now; - // if the buffer is late, we ignore it and report the fact to the producer // who sent it to us - if (RunMode() != B_OFFLINE && RunMode() != B_RECORDING && howEarly < 0LL) { + if (RunMode() != B_OFFLINE && RunMode() != B_RECORDING && lateness > 0) { // lateness doesn't matter in offline mode or in recording mode //mLateBuffers++; - NotifyLateProducer(channel->fInput.source, -howEarly, performanceTime); - fprintf(stderr," <- LATE BUFFER : %" B_PRIdBIGTIME "\n", howEarly); + NotifyLateProducer(channel->fInput.source, lateness, event->event_time); + fprintf(stderr," <- LATE BUFFER : %" B_PRIdBIGTIME "\n", lateness); buffer->Recycle(); } else { //WriteBuffer(buffer, *channel); @@ -1185,7 +1178,7 @@ MultiAudioNode::_HandleBuffer(const media_timed_event* event, if (channel->fBuffer != NULL) { PRINT(("MultiAudioNode::HandleBuffer snoozing recycling channelId : %" B_PRIi32 ", how_early:%" B_PRIdBIGTIME "\n", - channel->fChannelId, howEarly)); + channel->fChannelId, lateness)); //channel->fBuffer->Recycle(); snooze(100); if (channel->fBuffer != NULL) From 801b3e3bf487edd9de0c68bdf44f749370849e38 Mon Sep 17 00:00:00 2001 From: Dario Casalinuovo Date: Sun, 7 Feb 2016 23:13:22 +0100 Subject: [PATCH 208/242] MediaEventLooper: Add more safeness on exit * The WaitForMessage is moved at the end of the loop, and the check for quitting the loop is moved as it's condition, this makes us to be sure that once a Quit() request is performed we will not handle events anymore. * Other minor style and initialization fixes. --- src/kits/media/MediaEventLooper.cpp | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/src/kits/media/MediaEventLooper.cpp b/src/kits/media/MediaEventLooper.cpp index 3eae84481a..0af1a72b63 100644 --- a/src/kits/media/MediaEventLooper.cpp +++ b/src/kits/media/MediaEventLooper.cpp @@ -213,7 +213,7 @@ BMediaEventLooper::ControlLoop() { CALLED(); - status_t err; + status_t err = B_OK; bigtime_t waitUntil = B_INFINITE_TIMEOUT; bool hasRealtime = false; bool hasEvent = false; @@ -224,11 +224,7 @@ BMediaEventLooper::ControlLoop() // we need to handle the next event fSchedulingLatency = estimate_max_scheduling_latency(fControlThread); - while (true) { - if (RunState() == B_QUITTING) - return; - - err = WaitForMessage(waitUntil); + while (RunState() != B_QUITTING) { if (err == B_TIMED_OUT || err == B_WOULD_BLOCK) { // NOTE: The reference for doing the lateness calculus this way can @@ -255,7 +251,8 @@ BMediaEventLooper::ControlLoop() if (waitUntil > 0) { lateness = waitUntil - TimeSource()->RealTime(); if (lateness > 0) { - bigtime_t enqueueLatency = event.enqueue_time - waitUntil; + bigtime_t enqueueLatency + = event.enqueue_time - waitUntil; if (enqueueLatency > 0) lateness += enqueueLatency; } @@ -285,10 +282,8 @@ BMediaEventLooper::ControlLoop() waitUntil = 0; hasBooted = true; } - } else if (!hasRealtime) { + } else if (!hasRealtime) waitUntil = B_INFINITE_TIMEOUT; - continue; - } if (hasRealtime) { bigtime_t realtimeWait = fRealTimeQueue.FirstEventTime() @@ -300,6 +295,7 @@ BMediaEventLooper::ControlLoop() } else hasRealtime = false; } + err = WaitForMessage(waitUntil); } } From 2a2e352a4a58214b162ed9dac27d898f1dc910ef Mon Sep 17 00:00:00 2001 From: Dario Casalinuovo Date: Tue, 9 Feb 2016 13:33:09 +0100 Subject: [PATCH 209/242] BMediaRecorder: Rework to allow external connections * This required to review various parts of the code, and isn't probably still perfect. The main problem was an attributes hell where redondance created a lot of problems, all this data is now controlled mostly by the node. * Header indentation changes needed too. --- headers/private/media/MediaRecorder.h | 15 ++-- headers/private/media/MediaRecorderNode.h | 103 +++++++++++----------- src/kits/media/MediaRecorder.cpp | 86 +++++++++--------- src/kits/media/MediaRecorderNode.cpp | 30 +++++-- 4 files changed, 129 insertions(+), 105 deletions(-) diff --git a/headers/private/media/MediaRecorder.h b/headers/private/media/MediaRecorder.h index 417be03f1d..eeb64f0dc8 100644 --- a/headers/private/media/MediaRecorder.h +++ b/headers/private/media/MediaRecorder.h @@ -46,6 +46,7 @@ public: void SetAcceptedFormat( const media_format& format); + const media_format& AcceptedFormat() const; virtual status_t Start(bool force = false); virtual status_t Stop(bool force = false); @@ -66,13 +67,18 @@ public: const media_format& Format() const; - const media_output& MediaOutput() const; - const media_input& MediaInput() const; - protected: + // Get the producer node source + const media_source& MediaSource() const; + // This is the our own input + const media_input& MediaInput() const; virtual void BufferReceived(void* buffer, size_t size, const media_header& header); + + status_t SetUpConnection(media_input ourInput, + media_source outputSource); + private: status_t _Connect(const media_node& mediaNode, @@ -98,10 +104,9 @@ private: NotifyFunc fNotifyHook; media_node fOutputNode; - media_output fOutput; + media_source fOutputSource; BMediaRecorderNode* fNode; - media_input fInput; void* fBufferCookie; uint32 fPadding[32]; diff --git a/headers/private/media/MediaRecorderNode.h b/headers/private/media/MediaRecorderNode.h index 8a4f2fedfd..746e5ace46 100644 --- a/headers/private/media/MediaRecorderNode.h +++ b/headers/private/media/MediaRecorderNode.h @@ -20,44 +20,45 @@ class BMediaRecorder; class BMediaRecorderNode : public BMediaEventLooper, public BBufferConsumer { public: - BMediaRecorderNode(const char* name, - BMediaRecorder* recorder, - media_type type - = B_MEDIA_UNKNOWN_TYPE); + BMediaRecorderNode(const char* name, + BMediaRecorder* recorder, + media_type type + = B_MEDIA_UNKNOWN_TYPE); // TODO these are not thread safe; we should fix that... - void SetAcceptedFormat(const media_format& format); + void SetAcceptedFormat(const media_format& format); + const media_format& AcceptedFormat() const; - status_t GetInput(media_input* outInput); + void GetInput(media_input* input); - void SetDataEnabled(bool enabled); + void SetDataEnabled(bool enabled); protected: - virtual BMediaAddOn* AddOn(int32* id) const; + virtual BMediaAddOn* AddOn(int32* id) const; - virtual void NodeRegistered(); + virtual void NodeRegistered(); - virtual void SetRunMode(run_mode mode); + virtual void SetRunMode(run_mode mode); - virtual void HandleEvent(const media_timed_event* event, - bigtime_t lateness, - bool realTimeEvent); + virtual void HandleEvent(const media_timed_event* event, + bigtime_t lateness, + bool realTimeEvent); - virtual void Start(bigtime_t performanceTime); + virtual void Start(bigtime_t performanceTime); - virtual void Stop(bigtime_t performanceTime, - bool immediate); + virtual void Stop(bigtime_t performanceTime, + bool immediate); - virtual void Seek(bigtime_t mediaTime, - bigtime_t performanceTime); + virtual void Seek(bigtime_t mediaTime, + bigtime_t performanceTime); - virtual void TimeWarp(bigtime_t realTime, - bigtime_t performanceTime); + virtual void TimeWarp(bigtime_t realTime, + bigtime_t performanceTime); - virtual status_t HandleMessage(int32 message, - const void* data, - size_t size); + virtual status_t HandleMessage(int32 message, + const void* data, + size_t size); // Someone, probably the producer, is asking you about // this format. Give your honest opinion, possibly @@ -65,46 +66,46 @@ protected: // the format, since he's synchronously waiting for your // reply. - virtual status_t AcceptFormat(const media_destination& dest, - media_format* format); + virtual status_t AcceptFormat(const media_destination& dest, + media_format* format); - virtual status_t GetNextInput(int32* cookie, - media_input* outInput); + virtual status_t GetNextInput(int32* cookie, + media_input* outInput); - virtual void DisposeInputCookie(int32 cookie); + virtual void DisposeInputCookie(int32 cookie); - virtual void BufferReceived(BBuffer* buffer); + virtual void BufferReceived(BBuffer* buffer); - virtual void ProducerDataStatus( - const media_destination& destination, - int32 status, - bigtime_t performanceTime); + virtual void ProducerDataStatus( + const media_destination& destination, + int32 status, + bigtime_t performanceTime); - virtual status_t GetLatencyFor(const media_destination& destination, - bigtime_t* outLatency, - media_node_id* outTimesource); + virtual status_t GetLatencyFor(const media_destination& destination, + bigtime_t* outLatency, + media_node_id* outTimesource); - virtual status_t Connected(const media_source& producer, - const media_destination& where, - const media_format& format, - media_input* outInput); + virtual status_t Connected(const media_source& producer, + const media_destination& where, + const media_format& format, + media_input* outInput); - virtual void Disconnected(const media_source& producer, - const media_destination& where); + virtual void Disconnected(const media_source& producer, + const media_destination& where); - virtual status_t FormatChanged(const media_source& producer, - const media_destination& consumer, - int32 tag, - const media_format& format); + virtual status_t FormatChanged(const media_source& producer, + const media_destination& consumer, + int32 tag, + const media_format& format); protected: - virtual ~BMediaRecorderNode(); + virtual ~BMediaRecorderNode(); - BMediaRecorder* fRecorder; - media_format fOKFormat; - media_input fInput; - BString fName; + BMediaRecorder* fRecorder; + media_format fOKFormat; + media_input fInput; + BString fName; }; } diff --git a/src/kits/media/MediaRecorder.cpp b/src/kits/media/MediaRecorder.cpp index d2d6be449e..5738e936e3 100644 --- a/src/kits/media/MediaRecorder.cpp +++ b/src/kits/media/MediaRecorder.cpp @@ -72,6 +72,15 @@ BMediaRecorder::SetAcceptedFormat(const media_format& format) } +const media_format& +BMediaRecorder::AcceptedFormat() const +{ + CALLED(); + + return fNode->AcceptedFormat(); +} + + status_t BMediaRecorder::SetHooks(ProcessFunc recordFunc, NotifyFunc notifyFunc, void* cookie) @@ -216,10 +225,13 @@ BMediaRecorder::Disconnect() if (err != B_OK) return err; + media_input ourInput; + fNode->GetInput(&ourInput); + // do the disconnect err = BMediaRoster::CurrentRoster()->Disconnect( - fOutputNode.node, fOutput.source, - fNode->Node().node, fInput.destination); + fOutputNode.node, fOutputSource, + fNode->Node().node, ourInput.destination); if (fReleaseOutputNode) { BMediaRoster::Roster()->ReleaseNode(fOutputNode); @@ -312,12 +324,12 @@ BMediaRecorder::IsConnected() const } -const media_output& -BMediaRecorder::MediaOutput() const +const media_source& +BMediaRecorder::MediaSource() const { CALLED(); - return fOutput; + return fOutputSource; } @@ -326,7 +338,9 @@ BMediaRecorder::MediaInput() const { CALLED(); - return fInput; + media_input* input = NULL; + fNode->GetInput(input); + return *input; } @@ -335,7 +349,25 @@ BMediaRecorder::Format() const { CALLED(); - return fOutput.format; + return fNode->AcceptedFormat(); +} + + +status_t +BMediaRecorder::SetUpConnection(media_input ourInput, media_source outputSource) +{ + fOutputSource = outputSource; + + // Perform the connection + media_node timeSource; + if ((fOutputNode.kind & B_TIME_SOURCE) != 0) + timeSource = fOutputNode; + else + BMediaRoster::Roster()->GetTimeSource(&timeSource); + + // Set time source + return BMediaRoster::Roster()->SetTimeSourceFor(fNode->Node().node, + timeSource.node); } @@ -381,45 +413,15 @@ BMediaRecorder::_Connect(const media_node& node, if (ourOutput.source == media_source::null) return B_MEDIA_BAD_SOURCE; + fOutputSource = ourOutput.source; + // find our Node's free input media_input ourInput; - err = fNode->GetInput(&ourInput); - if (err != B_OK) - return err; + fNode->GetInput(&ourInput); - media_node timeSource; - if ((node.kind & B_TIME_SOURCE) != 0) - timeSource = node; - else - BMediaRoster::Roster()->GetTimeSource(&timeSource); - - // set time source - err = BMediaRoster::Roster()->SetTimeSourceFor(fNode->Node().node, - timeSource.node); - - if (err != B_OK) - return err; - - // start the recorder node (it's always running) - err = BMediaRoster::CurrentRoster()->StartNode(fOutputNode, - fNode->TimeSource()->Now()); - - if (err != B_OK) - return err; - - // perform the connection - fOutput = ourOutput; - fInput = ourInput; - - err = BMediaRoster::CurrentRoster()->Connect(fOutput.source, - fInput.destination, &ourFormat, &fOutput, &fInput, + return BMediaRoster::CurrentRoster()->Connect(fOutputSource, + ourInput.destination, &ourFormat, &ourOutput, &ourInput, BMediaRoster::B_CONNECT_MUTED); - - if (err != B_OK) - return err; - - fConnected = true; - return B_OK; } diff --git a/src/kits/media/MediaRecorderNode.cpp b/src/kits/media/MediaRecorderNode.cpp index bb6d5beff7..87ef5278f2 100644 --- a/src/kits/media/MediaRecorderNode.cpp +++ b/src/kits/media/MediaRecorderNode.cpp @@ -10,6 +10,8 @@ #include #include +#include +#include #include #include @@ -27,6 +29,7 @@ BMediaRecorderNode::BMediaRecorderNode(const char* name, { CALLED(); + fInput.node = Node(); fInput.destination.id = 1; fInput.destination.port = ControlPort(); @@ -105,15 +108,22 @@ BMediaRecorderNode::SetAcceptedFormat(const media_format& format) } -status_t +const media_format& +BMediaRecorderNode::AcceptedFormat() const +{ + CALLED(); + + return fOKFormat; +} + + +void BMediaRecorderNode::GetInput(media_input* outInput) { CALLED(); fInput.node = Node(); *outInput = fInput; - - return B_OK; } @@ -287,8 +297,16 @@ BMediaRecorderNode::Connected(const media_source &producer, fInput.format = withFormat; *outInput = fInput; + // This is a workaround needed for us to get the node + // so that our owner class can do it's operations. + media_node node; + BMediaRosterEx* roster = MediaRosterEx(BMediaRoster::CurrentRoster()); + roster->GetNodeFor(roster->NodeIDFor(producer.port), &node); + fRecorder->fOutputNode = node; + fRecorder->fReleaseOutputNode = true; + + fRecorder->SetUpConnection(fInput, producer); fRecorder->fConnected = true; - fRecorder->fInput = fInput; return B_OK; } @@ -301,10 +319,8 @@ BMediaRecorderNode::Disconnected(const media_source& producer, CALLED(); fInput.source = media_source::null; - fRecorder->fConnected = false; - - fRecorder->fInput.format = fOKFormat; + fInput.format = fOKFormat; } From 7b83e044e7b0115b8e2a6e483efb3720b6d4fc4c Mon Sep 17 00:00:00 2001 From: Dario Casalinuovo Date: Tue, 9 Feb 2016 13:23:14 +0100 Subject: [PATCH 210/242] SoundRecorder: Fix connection and disconnection from Cortex * SoundRecorder can now be connected and disconnected safely, due to some unknown reason, probably format negotiation problems, ATM we need a system mixer between. * The normal behavior is unchanged, when the record button is pressed it will record from the preferred audio interface and disconnect on stop. But when the connection is made manually it will stay connected until the user explictly disconnect it. * To make it work, instantiate a system mixer, connect the output to SoundRecorder, instantiate a node like the ToneProducer, and connect it's output to the mixer input. Press the record button and check the Mixer has started from the Cortex transport, if not, start it. --- src/apps/soundrecorder/RecorderWindow.cpp | 32 ++++++++++++----------- src/apps/soundrecorder/RecorderWindow.h | 1 + 2 files changed, 18 insertions(+), 15 deletions(-) diff --git a/src/apps/soundrecorder/RecorderWindow.cpp b/src/apps/soundrecorder/RecorderWindow.cpp index aebfc7fda8..06bcdc6391 100644 --- a/src/apps/soundrecorder/RecorderWindow.cpp +++ b/src/apps/soundrecorder/RecorderWindow.cpp @@ -125,6 +125,7 @@ RecorderWindow::RecorderWindow() fInputField = NULL; fRecorder = NULL; fRecording = false; + fExternalConnection = false; fTempCount = -1; fButtonState = btnPaused; @@ -693,7 +694,7 @@ RecorderWindow::Record(BMessage * message) fRecFile.Seek(sizeof(struct wave_struct), SEEK_SET); - // Hook up input + // Hook up input err = MakeRecordConnection(fAudioInputNode); if (err < B_OK) { ErrorAlert(B_TRANSLATE("Cannot connect to the selected sound input"), @@ -702,7 +703,6 @@ RecorderWindow::Record(BMessage * message) fRecEntry.Unset(); return; } - fRecorder->Start(); } @@ -892,15 +892,14 @@ RecorderWindow::MakeRecordConnection(const media_node & input) return B_BUSY; } + // Get a format, any format. + fRecordFormat.u.raw_audio = audioOutput.format.u.raw_audio; + fExternalConnection = false; } else { - CONNECT((stderr, "RecorderWindow::MakeRecordConnection():" - " audio input node already connected\n")); - - return B_BUSY; + fRecordFormat.u.raw_audio = fRecorder->AcceptedFormat().u.raw_audio; + fExternalConnection = true; } - // Get a format, any format. - fRecordFormat.u.raw_audio = audioOutput.format.u.raw_audio; fRecordFormat.type = B_MEDIA_RAW_AUDIO; // Tell the consumer where we want data to go. @@ -932,12 +931,6 @@ RecorderWindow::MakeRecordConnection(const media_node & input) status_t RecorderWindow::BreakRecordConnection() { - status_t err = B_OK; - - err = fRecorder->Stop(true); - if (err < B_OK) - return err; - return fRecorder->Disconnect(); } @@ -949,7 +942,16 @@ RecorderWindow::StopRecording() return B_OK; fRecording = false; - BreakRecordConnection(); + status_t err = B_OK; + err = fRecorder->Stop(true); + if (err < B_OK) + return err; + + // We maintain the connection active + // if the user connected us from Cortex. + if (!fExternalConnection) { + BreakRecordConnection(); + } fRecorder->SetHooks(NULL, NULL, NULL); diff --git a/src/apps/soundrecorder/RecorderWindow.h b/src/apps/soundrecorder/RecorderWindow.h index d0c405ed8a..9cf0893061 100644 --- a/src/apps/soundrecorder/RecorderWindow.h +++ b/src/apps/soundrecorder/RecorderWindow.h @@ -96,6 +96,7 @@ private: BMediaRecorder * fRecorder; BSoundPlayer * fPlayer; bool fRecording; + bool fExternalConnection; SoundListView * fSoundList; BDirectory fTempDir; int fTempCount; From cc0d365ef7550b8613c8aa72c61ac24fd1260f68 Mon Sep 17 00:00:00 2001 From: Dario Casalinuovo Date: Tue, 9 Feb 2016 14:11:29 +0100 Subject: [PATCH 211/242] BMediaRecorder: Fix unneeded argument and error check --- headers/private/media/MediaRecorder.h | 3 +-- src/kits/media/MediaRecorder.cpp | 2 +- src/kits/media/MediaRecorderNode.cpp | 6 ++++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/headers/private/media/MediaRecorder.h b/headers/private/media/MediaRecorder.h index eeb64f0dc8..885c2774d1 100644 --- a/headers/private/media/MediaRecorder.h +++ b/headers/private/media/MediaRecorder.h @@ -76,8 +76,7 @@ protected: virtual void BufferReceived(void* buffer, size_t size, const media_header& header); - status_t SetUpConnection(media_input ourInput, - media_source outputSource); + status_t SetUpConnection(media_source outputSource); private: diff --git a/src/kits/media/MediaRecorder.cpp b/src/kits/media/MediaRecorder.cpp index 5738e936e3..665bbf0fbd 100644 --- a/src/kits/media/MediaRecorder.cpp +++ b/src/kits/media/MediaRecorder.cpp @@ -354,7 +354,7 @@ BMediaRecorder::Format() const status_t -BMediaRecorder::SetUpConnection(media_input ourInput, media_source outputSource) +BMediaRecorder::SetUpConnection(media_source outputSource) { fOutputSource = outputSource; diff --git a/src/kits/media/MediaRecorderNode.cpp b/src/kits/media/MediaRecorderNode.cpp index 87ef5278f2..6a7a3a53ca 100644 --- a/src/kits/media/MediaRecorderNode.cpp +++ b/src/kits/media/MediaRecorderNode.cpp @@ -301,11 +301,13 @@ BMediaRecorderNode::Connected(const media_source &producer, // so that our owner class can do it's operations. media_node node; BMediaRosterEx* roster = MediaRosterEx(BMediaRoster::CurrentRoster()); - roster->GetNodeFor(roster->NodeIDFor(producer.port), &node); + if (roster->GetNodeFor(roster->NodeIDFor(producer.port), &node) != B_OK) + return B_MEDIA_BAD_NODE; + fRecorder->fOutputNode = node; fRecorder->fReleaseOutputNode = true; - fRecorder->SetUpConnection(fInput, producer); + fRecorder->SetUpConnection(producer); fRecorder->fConnected = true; return B_OK; From d23913f2d90f0a045a41d9e68a966f06a9e6fcf0 Mon Sep 17 00:00:00 2001 From: Dario Casalinuovo Date: Tue, 9 Feb 2016 20:03:51 +0100 Subject: [PATCH 212/242] BMediaRecorder: Return the actual accepted format * Allow SoundRecorder to record without the need of a system mixer in front, for the nodes I can test. * Solve other format related problems. --- src/kits/media/MediaRecorder.cpp | 4 +--- src/kits/media/MediaRecorderNode.cpp | 3 ++- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/kits/media/MediaRecorder.cpp b/src/kits/media/MediaRecorder.cpp index 665bbf0fbd..dd3347cbd5 100644 --- a/src/kits/media/MediaRecorder.cpp +++ b/src/kits/media/MediaRecorder.cpp @@ -413,13 +413,11 @@ BMediaRecorder::_Connect(const media_node& node, if (ourOutput.source == media_source::null) return B_MEDIA_BAD_SOURCE; - fOutputSource = ourOutput.source; - // find our Node's free input media_input ourInput; fNode->GetInput(&ourInput); - return BMediaRoster::CurrentRoster()->Connect(fOutputSource, + return BMediaRoster::CurrentRoster()->Connect(ourOutput.source, ourInput.destination, &ourFormat, &ourOutput, &ourInput, BMediaRoster::B_CONNECT_MUTED); } diff --git a/src/kits/media/MediaRecorderNode.cpp b/src/kits/media/MediaRecorderNode.cpp index 6a7a3a53ca..40371ac43a 100644 --- a/src/kits/media/MediaRecorderNode.cpp +++ b/src/kits/media/MediaRecorderNode.cpp @@ -104,6 +104,7 @@ BMediaRecorderNode::SetAcceptedFormat(const media_format& format) { CALLED(); + fInput.format = format; fOKFormat = format; } @@ -113,7 +114,7 @@ BMediaRecorderNode::AcceptedFormat() const { CALLED(); - return fOKFormat; + return fInput.format; } From c1ad6121ca4471bbfd0e967f7b593009caf38e40 Mon Sep 17 00:00:00 2001 From: Dario Casalinuovo Date: Tue, 9 Feb 2016 20:24:54 +0100 Subject: [PATCH 213/242] BMediaRecorder: Solve possible problem with node references * Since the BMediaRecorder have an it's own estabilished policy relating releasing the producer node we will not interfere with it except when we are controlled from Cortex. --- headers/private/media/MediaRecorderNode.h | 4 ++- src/kits/media/MediaRecorder.cpp | 10 ++++--- src/kits/media/MediaRecorderNode.cpp | 33 +++++++++++++++-------- 3 files changed, 32 insertions(+), 15 deletions(-) diff --git a/headers/private/media/MediaRecorderNode.h b/headers/private/media/MediaRecorderNode.h index 746e5ace46..616ef2da6b 100644 --- a/headers/private/media/MediaRecorderNode.h +++ b/headers/private/media/MediaRecorderNode.h @@ -1,5 +1,5 @@ /* - * Copyright 2014, Dario Casalinuovo + * Copyright 2014-2016, Dario Casalinuovo * Copyright 1999, Be Incorporated * All Rights Reserved. * This file may be used under the terms of the Be Sample Code License. @@ -32,6 +32,7 @@ public: void GetInput(media_input* input); void SetDataEnabled(bool enabled); + void ActivateInternalConnect(bool connectMode); protected: @@ -106,6 +107,7 @@ protected: media_format fOKFormat; media_input fInput; BString fName; + bool fConnectMode; }; } diff --git a/src/kits/media/MediaRecorder.cpp b/src/kits/media/MediaRecorder.cpp index dd3347cbd5..2871dbe35a 100644 --- a/src/kits/media/MediaRecorder.cpp +++ b/src/kits/media/MediaRecorder.cpp @@ -1,6 +1,6 @@ /* * Copyright 2015, Hamish Morrison - * Copyright 2014, Dario Casalinuovo + * Copyright 2014-2016, Dario Casalinuovo * Copyright 1999, Be Incorporated * All Rights Reserved. * This file may be used under the terms of the Be Sample Code License. @@ -388,7 +388,7 @@ BMediaRecorder::_Connect(const media_node& node, fOutputNode = node; - // figure out the output provided + // Figure out the output provided if (output != NULL) { ourOutput = *output; } else if (err == B_OK) { @@ -413,10 +413,14 @@ BMediaRecorder::_Connect(const media_node& node, if (ourOutput.source == media_source::null) return B_MEDIA_BAD_SOURCE; - // find our Node's free input + // Find our Node's free input media_input ourInput; fNode->GetInput(&ourInput); + // Acknowledge the node that we already know + // who is our producer node. + fNode->ActivateInternalConnect(false); + return BMediaRoster::CurrentRoster()->Connect(ourOutput.source, ourInput.destination, &ourFormat, &ourOutput, &ourInput, BMediaRoster::B_CONNECT_MUTED); diff --git a/src/kits/media/MediaRecorderNode.cpp b/src/kits/media/MediaRecorderNode.cpp index 40371ac43a..40609cd237 100644 --- a/src/kits/media/MediaRecorderNode.cpp +++ b/src/kits/media/MediaRecorderNode.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2014, Dario Casalinuovo + * Copyright 2014-2016, Dario Casalinuovo * Copyright 1999, Be Incorporated * All Rights Reserved. * This file may be used under the terms of the Be Sample Code License. @@ -25,7 +25,8 @@ BMediaRecorderNode::BMediaRecorderNode(const char* name, BMediaNode(name), BMediaEventLooper(), BBufferConsumer(type), - fRecorder(recorder) + fRecorder(recorder), + fConnectMode(true) { CALLED(); @@ -140,6 +141,13 @@ BMediaRecorderNode::SetDataEnabled(bool enabled) } +void +BMediaRecorderNode::ActivateInternalConnect(bool connectMode) +{ + fConnectMode = connectMode; +} + + void BMediaRecorderNode::HandleEvent(const media_timed_event* event, bigtime_t lateness, bool realTimeEvent) @@ -298,16 +306,17 @@ BMediaRecorderNode::Connected(const media_source &producer, fInput.format = withFormat; *outInput = fInput; - // This is a workaround needed for us to get the node - // so that our owner class can do it's operations. - media_node node; - BMediaRosterEx* roster = MediaRosterEx(BMediaRoster::CurrentRoster()); - if (roster->GetNodeFor(roster->NodeIDFor(producer.port), &node) != B_OK) - return B_MEDIA_BAD_NODE; - - fRecorder->fOutputNode = node; - fRecorder->fReleaseOutputNode = true; + if (fConnectMode == true) { + // This is a workaround needed for us to get the node + // so that our owner class can do it's operations. + media_node node; + BMediaRosterEx* roster = MediaRosterEx(BMediaRoster::CurrentRoster()); + if (roster->GetNodeFor(roster->NodeIDFor(producer.port), &node) != B_OK) + return B_MEDIA_BAD_NODE; + fRecorder->fOutputNode = node; + fRecorder->fReleaseOutputNode = true; + } fRecorder->SetUpConnection(producer); fRecorder->fConnected = true; @@ -322,6 +331,8 @@ BMediaRecorderNode::Disconnected(const media_source& producer, CALLED(); fInput.source = media_source::null; + // Reset the connection mode + fConnectMode = true; fRecorder->fConnected = false; fInput.format = fOKFormat; } From 7d6cefeb508c8f479d6d5f839fde1ea9516e2dec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Wed, 27 Jan 2016 20:57:43 +0100 Subject: [PATCH 214/242] IMAP: Ignore \Noselect mailboxes. * They aren't selectable, so we can just hide them from the user. * This should fix #12369. --- .../inbound_protocols/imap/imap_lib/Commands.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/Commands.cpp b/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/Commands.cpp index 31cf6e459d..ebe0431946 100644 --- a/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/Commands.cpp +++ b/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/Commands.cpp @@ -687,6 +687,14 @@ ListCommand::HandleUntagged(Response& response) && response.IsStringAt(3)) { fSeparator = response.StringAt(2); + if (response.IsListAt(1)) { + // We're not supposed to select \Noselect mailboxes, + // so we'll just hide them + ArgumentList& attributes = response.ListAt(1); + if (attributes.Contains("\\Noselect")) + return true; + } + BString folder = response.StringAt(3); if (folder == "") return true; From 1870a4b1f9406c8e01a12883905a89544e385b95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Wed, 3 Feb 2016 21:16:06 +0100 Subject: [PATCH 215/242] IMAP: Fixed sync command handling. * The counter did not take continuation commands into account, so that it would never reach zero again. * Optimized IMAPConnectionWorker::_WaitForCommands() such that it will always acquire all available "slots". --- .../imap/IMAPConnectionWorker.cpp | 52 ++++++++++++++++--- 1 file changed, 44 insertions(+), 8 deletions(-) diff --git a/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPConnectionWorker.cpp b/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPConnectionWorker.cpp index 5f986a84ea..701c685263 100644 --- a/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPConnectionWorker.cpp +++ b/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPConnectionWorker.cpp @@ -95,11 +95,35 @@ private: class WorkerCommand { public: - WorkerCommand() {} - virtual ~WorkerCommand() {} + WorkerCommand() + : + fContinuation(false) + { + } - virtual status_t Process(IMAPConnectionWorker& worker) = 0; - virtual bool IsDone() const { return true; } + virtual ~WorkerCommand() + { + } + + virtual status_t Process(IMAPConnectionWorker& worker) = 0; + + virtual bool IsDone() const + { + return true; + } + + bool IsContinuation() const + { + return fContinuation; + } + + void SetContinuation() + { + fContinuation = true; + } + +private: + bool fContinuation; }; @@ -695,9 +719,11 @@ IMAPConnectionWorker::_Worker() BAutolock locker(fLocker); if (fPendingCommands.IsEmpty()) { - _Disconnect(); + if (!fIdle) + _Disconnect(); locker.Unlock(); + // TODO: in idle mode, we'd need to parse any incoming message here _WaitForCommands(); continue; } @@ -718,6 +744,7 @@ IMAPConnectionWorker::_Worker() if (!command->IsDone()) { deleter.Detach(); + command->SetContinuation(); _EnqueueCommand(command); } } @@ -740,7 +767,8 @@ IMAPConnectionWorker::_EnqueueCommand(WorkerCommand* command) return B_NO_MEMORY; } - if (dynamic_cast(command) != NULL) + if (dynamic_cast(command) != NULL + && !command->IsContinuation()) fSyncPending++; locker.Unlock(); @@ -752,7 +780,13 @@ IMAPConnectionWorker::_EnqueueCommand(WorkerCommand* command) void IMAPConnectionWorker::_WaitForCommands() { - while (acquire_sem(fPendingCommandsSemaphore) == B_INTERRUPTED); + int32 count = 1; + get_sem_count(fPendingCommandsSemaphore, &count); + if (count < 1) + count = 1; + + while (acquire_sem_etc(fPendingCommandsSemaphore, count, 0, + B_INFINITE_TIMEOUT) == B_INTERRUPTED); } @@ -822,7 +856,9 @@ IMAPConnectionWorker::_Connect() if (status != B_OK) return status; - fIdle = fSettings.IdleMode() && fProtocol.Capabilities().Contains("IDLE"); + //fIdle = fSettings.IdleMode() && fProtocol.Capabilities().Contains("IDLE"); + // TODO: Idle mode is not yet implemented! + fIdle = false; return B_OK; } From 15216b261ad4379e86171ce6d93f02c7c7440885 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Wed, 3 Feb 2016 21:19:02 +0100 Subject: [PATCH 216/242] IMAP: Retrieve on-disk folder state async. * Messages that we don't have info for during synchronization are now collected, and synchronized once the folder state is available, instead of waiting for that particular entry to become available (without proper means to wait). --- .../inbound_protocols/imap/IMAPFolder.cpp | 81 +++++++++++++++++-- .../inbound_protocols/imap/IMAPFolder.h | 10 ++- 2 files changed, 82 insertions(+), 9 deletions(-) diff --git a/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPFolder.cpp b/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPFolder.cpp index 6d45284304..8b882c28ca 100644 --- a/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPFolder.cpp +++ b/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPFolder.cpp @@ -93,14 +93,21 @@ IMAPFolder::IMAPFolder(IMAPProtocol& protocol, const BString& mailboxName, fMailboxName(mailboxName), fUIDValidity(UINT32_MAX), fLastUID(0), - fListener(NULL) + fListener(NULL), + fFolderStateInitialized(false), + fQuitFolderState(false) { mutex_init(&fLock, "imap folder lock"); + mutex_init(&fFolderStateLock, "imap folder state lock"); } IMAPFolder::~IMAPFolder() { + if (!fFolderStateInitialized) { + fQuitFolderState = true; + wait_for_thread(fReadFolderStateThread, NULL); + } } @@ -245,8 +252,10 @@ IMAPFolder::SyncMessageFlags(uint32 uid, uint32 mailboxFlags) } if (status == B_OK) status = node.SetTo(&ref); - if (status == B_TIMED_OUT) - continue; + if (status == B_TIMED_OUT) { + // We don't know the message state yet + fPendingFlagsMap.insert(std::make_pair(uid, mailboxFlags)); + } if (status != B_OK) return; @@ -288,15 +297,32 @@ IMAPFolder::SyncMessageFlags(uint32 uid, uint32 mailboxFlags) void IMAPFolder::MessageEntriesFetched() { - // Delete all local messages that weren't synchronized with the server + _WaitForFolderState(); + + // Synchronize all pending flags first + UIDToFlagsMap::const_iterator pendingIterator = fPendingFlagsMap.begin(); + for (; pendingIterator != fPendingFlagsMap.end(); pendingIterator++) + SyncMessageFlags(pendingIterator->first, pendingIterator->second); + + fPendingFlagsMap.clear(); + + // Delete all local messages that are no longer found on the server + + MutexLocker locker(fLock); + UIDSet deleteUIDs; UIDToRefMap::const_iterator iterator = fRefMap.begin(); for (; iterator != fRefMap.end(); iterator++) { uint32 uid = iterator->first; if (fSynchronizedUIDsSet.find(uid) == fSynchronizedUIDsSet.end()) - _DeleteLocalMessage(uid); + deleteUIDs.insert(uid); } fSynchronizedUIDsSet.clear(); + locker.Unlock(); + + UIDSet::const_iterator deleteIterator = deleteUIDs.begin(); + for (; deleteIterator != deleteUIDs.end(); deleteIterator++) + _DeleteLocalMessage(*deleteIterator); } @@ -446,14 +472,42 @@ IMAPFolder::DeleteMessage(uint32 uid) void IMAPFolder::MessageReceived(BMessage* message) { + switch (message->what) { + default: + BHandler::MessageReceived(message); + break; + } +} + + +void +IMAPFolder::_WaitForFolderState() +{ + while (true) { + MutexLocker locker(fFolderStateLock); + if (fFolderStateInitialized) + return; + } } void IMAPFolder::_InitializeFolderState() { - fInitializing = true; + mutex_lock(&fFolderStateLock); + fReadFolderStateThread = spawn_thread(&IMAPFolder::_ReadFolderState, + "IMAP folder state", B_NORMAL_PRIORITY, this); + if (fReadFolderStateThread >= 0) + resume_thread(fReadFolderStateThread); + else + mutex_unlock(&fFolderStateLock); +} + + +void +IMAPFolder::_ReadFolderState() +{ BDirectory directory(&fRef); BEntry entry; while (directory.GetNextEntry(&entry) == B_OK) { @@ -472,6 +526,8 @@ IMAPFolder::_InitializeFolderState() uint32 flags = _ReadFlags(node); MutexLocker locker(fLock); + if (fQuitFolderState) + return; fRefMap.insert(std::make_pair(uid, ref)); fFlagsMap.insert(std::make_pair(uid, flags)); @@ -497,7 +553,16 @@ IMAPFolder::_InitializeFolderState() // } - fInitializing = false; + fFolderStateInitialized = true; + mutex_unlock(&fFolderStateLock); +} + + +/*static*/ status_t +IMAPFolder::_ReadFolderState(void* self) +{ + ((IMAPFolder*)self)->_ReadFolderState(); + return B_OK; } @@ -535,7 +600,7 @@ IMAPFolder::_GetMessageEntryRef(uint32 uid, entry_ref& ref) const { UIDToRefMap::const_iterator found = fRefMap.find(uid); if (found == fRefMap.end()) - return fInitializing ? B_TIMED_OUT : B_ENTRY_NOT_FOUND; + return !fFolderStateInitialized ? B_TIMED_OUT : B_ENTRY_NOT_FOUND; ref = found->second; return B_OK; diff --git a/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPFolder.h b/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPFolder.h index f976ca694d..ae24a74e77 100644 --- a/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPFolder.h +++ b/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPFolder.h @@ -98,7 +98,11 @@ public: virtual void MessageReceived(BMessage* message); private: + void _WaitForFolderState(); void _InitializeFolderState(); + void _ReadFolderState(); + static status_t _ReadFolderState(void* self); + const MessageToken _Token(uint32 uid) const; void _NotifyStoredBody(const entry_ref& ref, uint32 uid, status_t status); @@ -150,10 +154,14 @@ private: uint32 fLastUID; FolderListener* fListener; mutex fLock; - bool fInitializing; + mutex fFolderStateLock; + thread_id fReadFolderStateThread; + bool fFolderStateInitialized; + bool fQuitFolderState; UIDToRefMap fRefMap; UIDToFlagsMap fFlagsMap; UIDSet fSynchronizedUIDsSet; + UIDToFlagsMap fPendingFlagsMap; MessengerMap fPendingBodies; }; From f429e4f4424b1c9797f49071e280edc6747c8a9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Thu, 4 Feb 2016 20:44:35 +0100 Subject: [PATCH 217/242] IMAP: Fixed stream vs. parse exception handling. * Protocol::HandleNextResponse() will now exit when a stream exception occurs. * This should fix bug #12601. --- .../inbound_protocols/imap/imap_lib/Protocol.cpp | 4 +++- .../inbound_protocols/imap/imap_lib/Response.cpp | 4 ++-- .../inbound_protocols/imap/imap_lib/Response.h | 9 +++++++-- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/Protocol.cpp b/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/Protocol.cpp index 73517c5707..61c98c0719 100644 --- a/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/Protocol.cpp +++ b/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/Protocol.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2010-2015, Haiku Inc. All Rights Reserved. + * Copyright 2010-2016, Haiku Inc. All Rights Reserved. * Copyright 2010 Clemens Zeidler. All rights reserved. * * Distributed under the terms of the MIT License. @@ -355,6 +355,8 @@ Protocol::HandleResponse(Command* command, bigtime_t timeout, } } catch (ParseException& exception) { printf("Error during parsing: %s\n", exception.Message()); + } catch (StreamException& exception) { + return exception.Status(); } if (fOngoingCommands.size() == 0) diff --git a/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/Response.cpp b/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/Response.cpp index 76182b8132..81abd61fb6 100644 --- a/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/Response.cpp +++ b/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/Response.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2011-2013, Axel Dörfler, axeld@pinc-software.de. + * Copyright 2011-2016, Axel Dörfler, axeld@pinc-software.de. * Distributed under the terms of the MIT License. */ @@ -393,7 +393,7 @@ ParseException::ParseException(const char* format, ...) StreamException::StreamException(status_t status) : - ParseException("Error from stream: %s", status) + fStatus(status) { } diff --git a/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/Response.h b/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/Response.h index b37bc9826b..143817100d 100644 --- a/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/Response.h +++ b/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/Response.h @@ -1,5 +1,5 @@ /* - * Copyright 2011-2013, Axel Dörfler, axeld@pinc-software.de. + * Copyright 2011-2016, Axel Dörfler, axeld@pinc-software.de. * Distributed under the terms of the MIT License. */ #ifndef RESPONSE_H @@ -107,9 +107,14 @@ protected: }; -class StreamException : public ParseException { +class StreamException : public std::exception { public: StreamException(status_t status); + + status_t Status() const { return fStatus; } + +private: + status_t fStatus; }; From 1f105f67506ee683149f295401c74135e23a2333 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Thu, 4 Feb 2016 20:50:08 +0100 Subject: [PATCH 218/242] Mail: Fixed double delete in PersonList. * This should fix #12615. --- src/apps/mail/People.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/apps/mail/People.cpp b/src/apps/mail/People.cpp index 89553845ce..b8650c8027 100644 --- a/src/apps/mail/People.cpp +++ b/src/apps/mail/People.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2015, Axel Dörfler, axeld@pinc-software.de. + * Copyright 2015-2016, Axel Dörfler, axeld@pinc-software.de. * Distributed under the terms of the MIT License. */ @@ -137,9 +137,8 @@ PersonList::EntryRemoved(QueryList& source, const node_ref& nodeRef) PersonMap::iterator found = fPersonMap.find(nodeRef); if (found != fPersonMap.end()) { Person* person = found->second; - fPersons.RemoveItem(person); fPersonMap.erase(found); - delete person; + fPersons.RemoveItem(person); } } From 9cbc5b82c22f6e181704a655b51c996d2bb103d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Thu, 4 Feb 2016 21:03:27 +0100 Subject: [PATCH 219/242] E-mail: Stop the mail_daemon if there are no accounts left. * This fixes part of #12347. --- src/preferences/mail/ConfigWindow.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/preferences/mail/ConfigWindow.cpp b/src/preferences/mail/ConfigWindow.cpp index 1d46ec9d32..1547825b2e 100644 --- a/src/preferences/mail/ConfigWindow.cpp +++ b/src/preferences/mail/ConfigWindow.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2007-2015 Haiku, Inc. All rights reserved. + * Copyright 2007-2016 Haiku, Inc. All rights reserved. * Copyright 2001-2003 Dr. Zoidberg Enterprises. All rights reserved. * * Distributed under the terms of the MIT License. @@ -499,10 +499,14 @@ ConfigWindow::_SaveSettings() messenger.SendMessage(&changedAccounts); } - // Start the mail_daemon if auto start was selected + // Start/stop the mail_daemon depending on the settings BMailDaemon daemon; - if (fSaveSettings && settings.DaemonAutoStarts() && !daemon.IsRunning()) - daemon.Launch(); + if (fSaveSettings) { + if (settings.DaemonAutoStarts() && !daemon.IsRunning()) + daemon.Launch(); + else if (!settings.DaemonAutoStarts() && daemon.IsRunning()) + daemon.Quit(); + } } From b25d4dd1419dd7c1a6cd3bcbf576cb3b80cf85e0 Mon Sep 17 00:00:00 2001 From: Automatic Committer Date: Thu, 11 Feb 2016 05:20:24 +0100 Subject: [PATCH 220/242] Update pci.ids from pciids.sourceforge.net --- src/data/ids/pci.ids | 79 ++++++++++++++++++++++++++++---------------- 1 file changed, 51 insertions(+), 28 deletions(-) diff --git a/src/data/ids/pci.ids b/src/data/ids/pci.ids index 721cd6be85..f445605b81 100644 --- a/src/data/ids/pci.ids +++ b/src/data/ids/pci.ids @@ -1,8 +1,8 @@ # # List of PCI ID's # -# Version: 2016.01.28 -# Date: 2016-01-28 03:15:02 +# Version: 2016.02.06 +# Date: 2016-02-06 03:15:02 # # Maintained by Albert Pool, Martin Mares, and other volunteers from # the PCI ID Project at http://pci-ids.ucw.cz/. @@ -5234,6 +5234,7 @@ 1395 2201 WL22-PC 16ab 8501 WL-8305 IEEE802.11b+ Wireless LAN PCI Adapter 8401 ACX 100 22Mbps Wireless Interface + 8888 Multicore DSP+ARM KeyStone II SOC 9000 Wireless Interface (of unknown type) 9065 TMS320DM642 9066 ACX 111 54Mbps Wireless Interface @@ -15670,6 +15671,7 @@ 5098 T580-5098 Unified Wire Ethernet Controller 5099 T580-5099 Unified Wire Ethernet Controller 509a T520-509A Unified Wire Ethernet Controller + 509b T540-509B Unified Wire Ethernet Controller 5401 T520-CR Unified Wire Ethernet Controller 5402 T522-CR Unified Wire Ethernet Controller 5403 T540-CR Unified Wire Ethernet Controller @@ -15714,6 +15716,7 @@ 5498 T580-5098 Unified Wire Ethernet Controller 5499 T580-5099 Unified Wire Ethernet Controller 549a T520-509A Unified Wire Ethernet Controller + 549b T540-509B Unified Wire Ethernet Controller 5501 T520-CR Unified Wire Storage Controller 5502 T522-CR Unified Wire Storage Controller 5503 T540-CR Unified Wire Storage Controller @@ -15758,6 +15761,7 @@ 5598 T580-5098 Unified Wire Storage Controller 5599 T580-5099 Unified Wire Storage Controller 559a T520-509A Unified Wire Storage Controller + 559b T540-509B Unified Wire Storage Controller 5601 T520-CR Unified Wire Storage Controller 5602 T522-CR Unified Wire Storage Controller 5603 T540-CR Unified Wire Storage Controller @@ -15802,6 +15806,7 @@ 5698 T580-5098 Unified Wire Storage Controller 5699 T580-5099 Unified Wire Storage Controller 569a T520-509A Unified Wire Storage Controller + 569b T540-509B Unified Wire Storage Controller 5701 T520-CR Unified Wire Ethernet Controller 5702 T522-CR Unified Wire Ethernet Controller 5703 T540-CR Unified Wire Ethernet Controller @@ -15885,6 +15890,7 @@ 5898 T580-5098 Unified Wire Ethernet Controller [VF] 5899 T580-5099 Unified Wire Ethernet Controller [VF] 589a T520-509A Unified Wire Ethernet Controller [VF] + 589b T540-509B Unified Wire Ethernet Controller [VF] a000 PE10K Unified Wire Ethernet Controller 1426 Storage Technology Corp. 1427 Better On-Line Solutions @@ -18421,6 +18427,8 @@ 6816 TW6816 multimedia video controller # channel 8 of 8 6817 TW6816 multimedia video controller +# Example MuniPCI-E card: http://www.commell.com.tw/product/surveillance/MPX-6864.htm + 6864 TW6864 multimedia video controller 1799 Belkin 6001 F5D6001 Wireless PCI Card [Realtek RTL8180] 6020 F5D6020 v3000 Wireless PCMCIA Card [Realtek RTL8180] @@ -19681,6 +19689,8 @@ 0001 ExaNIC X4 0002 ExaNIC X2 0003 ExaNIC X10 + 0004 ExaNIC X10-GM + 0005 ExaNIC X40 1cf7 Subspace Dynamics 1d00 Pure Storage 1d1d CNEX Labs @@ -19755,6 +19765,7 @@ 1186 2900 DXE-810T 10GBase-T Ethernet Adapter 1fc9 3015 Ethernet Adapter 4026 TN9610 10GbE SFP+ Ethernet Adapter + 4027 TN9710 10GBase-T/NBASE-T Ethernet Adapter 1fcc StreamLabs f416 MS416 fb01 MH4LM @@ -22198,26 +22209,26 @@ 163d Broadwell-U Integrated Graphics 163e Broadwell-U Integrated Graphics 1900 Skylake Host Bridge/DRAM Registers - 1901 Sky Lake PCIe Controller (x16) + 1901 Skylake PCIe Controller (x16) 1903 Skylake Processor Thermal Subsystem - 1904 Sky Lake Host Bridge/DRAM Registers - 1905 Sky Lake PCIe Controller (x8) - 1908 Sky Lake Host Bridge/DRAM Registers - 1909 Sky Lake PCIe Controller (x4) - 190c Sky Lake Host Bridge/DRAM Registers - 190f Sky Lake Host Bridge/DRAM Registers - 1910 Sky Lake Host Bridge/DRAM Registers - 1911 Sky Lake Gaussian Mixture Model - 1912 Sky Lake Integrated Graphics - 1916 Sky Lake Integrated Graphics - 1918 Sky Lake Host Bridge/DRAM Registers - 1919 Sky Lake Imaging Unit + 1904 Skylake Host Bridge/DRAM Registers + 1905 Skylake PCIe Controller (x8) + 1908 Skylake Host Bridge/DRAM Registers + 1909 Skylake PCIe Controller (x4) + 190c Skylake Host Bridge/DRAM Registers + 190f Skylake Host Bridge/DRAM Registers + 1910 Skylake Host Bridge/DRAM Registers + 1911 Skylake Gaussian Mixture Model + 1912 Skylake Integrated Graphics + 1916 Skylake Integrated Graphics + 1918 Skylake Host Bridge/DRAM Registers + 1919 Skylake Imaging Unit 191b Skylake Integrated Graphics - 191e Sky Lake Integrated Graphics - 191f Sky Lake Host Bridge/DRAM Registers - 1926 Sky Lake Integrated Graphics - 1932 Sky Lake Integrated Graphics - 193b Sky Lake Integrated Graphics + 191e Skylake Integrated Graphics + 191f Skylake Host Bridge/DRAM Registers + 1926 Skylake Integrated Graphics + 1932 Skylake Integrated Graphics + 193b Skylake Integrated Graphics 1960 80960RP (i960RP) Microprocessor 101e 0431 MegaRAID 431 RAID Controller 101e 0438 MegaRAID 438 Ultra2 LVD RAID Controller @@ -26615,14 +26626,26 @@ 9ce6 Wildcat Point-LP Serial IO GSPI Controller #1 9d03 Sunrise Point-LP SATA Controller [AHCI mode] 9d14 Sunrise Point-LP PCI Express Root Port #5 + 9d15 Sunrise Point-LP PCI Express Root Port #6 9d21 Sunrise Point-LP PMC 9d23 Sunrise Point-LP SMBus - 9d27 Sunrise Point-LP LPSS UART #0 + 9d27 Sunrise Point-LP Serial IO UART Controller #0 + 9d28 Sunrise Point-LP Serial IO UART Controller #1 + 9d29 Sunrise Point-LP Serial IO SPI Controller #0 + 9d2a Sunrise Point-LP Serial IO SPI Controller #1 9d2d Sunrise Point-LP Secure Digital IO Controller 9d2f Sunrise Point-LP USB 3.0 xHCI Controller 9d31 Sunrise Point-LP Thermal subsystem 9d3a Sunrise Point-LP CSME HECI #1 9d48 Sunrise Point-LP LPC Controller + 9d60 Sunrise Point-LP Serial IO I2C Controller #0 + 8086 9d60 100 Series PCH/Sunrise Point PCH I2C0 [Skylake/Kaby Lake LPSS I2C] + 9d61 Sunrise Point-LP Serial IO I2C Controller #1 + 9d62 Sunrise Point-LP Serial IO I2C Controller #2 + 9d63 Sunrise Point-LP Serial IO I2C Controller #3 + 9d64 Sunrise Point-LP Serial IO I2C Controller #4 + 9d65 Sunrise Point-LP Serial IO I2C Controller #5 + 9d66 Sunrise Point-LP Serial IO UART Controller #2 9d70 Sunrise Point-LP HD Audio a000 Atom Processor D4xx/D5xx/N4xx/N5xx DMI Bridge 1458 5000 GA-D525TUD @@ -26669,10 +26692,10 @@ a124 Sunrise Point-H SPI Controller a125 Sunrise Point-H Gigabit Ethernet Controller a126 Sunrise Point-H Northpeak - a127 Sunrise Point-H LPSS UART #0 - a128 Sunrise Point-H LPSS UART #1 - a129 Sunrise Point-H LPSS SPI #0 - a12a Sunrise Point-H LPSS SPI #1 + a127 Sunrise Point-H Serial IO UART #0 + a128 Sunrise Point-H Serial IO UART #1 + a129 Sunrise Point-H Serial IO SPI #0 + a12a Sunrise Point-H Serial IO SPI #1 a12f Sunrise Point-H USB 3.0 xHCI Controller a130 Sunrise Point-H USB Device Controller (OTG) a131 Sunrise Point-H Thermal subsystem @@ -26715,9 +26738,9 @@ a15d Sunrise Point-H LPC Controller a15e Sunrise Point-H LPC Controller a15f Sunrise Point-H LPC Controller - a160 Sunrise Point-H LPSS I2C Controller #0 - a161 Sunrise Point-H LPSS I2C Controller #1 - a166 Sunrise Point-H LPSS UART Controller #2 + a160 Sunrise Point-H Serial IO I2C Controller #0 + a161 Sunrise Point-H Serial IO I2C Controller #1 + a166 Sunrise Point-H Serial IO UART Controller #2 a167 Sunrise Point-H PCI Root Port #17 a168 Sunrise Point-H PCI Root Port #18 a169 Sunrise Point-H PCI Root Port #19 From 4666afbf4158537318134374e2230619249424e4 Mon Sep 17 00:00:00 2001 From: Dario Casalinuovo Date: Thu, 11 Feb 2016 18:26:39 +0100 Subject: [PATCH 221/242] BMediaEventLooper: Revert recent timeout rework * While on my system it looked like to run well, it introduced a regression on some hardware. I'm reverting it as I don't have a better solution, with the difference that we will do that only for perfomance time events. * Fixes #12624. --- src/kits/media/MediaEventLooper.cpp | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/src/kits/media/MediaEventLooper.cpp b/src/kits/media/MediaEventLooper.cpp index 0af1a72b63..dd6e43044b 100644 --- a/src/kits/media/MediaEventLooper.cpp +++ b/src/kits/media/MediaEventLooper.cpp @@ -217,7 +217,6 @@ BMediaEventLooper::ControlLoop() bigtime_t waitUntil = B_INFINITE_TIMEOUT; bool hasRealtime = false; bool hasEvent = false; - bool hasBooted = false; // While there are no events or it is not time for the earliest event, // process messages using WaitForMessages. Whenever this funtion times out, @@ -274,14 +273,12 @@ BMediaEventLooper::ControlLoop() fEventQueue.FirstEventTime(), fEventLatency + fSchedulingLatency); - // The first event we handle will have - // a negative startup wait. In this case - // we just check the port and let the - // first event to be executed just now. - if (!hasBooted && waitUntil < 0) { + // TODO: At boot the wait time go + // to negative depending on the system + // speed, this should be fixed. + if (waitUntil < 0) waitUntil = 0; - hasBooted = true; - } + } else if (!hasRealtime) waitUntil = B_INFINITE_TIMEOUT; From b1d006d7f83b94afe737c16304edb045671578ac Mon Sep 17 00:00:00 2001 From: Dario Casalinuovo Date: Thu, 11 Feb 2016 19:14:25 +0100 Subject: [PATCH 222/242] ToneProducer: Try to don't force a framerate if possible --- .../media/media-add-ons/tone_producer_demo/ToneProducer.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/add-ons/media/media-add-ons/tone_producer_demo/ToneProducer.cpp b/src/add-ons/media/media-add-ons/tone_producer_demo/ToneProducer.cpp index e4c8a0d503..5fec579b75 100644 --- a/src/add-ons/media/media-add-ons/tone_producer_demo/ToneProducer.cpp +++ b/src/add-ons/media/media-add-ons/tone_producer_demo/ToneProducer.cpp @@ -68,10 +68,10 @@ ToneProducer::ToneProducer(BMediaAddOn* pAddOn) // initialize our preferred format object mPreferredFormat.type = B_MEDIA_RAW_AUDIO; mPreferredFormat.u.raw_audio.format = media_raw_audio_format::B_AUDIO_FLOAT; - mPreferredFormat.u.raw_audio.frame_rate = 44100; // measured in Hertz mPreferredFormat.u.raw_audio.byte_order = (B_HOST_IS_BENDIAN) ? B_MEDIA_BIG_ENDIAN : B_MEDIA_LITTLE_ENDIAN; - // we'll use the consumer's preferred buffer size, if any + // we'll use the consumer's preferred buffer size and framerate, if any + mPreferredFormat.u.raw_audio.frame_rate = media_raw_audio_format::wildcard.frame_rate; mPreferredFormat.u.raw_audio.buffer_size = media_raw_audio_format::wildcard.buffer_size; // 20sep99: multiple-channel support @@ -375,7 +375,7 @@ ToneProducer::PrepareToConnect(const media_source& what, const media_destination // Connect() doesn't take kindly to a frame_rate of 0. if(format->u.raw_audio.frame_rate == media_raw_audio_format::wildcard.frame_rate) { - format->u.raw_audio.frame_rate = mPreferredFormat.u.raw_audio.frame_rate; + format->u.raw_audio.frame_rate = 44100.0f; FPRINTF(stderr, "\tno frame rate provided, suggesting %.1f\n", format->u.raw_audio.frame_rate); } if(format->u.raw_audio.channel_count == media_raw_audio_format::wildcard.channel_count) { From 44200efd5d6927b55ab8ef6be8e66b2e478c5f04 Mon Sep 17 00:00:00 2001 From: Dario Casalinuovo Date: Fri, 12 Feb 2016 23:00:52 +0100 Subject: [PATCH 223/242] media_reader/media_writer: Fix build --- src/add-ons/media/media-add-ons/Jamfile | 5 +- .../media/media-add-ons/{reader => }/misc.cpp | 3 +- .../media/media-add-ons/{reader => }/misc.h | 0 .../media/media-add-ons/reader/Jamfile | 6 +- .../media-add-ons/reader/MediaReader.cpp | 6 +- .../media/media-add-ons/reader/MediaReader.h | 3 + .../media-add-ons/reader/MediaReaderAddOn.h | 3 + .../media/media-add-ons/writer/Jamfile | 9 +- .../media-add-ons/writer/MediaWriter.cpp | 58 ++++---- .../media/media-add-ons/writer/MediaWriter.h | 3 + .../media-add-ons/writer/MediaWriterAddOn.cpp | 32 ++--- .../media-add-ons/writer/MediaWriterAddOn.h | 3 + .../media/media-add-ons/writer/misc.cpp | 129 ------------------ src/add-ons/media/media-add-ons/writer/misc.h | 30 ---- 14 files changed, 72 insertions(+), 218 deletions(-) rename src/add-ons/media/media-add-ons/{reader => }/misc.cpp (98%) rename src/add-ons/media/media-add-ons/{reader => }/misc.h (100%) delete mode 100644 src/add-ons/media/media-add-ons/writer/misc.cpp delete mode 100644 src/add-ons/media/media-add-ons/writer/misc.h diff --git a/src/add-ons/media/media-add-ons/Jamfile b/src/add-ons/media/media-add-ons/Jamfile index ea59bbf90d..1a8c6d887d 100644 --- a/src/add-ons/media/media-add-ons/Jamfile +++ b/src/add-ons/media/media-add-ons/Jamfile @@ -1,8 +1,8 @@ SubDir HAIKU_TOP src add-ons media media-add-ons ; # SubInclude HAIKU_TOP src add-ons media media-add-ons demultiplexer ; -# SubInclude HAIKU_TOP src add-ons media media-add-ons writer ; SubInclude HAIKU_TOP src add-ons media media-add-ons dvb ; +SubInclude HAIKU_TOP src add-ons media media-add-ons equalizer ; SubInclude HAIKU_TOP src add-ons media media-add-ons esound_sink ; SubInclude HAIKU_TOP src add-ons media media-add-ons firewire_dv ; SubInclude HAIKU_TOP src add-ons media media-add-ons legacy ; @@ -17,6 +17,5 @@ SubInclude HAIKU_TOP src add-ons media media-add-ons usb_webcam ; SubInclude HAIKU_TOP src add-ons media media-add-ons video_producer_demo ; SubInclude HAIKU_TOP src add-ons media media-add-ons videowindow ; SubInclude HAIKU_TOP src add-ons media media-add-ons video_mixer ; -SubInclude HAIKU_TOP src add-ons media media-add-ons equalizer ; SubInclude HAIKU_TOP src add-ons media media-add-ons vst_host ; - +SubInclude HAIKU_TOP src add-ons media media-add-ons writer ; diff --git a/src/add-ons/media/media-add-ons/reader/misc.cpp b/src/add-ons/media/media-add-ons/misc.cpp similarity index 98% rename from src/add-ons/media/media-add-ons/reader/misc.cpp rename to src/add-ons/media/media-add-ons/misc.cpp index 037ba0b8c5..5fecef65b3 100644 --- a/src/add-ons/media/media-add-ons/reader/misc.cpp +++ b/src/add-ons/media/media-add-ons/misc.cpp @@ -25,7 +25,8 @@ void print_multistream_format(media_multistream_format * format) { } fprintf(stderr," avg_bit_rate(%f) max_bit_rate(%f)", format->avg_bit_rate,format->max_bit_rate); - fprintf(stderr," avg_chunk_size(%i) max_chunk_size(%i)", + fprintf(stderr," avg_chunk_size(%" B_PRId32 + ") max_chunk_size(%" B_PRId32 ")", format->avg_chunk_size,format->max_chunk_size); } diff --git a/src/add-ons/media/media-add-ons/reader/misc.h b/src/add-ons/media/media-add-ons/misc.h similarity index 100% rename from src/add-ons/media/media-add-ons/reader/misc.h rename to src/add-ons/media/media-add-ons/misc.h diff --git a/src/add-ons/media/media-add-ons/reader/Jamfile b/src/add-ons/media/media-add-ons/reader/Jamfile index 5b186fe5cc..6574945a96 100644 --- a/src/add-ons/media/media-add-ons/reader/Jamfile +++ b/src/add-ons/media/media-add-ons/reader/Jamfile @@ -8,11 +8,11 @@ local architectureObject ; for architectureObject in [ MultiArchSubDirSetup ] { on $(architectureObject) { Application [ MultiArchDefaultGristFiles reader.media_addon ] : - AbstractFileInterfaceNode.cpp - AbstractFileInterfaceAddOn.cpp + ../AbstractFileInterfaceNode.cpp + ../AbstractFileInterfaceAddOn.cpp MediaReader.cpp MediaReaderAddOn.cpp - misc.cpp + ../misc.cpp : be media [ TargetLibsupc++ ] ; } diff --git a/src/add-ons/media/media-add-ons/reader/MediaReader.cpp b/src/add-ons/media/media-add-ons/reader/MediaReader.cpp index eac40fd280..3fde8d5b3c 100644 --- a/src/add-ons/media/media-add-ons/reader/MediaReader.cpp +++ b/src/add-ons/media/media-add-ons/reader/MediaReader.cpp @@ -472,7 +472,7 @@ void MediaReader::Connect( FindLatencyFor(output.destination, &fDownstreamLatency, &id); // compute the buffer period (must be done before setbuffergroup) - fBufferPeriod = bigtime_t(1000 * 8000000 / 1024 + fBufferPeriod = bigtime_t(1000u * 8000000u / 1024u * output.format.u.multistream.max_chunk_size / output.format.u.multistream.max_bit_rate); @@ -645,7 +645,7 @@ void MediaReader::AdditionalBufferRequested( // used to be Reserved 0 PRINT("MediaReader::AdditionalBufferRequested got an error from GetFilledBuffer.\n"); return; // don't send the buffer } - SendBuffer(buffer,output.destination); + SendBuffer(buffer, output.source, output.destination); } } @@ -689,7 +689,7 @@ status_t MediaReader::HandleBuffer( buffer->Recycle(); } else { if (fOutputEnabled) { - status = SendBuffer(buffer,output.destination); + status = SendBuffer(buffer, output.source, output.destination); if (status != B_OK) { PRINT("MediaReader::HandleEvent got an error from SendBuffer.\n"); buffer->Recycle(); diff --git a/src/add-ons/media/media-add-ons/reader/MediaReader.h b/src/add-ons/media/media-add-ons/reader/MediaReader.h index d33caf3424..a270676902 100644 --- a/src/add-ons/media/media-add-ons/reader/MediaReader.h +++ b/src/add-ons/media/media-add-ons/reader/MediaReader.h @@ -66,6 +66,9 @@ virtual void NodeRegistered(void); /* reserved 2 */ /*****************************/ /* begin from BFileInterface */ protected: + +using AbstractFileInterfaceNode::SetRef; + virtual status_t SetRef( const entry_ref & file, bool create, diff --git a/src/add-ons/media/media-add-ons/reader/MediaReaderAddOn.h b/src/add-ons/media/media-add-ons/reader/MediaReaderAddOn.h index a855edb118..86a20824d1 100644 --- a/src/add-ons/media/media-add-ons/reader/MediaReaderAddOn.h +++ b/src/add-ons/media/media-add-ons/reader/MediaReaderAddOn.h @@ -45,6 +45,9 @@ virtual status_t GetFileFormatList( int32 in_read_items, // this many slots in out_readable_formats int32 * out_read_items, // set this to actual # available, even if bigger than in count void * _reserved); // ignore until further notice + +using AbstractFileInterfaceAddOn::SniffTypeKind; + virtual status_t SniffTypeKind( // Like SniffType, but for the specific kind(s) const BMimeType & type, uint64 in_kinds, diff --git a/src/add-ons/media/media-add-ons/writer/Jamfile b/src/add-ons/media/media-add-ons/writer/Jamfile index 11e004a73c..05c1d00c4e 100644 --- a/src/add-ons/media/media-add-ons/writer/Jamfile +++ b/src/add-ons/media/media-add-ons/writer/Jamfile @@ -2,17 +2,18 @@ SubDir HAIKU_TOP src add-ons media media-add-ons writer ; UsePrivateHeaders media ; +SEARCH_SOURCE += [ FDirName $(HAIKU_TOP) src add-ons media media-add-ons ] ; + local architectureObject ; for architectureObject in [ MultiArchSubDirSetup ] { on $(architectureObject) { - Addon [ MultiArchDefaultGristFiles writer.media_addon ] : + Application [ MultiArchDefaultGristFiles writer.media_addon ] : ../AbstractFileInterfaceNode.cpp ../AbstractFileInterfaceAddOn.cpp MediaWriter.cpp MediaWriterAddOn.cpp - misc.cpp - : be media - : true + ../misc.cpp + : be media [ TargetLibsupc++ ] ; } } diff --git a/src/add-ons/media/media-add-ons/writer/MediaWriter.cpp b/src/add-ons/media/media-add-ons/writer/MediaWriter.cpp index 98a5bc77f8..0d0c13ec03 100644 --- a/src/add-ons/media/media-add-ons/writer/MediaWriter.cpp +++ b/src/add-ons/media/media-add-ons/writer/MediaWriter.cpp @@ -28,7 +28,7 @@ #include "../AbstractFileInterfaceNode.h" #include "MediaWriter.h" -#include "misc.h" +#include "../misc.h" #include #include @@ -48,14 +48,14 @@ MediaWriter::~MediaWriter(void) } MediaWriter::MediaWriter( - size_t defaultChunkSize = 8192, - float defaultBitRate = 800000, - const flavor_info * info = 0, - BMessage * config = 0, - BMediaAddOn * addOn = 0) + size_t defaultChunkSize, + float defaultBitRate, + const flavor_info * info, + BMessage * config, + BMediaAddOn * addOn) : BMediaNode("MediaWriter"), - AbstractFileInterfaceNode(defaultChunkSize,defaultBitRate,info,config,addOn), - BBufferConsumer(B_MEDIA_MULTISTREAM) + BBufferConsumer(B_MEDIA_MULTISTREAM), + AbstractFileInterfaceNode(defaultChunkSize,defaultBitRate,info,config,addOn) { fprintf(stderr,"MediaWriter::MediaWriter\n"); // null some fields @@ -459,7 +459,7 @@ status_t MediaWriter::SeekTagRequested( status_t MediaWriter::HandleBuffer( const media_timed_event *event, bigtime_t lateness, - bool realTimeEvent = false) + bool realTimeEvent) { fprintf(stderr,"MediaWriter::HandleBuffer\n"); BBuffer * buffer = const_cast((BBuffer*)event->pointer); @@ -479,7 +479,7 @@ status_t MediaWriter::HandleBuffer( status_t MediaWriter::HandleDataStatus( const media_timed_event *event, bigtime_t lateness, - bool realTimeEvent = false) + bool realTimeEvents) { fprintf(stderr,"MediaWriter::HandleDataStatus"); // we have no where to send a data status to. @@ -500,8 +500,8 @@ void MediaWriter::GetFlavor(flavor_info * outInfo, int32 id) return; } AbstractFileInterfaceNode::GetFlavor(outInfo,id); - outInfo->name = "OpenBeOS Media Writer"; - outInfo->info = "The OpenBeOS Media Writer consumes a multistream and writes a file."; + strcpy(outInfo->name, "OpenBeOS Media Writer"); + strcpy(outInfo->info, "The OpenBeOS Media Writer consumes a multistream and writes a file."); outInfo->kinds |= B_BUFFER_CONSUMER; outInfo->in_format_count = 1; // 1 input media_format * formats = new media_format[outInfo->in_format_count]; @@ -541,7 +541,7 @@ status_t MediaWriter::WriteFileBuffer( fprintf(stderr,"<- B_NO_INIT\n"); return B_NO_INIT; } - fprintf(stderr," writing %i bytes at %i\n", + fprintf(stderr," writing %" B_PRId32 " bytes at %lld\n", buffer->SizeUsed(),GetCurrentFile()->Position()); ssize_t bytesWriten = GetCurrentFile()->Write(buffer->Data(),buffer->SizeUsed()); if (bytesWriten < 0) { @@ -556,19 +556,19 @@ status_t MediaWriter::WriteFileBuffer( // stuffing // -------------------------------------------------------- // -status_t MediaWriter::_Reserved_MediaWriter_0(void *) {} -status_t MediaWriter::_Reserved_MediaWriter_1(void *) {} -status_t MediaWriter::_Reserved_MediaWriter_2(void *) {} -status_t MediaWriter::_Reserved_MediaWriter_3(void *) {} -status_t MediaWriter::_Reserved_MediaWriter_4(void *) {} -status_t MediaWriter::_Reserved_MediaWriter_5(void *) {} -status_t MediaWriter::_Reserved_MediaWriter_6(void *) {} -status_t MediaWriter::_Reserved_MediaWriter_7(void *) {} -status_t MediaWriter::_Reserved_MediaWriter_8(void *) {} -status_t MediaWriter::_Reserved_MediaWriter_9(void *) {} -status_t MediaWriter::_Reserved_MediaWriter_10(void *) {} -status_t MediaWriter::_Reserved_MediaWriter_11(void *) {} -status_t MediaWriter::_Reserved_MediaWriter_12(void *) {} -status_t MediaWriter::_Reserved_MediaWriter_13(void *) {} -status_t MediaWriter::_Reserved_MediaWriter_14(void *) {} -status_t MediaWriter::_Reserved_MediaWriter_15(void *) {} +status_t MediaWriter::_Reserved_MediaWriter_0(void *) { return B_ERROR; } +status_t MediaWriter::_Reserved_MediaWriter_1(void *) { return B_ERROR; } +status_t MediaWriter::_Reserved_MediaWriter_2(void *) { return B_ERROR; } +status_t MediaWriter::_Reserved_MediaWriter_3(void *) { return B_ERROR; } +status_t MediaWriter::_Reserved_MediaWriter_4(void *) { return B_ERROR; } +status_t MediaWriter::_Reserved_MediaWriter_5(void *) { return B_ERROR; } +status_t MediaWriter::_Reserved_MediaWriter_6(void *) { return B_ERROR; } +status_t MediaWriter::_Reserved_MediaWriter_7(void *) { return B_ERROR; } +status_t MediaWriter::_Reserved_MediaWriter_8(void *) { return B_ERROR; } +status_t MediaWriter::_Reserved_MediaWriter_9(void *) { return B_ERROR; } +status_t MediaWriter::_Reserved_MediaWriter_10(void *) { return B_ERROR; } +status_t MediaWriter::_Reserved_MediaWriter_11(void *) { return B_ERROR; } +status_t MediaWriter::_Reserved_MediaWriter_12(void *) { return B_ERROR; } +status_t MediaWriter::_Reserved_MediaWriter_13(void *) { return B_ERROR; } +status_t MediaWriter::_Reserved_MediaWriter_14(void *) { return B_ERROR; } +status_t MediaWriter::_Reserved_MediaWriter_15(void *) { return B_ERROR; } diff --git a/src/add-ons/media/media-add-ons/writer/MediaWriter.h b/src/add-ons/media/media-add-ons/writer/MediaWriter.h index a391416873..5ccb616b4f 100644 --- a/src/add-ons/media/media-add-ons/writer/MediaWriter.h +++ b/src/add-ons/media/media-add-ons/writer/MediaWriter.h @@ -66,6 +66,9 @@ virtual void NodeRegistered(void); /* reserved 2 */ /*****************************/ /* begin from BFileInterface */ protected: + +using AbstractFileInterfaceNode::SetRef; + virtual status_t SetRef( const entry_ref & file, bool create, diff --git a/src/add-ons/media/media-add-ons/writer/MediaWriterAddOn.cpp b/src/add-ons/media/media-add-ons/writer/MediaWriterAddOn.cpp index dc2f513ac2..9003384c5b 100644 --- a/src/add-ons/media/media-add-ons/writer/MediaWriterAddOn.cpp +++ b/src/add-ons/media/media-add-ons/writer/MediaWriterAddOn.cpp @@ -149,19 +149,19 @@ int main(int argc, char *argv[]) // stuffing // -------------------------------------------------------- // -status_t MediaWriterAddOn::_Reserved_MediaWriterAddOn_0(void *) {}; -status_t MediaWriterAddOn::_Reserved_MediaWriterAddOn_1(void *) {}; -status_t MediaWriterAddOn::_Reserved_MediaWriterAddOn_2(void *) {}; -status_t MediaWriterAddOn::_Reserved_MediaWriterAddOn_3(void *) {}; -status_t MediaWriterAddOn::_Reserved_MediaWriterAddOn_4(void *) {}; -status_t MediaWriterAddOn::_Reserved_MediaWriterAddOn_5(void *) {}; -status_t MediaWriterAddOn::_Reserved_MediaWriterAddOn_6(void *) {}; -status_t MediaWriterAddOn::_Reserved_MediaWriterAddOn_7(void *) {}; -status_t MediaWriterAddOn::_Reserved_MediaWriterAddOn_8(void *) {}; -status_t MediaWriterAddOn::_Reserved_MediaWriterAddOn_9(void *) {}; -status_t MediaWriterAddOn::_Reserved_MediaWriterAddOn_10(void *) {}; -status_t MediaWriterAddOn::_Reserved_MediaWriterAddOn_11(void *) {}; -status_t MediaWriterAddOn::_Reserved_MediaWriterAddOn_12(void *) {}; -status_t MediaWriterAddOn::_Reserved_MediaWriterAddOn_13(void *) {}; -status_t MediaWriterAddOn::_Reserved_MediaWriterAddOn_14(void *) {}; -status_t MediaWriterAddOn::_Reserved_MediaWriterAddOn_15(void *) {}; +status_t MediaWriterAddOn::_Reserved_MediaWriterAddOn_0(void *) { return B_ERROR; }; +status_t MediaWriterAddOn::_Reserved_MediaWriterAddOn_1(void *) { return B_ERROR; }; +status_t MediaWriterAddOn::_Reserved_MediaWriterAddOn_2(void *) { return B_ERROR; }; +status_t MediaWriterAddOn::_Reserved_MediaWriterAddOn_3(void *) { return B_ERROR; }; +status_t MediaWriterAddOn::_Reserved_MediaWriterAddOn_4(void *) { return B_ERROR; }; +status_t MediaWriterAddOn::_Reserved_MediaWriterAddOn_5(void *) { return B_ERROR; }; +status_t MediaWriterAddOn::_Reserved_MediaWriterAddOn_6(void *) { return B_ERROR; }; +status_t MediaWriterAddOn::_Reserved_MediaWriterAddOn_7(void *) { return B_ERROR; }; +status_t MediaWriterAddOn::_Reserved_MediaWriterAddOn_8(void *) { return B_ERROR; }; +status_t MediaWriterAddOn::_Reserved_MediaWriterAddOn_9(void *) { return B_ERROR; }; +status_t MediaWriterAddOn::_Reserved_MediaWriterAddOn_10(void *) { return B_ERROR; }; +status_t MediaWriterAddOn::_Reserved_MediaWriterAddOn_11(void *) { return B_ERROR; }; +status_t MediaWriterAddOn::_Reserved_MediaWriterAddOn_12(void *) { return B_ERROR; }; +status_t MediaWriterAddOn::_Reserved_MediaWriterAddOn_13(void *) { return B_ERROR; }; +status_t MediaWriterAddOn::_Reserved_MediaWriterAddOn_14(void *) { return B_ERROR; }; +status_t MediaWriterAddOn::_Reserved_MediaWriterAddOn_15(void *) { return B_ERROR; }; diff --git a/src/add-ons/media/media-add-ons/writer/MediaWriterAddOn.h b/src/add-ons/media/media-add-ons/writer/MediaWriterAddOn.h index e5e61d7ff9..e6c421e2af 100644 --- a/src/add-ons/media/media-add-ons/writer/MediaWriterAddOn.h +++ b/src/add-ons/media/media-add-ons/writer/MediaWriterAddOn.h @@ -45,6 +45,9 @@ virtual status_t GetFileFormatList( int32 in_read_items, // this many slots in out_readable_formats int32 * out_read_items, // set this to actual # available, even if bigger than in count void * _reserved); // ignore until further notice + +using AbstractFileInterfaceAddOn::SniffTypeKind; + virtual status_t SniffTypeKind( // Like SniffType, but for the specific kind(s) const BMimeType & type, uint64 in_kinds, diff --git a/src/add-ons/media/media-add-ons/writer/misc.cpp b/src/add-ons/media/media-add-ons/writer/misc.cpp deleted file mode 100644 index 037ba0b8c5..0000000000 --- a/src/add-ons/media/media-add-ons/writer/misc.cpp +++ /dev/null @@ -1,129 +0,0 @@ -// misc.cpp -// -// Andrew Bachmann, 2002 -// -// Some functions for general debugging and -// working around be media kit bugs. - -#include "misc.h" -#include - -// -------------------------------------------------------- // -// lib functions -// -------------------------------------------------------- // - -void print_multistream_format(media_multistream_format * format) { - fprintf(stderr,"["); - switch (format->format) { - case media_multistream_format::B_ANY: fprintf(stderr,"ANY"); break; - case media_multistream_format::B_VID: fprintf(stderr,"VID"); break; - case media_multistream_format::B_AVI: fprintf(stderr,"AVI"); break; - case media_multistream_format::B_MPEG1: fprintf(stderr,"MPEG1"); break; - case media_multistream_format::B_MPEG2: fprintf(stderr,"MPEG2"); break; - case media_multistream_format::B_QUICKTIME: fprintf(stderr,"QUICKTIME"); break; - default: fprintf(stderr,"????"); break; - } - fprintf(stderr," avg_bit_rate(%f) max_bit_rate(%f)", - format->avg_bit_rate,format->max_bit_rate); - fprintf(stderr," avg_chunk_size(%i) max_chunk_size(%i)", - format->avg_chunk_size,format->max_chunk_size); -} - -void print_media_format(media_format * format) { - fprintf(stderr,"{"); - switch (format->type) { - case B_MEDIA_NO_TYPE: fprintf(stderr,"NO_TYPE"); break; - case B_MEDIA_UNKNOWN_TYPE: fprintf(stderr,"UNKNOWN_TYPE"); break; - case B_MEDIA_RAW_AUDIO: fprintf(stderr,"RAW_AUDIO"); break; - case B_MEDIA_RAW_VIDEO: fprintf(stderr,"RAW_VIDEO"); break; - case B_MEDIA_VBL: fprintf(stderr,"VBL"); break; - case B_MEDIA_TIMECODE: fprintf(stderr,"TIMECODE"); break; - case B_MEDIA_MIDI: fprintf(stderr,"MIDI"); break; - case B_MEDIA_TEXT: fprintf(stderr,"TEXT"); break; - case B_MEDIA_HTML: fprintf(stderr,"HTML"); break; - case B_MEDIA_MULTISTREAM: fprintf(stderr,"MULTISTREAM"); break; - case B_MEDIA_PARAMETERS: fprintf(stderr,"PARAMETERS"); break; - case B_MEDIA_ENCODED_AUDIO: fprintf(stderr,"ENCODED_AUDIO"); break; - case B_MEDIA_ENCODED_VIDEO: fprintf(stderr,"ENCODED_VIDEO"); break; - default: fprintf(stderr,"????"); break; - } - fprintf(stderr,":"); - switch (format->type) { - case B_MEDIA_RAW_AUDIO: fprintf(stderr,"RAW_AUDIO"); break; - case B_MEDIA_RAW_VIDEO: fprintf(stderr,"RAW_VIDEO"); break; - case B_MEDIA_MULTISTREAM: print_multistream_format(&format->u.multistream); break; - case B_MEDIA_ENCODED_AUDIO: fprintf(stderr,"ENCODED_AUDIO"); break; - case B_MEDIA_ENCODED_VIDEO: fprintf(stderr,"ENCODED_VIDEO"); break; - default: fprintf(stderr,"????"); break; - } - fprintf(stderr,"}"); -} - -bool multistream_format_is_acceptible( - const media_multistream_format & producer_format, - const media_multistream_format & consumer_format) -{ - // first check the format, if necessary - if (consumer_format.format != media_multistream_format::B_ANY) { - if (consumer_format.format != producer_format.format) { - return false; - } - } - // then check the average bit rate - if (consumer_format.avg_bit_rate != media_multistream_format::wildcard.avg_bit_rate) { - if (consumer_format.avg_bit_rate != producer_format.avg_bit_rate) { - // do they have to match exactly? I don't know. assume yes. - return false; - } - } - // then check the maximum bit rate - if (consumer_format.max_bit_rate != media_multistream_format::wildcard.max_bit_rate) { - if (consumer_format.max_bit_rate != producer_format.max_bit_rate) { - // do they have to match exactly? I don't know. assume yes. - return false; - } - } - // then check the average chunk size - if (consumer_format.avg_chunk_size != media_multistream_format::wildcard.avg_chunk_size) { - if (consumer_format.avg_chunk_size != producer_format.avg_chunk_size) { - // do they have to match exactly? I don't know. assume yes. - return false; - } - } - // then check the maximum bit rate - if (consumer_format.max_chunk_size != media_multistream_format::wildcard.max_chunk_size) { - if (consumer_format.max_chunk_size != producer_format.max_chunk_size) { - // do they have to match exactly? I don't know. assume yes. - return false; - } - } - // should also check format specific fields, and others? - return true; -} - -bool format_is_acceptible( - const media_format & producer_format, - const media_format & consumer_format) -{ - // first check the type, if necessary - if (consumer_format.type != B_MEDIA_UNKNOWN_TYPE) { - if (consumer_format.type != producer_format.type) { - return false; - } - switch (consumer_format.type) { - case B_MEDIA_MULTISTREAM: - if (!multistream_format_is_acceptible(producer_format.u.multistream, - consumer_format.u.multistream)) { - return false; - } - break; - default: - fprintf(stderr,"format_is_acceptible : unimplemented type.\n"); - return format_is_compatible(producer_format,consumer_format); - break; - } - } - // should also check non-type fields? - return true; -} - diff --git a/src/add-ons/media/media-add-ons/writer/misc.h b/src/add-ons/media/media-add-ons/writer/misc.h deleted file mode 100644 index 621730c675..0000000000 --- a/src/add-ons/media/media-add-ons/writer/misc.h +++ /dev/null @@ -1,30 +0,0 @@ -// misc.h -// -// Andrew Bachmann, 2002 -// -// Some functions for general debugging and -// working around be media kit bugs. - -#if !defined(_MISC_H) -#define _MISC_H - -#include - -// -------------------------------------------------------- // -// lib functions -// -------------------------------------------------------- // - -void print_multistream_format(media_multistream_format * format); - -void print_media_format(media_format * format); - -bool multistream_format_is_acceptible( - const media_multistream_format & producer_format, - const media_multistream_format & consumer_format); - -bool format_is_acceptible( - const media_format & producer_format, - const media_format & consumer_format); - -#endif // _MISC_H - From 127a93c293ce5174cbaa82ad9e85c827d1a4bc9e Mon Sep 17 00:00:00 2001 From: Dario Casalinuovo Date: Sat, 13 Feb 2016 16:00:14 +0100 Subject: [PATCH 224/242] video_mixer: Fix build * Unfortunately it's crashing the media_addon_server at startup. --- .../media-add-ons/video_mixer/BufferMixer.cpp | 13 +++++++------ .../media/media-add-ons/video_mixer/Jamfile | 2 +- .../video_mixer/VideoMixerNode.cpp | 13 ++++++++----- .../video_mixer/VideoMixerNodeConsumer.cpp | 4 +++- .../video_mixer/VideoMixerNodeEventLooper.cpp | 19 +++++++++++-------- .../video_mixer/VideoMixerNodeProducer.cpp | 4 ++++ .../media-add-ons/video_mixer/yuvrgb.nasm | 16 ++++++++-------- 7 files changed, 42 insertions(+), 29 deletions(-) diff --git a/src/add-ons/media/media-add-ons/video_mixer/BufferMixer.cpp b/src/add-ons/media/media-add-ons/video_mixer/BufferMixer.cpp index 36a09421bd..1e5df289cc 100644 --- a/src/add-ons/media/media-add-ons/video_mixer/BufferMixer.cpp +++ b/src/add-ons/media/media-add-ons/video_mixer/BufferMixer.cpp @@ -57,16 +57,17 @@ BufferMixer::Merge(BBuffer *input, BBuffer *output) { uint32 size = input->Header()->size_used / 4; uint8 alpha = 0; uint8 c1, c2, c3; - + for (uint32 i=0; iinternal_id = id; - outInfo->name = "Haiku VideoMixer"; - outInfo->info = "A VideoMixerNode node mixes multiple video streams into a single stream."; + strcpy(outInfo->name, "Haiku VideoMixer"); + strcpy(outInfo->info, "A VideoMixerNode node mixes multiple video" + " streams into a single stream."); outInfo->kinds = B_BUFFER_CONSUMER | B_BUFFER_PRODUCER; outInfo->flavor_flags = B_FLAVOR_IS_LOCAL; outInfo->possible_count = INT_MAX; // no limit diff --git a/src/add-ons/media/media-add-ons/video_mixer/VideoMixerNodeConsumer.cpp b/src/add-ons/media/media-add-ons/video_mixer/VideoMixerNodeConsumer.cpp index eae92a0d1f..9fbedb45c6 100644 --- a/src/add-ons/media/media-add-ons/video_mixer/VideoMixerNodeConsumer.cpp +++ b/src/add-ons/media/media-add-ons/video_mixer/VideoMixerNodeConsumer.cpp @@ -12,6 +12,8 @@ #include "VideoMixerNode.h" +#include + // -------------------------------------------------------- // // implemention of BBufferConsumer @@ -46,7 +48,7 @@ status_t VideoMixerNode::GetNextInput( fprintf(stderr,"VideoMixerNode(BBufferConsumer)::GetNextInput (%ld)\n",*cookie); // Cookie 0 is the connecting input, all others are connected inputs - if (*cookie == fConnectedInputs.size()) { + if (uint32(*cookie) == fConnectedInputs.size()) { *out_input = fInitialInput; } else { out_input = GetInput(*cookie); diff --git a/src/add-ons/media/media-add-ons/video_mixer/VideoMixerNodeEventLooper.cpp b/src/add-ons/media/media-add-ons/video_mixer/VideoMixerNodeEventLooper.cpp index 639d070751..c2c4be104d 100644 --- a/src/add-ons/media/media-add-ons/video_mixer/VideoMixerNodeEventLooper.cpp +++ b/src/add-ons/media/media-add-ons/video_mixer/VideoMixerNodeEventLooper.cpp @@ -12,6 +12,9 @@ #include "VideoMixerNode.h" +#include + + // -------------------------------------------------------- // // implementation for BMediaEventLooper // -------------------------------------------------------- // @@ -19,7 +22,7 @@ void VideoMixerNode::HandleEvent( const media_timed_event *event, bigtime_t lateness, - bool realTimeEvent = false) + bool realTimeEvent) { switch (event->type) { case BTimedEventQueue::B_START: @@ -80,7 +83,7 @@ void VideoMixerNode::ControlLoop() { status_t VideoMixerNode::HandleStart( const media_timed_event *event, bigtime_t lateness, - bool realTimeEvent = false) + bool realTimeEvent) { fprintf(stderr,"VideoMixerNode(BMediaEventLooper)::HandleStart()\n"); if (RunState() != B_STARTED) { @@ -94,7 +97,7 @@ status_t VideoMixerNode::HandleStart( status_t VideoMixerNode::HandleSeek( const media_timed_event *event, bigtime_t lateness, - bool realTimeEvent = false) + bool realTimeEvent) { fprintf(stderr,"VideoMixerNode(BMediaEventLooper)::HandleSeek(t=%lld,d=%ld,bd=%lld)\n",event->event_time, event->data, event->bigdata); return B_OK; @@ -103,7 +106,7 @@ status_t VideoMixerNode::HandleSeek( status_t VideoMixerNode::HandleWarp( const media_timed_event *event, bigtime_t lateness, - bool realTimeEvent = false) + bool realTimeEvent) { fprintf(stderr,"VideoMixerNode(BMediaEventLooper)::HandleWarp\n"); return B_OK; @@ -112,7 +115,7 @@ status_t VideoMixerNode::HandleWarp( status_t VideoMixerNode::HandleStop( const media_timed_event *event, bigtime_t lateness, - bool realTimeEvent = false) + bool realTimeEvent) { fprintf(stderr,"VideoMixerNode(BMediaEventLooper)::HandleStop\n"); // flush the queue so downstreamers don't get any more @@ -123,7 +126,7 @@ status_t VideoMixerNode::HandleStop( status_t VideoMixerNode::HandleBuffer( const media_timed_event *event, bigtime_t lateness, - bool realTimeEvent = false) + bool realTimeEvent) { if (event->type != BTimedEventQueue::B_HANDLE_BUFFER) { fprintf(stderr,"HandleBuffer called on non buffer event type\n"); @@ -165,7 +168,7 @@ status_t VideoMixerNode::HandleBuffer( status_t VideoMixerNode::HandleDataStatus( const media_timed_event *event, bigtime_t lateness, - bool realTimeEvent = false) + bool realTimeEvent) { fprintf(stderr,"VideoMixerNode(BMediaEventLooper)::HandleDataStatus"); SendDataStatus(event->data, fOutput.destination, event->event_time); @@ -175,7 +178,7 @@ status_t VideoMixerNode::HandleDataStatus( status_t VideoMixerNode::HandleParameter( const media_timed_event *event, bigtime_t lateness, - bool realTimeEvent = false) + bool realTimeEvent) { fprintf(stderr,"VideoMixerNode(BMediaEventLooper)::HandleParameter"); return B_OK; diff --git a/src/add-ons/media/media-add-ons/video_mixer/VideoMixerNodeProducer.cpp b/src/add-ons/media/media-add-ons/video_mixer/VideoMixerNodeProducer.cpp index ab4b86e196..8fa016b462 100644 --- a/src/add-ons/media/media-add-ons/video_mixer/VideoMixerNodeProducer.cpp +++ b/src/add-ons/media/media-add-ons/video_mixer/VideoMixerNodeProducer.cpp @@ -12,6 +12,10 @@ #include "VideoMixerNode.h" +#include +#include + + // -------------------------------------------------------- // // implemention of BBufferProducer // -------------------------------------------------------- // diff --git a/src/add-ons/media/media-add-ons/video_mixer/yuvrgb.nasm b/src/add-ons/media/media-add-ons/video_mixer/yuvrgb.nasm index 0cabc75c4a..ad11d5c5bc 100644 --- a/src/add-ons/media/media-add-ons/video_mixer/yuvrgb.nasm +++ b/src/add-ons/media/media-add-ons/video_mixer/yuvrgb.nasm @@ -212,16 +212,16 @@ Const128 dw 128 dw 128 ; void Convert_YUV422_RGBA32_SSE2(void *fromPtr, void *toPtr, int width) -width equ ebp+16 -toPtr equ ebp+12 -fromPtr equ ebp+8 +%define width ebp+16 +%define toPtr ebp+12 +%define fromPtr ebp+8 ; void Convert_YUV420P_RGBA32_SSE2(void *fromYPtr, void *fromUPtr, void *fromVPtr, void *toPtr, int width) -width1 equ ebp+24 -toPtr1 equ ebp+20 -fromVPtr equ ebp+16 -fromUPtr equ ebp+12 -fromYPtr equ ebp+8 +%define width1 ebp+24 +%define toPtr1 ebp+20 +%define fromVPtr ebp+16 +%define fromUPtr ebp+12 +%define fromYPtr ebp+8 SECTION .text align=16 From 18e199bd7baccb811da4838b8e1e27d47d578355 Mon Sep 17 00:00:00 2001 From: Dario Casalinuovo Date: Sat, 13 Feb 2016 16:52:59 +0100 Subject: [PATCH 225/242] video_mixer: Better to use array syntax --- .../media/media-add-ons/video_mixer/BufferMixer.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/add-ons/media/media-add-ons/video_mixer/BufferMixer.cpp b/src/add-ons/media/media-add-ons/video_mixer/BufferMixer.cpp index 1e5df289cc..22aeda7cbb 100644 --- a/src/add-ons/media/media-add-ons/video_mixer/BufferMixer.cpp +++ b/src/add-ons/media/media-add-ons/video_mixer/BufferMixer.cpp @@ -63,10 +63,10 @@ BufferMixer::Merge(BBuffer *input, BBuffer *output) { c2 = *source++; c3 = *source++; alpha = *source++; - *(destination) = ALPHABLEND(c1, *destination, alpha); - *(destination+1) = ALPHABLEND(c2, *destination, alpha); - *(destination+2) = ALPHABLEND(c3, *destination, alpha); - *(destination+3) = 0x00; + destination[0] = ALPHABLEND(c1, destination[0], alpha); + destination[1] = ALPHABLEND(c2, destination[1], alpha); + destination[2] = ALPHABLEND(c3, destination[2], alpha); + destination[3] = 0x00; destination += 4; } } From 45569721aa73318762c19091b8020f1488afddaf Mon Sep 17 00:00:00 2001 From: Adrien Destugues Date: Sat, 13 Feb 2016 21:20:54 +0100 Subject: [PATCH 226/242] HaikuWebKit 1.5.2. --- build/jam/repositories/HaikuPorts/x86_gcc2 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build/jam/repositories/HaikuPorts/x86_gcc2 b/build/jam/repositories/HaikuPorts/x86_gcc2 index 05e4cfb12b..6a42dfdad0 100644 --- a/build/jam/repositories/HaikuPorts/x86_gcc2 +++ b/build/jam/repositories/HaikuPorts/x86_gcc2 @@ -659,8 +659,8 @@ RemotePackageRepository HaikuPorts graphite2_x86_devel-1.2.4-1 guilib_x86-1.2.1-1 guilib_x86_devel-1.2.1-1 - haikuwebkit_x86-1.5.1-1 - haikuwebkit_x86_devel-1.5.1-1 + haikuwebkit_x86-1.5.2-1 + haikuwebkit_x86_devel-1.5.2-1 harfbuzz_x86-0.9.39-1 harfbuzz_x86_devel-0.9.39-1 icu_x86-56.1-1 From da455572ed478293b2d7d9816b1ab44a44c9d33b Mon Sep 17 00:00:00 2001 From: Adrien Destugues Date: Sun, 14 Feb 2016 11:45:13 +0100 Subject: [PATCH 227/242] AVCodecDecoder: fix timing problems A combination of two problems made things go wrong with the timestamp of decoded audio. 1) The output buffer size is too small to hold the complete input. swresample handles this by buffering the input for use the next time it is called, however repeatedly doing this results in lots of buffering, and our way to compute the output timestamp from the input does not take it into account so it does weird things. Moreover, we would need to empty the buffer by calling swr_convert with NULL input in that case. Fix: make sure to not feed more data to swr_convert than it can output in our buffer. This way, no buffering occurs, only the matrixing conversion. 2) When using planar audio, the "frame size" is a bit different. Instead of adding sample size * channel count to 1 pointer, we need to add sample size * 1 to each channel buffer. Fix: add the "fInputFrameSize" which takes this into account, instead of misusing fOutputFrameSize for the input. Fixes #12460. --- .../media/plugins/ffmpeg/AVCodecDecoder.cpp | 21 ++++++++++++++++--- .../media/plugins/ffmpeg/AVCodecDecoder.h | 3 +++ 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/src/add-ons/media/plugins/ffmpeg/AVCodecDecoder.cpp b/src/add-ons/media/plugins/ffmpeg/AVCodecDecoder.cpp index 99357f1dac..c000898b65 100644 --- a/src/add-ons/media/plugins/ffmpeg/AVCodecDecoder.cpp +++ b/src/add-ons/media/plugins/ffmpeg/AVCodecDecoder.cpp @@ -112,6 +112,7 @@ AVCodecDecoder::AVCodecDecoder() fOutputFrameCount(0), fOutputFrameRate(1.0), fOutputFrameSize(0), + fInputFrameSize(0), fChunkBuffer(NULL), fChunkBufferSize(0), @@ -403,6 +404,11 @@ AVCodecDecoder::_NegotiateAudioOutputFormat(media_format* inOutFormat) fOutputFrameSize = sampleSize * outputAudioFormat.channel_count; fOutputFrameCount = outputAudioFormat.buffer_size / fOutputFrameSize; fOutputFrameRate = outputAudioFormat.frame_rate; + if (av_sample_fmt_is_planar(fContext->sample_fmt)) + fInputFrameSize = sampleSize; + else + fInputFrameSize = fOutputFrameSize; + fRawDecodedAudio->opaque = av_realloc(fRawDecodedAudio->opaque, sizeof(avformat_codec_context)); if (fRawDecodedAudio->opaque == NULL) @@ -925,10 +931,19 @@ AVCodecDecoder::_MoveAudioFramesToRawDecodedAudioAndUpdateStartTimes() ptr[i] = fDecodedDataBuffer->data[i] + fDecodedDataBufferOffset; } - int32 result = swr_convert(fResampleContext, fRawDecodedAudio->data, + // When there are more input frames than space in the output buffer, + // we could feed everything to swr and it would buffer the extra data. + // However, there is no easy way to flush that data without feeding more + // input, and it makes our timestamp computations fail. + // So, we feed only as much frames as we can get out, and handle the + // buffering ourselves. + // TODO Ideally, we should try to size our output buffer so that it can + // always hold all the output (swr provides helper functions for this) + inFrames = frames; + frames = swr_convert(fResampleContext, fRawDecodedAudio->data, outFrames, ptr, inFrames); - if (result < 0) + if (frames < 0) debugger("resampling failed"); } else { memcpy(fRawDecodedAudio->data[0], fDecodedDataBuffer->data[0] @@ -937,7 +952,7 @@ AVCodecDecoder::_MoveAudioFramesToRawDecodedAudioAndUpdateStartTimes() inFrames = frames; } - size_t remainingSize = inFrames * fOutputFrameSize; + size_t remainingSize = inFrames * fInputFrameSize; size_t decodedSize = outFrames * fOutputFrameSize; fDecodedDataBufferSize -= inFrames; diff --git a/src/add-ons/media/plugins/ffmpeg/AVCodecDecoder.h b/src/add-ons/media/plugins/ffmpeg/AVCodecDecoder.h index 48e6c468eb..b839d52348 100644 --- a/src/add-ons/media/plugins/ffmpeg/AVCodecDecoder.h +++ b/src/add-ons/media/plugins/ffmpeg/AVCodecDecoder.h @@ -131,6 +131,9 @@ private: float fOutputFrameRate; int fOutputFrameSize; // sample size * channel count + int fInputFrameSize; + // sample size * channel count + // or just sample size for planar formats uint8_t* fChunkBuffer; size_t fChunkBufferSize; From fb94ed118abf29d1880b9fbdbe353fa17cd3b36c Mon Sep 17 00:00:00 2001 From: Avi Brenner Date: Thu, 31 Dec 2015 11:54:47 +0000 Subject: [PATCH 228/242] ShowImage: Adds an option to launch tracker file info for currently viewed file. Fixes #12241 Signed-off-by: Adrien Destugues --- src/apps/showimage/ShowImageWindow.cpp | 17 +++++++++++++++++ src/apps/showimage/ShowImageWindow.h | 2 ++ 2 files changed, 19 insertions(+) diff --git a/src/apps/showimage/ShowImageWindow.cpp b/src/apps/showimage/ShowImageWindow.cpp index d7db462b2b..10f0deee51 100644 --- a/src/apps/showimage/ShowImageWindow.cpp +++ b/src/apps/showimage/ShowImageWindow.cpp @@ -94,6 +94,7 @@ enum { MSG_SHOW_CAPTION = 'mSCP', MSG_PAGE_SETUP = 'mPSU', MSG_PREPARE_PRINT = 'mPPT', + MSG_GET_INFO = 'mGFI', MSG_SET_RATING = 'mSRT', kMsgFitToWindow = 'mFtW', kMsgOriginalSize = 'mOSZ', @@ -392,6 +393,8 @@ ShowImageWindow::_AddMenus(BMenuBar* bar) menu->AddItem(menuSaveAs); _AddItemMenu(menu, B_TRANSLATE("Close"), B_QUIT_REQUESTED, 'W', 0, this); _AddItemMenu(menu, B_TRANSLATE("Move to Trash"), kMsgDeleteCurrentFile, 'T', 0, this); + _AddItemMenu(menu, B_TRANSLATE("Get info" B_UTF8_ELLIPSIS), + MSG_GET_INFO, 'I', 0, this); menu->AddSeparatorItem(); _AddItemMenu(menu, B_TRANSLATE("Page setup" B_UTF8_ELLIPSIS), MSG_PAGE_SETUP, 0, 0, this); @@ -872,6 +875,10 @@ ShowImageWindow::MessageReceived(BMessage* message) fImageView->Flip(false); break; + case MSG_GET_INFO: + _GetFileInfo(fNavigator.CurrentRef()); + break; + case MSG_SLIDE_SHOW: { bool fullScreen = false; @@ -1061,6 +1068,16 @@ ShowImageWindow::MessageReceived(BMessage* message) } +void +ShowImageWindow::_GetFileInfo(const entry_ref& ref) +{ + BMessage message('Tinf'); + BMessenger tracker("application/x-vnd.Be-TRAK"); + message.AddRef("refs", &ref); + tracker.SendMessage(&message); +} + + void ShowImageWindow::_UpdateStatusText(const BMessage* message) { diff --git a/src/apps/showimage/ShowImageWindow.h b/src/apps/showimage/ShowImageWindow.h index 32fc6d174b..1fb2871bac 100644 --- a/src/apps/showimage/ShowImageWindow.h +++ b/src/apps/showimage/ShowImageWindow.h @@ -104,6 +104,8 @@ private: void _UpdateRatingMenu(); + void _GetFileInfo(const entry_ref& ref); + void _SetToolBarVisible(bool visible, bool animate = false); void _SetToolBarBorder(bool visible); From a5a3b2d9a3d95cbae71eaf371708c73a1780ac0d Mon Sep 17 00:00:00 2001 From: Adrien Destugues Date: Sun, 14 Feb 2016 14:07:21 +0100 Subject: [PATCH 229/242] Bluetooth: fix thread safety issue. Fixes #11428. --- headers/os/bluetooth/LinkKeyUtils.h | 7 +++---- headers/os/bluetooth/bdaddrUtils.h | 9 +++++---- headers/private/bluetooth/PincodeWindow.h | 2 +- src/kits/bluetooth/UI/PincodeWindow.cpp | 2 +- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/headers/os/bluetooth/LinkKeyUtils.h b/headers/os/bluetooth/LinkKeyUtils.h index 3abbb313d9..56b7d914dd 100644 --- a/headers/os/bluetooth/LinkKeyUtils.h +++ b/headers/os/bluetooth/LinkKeyUtils.h @@ -24,12 +24,11 @@ public: return (linkkey_t){{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; } - static char* ToString(const linkkey_t lk) + static BString ToString(const linkkey_t lk) { - // TODO: not safe - static char str[50]; + BString str; - sprintf(str, "%2.2X:%2.2X:%2.2X:%2.2X:%2.2X:%2.2X:%2.2X:%2.2X:" + str.SetToFormat("%2.2X:%2.2X:%2.2X:%2.2X:%2.2X:%2.2X:%2.2X:%2.2X:" "%2.2X:%2.2X:%2.2X:%2.2X:%2.2X:%2.2X:%2.2X:%2.2X", lk.l[0], lk.l[1], lk.l[2], lk.l[3], lk.l[4], lk.l[5], lk.l[6], lk.l[7], lk.l[8], lk.l[9], lk.l[10], lk.l[11], diff --git a/headers/os/bluetooth/bdaddrUtils.h b/headers/os/bluetooth/bdaddrUtils.h index 9b86c32dd8..0b1a2bf1a4 100644 --- a/headers/os/bluetooth/bdaddrUtils.h +++ b/headers/os/bluetooth/bdaddrUtils.h @@ -9,6 +9,8 @@ #include #include +#include + #include namespace Bluetooth { @@ -45,12 +47,11 @@ public: memcpy(&dst, &src, sizeof(bdaddr_t)); } - static char* ToString(const bdaddr_t bdaddr) + static BString ToString(const bdaddr_t bdaddr) { - // TODO: not safe - static char str[18]; + BString str; - sprintf(str,"%2.2X:%2.2X:%2.2X:%2.2X:%2.2X:%2.2X",bdaddr.b[5], + str.SetToFormat("%2.2X:%2.2X:%2.2X:%2.2X:%2.2X:%2.2X",bdaddr.b[5], bdaddr.b[4], bdaddr.b[3], bdaddr.b[2], bdaddr.b[1], bdaddr.b[0]); return str; diff --git a/headers/private/bluetooth/PincodeWindow.h b/headers/private/bluetooth/PincodeWindow.h index c7bb86b843..d39ad7b4db 100644 --- a/headers/private/bluetooth/PincodeWindow.h +++ b/headers/private/bluetooth/PincodeWindow.h @@ -27,7 +27,7 @@ public: PincodeWindow(RemoteDevice* rDevice); virtual void MessageReceived(BMessage *msg); virtual bool QuitRequested(); - void SetBDaddr(const char* address); + void SetBDaddr(BString address); private: void InitUI(); diff --git a/src/kits/bluetooth/UI/PincodeWindow.cpp b/src/kits/bluetooth/UI/PincodeWindow.cpp index 65b1ae5c22..e2757df6c3 100644 --- a/src/kits/bluetooth/UI/PincodeWindow.cpp +++ b/src/kits/bluetooth/UI/PincodeWindow.cpp @@ -187,7 +187,7 @@ bool PincodeWindow::QuitRequested() } -void PincodeWindow::SetBDaddr(const char* address) +void PincodeWindow::SetBDaddr(BString address) { BString label; From 632e56d8e514ba6ac41f582ce580e51a3cd8922e Mon Sep 17 00:00:00 2001 From: Alexander Sulfrian Date: Fri, 6 Apr 2012 17:08:15 +0200 Subject: [PATCH 230/242] URL linkification in People url and email label are now marked as a link and open the address in the browser/mail-app on click Signed-off-by: Adrien Destugues Fixes #3825 A few extra changes from the original patch: - Remove "smart" parsing (detection of "ftp", etc) as it could lead to ftp://ftp://url or other strangeness, - Add gopher protocol, because mmu_man may have an home page there. --- src/apps/people/AttributeTextControl.cpp | 116 ++++++++++++++++++++++- src/apps/people/AttributeTextControl.h | 13 +++ 2 files changed, 128 insertions(+), 1 deletion(-) diff --git a/src/apps/people/AttributeTextControl.cpp b/src/apps/people/AttributeTextControl.cpp index e3197f6bfd..7142d48c25 100644 --- a/src/apps/people/AttributeTextControl.cpp +++ b/src/apps/people/AttributeTextControl.cpp @@ -15,13 +15,17 @@ #include #include -#include #include +#include +#include +#include +#include #undef B_TRANSLATION_CONTEXT #define B_TRANSLATION_CONTEXT "People" +#define B_URL_MIME "application/x-vnd.Be.URL." AttributeTextControl::AttributeTextControl(const char* label, const char* attribute) @@ -42,6 +46,28 @@ AttributeTextControl::~AttributeTextControl() { } +void +AttributeTextControl::MouseDown(BPoint mousePosition) +{ + if(_VisibleLabelBounds().Contains(mousePosition) && _ContainsUrl()) + _HandleLabelClicked(Text()); + else + BTextControl::MouseDown(mousePosition); +} + + +void +AttributeTextControl::MouseMoved(BPoint mousePosition, uint32 transit, const BMessage* dragMessage) +{ + if (_VisibleLabelBounds().Contains(mousePosition) && _ContainsUrl()) { + BCursor linkCursor(B_CURSOR_ID_FOLLOW_LINK); + SetViewCursor(&linkCursor, true); + } else + SetViewCursor(B_CURSOR_SYSTEM_DEFAULT, true); + + BTextControl::MouseMoved(mousePosition, transit, dragMessage); +} + bool AttributeTextControl::HasChanged() @@ -63,3 +89,91 @@ AttributeTextControl::Update() { fOriginalValue = Text(); } + + +void +AttributeTextControl::_HandleLabelClicked(const char *text) +{ + BString argument(text); + + if (Attribute() == "META:url") { + _MakeUniformUrl(argument); + + BString mimeType = B_URL_MIME; + _BuildMimeString(mimeType, argument); + + if (mimeType != "") { + const char *args[] = {argument.String(), 0}; + be_roster->Launch(mimeType.String(), 1, const_cast(args)); + } + } else if (Attribute() == "META:email") { + if (argument.IFindFirst("mailto:") != 0 && argument != "") + argument.Prepend("mailto:"); + + // TODO: Could check for possible e-mail patterns. + if (argument != "") { + const char *args[] = {argument.String(), 0}; + be_roster->Launch("text/x-email", 1, const_cast(args)); + } + } +} + + +const BString& +AttributeTextControl::_MakeUniformUrl(BString &url) const +{ + if (url.StartsWith("www")) + url.Prepend("http://"); + else if (url.StartsWith("ftp.")) + url.Prepend("ftp://"); + + return url; +} + + +const BString& +AttributeTextControl::_BuildMimeString(BString &mimeType, const BString &url) + const +{ + if (url.IFindFirst("http://") == 0 || url.IFindFirst("ftp://") == 0 + || url.IFindFirst("https://") || url.IFindFirst("gopher://") == 0) { + + mimeType.Append(url, url.FindFirst(':')); + } + + if (!BMimeType::IsValid(mimeType.String())) + mimeType = ""; + + return mimeType; +} + + +bool +AttributeTextControl::_ContainsUrl() const +{ + BString argument(Text()); + + if (Attribute() == "META:url") { + BString mimeType = B_URL_MIME; + if (_BuildMimeString(mimeType, _MakeUniformUrl(argument)) != "") + return true; + } + else if (Attribute() == "META:email") { + if (argument != "") + return true; + } + + return false; +} + + +BRect +AttributeTextControl::_VisibleLabelBounds() const +{ + // TODO: Could actually check current alignment of the label. + // The code below works only for right aligned labels. + BRect bounds(Bounds()); + bounds.right = Divider(); + bounds.left = bounds.right - StringWidth(Label()); + return bounds; +} diff --git a/src/apps/people/AttributeTextControl.h b/src/apps/people/AttributeTextControl.h index 23743530a4..b1d55aade6 100644 --- a/src/apps/people/AttributeTextControl.h +++ b/src/apps/people/AttributeTextControl.h @@ -21,6 +21,9 @@ public: const char* attribute); virtual ~AttributeTextControl(); + virtual void MouseDown(BPoint); + virtual void MouseMoved(BPoint, uint32, const BMessage*); + bool HasChanged(); void Revert(); void Update(); @@ -28,6 +31,16 @@ public: const BString& Attribute() const { return fAttribute; } +private: + const BString& _MakeUniformUrl(BString &url) const; + const BString& _BuildMimeString(BString &mimeType, + const BString &url) const; + + bool _ContainsUrl() const; + + BRect _VisibleLabelBounds() const; + void _HandleLabelClicked(const char*); + private: BString fAttribute; BString fOriginalValue; From 006a34e40e20edcc8a8230c0c437995b03f7bf6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Aulery?= Date: Sat, 29 Nov 2014 16:42:29 +0100 Subject: [PATCH 231/242] CodingStyle checking tool directory: - Don't crash when a [.svn] cache directory is missing - Ignores the cache directories of the main VCS : bazaar, git, mercurial, svn Signed-off-by: Adrien Destugues Fixes #11532. --- src/tools/checkstyle/checkstyle.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/tools/checkstyle/checkstyle.py b/src/tools/checkstyle/checkstyle.py index 7b86341cab..c9021e33cf 100755 --- a/src/tools/checkstyle/checkstyle.py +++ b/src/tools/checkstyle/checkstyle.py @@ -38,7 +38,14 @@ def run(fileSet, rules, outputFileName): def visit(result, dir, names): extensions = [".cpp", ".h"] - names.remove(".git") + vcsCacheDirectory = [".bzr", ".git", ".hg", ".svn"] + + for name in reversed(names): + for vcd in vcsCacheDirectory: + if name == vcd: + print(vcd + " cache directory has been ignored") + names.remove(vcd) + for name in names: path = os.path.join(dir, name) if os.path.isfile(path) and os.path.splitext(name)[1] in extensions: From 975ec13e71f8e303226e0263ab84038c49a7deca Mon Sep 17 00:00:00 2001 From: Adrien Destugues Date: Sun, 14 Feb 2016 16:19:43 +0100 Subject: [PATCH 232/242] Locale prefs: skip script-specific entries Avoids showing the same language multiple times in the list, for example when there are cyrillic and latin variants. It is still possible to pick one of the variants, as they are also added as country-specific entries. Fixes #9144. --- src/preferences/locale/LocaleWindow.cpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/preferences/locale/LocaleWindow.cpp b/src/preferences/locale/LocaleWindow.cpp index d66d41020e..6d501517cb 100644 --- a/src/preferences/locale/LocaleWindow.cpp +++ b/src/preferences/locale/LocaleWindow.cpp @@ -113,9 +113,10 @@ LocaleWindow::LocaleWindow() // TODO: the following block fails to detect a couple of language // names as containing glyphs we can't render. Why's that? - bool hasGlyphs[name.CountChars()]; - font.GetHasGlyphs(name.String(), name.CountChars(), hasGlyphs); - for (int32 i = 0; i < name.CountChars(); ++i) { + int nameLength = name.CountChars(); + bool hasGlyphs[nameLength]; + font.GetHasGlyphs(name.String(), nameLength, hasGlyphs); + for (int32 i = 0; i < nameLength; ++i) { if (!hasGlyphs[i]) { // replace by name translated to current language currentLanguage.GetName(name); @@ -131,10 +132,17 @@ LocaleWindow::LocaleWindow() item = new LanguageListItem(name, currentID.String(), currentLanguage.Code()); } + if (currentLanguage.IsCountrySpecific() && currentToplevelItem != NULL && currentToplevelItem->Code() == item->Code()) { fLanguageListView->AddUnder(item, currentToplevelItem); + } else if (currentLanguage.ScriptCode() != NULL + && currentToplevelItem != NULL + && currentToplevelItem->Code() == item->Code()) { + // This is a script for some language, skip it and add the + // country-specific variants to the parent directly + delete item; } else { // This is a generic language, add it at top-level fLanguageListView->AddItem(item); From bb74b46df8112c5471b189c0cd5bdd9a0d631d11 Mon Sep 17 00:00:00 2001 From: Humdinger Date: Sun, 14 Feb 2016 16:52:38 +0100 Subject: [PATCH 233/242] Add ponpokodiff package --- build/jam/repositories/HaikuPorts/x86_gcc2 | 2 ++ 1 file changed, 2 insertions(+) diff --git a/build/jam/repositories/HaikuPorts/x86_gcc2 b/build/jam/repositories/HaikuPorts/x86_gcc2 index 6a42dfdad0..ef9b36313f 100644 --- a/build/jam/repositories/HaikuPorts/x86_gcc2 +++ b/build/jam/repositories/HaikuPorts/x86_gcc2 @@ -410,6 +410,7 @@ RemotePackageRepository HaikuPorts physfs_devel-2.0.3-2 pipepanic-0.1.3-3 pkgconfig-0.29-1 + ponpokodiff-0.2.0-2 popt-1.16-1 popt_devel-1.16-1 postgresql-9.3.5-2 @@ -1312,6 +1313,7 @@ RemotePackageRepository HaikuPorts pipepanic pixman_x86 pkgconfig + ponpokodiff popt popt_x86 postgresql From e9eb82cc53ef7eb06dd0eb436fa28f5397feab0b Mon Sep 17 00:00:00 2001 From: Humdinger Date: Sun, 14 Feb 2016 19:02:47 +0100 Subject: [PATCH 234/242] Updated all cdrtools packages to 3.02~a06-1 --- build/jam/repositories/HaikuPorts/x86 | 4 ++-- build/jam/repositories/HaikuPorts/x86_64 | 4 ++-- build/jam/repositories/HaikuPorts/x86_gcc2 | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/build/jam/repositories/HaikuPorts/x86 b/build/jam/repositories/HaikuPorts/x86 index 7318368551..e915d243d1 100644 --- a/build/jam/repositories/HaikuPorts/x86 +++ b/build/jam/repositories/HaikuPorts/x86 @@ -61,8 +61,8 @@ RemotePackageRepository HaikuPorts burnitnow-0.1.0-1 bzip2-1.0.6-5 bzip2_devel-1.0.6-5 - cdrtools-3.01~a27-1 - cdrtools_devel-3.01~a27-1 + cdrtools-3.02~a06-1 + cdrtools_devel-3.02~a06-1 clang-3.4-3 clang_analysis-3.4-3 clipdinger-0.5.2-1 diff --git a/build/jam/repositories/HaikuPorts/x86_64 b/build/jam/repositories/HaikuPorts/x86_64 index 793142efd3..6b153adbfb 100644 --- a/build/jam/repositories/HaikuPorts/x86_64 +++ b/build/jam/repositories/HaikuPorts/x86_64 @@ -62,8 +62,8 @@ RemotePackageRepository HaikuPorts buildbot_slave-0.8.8-2 bzip2-1.0.6-5 bzip2_devel-1.0.6-5 - cdrtools-3.02~a04-1 - cdrtools_devel-3.02~a04-1 + cdrtools-3.02~a06-1 + cdrtools_devel-3.02~a06-1 clang-3.5.1-1 clang_analysis-3.5.1-1 clipdinger-0.5.2-1 diff --git a/build/jam/repositories/HaikuPorts/x86_gcc2 b/build/jam/repositories/HaikuPorts/x86_gcc2 index ef9b36313f..c32813a4da 100644 --- a/build/jam/repositories/HaikuPorts/x86_gcc2 +++ b/build/jam/repositories/HaikuPorts/x86_gcc2 @@ -74,8 +74,8 @@ RemotePackageRepository HaikuPorts catkeyseditor-0.1.1-1 caya-0.0.3-3 ccache-3.1.9-1 - cdrtools-3.02~a04-1 - cdrtools_devel-3.02~a04-1 + cdrtools-3.02~a06-1 + cdrtools_devel-3.02~a06-1 chat-20100903-2 clipdinger-0.5.2-1 clockwerk-git-3 From 884412df8e67a4f2546b46722ab18868d7439202 Mon Sep 17 00:00:00 2001 From: Adrien Destugues Date: Sun, 14 Feb 2016 18:46:37 +0100 Subject: [PATCH 235/242] Fix test_app_server build, again - Interface Kit tests use a View class which is not BView, and has no SetViewUIColor. - Libexpat is now in a separate package. - Shouldn't we add this to the buildbots so we can cath the breakage? --- .../kits/interface/layout/widget_layout_test/CheckBox.cpp | 2 +- .../kits/interface/layout/widget_layout_test/GroupView.cpp | 6 +++--- .../interface/layout/widget_layout_test/RadioButton.cpp | 2 +- .../kits/interface/layout/widget_layout_test/StringView.cpp | 2 +- .../layout/widget_layout_test/WidgetLayoutTest.cpp | 4 ++-- src/tests/kits/interface/picture/Jamfile | 4 +++- src/tests/servers/app/Jamfile | 1 + 7 files changed, 12 insertions(+), 9 deletions(-) diff --git a/src/tests/kits/interface/layout/widget_layout_test/CheckBox.cpp b/src/tests/kits/interface/layout/widget_layout_test/CheckBox.cpp index d2374a3ac2..65985071f9 100644 --- a/src/tests/kits/interface/layout/widget_layout_test/CheckBox.cpp +++ b/src/tests/kits/interface/layout/widget_layout_test/CheckBox.cpp @@ -16,7 +16,7 @@ CheckBox::CheckBox(BMessage* message, BMessenger target) : AbstractButton(BUTTON_POLICY_TOGGLE_ON_RELEASE, message, target) { - SetViewUIColor(B_PANEL_BACKGROUND_COLOR); + SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); } diff --git a/src/tests/kits/interface/layout/widget_layout_test/GroupView.cpp b/src/tests/kits/interface/layout/widget_layout_test/GroupView.cpp index 2b6f24a7c1..67dcd709be 100644 --- a/src/tests/kits/interface/layout/widget_layout_test/GroupView.cpp +++ b/src/tests/kits/interface/layout/widget_layout_test/GroupView.cpp @@ -59,7 +59,7 @@ GroupView::GroupView(enum orientation orientation, int32 lineCount) fColumnInfos(NULL), fRowInfos(NULL) { - SetViewUIColor(B_PANEL_BACKGROUND_COLOR); + SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); if (fLineCount < 1) fLineCount = 1; @@ -377,7 +377,7 @@ GroupView::_ChildAt(int32 column, int32 row) const Glue::Glue() : View() { - SetViewUIColor(B_PANEL_BACKGROUND_COLOR); + SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); } @@ -389,7 +389,7 @@ Strut::Strut(float pixelWidth, float pixelHeight) fSize(pixelWidth >= 0 ? pixelWidth - 1 : B_SIZE_UNSET, pixelHeight >= 0 ? pixelHeight - 1 : B_SIZE_UNSET) { - SetViewUIColor(B_PANEL_BACKGROUND_COLOR); + SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); } diff --git a/src/tests/kits/interface/layout/widget_layout_test/RadioButton.cpp b/src/tests/kits/interface/layout/widget_layout_test/RadioButton.cpp index beb0a0837b..07c70dea20 100644 --- a/src/tests/kits/interface/layout/widget_layout_test/RadioButton.cpp +++ b/src/tests/kits/interface/layout/widget_layout_test/RadioButton.cpp @@ -16,7 +16,7 @@ RadioButton::RadioButton(BMessage* message, BMessenger target) : AbstractButton(BUTTON_POLICY_SELECT_ON_RELEASE, message, target) { - SetViewUIColor(B_PANEL_BACKGROUND_COLOR); + SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); } diff --git a/src/tests/kits/interface/layout/widget_layout_test/StringView.cpp b/src/tests/kits/interface/layout/widget_layout_test/StringView.cpp index 77218347af..2f3db7985e 100644 --- a/src/tests/kits/interface/layout/widget_layout_test/StringView.cpp +++ b/src/tests/kits/interface/layout/widget_layout_test/StringView.cpp @@ -19,7 +19,7 @@ StringView::StringView(const char* string) fStringWidth(0), fExplicitMinSize(B_SIZE_UNSET, B_SIZE_UNSET) { - SetViewUIColor(B_PANEL_BACKGROUND_COLOR); + SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); fTextColor = (rgb_color){ 0, 0, 0, 255 }; } diff --git a/src/tests/kits/interface/layout/widget_layout_test/WidgetLayoutTest.cpp b/src/tests/kits/interface/layout/widget_layout_test/WidgetLayoutTest.cpp index afa9931f45..8132511545 100644 --- a/src/tests/kits/interface/layout/widget_layout_test/WidgetLayoutTest.cpp +++ b/src/tests/kits/interface/layout/widget_layout_test/WidgetLayoutTest.cpp @@ -79,7 +79,7 @@ public: fTest(test) { fViewContainer = new ViewContainer(Bounds()); - fViewContainer->View::SetViewUIColor(B_PANEL_BACKGROUND_COLOR); + fViewContainer->View::SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); AddChild(fViewContainer); // container view for the tested BView @@ -90,7 +90,7 @@ public: // container for the test's controls fTestControlsView = new View(BRect(410, 10, 690, 400)); - fTestControlsView->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); + fTestControlsView->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); fViewContainer->View::AddChild(fTestControlsView); // wrapper view diff --git a/src/tests/kits/interface/picture/Jamfile b/src/tests/kits/interface/picture/Jamfile index 8ded4303d6..280bd1ccf6 100644 --- a/src/tests/kits/interface/picture/Jamfile +++ b/src/tests/kits/interface/picture/Jamfile @@ -23,7 +23,9 @@ UseLibraryHeaders agg expat ; SimpleTest PictureTest : PictureTest.cpp SVGViewView.cpp - : be translation libexpat.a [ TargetLibsupc++ ] + : be translation + [ BuildFeatureAttribute expat : library ] + [ TargetLibsupc++ ] ; if $(TARGET_PLATFORM) = libbe_test { diff --git a/src/tests/servers/app/Jamfile b/src/tests/servers/app/Jamfile index 732c19e323..deb43476b4 100644 --- a/src/tests/servers/app/Jamfile +++ b/src/tests/servers/app/Jamfile @@ -101,6 +101,7 @@ SharedLibrary libtestappserver.so : CursorData.cpp CursorManager.cpp CursorSet.cpp + DelayedMessage.cpp DesktopListener.cpp DirectWindowInfo.cpp DrawingEngine.cpp From 15325401ceeffbac7348f8b7ac518d0d47a2efc2 Mon Sep 17 00:00:00 2001 From: Adrien Destugues Date: Sun, 14 Feb 2016 20:59:16 +0100 Subject: [PATCH 236/242] app_server: do not return a glyph when nothing is found in the font. - Fixes BFont::GetHasGlyphs, the "empty square" which was returned led it to think the font had glyphs for everything - This means the "no character" empty square will not be drawn anymore, if we want it back, we will need to rework the implementation a bit more (either request it explicitly when there is a missing glyph, or return it as it was before but including an info that it is the "missing glyph") - Maybe GetHasGlyphs should also bypass the font fallback system, and return what's actually in the requested font only. This also fixes a locking problem in the GlyphLayoutEngine, the code didn't handle the read/write lock properly and tried to ReadUnlock from a place where only the write lock was held. --- src/servers/app/font/FontCacheEntry.cpp | 3 ++- src/servers/app/font/GlyphLayoutEngine.h | 16 ++++++++++++---- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/servers/app/font/FontCacheEntry.cpp b/src/servers/app/font/FontCacheEntry.cpp index 39b64d295e..fd2428d891 100644 --- a/src/servers/app/font/FontCacheEntry.cpp +++ b/src/servers/app/font/FontCacheEntry.cpp @@ -304,7 +304,8 @@ FontCacheEntry::CreateGlyph(uint32 glyphCode, FontCacheEntry* fallbackEntry) // get the normal space glyph glyphIndex = engine->GlyphIndexForGlyphCode(0x20 /* space */); } else { - // render the "missing glyph box" (by simply keeping glyphIndex 0) + // The glyph was not found anywhere. + return NULL; } } diff --git a/src/servers/app/font/GlyphLayoutEngine.h b/src/servers/app/font/GlyphLayoutEngine.h index 8ed8d198a2..963c0ca6e4 100644 --- a/src/servers/app/font/GlyphLayoutEngine.h +++ b/src/servers/app/font/GlyphLayoutEngine.h @@ -309,9 +309,15 @@ GlyphLayoutEngine::_WriteLockAndAcquireFallbackEntry( // glyphs from it. We need to obtain the fallback font while we have not // locked anything, since locking the FontManager with the write-lock held // can obvisouly lead to a deadlock. + + bool writeLocked = entry->IsWriteLocked(); - cacheReference.SetTo(NULL, false); - entry->ReadUnlock(); + if (writeLocked) { + entry->WriteUnlock(); + } else { + cacheReference.SetTo(NULL, false); + entry->ReadUnlock(); + } if (gFontManager->Lock()) { // TODO: We always get the fallback glyphs from VL Gothic at the @@ -342,8 +348,10 @@ GlyphLayoutEngine::_WriteLockAndAcquireFallbackEntry( return false; } - // Update the FontCacheReference, since the locking kind changed. - cacheReference.SetTo(entry, true); + if (!writeLocked) { + // Update the FontCacheReference, since the locking kind changed. + cacheReference.SetTo(entry, true); + } return true; } From 42d17c1c2f39b002e2551265698f9f580c415284 Mon Sep 17 00:00:00 2001 From: Adrien Destugues Date: Sun, 14 Feb 2016 21:07:05 +0100 Subject: [PATCH 237/242] Remove TODO, fixed by the previous commit. --- src/preferences/locale/LocaleWindow.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/preferences/locale/LocaleWindow.cpp b/src/preferences/locale/LocaleWindow.cpp index 6d501517cb..0eff7167a2 100644 --- a/src/preferences/locale/LocaleWindow.cpp +++ b/src/preferences/locale/LocaleWindow.cpp @@ -111,8 +111,6 @@ LocaleWindow::LocaleWindow() BLanguage currentLanguage(currentID.String()); currentLanguage.GetNativeName(name); - // TODO: the following block fails to detect a couple of language - // names as containing glyphs we can't render. Why's that? int nameLength = name.CountChars(); bool hasGlyphs[nameLength]; font.GetHasGlyphs(name.String(), nameLength, hasGlyphs); From 6071ca920926896ae03b17df943506ab597dec52 Mon Sep 17 00:00:00 2001 From: Adrien Destugues Date: Sun, 14 Feb 2016 21:08:45 +0100 Subject: [PATCH 238/242] Allow to build CharacterMap for the test_app_server. - I needed to test missing glyphs, and none of the available test apps allowed to do so. --- src/apps/charactermap/Jamfile | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/apps/charactermap/Jamfile b/src/apps/charactermap/Jamfile index 23b8fe5d0b..b4d625a4eb 100644 --- a/src/apps/charactermap/Jamfile +++ b/src/apps/charactermap/Jamfile @@ -1,6 +1,7 @@ SubDir HAIKU_TOP src apps charactermap ; SetSubDirSupportedPlatformsBeOSCompatible ; +AddSubDirSupportedPlatforms libbe_test ; UsePrivateHeaders shared system ; @@ -23,3 +24,8 @@ DoCatalogs CharacterMap : CharacterWindow.cpp UnicodeBlocks.cpp ; + +if $(TARGET_PLATFORM) = libbe_test { + HaikuInstall install-test-apps : $(HAIKU_APP_TEST_DIR) : CharacterMap + : tests!apps ; +} From d373150fa1b7e1892a39d5cff2c02f7c7d617916 Mon Sep 17 00:00:00 2001 From: Adrien Destugues Date: Mon, 15 Feb 2016 20:13:21 +0100 Subject: [PATCH 239/242] Update libmodplug to fix crash in ffmpeg --- build/jam/repositories/HaikuPorts/x86_64 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build/jam/repositories/HaikuPorts/x86_64 b/build/jam/repositories/HaikuPorts/x86_64 index 6b153adbfb..0148442f07 100644 --- a/build/jam/repositories/HaikuPorts/x86_64 +++ b/build/jam/repositories/HaikuPorts/x86_64 @@ -215,8 +215,8 @@ RemotePackageRepository HaikuPorts libmikmod_devel-3.3.7-1 libmkv-0.6.5.1-3 libmkv_devel-0.6.5.1-3 - libmodplug-0.8.8.5-1 - libmodplug_devel-0.8.8.5-1 + libmodplug-0.8.8.5-2 + libmodplug_devel-0.8.8.5-2 libmp4v2-2.0.0-2 libmp4v2_devel-2.0.0-2 libmpeg2-0.5.1-3 From d77a087ad2d80387780d38cf55ef5e40caf76691 Mon Sep 17 00:00:00 2001 From: Adrien Destugues Date: Mon, 15 Feb 2016 22:43:51 +0100 Subject: [PATCH 240/242] HaikuWebKit 1.5.2 for x86_64. --- build/jam/repositories/HaikuPorts/x86_64 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build/jam/repositories/HaikuPorts/x86_64 b/build/jam/repositories/HaikuPorts/x86_64 index 0148442f07..a087d6f102 100644 --- a/build/jam/repositories/HaikuPorts/x86_64 +++ b/build/jam/repositories/HaikuPorts/x86_64 @@ -143,8 +143,8 @@ RemotePackageRepository HaikuPorts gutenprint-5.2.11-1 gutenprint_devel-5.2.11-1 gzip-1.6-2 - haikuwebkit-1.5.1-1 - haikuwebkit_devel-1.5.1-1 + haikuwebkit-1.5.2-1 + haikuwebkit_devel-1.5.2-1 handbrake-0.10.1-1 harfbuzz-1.1.1-1 harfbuzz_devel-1.1.1-1 From a93682c096a0a2943249b88ef6afbb07e0f6d242 Mon Sep 17 00:00:00 2001 From: Automatic Committer Date: Thu, 18 Feb 2016 05:20:27 +0100 Subject: [PATCH 241/242] Update pci.ids from pciids.sourceforge.net --- src/data/ids/pci.ids | 47 +++++++++++++++++++++++++++++++++++++++----- 1 file changed, 42 insertions(+), 5 deletions(-) diff --git a/src/data/ids/pci.ids b/src/data/ids/pci.ids index f445605b81..79e90ff302 100644 --- a/src/data/ids/pci.ids +++ b/src/data/ids/pci.ids @@ -1,8 +1,8 @@ # # List of PCI ID's # -# Version: 2016.02.06 -# Date: 2016-02-06 03:15:02 +# Version: 2016.02.17 +# Date: 2016-02-17 03:15:02 # # Maintained by Albert Pool, Martin Mares, and other volunteers from # the PCI ID Project at http://pci-ids.ucw.cz/. @@ -5860,11 +5860,19 @@ 103c 1939 HP QMH2672 16Gb Dual Port Fibre Channel Adapter 103c 8002 3830C 16G Fibre Channel Host Bus Adapter 2071 ISP2714-based 16/32Gb Fibre Channel to PCIe Adapter + 1077 0283 QLE2764 Quad Port 32Gb Fibre Channel to PCIe Adapter + 1077 029e QLE2694 Quad Port 16Gb Fibre Channel to PCIe Adapter + 1077 02a2 QLE2694L Quad Port 16Gb Fibre Channel to PCIe Adapter + 1077 02ad QLE2694U Quad Port 16/32Gb Fibre Channel to PCIe Adapter 2100 QLA2100 64-bit Fibre Channel Adapter 1077 0001 QLA2100 64-bit Fibre Channel Adapter 2200 QLA2200 64-bit Fibre Channel Adapter 1077 0002 QLA2200 2261 ISP2722-based 16/32Gb Fibre Channel to PCIe Adapter + 1077 0299 QLE2740 Single Port 32Gb Fibre Channel to PCIe Adapter + 1077 029a QLE2742 Dual Port 32Gb Fibre Channel to PCIe Adapter + 1077 029b QLE2690 Single Port 16Gb Fibre Channel to PCIe Adapter + 1077 029c QLE2692 Dual Port 16Gb Fibre Channel to PCIe Adapter 1590 00f9 HPE StoreFabric SN1100Q 16Gb Single Port Fibre Channel Host Bus Adapter 1590 00fa HPE StoreFabric SN1100Q 16Gb Dual Port Fibre Channel Host Bus Adapter 2300 QLA2300 64-bit Fibre Channel Adapter @@ -10354,6 +10362,7 @@ 1287 GK208 [GeForce GT 730] 1288 GK208 [GeForce GT 720] 1289 GK208 [GeForce GT 710] + 128b GK208 [GeForce GT 710] 1290 GK208M [GeForce GT 730M] 103c 2afa GeForce GT 730A 103c 2b04 GeForce GT 730A @@ -10391,6 +10400,8 @@ 1344 GM108M [GeForce 845M] 1346 GM108M [GeForce 930M] 1347 GM108M [GeForce 940M] + 1348 GM108M [GeForce 945A] + 1349 GM108M [GeForce 930M] 134d GM108M [GeForce 940MX] 137a GM108GLM [Quadro K620M] 137d GM108M [GeForce 940A] @@ -10435,6 +10446,7 @@ 13f0 GM204GL [Quadro M5000] 13f1 GM204GL [Quadro M4000] 13f2 GM204GL [Tesla M60] + 13f3 GM204GL [Tesla M6] 13f8 GM204GLM [Quadro M5000M] 13f9 GM204GLM [Quadro M4000M] 13fa GM204GLM [Quadro M3000M] @@ -10442,10 +10454,12 @@ 1402 GM206 [GeForce GTX 950] 1407 GM206 [GeForce GTX 750 v2] 1427 GM206M [GeForce GTX 965M] + 1431 GM206GL [Tesla M4] 1617 GM204M [GeForce GTX 980M] 1618 GM204M [GeForce GTX 970M] 1619 GM204M [GeForce GTX 965M] 161a GM204M [GeForce GTX 980] + 1667 GM204M [GeForce GTX 965M] 17c2 GM200 [GeForce GTX TITAN X] 17c8 GM200 [GeForce GTX 980 Ti] 17f0 GM200GL [Quadro M6000] @@ -11204,6 +11218,7 @@ 1043 8095 A7V8X Motherboard (Realtek ALC650 codec) 1043 80a1 A7V8X-X Motherboard 1043 80b0 A7V600/K8V-X/K8V Deluxe motherboard (ADI AD1980 codec [SoundMAX]) + 1043 80f3 ASUSTek SK8V motherboard 1043 810d Asus P5VD1-X (AD1888 codec [SoundMax]) 1043 812a A8V Deluxe motherboard (Realtek ALC850 codec) 10ec 8168 High Definition Audio @@ -12667,6 +12682,7 @@ 144d c006 vpr Matrix 170B4 CardBus bridge 0476 RL5c476 II 1014 0185 ThinkPad A/T/X Series + 1014 0555 ThinkPad X41 1014 056c ThinkPad Z60t 1028 014f Latitude X300 laptop 1028 0188 Inspiron 6000 laptop @@ -12720,7 +12736,7 @@ 17aa 20ca ThinkPad T61 0811 R5C811 0822 R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter - 1014 0556 ThinkPad X60s / Z60t + 1014 0556 ThinkPad X40 / X41 / X60s / Z60t 1014 0598 ThinkPad Z60m 1025 0121 Aspire 5920G 1028 0188 Inspiron 6000 laptop @@ -15954,6 +15970,8 @@ 9111 PCI-9111 9113 PCI-9113 9114 PCI-9114 +# 2-16 MB SRAM, 4x UART, I2C, misc I/O + a001 ADi-BSEC # nee Loronix Information Systems Inc. 144b Verint Systems Inc. 144c Catalina Research Inc @@ -16446,7 +16464,7 @@ 167b NetXtreme BCM5755 Gigabit Ethernet PCI Express 103c 280a DC5750 Microtower 167d NetXtreme BCM5751M Gigabit Ethernet PCI Express - 1014 0577 ThinkPad Z60t + 1014 0577 ThinkPad X41 / Z60t 103c 0934 nx8220 103c 0940 Compaq nw8240 Mobile Workstation 17aa 2081 ThinkPad R60e @@ -18078,6 +18096,7 @@ 0777 4005 SR71-15 802.11an Mini PCI Adapter 1186 3a7a DWA-552 802.11n Xtreme N Desktop Adapter (rev A2) 1186 3a7d DWA-552 802.11n Xtreme N Desktop Adapter (rev A3) + 168c 2096 Compex WLM200NX / Wistron DNMA-92 002a AR928X Wireless Network Adapter (PCI-Express) 0777 4f05 SR71-X 802.11abgn Wireless ExpressCard Adapter [AR9280] 103c 3041 AR5BHB92-H 802.11abgn Wireless Half-size Mini PCIe Card [AR9280] @@ -19670,6 +19689,10 @@ 0003 Ultrastar SN100 Series NVMe SSD 1014 04f5 PCIe3 1.6TB NVMe Adapter 1014 04f6 PCIe3 3.2TB NVMe Adapter +# http://www.nicevt.ru/ (in Russian) +1c63 Science and Research Centre of Computer Technology (JSC "NICEVT") +# http://www.radiotec.ru/catalog.php?cat=jr8&art=14109 + 0008 K1927BB1Ya [EC8430] Angara Interconnection Network Adapter 1c7e TTTech Computertechnik AG 0200 zFAS Debug Port 1c7f Elektrobit Austria GmbH @@ -19707,6 +19730,7 @@ 1d49 Lenovo 1d5c Fantasia Trading LLC 1d61 Technobox, Inc. +1d62 Nebbiolo Technologies 1d65 Imagine Communications Corp. 04de Taurus/McKinley 1d6c Atomic Rules LLC @@ -22507,6 +22531,7 @@ 1e1e 7 Series/C210 Series Chipset Family PCI Express Root Port 8 1849 1e1e Motherboard 1e20 7 Series/C210 Series Chipset Family High Definition Audio Controller + 1028 054b Dell XPS One 2710 1043 108d VivoBook X202EV 1043 1477 N56VZ 1043 1517 Zenbook Prime UX31A @@ -23457,7 +23482,7 @@ 2589 E7220/E7221 PCI Express Root Port 258a E7221 Integrated Graphics Controller 2590 Mobile 915GM/PM/GMS/910GML Express Processor to DRAM Controller - 1014 0575 ThinkPad Z60t + 1014 0575 ThinkPad X41 / Z60t 1028 0182 Dell Latitude C610 103c 0934 Compaq nw8240/nx8220 103c 099c NX6110/NC6120 @@ -23469,6 +23494,7 @@ 2591 Mobile 915GM/PM Express PCI Express Root Port 103c 0934 Compaq nw8240 Mobile Workstation 2592 Mobile 915GM/GMS/910GML Express Graphics Controller + 1014 0582 ThinkPad X41 103c 099c NX6110/NC6120 103c 308a NC6220 1043 1881 GMA 900 915GM Integrated Graphics @@ -23641,6 +23667,7 @@ e4bf 0cd3 CD3-JIVE e4bf 58b1 XB1 2641 82801FBM (ICH6M) LPC Interface Bridge + 1014 0568 ThinkPad X41 103c 0934 Compaq nw8240/nx8220 103c 099c NX6110/NC6120 2642 82801FW/FRW (ICH6W/ICH6RW) LPC Interface Bridge @@ -23656,7 +23683,9 @@ 1028 0177 Dimension 8400 1462 7028 915P/G Neo2 2653 82801FBM (ICH6M) SATA Controller + 1014 056a ThinkPad X41 2658 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #1 + 1014 0565 ThinkPad X41 1028 0177 Dimension 8400 1028 0179 Optiplex GX280 103c 0934 Compaq nw8240/nx8220 @@ -23669,6 +23698,7 @@ e4bf 0cd3 CD3-JIVE e4bf 58b1 XB1 2659 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #2 + 1014 0565 ThinkPad X41 1028 0177 Dimension 8400 1028 0179 Optiplex GX280 103c 0934 Compaq nw8240/nx8220 @@ -23681,6 +23711,7 @@ e4bf 0cd3 CD3-JIVE e4bf 58b1 XB1 265a 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #3 + 1014 0565 ThinkPad X41 1028 0177 Dimension 8400 1028 0179 Optiplex GX280 103c 0934 Compaq nw8240/nx8220 @@ -23693,6 +23724,7 @@ e4bf 0cd3 CD3-JIVE e4bf 58b1 XB1 265b 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #4 + 1014 0565 ThinkPad X41 1028 0177 Dimension 8400 1028 0179 Optiplex GX280 103c 099c NX6110/NC6120 @@ -23704,6 +23736,7 @@ e4bf 0cd3 CD3-JIVE e4bf 58b1 XB1 265c 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB2 EHCI Controller + 1014 0566 ThinkPad X41 1028 0177 Dimension 8400 1028 0179 Optiplex GX280 103c 0934 Compaq nw8240/nx8220 @@ -23744,6 +23777,7 @@ 1462 7028 915P/G Neo2 1af4 1100 QEMU Virtual Machine 266a 82801FB/FBM/FR/FW/FRW (ICH6 Family) SMBus Controller + 1014 056b ThinkPad X41 1028 0177 Dimension 8400 1028 0179 Optiplex GX280 1043 80a6 P5GD1-VW Mainboard @@ -23759,6 +23793,7 @@ 103c 0934 Compaq nw8240/nx8220 103c 099c NX6110/NC6120 266e 82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Audio Controller + 1014 0581 ThinkPad X41 1025 006a Realtek ALC 655 codec (in Acer TravelMate 2410 serie laptop) 1028 0177 Dimension 8400 1028 0179 Optiplex GX280 @@ -23875,6 +23910,7 @@ 1043 2582 P5GD1-VW Mainboard 1734 105b Scenic W620 2792 Mobile 915GM/GMS/910GML Express Graphics Controller + 1014 0582 ThinkPad X41 103c 099c NX6110/NC6120 1043 1881 GMA 900 915GM Integrated Graphics e4bf 0ccd CCD-CALYPSO @@ -25722,6 +25758,7 @@ 1028 02da OptiPlex 980 1028 040a Latitude E6410 1028 040b Latitude E6510 + 1043 1373 ASUSTek G73-series gaming laptop 144d c06a R730 Laptop 15d9 060d C7SIM-Q Motherboard 17c0 10d2 Medion Akoya E7214 Notebook PC [MD98410] From bb28d38bc7571e004393d2562ddd3fe6ba885130 Mon Sep 17 00:00:00 2001 From: Adrien Destugues Date: Thu, 18 Feb 2016 22:04:27 +0100 Subject: [PATCH 242/242] libusb_compat, sane_backends: fix libusb dependency * Wrong soname from old libusb package was used, making these packages not installable. --- build/jam/repositories/HaikuPorts/x86_gcc2 | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/build/jam/repositories/HaikuPorts/x86_gcc2 b/build/jam/repositories/HaikuPorts/x86_gcc2 index c32813a4da..737a6c7246 100644 --- a/build/jam/repositories/HaikuPorts/x86_gcc2 +++ b/build/jam/repositories/HaikuPorts/x86_gcc2 @@ -307,8 +307,8 @@ RemotePackageRepository HaikuPorts libunistring_devel-0.9.6-1 libusb-1.0.20-2 libusb_devel-1.0.20-2 - libusb_compat-0.1.5-2 - libusb_compat_devel-0.1.5-2 + libusb_compat-0.1.5-3 + libusb_compat_devel-0.1.5-3 libutf8proc-1.1.6-1 libutf8proc_devel-1.1.6-1 libuuid-1.0.3-2 @@ -440,8 +440,8 @@ RemotePackageRepository HaikuPorts readline_devel-6.3.8-1 roadfighter-1.0.1269-1 rsync-3.1.0-1 - sane_backends-1.0.25-1 - sane_backends_devel-1.0.25-1 + sane_backends-1.0.25-2 + sane_backends_devel-1.0.25-2 sanity-0.5a-1 samba-3.6.25-1 samba_devel-3.6.25-1