diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-05-20 12:45:38 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-05-20 12:45:38 -0400 |
| commit | 04afb40593f9a3007e5ea817d009529ef10fb685 (patch) | |
| tree | de5a16c2b1e5f2d97a7c2eccea4677719817f282 /include | |
| parent | 7f06a8b26aba1dc03b42272dc0089a800372c575 (diff) | |
| parent | cce4f632db200aef147c59084437168174b23f11 (diff) | |
Merge branch 'acpica' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6
* 'acpica' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6: (22 commits)
ACPI: fix early DSDT dmi check warnings on ia64
ACPICA: Update version to 20100428.
ACPICA: Update/clarify some parameter names associated with acpi_handle
ACPICA: Rename acpi_ex_system_do_suspend->acpi_ex_system_do_sleep
ACPICA: Prevent possible allocation overrun during object copy
ACPICA: Split large file, evgpeblk
ACPICA: Add GPE support for dynamically loaded ACPI tables
ACPICA: Clarify/rename some root table descriptor fields
ACPICA: Update version to 20100331.
ACPICA: Minimize the differences between linux GPE code and ACPICA code base
ACPI: add boot option acpi=copy_dsdt to fix corrupt DSDT
ACPICA: Update DSDT copy/detection.
ACPICA: Add subsystem option to force copy of DSDT to local memory
ACPICA: Add detection of corrupted/replaced DSDT
ACPICA: Add write support for DataTable operation regions
ACPICA: Fix for acpi_reallocate_root_table for incorrect root table copy
ACPICA: Update comments/headers, no functional change
ACPICA: Update version to 20100304
ACPICA: Fix for possible fault in acpi_ex_release_mutex
ACPICA: Standardize integer output for ACPICA warnings/errors
...
Diffstat (limited to 'include')
| -rw-r--r-- | include/acpi/acexcep.h | 2 | ||||
| -rw-r--r-- | include/acpi/acoutput.h | 2 | ||||
| -rw-r--r-- | include/acpi/acpiosxf.h | 4 | ||||
| -rw-r--r-- | include/acpi/acpixf.h | 43 | ||||
| -rw-r--r-- | include/acpi/actbl2.h | 27 | ||||
| -rw-r--r-- | include/acpi/actypes.h | 44 |
6 files changed, 73 insertions, 49 deletions
diff --git a/include/acpi/acexcep.h b/include/acpi/acexcep.h index 5b2e5e80ecb0..5958d7845bd5 100644 --- a/include/acpi/acexcep.h +++ b/include/acpi/acexcep.h | |||
| @@ -87,7 +87,7 @@ | |||
| 87 | #define AE_NO_GLOBAL_LOCK (acpi_status) (0x0017 | AE_CODE_ENVIRONMENTAL) | 87 | #define AE_NO_GLOBAL_LOCK (acpi_status) (0x0017 | AE_CODE_ENVIRONMENTAL) |
| 88 | #define AE_ABORT_METHOD (acpi_status) (0x0018 | AE_CODE_ENVIRONMENTAL) | 88 | #define AE_ABORT_METHOD (acpi_status) (0x0018 | AE_CODE_ENVIRONMENTAL) |
| 89 | #define AE_SAME_HANDLER (acpi_status) (0x0019 | AE_CODE_ENVIRONMENTAL) | 89 | #define AE_SAME_HANDLER (acpi_status) (0x0019 | AE_CODE_ENVIRONMENTAL) |
| 90 | #define AE_WAKE_ONLY_GPE (acpi_status) (0x001A | AE_CODE_ENVIRONMENTAL) | 90 | #define AE_NO_HANDLER (acpi_status) (0x001A | AE_CODE_ENVIRONMENTAL) |
| 91 | #define AE_OWNER_ID_LIMIT (acpi_status) (0x001B | AE_CODE_ENVIRONMENTAL) | 91 | #define AE_OWNER_ID_LIMIT (acpi_status) (0x001B | AE_CODE_ENVIRONMENTAL) |
| 92 | 92 | ||
| 93 | #define AE_CODE_ENV_MAX 0x001B | 93 | #define AE_CODE_ENV_MAX 0x001B |
diff --git a/include/acpi/acoutput.h b/include/acpi/acoutput.h index d7726685797e..5e952262d6ee 100644 --- a/include/acpi/acoutput.h +++ b/include/acpi/acoutput.h | |||
| @@ -206,6 +206,7 @@ | |||
| 206 | #define ACPI_WARNING(plist) acpi_warning plist | 206 | #define ACPI_WARNING(plist) acpi_warning plist |
| 207 | #define ACPI_EXCEPTION(plist) acpi_exception plist | 207 | #define ACPI_EXCEPTION(plist) acpi_exception plist |
| 208 | #define ACPI_ERROR(plist) acpi_error plist | 208 | #define ACPI_ERROR(plist) acpi_error plist |
| 209 | #define ACPI_DEBUG_OBJECT(obj,l,i) acpi_ex_do_debug_object(obj,l,i) | ||
| 209 | 210 | ||
| 210 | #else | 211 | #else |
| 211 | 212 | ||
| @@ -215,6 +216,7 @@ | |||
| 215 | #define ACPI_WARNING(plist) | 216 | #define ACPI_WARNING(plist) |
| 216 | #define ACPI_EXCEPTION(plist) | 217 | #define ACPI_EXCEPTION(plist) |
| 217 | #define ACPI_ERROR(plist) | 218 | #define ACPI_ERROR(plist) |
| 219 | #define ACPI_DEBUG_OBJECT(obj,l,i) | ||
| 218 | 220 | ||
| 219 | #endif /* ACPI_NO_ERROR_MESSAGES */ | 221 | #endif /* ACPI_NO_ERROR_MESSAGES */ |
| 220 | 222 | ||
diff --git a/include/acpi/acpiosxf.h b/include/acpi/acpiosxf.h index b396854b83b0..29bf945143e8 100644 --- a/include/acpi/acpiosxf.h +++ b/include/acpi/acpiosxf.h | |||
| @@ -233,8 +233,8 @@ acpi_os_write_pci_configuration(struct acpi_pci_id *pci_id, | |||
| 233 | * Interim function needed for PCI IRQ routing | 233 | * Interim function needed for PCI IRQ routing |
| 234 | */ | 234 | */ |
| 235 | void | 235 | void |
| 236 | acpi_os_derive_pci_id(acpi_handle rhandle, | 236 | acpi_os_derive_pci_id(acpi_handle device, |
| 237 | acpi_handle chandle, struct acpi_pci_id **pci_id); | 237 | acpi_handle region, struct acpi_pci_id **pci_id); |
| 238 | 238 | ||
| 239 | /* | 239 | /* |
| 240 | * Miscellaneous | 240 | * Miscellaneous |
diff --git a/include/acpi/acpixf.h b/include/acpi/acpixf.h index 4447a0461bae..0e4ab1fe5966 100644 --- a/include/acpi/acpixf.h +++ b/include/acpi/acpixf.h | |||
| @@ -47,7 +47,7 @@ | |||
| 47 | 47 | ||
| 48 | /* Current ACPICA subsystem version in YYYYMMDD format */ | 48 | /* Current ACPICA subsystem version in YYYYMMDD format */ |
| 49 | 49 | ||
| 50 | #define ACPI_CA_VERSION 0x20100121 | 50 | #define ACPI_CA_VERSION 0x20100428 |
| 51 | 51 | ||
| 52 | #include "actypes.h" | 52 | #include "actypes.h" |
| 53 | #include "actbl.h" | 53 | #include "actbl.h" |
| @@ -67,6 +67,8 @@ extern u8 acpi_gbl_leave_wake_gpes_disabled; | |||
| 67 | extern u8 acpi_gbl_use_default_register_widths; | 67 | extern u8 acpi_gbl_use_default_register_widths; |
| 68 | extern acpi_name acpi_gbl_trace_method_name; | 68 | extern acpi_name acpi_gbl_trace_method_name; |
| 69 | extern u32 acpi_gbl_trace_flags; | 69 | extern u32 acpi_gbl_trace_flags; |
| 70 | extern u8 acpi_gbl_enable_aml_debug_object; | ||
| 71 | extern u8 acpi_gbl_copy_dsdt_locally; | ||
| 70 | 72 | ||
| 71 | extern u32 acpi_current_gpe_count; | 73 | extern u32 acpi_current_gpe_count; |
| 72 | extern struct acpi_table_fadt acpi_gbl_FADT; | 74 | extern struct acpi_table_fadt acpi_gbl_FADT; |
| @@ -164,7 +166,7 @@ acpi_get_devices(const char *HID, | |||
| 164 | void *context, void **return_value); | 166 | void *context, void **return_value); |
| 165 | 167 | ||
| 166 | acpi_status | 168 | acpi_status |
| 167 | acpi_get_name(acpi_handle handle, | 169 | acpi_get_name(acpi_handle object, |
| 168 | u32 name_type, struct acpi_buffer *ret_path_ptr); | 170 | u32 name_type, struct acpi_buffer *ret_path_ptr); |
| 169 | 171 | ||
| 170 | acpi_status | 172 | acpi_status |
| @@ -172,14 +174,12 @@ acpi_get_handle(acpi_handle parent, | |||
| 172 | acpi_string pathname, acpi_handle * ret_handle); | 174 | acpi_string pathname, acpi_handle * ret_handle); |
| 173 | 175 | ||
| 174 | acpi_status | 176 | acpi_status |
| 175 | acpi_attach_data(acpi_handle obj_handle, | 177 | acpi_attach_data(acpi_handle object, acpi_object_handler handler, void *data); |
| 176 | acpi_object_handler handler, void *data); | ||
| 177 | 178 | ||
| 178 | acpi_status | 179 | acpi_status acpi_detach_data(acpi_handle object, acpi_object_handler handler); |
| 179 | acpi_detach_data(acpi_handle obj_handle, acpi_object_handler handler); | ||
| 180 | 180 | ||
| 181 | acpi_status | 181 | acpi_status |
| 182 | acpi_get_data(acpi_handle obj_handle, acpi_object_handler handler, void **data); | 182 | acpi_get_data(acpi_handle object, acpi_object_handler handler, void **data); |
| 183 | 183 | ||
| 184 | acpi_status | 184 | acpi_status |
| 185 | acpi_debug_trace(char *name, u32 debug_level, u32 debug_layer, u32 flags); | 185 | acpi_debug_trace(char *name, u32 debug_level, u32 debug_layer, u32 flags); |
| @@ -201,7 +201,7 @@ acpi_evaluate_object_typed(acpi_handle object, | |||
| 201 | acpi_object_type return_type); | 201 | acpi_object_type return_type); |
| 202 | 202 | ||
| 203 | acpi_status | 203 | acpi_status |
| 204 | acpi_get_object_info(acpi_handle handle, | 204 | acpi_get_object_info(acpi_handle object, |
| 205 | struct acpi_device_info **return_buffer); | 205 | struct acpi_device_info **return_buffer); |
| 206 | 206 | ||
| 207 | acpi_status acpi_install_method(u8 *buffer); | 207 | acpi_status acpi_install_method(u8 *buffer); |
| @@ -283,16 +283,17 @@ acpi_status acpi_get_event_status(u32 event, acpi_event_status * event_status); | |||
| 283 | */ | 283 | */ |
| 284 | acpi_status acpi_set_gpe(acpi_handle gpe_device, u32 gpe_number, u8 action); | 284 | acpi_status acpi_set_gpe(acpi_handle gpe_device, u32 gpe_number, u8 action); |
| 285 | 285 | ||
| 286 | acpi_status acpi_enable_gpe(acpi_handle gpe_device, u32 gpe_number, u8 type); | 286 | acpi_status |
| 287 | acpi_enable_gpe(acpi_handle gpe_device, u32 gpe_number, u8 gpe_type); | ||
| 287 | 288 | ||
| 288 | acpi_status acpi_disable_gpe(acpi_handle gpe_device, u32 gpe_number, u8 type); | 289 | acpi_status |
| 290 | acpi_disable_gpe(acpi_handle gpe_device, u32 gpe_number, u8 gpe_type); | ||
| 289 | 291 | ||
| 290 | acpi_status acpi_clear_gpe(acpi_handle gpe_device, u32 gpe_number, u32 flags); | 292 | acpi_status acpi_clear_gpe(acpi_handle gpe_device, u32 gpe_number); |
| 291 | 293 | ||
| 292 | acpi_status | 294 | acpi_status |
| 293 | acpi_get_gpe_status(acpi_handle gpe_device, | 295 | acpi_get_gpe_status(acpi_handle gpe_device, |
| 294 | u32 gpe_number, | 296 | u32 gpe_number, acpi_event_status *event_status); |
| 295 | u32 flags, acpi_event_status * event_status); | ||
| 296 | 297 | ||
| 297 | acpi_status acpi_disable_all_gpes(void); | 298 | acpi_status acpi_disable_all_gpes(void); |
| 298 | 299 | ||
| @@ -315,33 +316,29 @@ acpi_status(*acpi_walk_resource_callback) (struct acpi_resource * resource, | |||
| 315 | void *context); | 316 | void *context); |
| 316 | 317 | ||
| 317 | acpi_status | 318 | acpi_status |
| 318 | acpi_get_vendor_resource(acpi_handle device_handle, | 319 | acpi_get_vendor_resource(acpi_handle device, |
| 319 | char *name, | 320 | char *name, |
| 320 | struct acpi_vendor_uuid *uuid, | 321 | struct acpi_vendor_uuid *uuid, |
| 321 | struct acpi_buffer *ret_buffer); | 322 | struct acpi_buffer *ret_buffer); |
| 322 | 323 | ||
| 323 | acpi_status | 324 | acpi_status |
| 324 | acpi_get_current_resources(acpi_handle device_handle, | 325 | acpi_get_current_resources(acpi_handle device, struct acpi_buffer *ret_buffer); |
| 325 | struct acpi_buffer *ret_buffer); | ||
| 326 | 326 | ||
| 327 | #ifdef ACPI_FUTURE_USAGE | 327 | #ifdef ACPI_FUTURE_USAGE |
| 328 | acpi_status | 328 | acpi_status |
| 329 | acpi_get_possible_resources(acpi_handle device_handle, | 329 | acpi_get_possible_resources(acpi_handle device, struct acpi_buffer *ret_buffer); |
| 330 | struct acpi_buffer *ret_buffer); | ||
| 331 | #endif | 330 | #endif |
| 332 | 331 | ||
| 333 | acpi_status | 332 | acpi_status |
| 334 | acpi_walk_resources(acpi_handle device_handle, | 333 | acpi_walk_resources(acpi_handle device, |
| 335 | char *name, | 334 | char *name, |
| 336 | acpi_walk_resource_callback user_function, void *context); | 335 | acpi_walk_resource_callback user_function, void *context); |
| 337 | 336 | ||
| 338 | acpi_status | 337 | acpi_status |
| 339 | acpi_set_current_resources(acpi_handle device_handle, | 338 | acpi_set_current_resources(acpi_handle device, struct acpi_buffer *in_buffer); |
| 340 | struct acpi_buffer *in_buffer); | ||
| 341 | 339 | ||
| 342 | acpi_status | 340 | acpi_status |
| 343 | acpi_get_irq_routing_table(acpi_handle bus_device_handle, | 341 | acpi_get_irq_routing_table(acpi_handle device, struct acpi_buffer *ret_buffer); |
| 344 | struct acpi_buffer *ret_buffer); | ||
| 345 | 342 | ||
| 346 | acpi_status | 343 | acpi_status |
| 347 | acpi_resource_to_address64(struct acpi_resource *resource, | 344 | acpi_resource_to_address64(struct acpi_resource *resource, |
diff --git a/include/acpi/actbl2.h b/include/acpi/actbl2.h index 5b02e307bff3..95f4d0ef4819 100644 --- a/include/acpi/actbl2.h +++ b/include/acpi/actbl2.h | |||
| @@ -69,6 +69,7 @@ | |||
| 69 | #define ACPI_SIG_IBFT "IBFT" /* i_sCSI Boot Firmware Table */ | 69 | #define ACPI_SIG_IBFT "IBFT" /* i_sCSI Boot Firmware Table */ |
| 70 | #define ACPI_SIG_IVRS "IVRS" /* I/O Virtualization Reporting Structure */ | 70 | #define ACPI_SIG_IVRS "IVRS" /* I/O Virtualization Reporting Structure */ |
| 71 | #define ACPI_SIG_MCFG "MCFG" /* PCI Memory Mapped Configuration table */ | 71 | #define ACPI_SIG_MCFG "MCFG" /* PCI Memory Mapped Configuration table */ |
| 72 | #define ACPI_SIG_MCHI "MCHI" /* Management Controller Host Interface table */ | ||
| 72 | #define ACPI_SIG_SLIC "SLIC" /* Software Licensing Description Table */ | 73 | #define ACPI_SIG_SLIC "SLIC" /* Software Licensing Description Table */ |
| 73 | #define ACPI_SIG_SPCR "SPCR" /* Serial Port Console Redirection table */ | 74 | #define ACPI_SIG_SPCR "SPCR" /* Serial Port Console Redirection table */ |
| 74 | #define ACPI_SIG_SPMI "SPMI" /* Server Platform Management Interface table */ | 75 | #define ACPI_SIG_SPMI "SPMI" /* Server Platform Management Interface table */ |
| @@ -679,6 +680,32 @@ struct acpi_mcfg_allocation { | |||
| 679 | 680 | ||
| 680 | /******************************************************************************* | 681 | /******************************************************************************* |
| 681 | * | 682 | * |
| 683 | * MCHI - Management Controller Host Interface Table | ||
| 684 | * Version 1 | ||
| 685 | * | ||
| 686 | * Conforms to "Management Component Transport Protocol (MCTP) Host | ||
| 687 | * Interface Specification", Revision 1.0.0a, October 13, 2009 | ||
| 688 | * | ||
| 689 | ******************************************************************************/ | ||
| 690 | |||
| 691 | struct acpi_table_mchi { | ||
| 692 | struct acpi_table_header header; /* Common ACPI table header */ | ||
| 693 | u8 interface_type; | ||
| 694 | u8 protocol; | ||
| 695 | u64 protocol_data; | ||
| 696 | u8 interrupt_type; | ||
| 697 | u8 gpe; | ||
| 698 | u8 pci_device_flag; | ||
| 699 | u32 global_interrupt; | ||
| 700 | struct acpi_generic_address control_register; | ||
| 701 | u8 pci_segment; | ||
| 702 | u8 pci_bus; | ||
| 703 | u8 pci_device; | ||
| 704 | u8 pci_function; | ||
| 705 | }; | ||
| 706 | |||
| 707 | /******************************************************************************* | ||
| 708 | * | ||
| 682 | * SPCR - Serial Port Console Redirection table | 709 | * SPCR - Serial Port Console Redirection table |
| 683 | * Version 1 | 710 | * Version 1 |
| 684 | * | 711 | * |
diff --git a/include/acpi/actypes.h b/include/acpi/actypes.h index 3f08e64962f8..bade172cad47 100644 --- a/include/acpi/actypes.h +++ b/include/acpi/actypes.h | |||
| @@ -663,44 +663,42 @@ typedef u32 acpi_event_status; | |||
| 663 | #define ACPI_GPE_MAX 0xFF | 663 | #define ACPI_GPE_MAX 0xFF |
| 664 | #define ACPI_NUM_GPE 256 | 664 | #define ACPI_NUM_GPE 256 |
| 665 | 665 | ||
| 666 | /* Actions for acpi_set_gpe */ | ||
| 667 | |||
| 666 | #define ACPI_GPE_ENABLE 0 | 668 | #define ACPI_GPE_ENABLE 0 |
| 667 | #define ACPI_GPE_DISABLE 1 | 669 | #define ACPI_GPE_DISABLE 1 |
| 668 | 670 | ||
| 671 | /* gpe_types for acpi_enable_gpe and acpi_disable_gpe */ | ||
| 672 | |||
| 673 | #define ACPI_GPE_TYPE_WAKE (u8) 0x01 | ||
| 674 | #define ACPI_GPE_TYPE_RUNTIME (u8) 0x02 | ||
| 675 | #define ACPI_GPE_TYPE_WAKE_RUN (u8) 0x03 | ||
| 676 | |||
| 669 | /* | 677 | /* |
| 670 | * GPE info flags - Per GPE | 678 | * GPE info flags - Per GPE |
| 671 | * +-+-+-+---+-+-+-+ | 679 | * +-------+---+-+-+ |
| 672 | * |7|6|5|4:3|2|1|0| | 680 | * | 7:4 |3:2|1|0| |
| 673 | * +-+-+-+---+-+-+-+ | 681 | * +-------+---+-+-+ |
| 674 | * | | | | | | | | 682 | * | | | | |
| 675 | * | | | | | | +--- Interrupt type: Edge or Level Triggered | 683 | * | | | +--- Interrupt type: edge or level triggered |
| 676 | * | | | | | +--- GPE can wake the system | 684 | * | | +----- GPE can wake the system |
| 677 | * | | | | +--- Unused | 685 | * | +-------- Type of dispatch:to method, handler, or none |
| 678 | * | | | +--- Type of dispatch -- to method, handler, or none | 686 | * +-------------- <Reserved> |
| 679 | * | | +--- Unused | ||
| 680 | * | +--- Unused | ||
| 681 | * +--- Unused | ||
| 682 | */ | 687 | */ |
| 683 | #define ACPI_GPE_XRUPT_TYPE_MASK (u8) 0x01 | 688 | #define ACPI_GPE_XRUPT_TYPE_MASK (u8) 0x01 |
| 684 | #define ACPI_GPE_LEVEL_TRIGGERED (u8) 0x01 | 689 | #define ACPI_GPE_LEVEL_TRIGGERED (u8) 0x01 |
| 685 | #define ACPI_GPE_EDGE_TRIGGERED (u8) 0x00 | 690 | #define ACPI_GPE_EDGE_TRIGGERED (u8) 0x00 |
| 686 | 691 | ||
| 687 | #define ACPI_GPE_TYPE_MASK (u8) 0x06 | ||
| 688 | #define ACPI_GPE_TYPE_WAKE_RUN (u8) 0x06 | ||
| 689 | #define ACPI_GPE_TYPE_WAKE (u8) 0x02 | ||
| 690 | #define ACPI_GPE_TYPE_RUNTIME (u8) 0x04 /* Default */ | ||
| 691 | #define ACPI_GPE_CAN_WAKE (u8) 0x02 | 692 | #define ACPI_GPE_CAN_WAKE (u8) 0x02 |
| 692 | 693 | ||
| 693 | #define ACPI_GPE_DISPATCH_MASK (u8) 0x18 | 694 | #define ACPI_GPE_DISPATCH_MASK (u8) 0x0C |
| 694 | #define ACPI_GPE_DISPATCH_HANDLER (u8) 0x08 | 695 | #define ACPI_GPE_DISPATCH_HANDLER (u8) 0x04 |
| 695 | #define ACPI_GPE_DISPATCH_METHOD (u8) 0x10 | 696 | #define ACPI_GPE_DISPATCH_METHOD (u8) 0x08 |
| 696 | #define ACPI_GPE_DISPATCH_NOT_USED (u8) 0x00 /* Default */ | 697 | #define ACPI_GPE_DISPATCH_NOT_USED (u8) 0x00 |
| 697 | 698 | ||
| 698 | /* | 699 | /* |
| 699 | * Flags for GPE and Lock interfaces | 700 | * Flags for GPE and Lock interfaces |
| 700 | */ | 701 | */ |
| 701 | #define ACPI_EVENT_WAKE_ENABLE 0x2 /* acpi_gpe_enable */ | ||
| 702 | #define ACPI_EVENT_WAKE_DISABLE 0x2 /* acpi_gpe_disable */ | ||
| 703 | |||
| 704 | #define ACPI_NOT_ISR 0x1 | 702 | #define ACPI_NOT_ISR 0x1 |
| 705 | #define ACPI_ISR 0x0 | 703 | #define ACPI_ISR 0x0 |
| 706 | 704 | ||
| @@ -953,7 +951,7 @@ acpi_status(*acpi_adr_space_setup) (acpi_handle region_handle, | |||
| 953 | #define ACPI_REGION_DEACTIVATE 1 | 951 | #define ACPI_REGION_DEACTIVATE 1 |
| 954 | 952 | ||
| 955 | typedef | 953 | typedef |
| 956 | acpi_status(*acpi_walk_callback) (acpi_handle obj_handle, | 954 | acpi_status(*acpi_walk_callback) (acpi_handle object, |
| 957 | u32 nesting_level, | 955 | u32 nesting_level, |
| 958 | void *context, void **return_value); | 956 | void *context, void **return_value); |
| 959 | 957 | ||
