[dpdk-dev,V16,1/4] eal: add device event handle in interrupt thread

Message ID 1522063256-3997-2-git-send-email-jia.guo@intel.com (mailing list archive)
State Superseded, archived
Delegated to: Thomas Monjalon
Headers

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation fail Compilation issues

Commit Message

Guo, Jia March 26, 2018, 11:20 a.m. UTC
  Add new interrupt handle type of RTE_INTR_HANDLE_DEV_EVENT, for
device event interrupt monitor.

Signed-off-by: Jeff Guo <jia.guo@intel.com>
---
v16->v15:
split into small patch base on the function
---
 lib/librte_eal/common/include/rte_eal_interrupts.h | 1 +
 lib/librte_eal/linuxapp/eal/eal_interrupts.c       | 5 ++++-
 2 files changed, 5 insertions(+), 1 deletion(-)
  

Comments

Jianfeng Tan March 27, 2018, 9:26 a.m. UTC | #1
Hi,


On 3/26/2018 7:20 PM, Jeff Guo wrote:
> Add new interrupt handle type of RTE_INTR_HANDLE_DEV_EVENT, for
> device event interrupt monitor.

A simple search of RTE_INTR_HANDLE_ALARM, we can see that we still need 
to update rte_intr_enable()/rte_intr_disable(), and test_interrupt_init().

Thanks,
Jianfeng

>
> Signed-off-by: Jeff Guo <jia.guo@intel.com>
> ---
> v16->v15:
> split into small patch base on the function
> ---
>   lib/librte_eal/common/include/rte_eal_interrupts.h | 1 +
>   lib/librte_eal/linuxapp/eal/eal_interrupts.c       | 5 ++++-
>   2 files changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/lib/librte_eal/common/include/rte_eal_interrupts.h b/lib/librte_eal/common/include/rte_eal_interrupts.h
> index 3f792a9..6eb4932 100644
> --- a/lib/librte_eal/common/include/rte_eal_interrupts.h
> +++ b/lib/librte_eal/common/include/rte_eal_interrupts.h
> @@ -34,6 +34,7 @@ enum rte_intr_handle_type {
>   	RTE_INTR_HANDLE_ALARM,        /**< alarm handle */
>   	RTE_INTR_HANDLE_EXT,          /**< external handler */
>   	RTE_INTR_HANDLE_VDEV,         /**< virtual device */
> +	RTE_INTR_HANDLE_DEV_EVENT,    /**< device event handle */
>   	RTE_INTR_HANDLE_MAX           /**< count of elements */
>   };
>   
> diff --git a/lib/librte_eal/linuxapp/eal/eal_interrupts.c b/lib/librte_eal/linuxapp/eal/eal_interrupts.c
> index f86f22f..842acaa 100644
> --- a/lib/librte_eal/linuxapp/eal/eal_interrupts.c
> +++ b/lib/librte_eal/linuxapp/eal/eal_interrupts.c
> @@ -674,7 +674,10 @@ eal_intr_process_interrupts(struct epoll_event *events, int nfds)
>   			bytes_read = 0;
>   			call = true;
>   			break;
> -
> +		case RTE_INTR_HANDLE_DEV_EVENT:
> +			bytes_read = 0;
> +			call = true;
> +			break;
>   		default:
>   			bytes_read = 1;
>   			break;
  
Guo, Jia March 28, 2018, 8:14 a.m. UTC | #2
jianfeng


On 3/27/2018 5:26 PM, Tan, Jianfeng wrote:
> Hi,
>
>
> On 3/26/2018 7:20 PM, Jeff Guo wrote:
>> Add new interrupt handle type of RTE_INTR_HANDLE_DEV_EVENT, for
>> device event interrupt monitor.
>
> A simple search of RTE_INTR_HANDLE_ALARM, we can see that we still 
> need to update rte_intr_enable()/rte_intr_disable(), and 
> test_interrupt_init().
>
you are right about that.
> Thanks,
> Jianfeng
>
>>
>> Signed-off-by: Jeff Guo <jia.guo@intel.com>
>> ---
>> v16->v15:
>> split into small patch base on the function
>> ---
>>   lib/librte_eal/common/include/rte_eal_interrupts.h | 1 +
>>   lib/librte_eal/linuxapp/eal/eal_interrupts.c       | 5 ++++-
>>   2 files changed, 5 insertions(+), 1 deletion(-)
>>
>> diff --git a/lib/librte_eal/common/include/rte_eal_interrupts.h 
>> b/lib/librte_eal/common/include/rte_eal_interrupts.h
>> index 3f792a9..6eb4932 100644
>> --- a/lib/librte_eal/common/include/rte_eal_interrupts.h
>> +++ b/lib/librte_eal/common/include/rte_eal_interrupts.h
>> @@ -34,6 +34,7 @@ enum rte_intr_handle_type {
>>       RTE_INTR_HANDLE_ALARM,        /**< alarm handle */
>>       RTE_INTR_HANDLE_EXT,          /**< external handler */
>>       RTE_INTR_HANDLE_VDEV,         /**< virtual device */
>> +    RTE_INTR_HANDLE_DEV_EVENT,    /**< device event handle */
>>       RTE_INTR_HANDLE_MAX           /**< count of elements */
>>   };
>>   diff --git a/lib/librte_eal/linuxapp/eal/eal_interrupts.c 
>> b/lib/librte_eal/linuxapp/eal/eal_interrupts.c
>> index f86f22f..842acaa 100644
>> --- a/lib/librte_eal/linuxapp/eal/eal_interrupts.c
>> +++ b/lib/librte_eal/linuxapp/eal/eal_interrupts.c
>> @@ -674,7 +674,10 @@ eal_intr_process_interrupts(struct epoll_event 
>> *events, int nfds)
>>               bytes_read = 0;
>>               call = true;
>>               break;
>> -
>> +        case RTE_INTR_HANDLE_DEV_EVENT:
>> +            bytes_read = 0;
>> +            call = true;
>> +            break;
>>           default:
>>               bytes_read = 1;
>>               break;
>
  

Patch

diff --git a/lib/librte_eal/common/include/rte_eal_interrupts.h b/lib/librte_eal/common/include/rte_eal_interrupts.h
index 3f792a9..6eb4932 100644
--- a/lib/librte_eal/common/include/rte_eal_interrupts.h
+++ b/lib/librte_eal/common/include/rte_eal_interrupts.h
@@ -34,6 +34,7 @@  enum rte_intr_handle_type {
 	RTE_INTR_HANDLE_ALARM,        /**< alarm handle */
 	RTE_INTR_HANDLE_EXT,          /**< external handler */
 	RTE_INTR_HANDLE_VDEV,         /**< virtual device */
+	RTE_INTR_HANDLE_DEV_EVENT,    /**< device event handle */
 	RTE_INTR_HANDLE_MAX           /**< count of elements */
 };
 
diff --git a/lib/librte_eal/linuxapp/eal/eal_interrupts.c b/lib/librte_eal/linuxapp/eal/eal_interrupts.c
index f86f22f..842acaa 100644
--- a/lib/librte_eal/linuxapp/eal/eal_interrupts.c
+++ b/lib/librte_eal/linuxapp/eal/eal_interrupts.c
@@ -674,7 +674,10 @@  eal_intr_process_interrupts(struct epoll_event *events, int nfds)
 			bytes_read = 0;
 			call = true;
 			break;
-
+		case RTE_INTR_HANDLE_DEV_EVENT:
+			bytes_read = 0;
+			call = true;
+			break;
 		default:
 			bytes_read = 1;
 			break;